channels.*. Cubre acceso a mensajes directos y grupos,
configuraciones de varias cuentas, control por menciones y claves por canal para Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage y los demás Plugins de canal incluidos.
Para agentes, herramientas, entorno de ejecución de Gateway y otras claves de nivel superior, consulta
Referencia de configuración.
Canales
Cada canal se inicia automáticamente cuando existe su sección de configuración (a menos queenabled: false).
Acceso a mensajes directos y grupos
Todos los canales admiten políticas de mensajes directos y políticas de grupo:| DM policy | Behavior |
|---|---|
pairing (default) | Los remitentes desconocidos reciben un código de emparejamiento de un solo uso; el propietario debe aprobarlo |
allowlist | Solo remitentes en allowFrom (o en el almacén de permitidos por emparejamiento) |
open | Permitir todos los mensajes directos entrantes (requiere allowFrom: ["*"]) |
disabled | Ignorar todos los mensajes directos entrantes |
| Group policy | Behavior |
|---|---|
allowlist (default) | Solo grupos que coincidan con la lista de permitidos configurada |
open | Omitir las listas de permitidos de grupos (el control por menciones sigue aplicándose) |
disabled | Bloquear todos los mensajes de grupo/sala |
channels.defaults.groupPolicy establece el valor predeterminado cuando el groupPolicy de un proveedor no está configurado.
Los códigos de emparejamiento caducan después de 1 hora. Las solicitudes pendientes de emparejamiento de mensajes directos están limitadas a 3 por canal.
Si falta por completo un bloque de proveedor (channels.<provider> ausente), la política de grupo en tiempo de ejecución recurre a allowlist (fail-closed) con una advertencia al inicio.Anulaciones de modelo por canal
Usachannels.modelByChannel para fijar ID de canal específicos a un modelo. Los valores aceptan provider/model o alias de modelo configurados. La asignación del canal se aplica cuando una sesión todavía no tiene una anulación de modelo (por ejemplo, establecida mediante /model).
Valores predeterminados de canal y Heartbeat
Usachannels.defaults para compartir la política de grupo y el comportamiento de Heartbeat entre proveedores:
channels.defaults.groupPolicy: política de grupo de reserva cuando ungroupPolicya nivel de proveedor no está configurado.channels.defaults.contextVisibility: modo predeterminado de visibilidad de contexto adicional para todos los canales. Valores:all(predeterminado, incluir todo el contexto citado/de hilo/de historial),allowlist(incluir solo contexto de remitentes en la lista de permitidos),allowlist_quote(igual que allowlist pero conserva el contexto explícito de cita/respuesta). Anulación por canal:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: incluye estados de canales sanos en la salida de Heartbeat.channels.defaults.heartbeat.showAlerts: incluye estados degradados/con error en la salida de Heartbeat.channels.defaults.heartbeat.useIndicator: renderiza una salida compacta de Heartbeat en estilo indicador.
WhatsApp con varias cuentas
WhatsApp con varias cuentas
- Los comandos salientes usan por defecto la cuenta
defaultsi existe; de lo contrario, el primer ID de cuenta configurado (ordenado). channels.whatsapp.defaultAccountopcional anula esa selección predeterminada de cuenta de reserva cuando coincide con un ID de cuenta configurado.- El directorio heredado de autenticación Baileys de una sola cuenta se migra mediante
openclaw doctorawhatsapp/default. - Anulaciones por cuenta:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token del bot:
channels.telegram.botTokenochannels.telegram.tokenFile(solo archivo normal; se rechazan symlinks), conTELEGRAM_BOT_TOKENcomo reserva para la cuenta predeterminada. channels.telegram.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- En configuraciones de varias cuentas (2+ ID de cuenta), establece un valor predeterminado explícito (
channels.telegram.defaultAccountochannels.telegram.accounts.default) para evitar enrutamiento de reserva;openclaw doctoradvierte cuando falta o no es válido. configWrites: falsebloquea escrituras de configuración iniciadas por Telegram (migraciones de ID de supergrupo,/config set|unset).- Las entradas
bindings[]de nivel superior contype: "acp"configuran enlaces ACP persistentes para temas de foro (usachatId:topic:topicIdcanónico enmatch.peer.id). La semántica de campos se comparte en Agentes ACP. - Las vistas previas de streaming de Telegram usan
sendMessage+editMessageText(funciona en chats directos y grupales). - Política de reintentos: consulta Política de reintentos.
Discord
- Token:
channels.discord.token, conDISCORD_BOT_TOKENcomo reserva para la cuenta predeterminada. - Las llamadas salientes directas que proporcionan un
tokenexplícito de Discord usan ese token para la llamada; la configuración de reintentos/políticas de cuenta sigue viniendo de la cuenta seleccionada en la instantánea activa del entorno de ejecución. channels.discord.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- Usa
user:<id>(DM) ochannel:<id>(canal de guild) para destinos de entrega; los ID numéricos sin formato se rechazan. - Los slugs de guild están en minúsculas con espacios reemplazados por
-; las claves de canal usan el nombre convertido en slug (sin#). Prefiere los ID de guild. - Los mensajes escritos por bots se ignoran de forma predeterminada.
allowBots: truelos habilita; usaallowBots: "mentions"para aceptar solo mensajes de bots que mencionen al bot (los mensajes propios siguen filtrados). channels.discord.guilds.<id>.ignoreOtherMentions(y las anulaciones por canal) descarta mensajes que mencionan a otro usuario o rol pero no al bot (exceptuando @everyone/@here).maxLinesPerMessage(predeterminado 17) divide mensajes altos incluso cuando están por debajo de 2000 caracteres.channels.discord.threadBindingscontrola el enrutamiento enlazado a hilos de Discord:enabled: anulación de Discord para funciones de sesión enlazadas a hilos (/focus,/unfocus,/agents,/session idle,/session max-age, y entrega/enrutamiento enlazados)idleHours: anulación de Discord para desenfoque automático por inactividad en horas (0desactiva)maxAgeHours: anulación de Discord para antigüedad máxima estricta en horas (0desactiva)spawnSubagentSessions: interruptor opcional para creación/enlace automático de hilos consessions_spawn({ thread: true })
- Las entradas
bindings[]de nivel superior contype: "acp"configuran enlaces ACP persistentes para canales e hilos (usa channel/thread id enmatch.peer.id). La semántica de campos se comparte en Agentes ACP. channels.discord.ui.components.accentColorestablece el color de acento para contenedores de componentes v2 de Discord.channels.discord.voicehabilita conversaciones en canales de voz de Discord y anulaciones opcionales de auto-unión + TTS.channels.discord.voice.daveEncryptionychannels.discord.voice.decryptionFailureTolerancese transfieren a las opciones DAVE de@discordjs/voice(truey24de forma predeterminada).- OpenClaw además intenta recuperación de recepción de voz saliendo y volviendo a entrar en una sesión de voz tras fallos repetidos de descifrado.
channels.discord.streaminges la clave canónica del modo de streaming. Los valores heredadosstreamModey booleanosstreamingse migran automáticamente.channels.discord.autoPresenceasigna la disponibilidad del entorno de ejecución a la presencia del bot (saludable => online, degradado => idle, agotado => dnd) y permite anulaciones opcionales de texto de estado.channels.discord.dangerouslyAllowNameMatchingvuelve a habilitar coincidencia mutable de nombre/tag (modo de compatibilidad de emergencia).channels.discord.execApprovals: entrega nativa en Discord de aprobaciones de ejecución y autorización de aprobadores.enabled:true,falseo"auto"(predeterminado). En modo automático, las aprobaciones de ejecución se activan cuando los aprobadores pueden resolverse desdeapproversocommands.ownerAllowFrom.approvers: IDs de usuario de Discord autorizados para aprobar solicitudes de ejecución. Recurre acommands.ownerAllowFromcuando se omite.agentFilter: lista de permitidos opcional de ID de agente. Omítelo para reenviar aprobaciones de todos los agentes.sessionFilter: patrones opcionales de clave de sesión (subcadena o regex).target: dónde enviar las solicitudes de aprobación."dm"(predeterminado) las envía a los mensajes directos de los aprobadores,"channel"las envía al canal de origen,"both"las envía a ambos. Cuando el destino incluye"channel", los botones solo pueden usarlos aprobadores resueltos.cleanupAfterResolve: cuando estrue, elimina los mensajes directos de aprobación después de aprobar, denegar o agotar el tiempo.
off (ninguno), own (mensajes del bot, predeterminado), all (todos los mensajes), allowlist (desde guilds.<id>.users en todos los mensajes).
Google Chat
- JSON de cuenta de servicio: en línea (
serviceAccount) o basado en archivo (serviceAccountFile). - También se admite SecretRef para la cuenta de servicio (
serviceAccountRef). - Variables de entorno de reserva:
GOOGLE_CHAT_SERVICE_ACCOUNToGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Usa
spaces/<spaceId>ousers/<userId>para destinos de entrega. channels.googlechat.dangerouslyAllowNameMatchingvuelve a habilitar coincidencia mutable de principal por correo electrónico (modo de compatibilidad de emergencia).
Slack
- Modo Socket requiere tanto
botTokencomoappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENcomo reserva en entorno para la cuenta predeterminada). - Modo HTTP requiere
botTokenmássigningSecret(en la raíz o por cuenta). botToken,appToken,signingSecretyuserTokenaceptan cadenas en texto plano u objetos SecretRef.- Las instantáneas de cuenta de Slack exponen campos por credencial de origen/estado como
botTokenSource,botTokenStatus,appTokenStatusy, en modo HTTP,signingSecretStatus.configured_unavailablesignifica que la cuenta está configurada mediante SecretRef pero la ruta actual de comando/entorno de ejecución no pudo resolver el valor del secreto. configWrites: falsebloquea escrituras de configuración iniciadas por Slack.channels.slack.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.channels.slack.streaming.modees la clave canónica del modo de streaming de Slack.channels.slack.streaming.nativeTransportcontrola el transporte nativo de streaming de Slack. Los valores heredadosstreamMode, booleanosstreamingynativeStreamingse migran automáticamente.- Usa
user:<id>(DM) ochannel:<id>para destinos de entrega.
off, own (predeterminado), all, allowlist (desde reactionAllowlist).
Aislamiento de sesión de hilos: thread.historyScope es por hilo (predeterminado) o compartido en todo el canal. thread.inheritParent copia la transcripción del canal principal a los hilos nuevos.
- El streaming nativo de Slack más el estado de hilo estilo asistente de Slack “is typing…” requieren un destino de respuesta en hilo. Los mensajes directos de nivel superior permanecen fuera de hilo de forma predeterminada, por lo que usan
typingReactiono entrega normal en lugar de la vista previa estilo hilo. typingReactionañade una reacción temporal al mensaje entrante de Slack mientras se ejecuta una respuesta, y luego la elimina al finalizar. Usa un shortcode de emoji de Slack como"hourglass_flowing_sand".channels.slack.execApprovals: entrega nativa en Slack de aprobaciones de ejecución y autorización de aprobadores. El mismo esquema que Discord:enabled(true/false/"auto"),approvers(IDs de usuario de Slack),agentFilter,sessionFilterytarget("dm","channel"o"both").
| Action group | Default | Notes |
|---|---|---|
| reactions | habilitado | Reaccionar + listar reacciones |
| messages | habilitado | Leer/enviar/editar/eliminar |
| pins | habilitado | Fijar/desfijar/listar |
| memberInfo | habilitado | Información del miembro |
| emojiList | habilitado | Lista de emojis personalizados |
Mattermost
Mattermost se distribuye como Plugin:openclaw plugins install @openclaw/mattermost.
oncall (responder con mención @, predeterminado), onmessage (cada mensaje), onchar (mensajes que comienzan con un prefijo disparador).
Cuando los comandos nativos de Mattermost están habilitados:
commands.callbackPathdebe ser una ruta (por ejemplo/api/channels/mattermost/command), no una URL completa.commands.callbackUrldebe resolverse al endpoint de Gateway de OpenClaw y ser accesible desde el servidor Mattermost.- Los callbacks nativos slash se autentican con los tokens por comando devueltos
por Mattermost durante el registro del comando slash. Si el registro falla o no
se activa ningún comando, OpenClaw rechaza callbacks con
Unauthorized: invalid command token. - Para hosts de callback privados/tailnet/internos, Mattermost puede requerir
que
ServiceSettings.AllowedUntrustedInternalConnectionsincluya el host/dominio del callback. Usa valores de host/dominio, no URL completas. channels.mattermost.configWrites: permite o deniega escrituras de configuración iniciadas por Mattermost.channels.mattermost.requireMention: requiere@mentionantes de responder en canales.channels.mattermost.groups.<channelId>.requireMention: anulación de control por menciones por canal ("*"para predeterminado).channels.mattermost.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.
Signal
off, own (predeterminado), all, allowlist (desde reactionAllowlist).
channels.signal.account: fija el inicio del canal a una identidad de cuenta específica de Signal.channels.signal.configWrites: permite o deniega escrituras de configuración iniciadas por Signal.channels.signal.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.
BlueBubbles
BlueBubbles es la ruta recomendada para iMessage (respaldada por Plugin, configurada enchannels.bluebubbles).
- Rutas de claves core cubiertas aquí:
channels.bluebubbles,channels.bluebubbles.dmPolicy. channels.bluebubbles.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- Las entradas
bindings[]de nivel superior contype: "acp"pueden enlazar conversaciones de BlueBubbles a sesiones ACP persistentes. Usa un identificador o cadena de destino de BlueBubbles (chat_id:*,chat_guid:*,chat_identifier:*) enmatch.peer.id. Semántica compartida de campos: Agentes ACP. - La configuración completa del canal BlueBubbles está documentada en BlueBubbles.
iMessage
OpenClaw generaimsg rpc (JSON-RPC sobre stdio). No se requiere daemon ni puerto.
-
channels.imessage.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado. - Requiere acceso completo al disco para la base de datos de Messages.
-
Prefiere destinos
chat_id:<id>. Usaimsg chats --limit 20para listar chats. -
cliPathpuede apuntar a un wrapper SSH; estableceremoteHost(hostouser@host) para obtener archivos adjuntos mediante SCP. -
attachmentRootsyremoteAttachmentRootsrestringen las rutas de archivos adjuntos entrantes (predeterminado:/Users/*/Library/Messages/Attachments). -
SCP usa comprobación estricta de clave de host, así que asegúrate de que la clave del host de retransmisión ya exista en
~/.ssh/known_hosts. -
channels.imessage.configWrites: permite o deniega escrituras de configuración iniciadas por iMessage. -
Las entradas
bindings[]de nivel superior contype: "acp"pueden enlazar conversaciones de iMessage a sesiones ACP persistentes. Usa un identificador normalizado o un destino de chat explícito (chat_id:*,chat_guid:*,chat_identifier:*) enmatch.peer.id. Semántica compartida de campos: Agentes ACP.
Ejemplo de wrapper SSH para iMessage
Ejemplo de wrapper SSH para iMessage
Matrix
Matrix está respaldado por Plugin y se configura enchannels.matrix.
- La autenticación por token usa
accessToken; la autenticación por contraseña usauserId+password. channels.matrix.proxyenruta el tráfico HTTP de Matrix a través de un proxy HTTP(S) explícito. Las cuentas con nombre pueden anularlo conchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkpermite homeservers privados/internos.proxyy esta aceptación de red son controles independientes.channels.matrix.defaultAccountselecciona la cuenta preferida en configuraciones de varias cuentas.channels.matrix.autoJoinusaoffde forma predeterminada, así que las salas invitadas y las invitaciones nuevas de tipo mensaje directo se ignoran hasta que establezcasautoJoin: "allowlist"conautoJoinAllowlistoautoJoin: "always".channels.matrix.execApprovals: entrega nativa en Matrix de aprobaciones de ejecución y autorización de aprobadores.enabled:true,falseo"auto"(predeterminado). En modo automático, las aprobaciones de ejecución se activan cuando los aprobadores pueden resolverse desdeapproversocommands.ownerAllowFrom.approvers: IDs de usuario de Matrix (p. ej.@owner:example.org) autorizados para aprobar solicitudes de ejecución.agentFilter: lista de permitidos opcional de ID de agente. Omítelo para reenviar aprobaciones de todos los agentes.sessionFilter: patrones opcionales de clave de sesión (subcadena o regex).target: dónde enviar las solicitudes de aprobación."dm"(predeterminado),"channel"(sala de origen) o"both".- Anulaciones por cuenta:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopecontrola cómo los mensajes directos de Matrix se agrupan en sesiones:per-user(predeterminado) comparte por interlocutor enrutado, mientras queper-roomaísla cada sala de mensaje directo.- Los sondeos de estado de Matrix y las búsquedas en directorio en vivo usan la misma política de proxy que el tráfico en tiempo de ejecución.
- La configuración completa de Matrix, las reglas de destino y los ejemplos de configuración están documentados en Matrix.
Microsoft Teams
Microsoft Teams está respaldado por Plugin y se configura enchannels.msteams.
- Rutas de claves core cubiertas aquí:
channels.msteams,channels.msteams.configWrites. - La configuración completa de Teams (credenciales, webhook, política DM/grupo, anulaciones por equipo/canal) está documentada en Microsoft Teams.
IRC
IRC está respaldado por Plugin y se configura enchannels.irc.
- Rutas de claves core cubiertas aquí:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountopcional anula la selección predeterminada de cuenta cuando coincide con un ID de cuenta configurado.- La configuración completa del canal IRC (host/port/TLS/channels/allowlists/mention gating) está documentada en IRC.
Varias cuentas (todos los canales)
Ejecuta varias cuentas por canal (cada una con su propioaccountId):
defaultse usa cuando se omiteaccountId(CLI + enrutamiento).- Los tokens de entorno solo se aplican a la cuenta default.
- La configuración base del canal se aplica a todas las cuentas salvo que se anule por cuenta.
- Usa
bindings[].match.accountIdpara enrutar cada cuenta a un agente diferente. - Si añades una cuenta no predeterminada mediante
openclaw channels add(o incorporación de canal) mientras aún estás en una configuración de canal de una sola cuenta en el nivel superior, OpenClaw primero promociona los valores de una sola cuenta con alcance de cuenta del nivel superior al mapa de cuentas del canal para que la cuenta original siga funcionando. La mayoría de canales los mueven achannels.<channel>.accounts.default; Matrix puede conservar en su lugar un destino con nombre/predeterminado coincidente ya existente. - Los enlaces existentes solo de canal (sin
accountId) siguen coincidiendo con la cuenta predeterminada; los enlaces con alcance por cuenta siguen siendo opcionales. openclaw doctor --fixtambién repara formas mixtas moviendo valores de una sola cuenta con alcance de cuenta del nivel superior a la cuenta promocionada elegida para ese canal. La mayoría de canales usanaccounts.default; Matrix puede conservar en su lugar un destino con nombre/predeterminado coincidente ya existente.
Otros canales de Plugin
Muchos canales de Plugin se configuran comochannels.<id> y se documentan en sus páginas de canal dedicadas (por ejemplo Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat y Twitch).
Consulta el índice completo de canales: Canales.
Control por menciones en chat grupal
Los mensajes de grupo requieren mención de forma predeterminada (require mention) (mención en metadatos o patrones regex seguros). Se aplica a chats grupales de WhatsApp, Telegram, Discord, Google Chat e iMessage. Tipos de mención:- Menciones de metadatos: menciones @ nativas de la plataforma. Se ignoran en el modo de chat propio de WhatsApp.
- Patrones de texto: patrones regex seguros en
agents.list[].groupChat.mentionPatterns. Los patrones no válidos y la repetición anidada insegura se ignoran. - El control por menciones solo se aplica cuando la detección es posible (menciones nativas o al menos un patrón).
messages.groupChat.historyLimit establece el valor predeterminado global. Los canales pueden anularlo con channels.<channel>.historyLimit (o por cuenta). Establece 0 para desactivarlo.
Límites de historial de mensajes directos
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modo de chat propio
Incluye tu propio número enallowFrom para habilitar el modo de chat propio (ignora las menciones @ nativas, solo responde a patrones de texto):
Comandos (gestión de comandos de chat)
Detalles de comandos
Detalles de comandos
- Este bloque configura las superficies de comandos. Para el catálogo actual de comandos integrados + incluidos, consulta Comandos slash.
- Esta página es una referencia de claves de configuración, no el catálogo completo de comandos. Los comandos propiedad de canal/Plugin como QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phoney Talk/voiceestán documentados en sus páginas de canal/Plugin y en Comandos slash. - Los comandos de texto deben ser mensajes independientes con
/al principio. native: "auto"activa comandos nativos para Discord/Telegram y deja Slack desactivado.nativeSkills: "auto"activa comandos nativos de Skills para Discord/Telegram y deja Slack desactivado.- Anulación por canal:
channels.discord.commands.native(bool o"auto").falseborra comandos registrados previamente. - Anula el registro nativo de Skills por canal con
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsañade entradas extra al menú del bot de Telegram.bash: truehabilita! <cmd>para el shell del host. Requieretools.elevated.enabledy que el remitente esté entools.elevated.allowFrom.<channel>.config: truehabilita/config(lee/escribeopenclaw.json). Para clienteschat.sendde gateway, las escrituras persistentes de/config set|unsettambién requierenoperator.admin; el modo de solo lectura/config showsigue disponible para clientes de operador normales con alcance de escritura.mcp: truehabilita/mcppara configuración de servidor MCP gestionada por OpenClaw bajomcp.servers.plugins: truehabilita/pluginspara descubrimiento de Plugin, instalación y controles de habilitación/deshabilitación.channels.<provider>.configWritescontrola mutaciones de configuración por canal (predeterminado: true).- Para canales de varias cuentas,
channels.<provider>.accounts.<id>.configWritestambién controla las escrituras dirigidas a esa cuenta (por ejemplo/allowlist --config --account <id>o/config set channels.<provider>.accounts.<id>...). restart: falsedesactiva acciones de/restarty de la herramienta de reinicio de gateway. Predeterminado:true.ownerAllowFromes la lista explícita de propietarios permitidos para comandos/herramientas solo de propietario. Es independiente deallowFrom.ownerDisplay: "hash"aplica hash a los ID de propietario en el system prompt. EstableceownerDisplaySecretpara controlar el hash.allowFromes por proveedor. Cuando está configurado, es la única fuente de autorización (se ignoran las listas de permitidos/emparejamiento del canal yuseAccessGroups).useAccessGroups: falsepermite que los comandos omitan las políticas de grupos de acceso cuandoallowFromno está configurado.- Mapa de documentación de comandos:
- catálogo integrado + incluido: Comandos slash
- superficies de comandos específicas por canal: Canales
- comandos de QQ Bot: QQ Bot
- comandos de emparejamiento: Emparejamiento
- comando de tarjeta de LINE: LINE
- dreaming de memoria: Dreaming
Relacionado
- Referencia de configuración — claves de nivel superior
- Configuración — agentes
- Resumen de canales