channels.*. Cobre acesso por DM e grupo,
configurações com várias contas, bloqueio por menção e chaves por canal para Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage e os outros plugins de canal empacotados.
Para agentes, ferramentas, runtime do gateway e outras chaves de nível superior, consulte
Configuration reference.
Canais
Cada canal inicia automaticamente quando sua seção de configuração existe (a menos queenabled: false).
Acesso por DM e grupo
Todos os canais oferecem suporte a políticas de DM e políticas de grupo:| Política de DM | Comportamento |
|---|---|
pairing (padrão) | Remetentes desconhecidos recebem um código único de pareamento; o dono deve aprovar |
allowlist | Apenas remetentes em allowFrom (ou armazenamento de permissões pareadas) |
open | Permitir todas as DMs de entrada (requer allowFrom: ["*"]) |
disabled | Ignorar todas as DMs de entrada |
| Política de grupo | Comportamento |
|---|---|
allowlist (padrão) | Apenas grupos que correspondam à allowlist configurada |
open | Ignorar allowlists de grupo (o bloqueio por menção ainda se aplica) |
disabled | Bloquear todas as mensagens de grupo/sala |
channels.defaults.groupPolicy define o padrão quando groupPolicy de um provedor não está definido.
Códigos de pareamento expiram após 1 hora. Solicitações pendentes de pareamento por DM são limitadas a 3 por canal.
Se um bloco de provedor estiver ausente por completo (channels.<provider> ausente), a política de grupo em runtime usa fallback para allowlist (fail-closed) com um aviso na inicialização.Sobrescritas de modelo por canal
Usechannels.modelByChannel para fixar IDs de canal específicos a um modelo. Os valores aceitam provider/model ou aliases de modelo configurados. O mapeamento de canal se aplica quando uma sessão ainda não tem uma sobrescrita de modelo (por exemplo, definida via /model).
Padrões de canal e Heartbeat
Usechannels.defaults para comportamento compartilhado de política de grupo e Heartbeat entre provedores:
channels.defaults.groupPolicy: política de grupo de fallback quandogroupPolicyno nível do provedor não está definido.channels.defaults.contextVisibility: modo padrão de visibilidade de contexto suplementar para todos os canais. Valores:all(padrão, inclui todo o contexto citado/thread/histórico),allowlist(inclui apenas contexto de remetentes da allowlist),allowlist_quote(igual a allowlist, mas mantém contexto explícito de citação/resposta). Sobrescrita por canal:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: incluir status saudáveis de canal na saída do Heartbeat.channels.defaults.heartbeat.showAlerts: incluir status degradados/com erro na saída do Heartbeat.channels.defaults.heartbeat.useIndicator: renderizar saída de Heartbeat compacta em estilo de indicador.
WhatsApp com várias contas
WhatsApp com várias contas
- Comandos de saída usam por padrão a conta
defaultse ela existir; caso contrário, usam o primeiro ID de conta configurado (ordenado). channels.whatsapp.defaultAccountopcional sobrescreve essa seleção padrão de conta quando corresponde a um ID de conta configurado.- O diretório legado de autenticação Baileys para conta única é migrado por
openclaw doctorparawhatsapp/default. - Sobrescritas por conta:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token do bot:
channels.telegram.botTokenouchannels.telegram.tokenFile(apenas arquivo regular; symlinks são rejeitados), comTELEGRAM_BOT_TOKENcomo fallback para a conta padrão. channels.telegram.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado.- Em configurações com várias contas (2+ IDs de conta), defina um padrão explícito (
channels.telegram.defaultAccountouchannels.telegram.accounts.default) para evitar roteamento por fallback;openclaw doctoravisa quando isso está ausente ou inválido. configWrites: falsebloqueia gravações de configuração iniciadas pelo Telegram (migrações de ID de supergrupo,/config set|unset).- Entradas
bindings[]de nível superior comtype: "acp"configuram bindings ACP persistentes para tópicos de fórum (use o canônicochatId:topic:topicIdemmatch.peer.id). A semântica dos campos é compartilhada em ACP Agents. - Prévias de stream do Telegram usam
sendMessage+editMessageText(funciona em chats diretos e em grupo). - Política de nova tentativa: consulte Retry policy.
Discord
- Token:
channels.discord.token, comDISCORD_BOT_TOKENcomo fallback para a conta padrão. - Chamadas diretas de saída que fornecem um
tokenexplícito do Discord usam esse token para a chamada; configurações de política/nova tentativa da conta ainda vêm da conta selecionada no snapshot de runtime ativo. channels.discord.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado.- Use
user:<id>(DM) ouchannel:<id>(canal de servidor) para destinos de entrega; IDs numéricos sem qualificador são rejeitados. - Slugs de servidor ficam em minúsculas com espaços substituídos por
-; chaves de canal usam o nome em slug (sem#). Prefira IDs de servidor. - Mensagens escritas por bot são ignoradas por padrão.
allowBots: trueas habilita; useallowBots: "mentions"para aceitar apenas mensagens de bot que mencionem o bot (mensagens próprias continuam filtradas). channels.discord.guilds.<id>.ignoreOtherMentions(e sobrescritas por canal) descarta mensagens que mencionem outro usuário ou função, mas não o bot (excluindo @everyone/@here).maxLinesPerMessage(padrão 17) divide mensagens altas mesmo quando têm menos de 2000 caracteres.channels.discord.threadBindingscontrola o roteamento vinculado a thread no Discord:enabled: sobrescrita do Discord para recursos de sessão vinculada a thread (/focus,/unfocus,/agents,/session idle,/session max-agee entrega/roteamento vinculados)idleHours: sobrescrita do Discord para desfoco automático por inatividade em horas (0desabilita)maxAgeHours: sobrescrita do Discord para idade máxima rígida em horas (0desabilita)spawnSubagentSessions: chave de adesão opcional para criação/vinculação automática de thread emsessions_spawn({ thread: true })
- Entradas
bindings[]de nível superior comtype: "acp"configuram bindings ACP persistentes para canais e threads (use o ID do canal/thread emmatch.peer.id). A semântica dos campos é compartilhada em ACP Agents. channels.discord.ui.components.accentColordefine a cor de destaque para contêineres de componentes v2 do Discord.channels.discord.voicehabilita conversas em canais de voz do Discord e sobrescritas opcionais de entrada automática + TTS.channels.discord.voice.daveEncryptionechannels.discord.voice.decryptionFailureTolerancesão repassados para as opções DAVE de@discordjs/voice(truee24por padrão).- O OpenClaw também tenta recuperar o recebimento de voz saindo e entrando novamente em uma sessão de voz após falhas repetidas de descriptografia.
channels.discord.streamingé a chave canônica de modo de stream. Valores legadosstreamModeestreamingbooleano são migrados automaticamente.channels.discord.autoPresencemapeia a disponibilidade do runtime para a presença do bot (saudável => online, degradado => idle, esgotado => dnd) e permite sobrescritas opcionais de texto de status.channels.discord.dangerouslyAllowNameMatchingreabilita correspondência mutável por nome/tag (modo de compatibilidade de emergência).channels.discord.execApprovals: entrega nativa de aprovações de execução no Discord e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo automático, aprovações de execução são ativadas quando aprovadores podem ser resolvidos a partir deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário do Discord autorizados a aprovar solicitações de execução. Usa fallback paracommands.ownerAllowFromquando omitido.agentFilter: allowlist opcional de ID de agente. Omita para encaminhar aprovações de todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: onde enviar prompts de aprovação."dm"(padrão) envia para DMs dos aprovadores,"channel"envia para o canal de origem,"both"envia para ambos. Quando o alvo inclui"channel", os botões só podem ser usados por aprovadores resolvidos.cleanupAfterResolve: quandotrue, exclui DMs de aprovação após aprovação, negação ou timeout.
off (nenhum), own (mensagens do bot, padrão), all (todas as mensagens), allowlist (de guilds.<id>.users em todas as mensagens).
Google Chat
- JSON da conta de serviço: inline (
serviceAccount) ou baseado em arquivo (serviceAccountFile). - SecretRef de conta de serviço também é compatível (
serviceAccountRef). - Fallbacks de env:
GOOGLE_CHAT_SERVICE_ACCOUNTouGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Use
spaces/<spaceId>ouusers/<userId>para destinos de entrega. channels.googlechat.dangerouslyAllowNameMatchingreabilita correspondência mutável por principal de email (modo de compatibilidade de emergência).
Slack
- Socket mode requer
botTokeneappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENpara fallback por env da conta padrão). - HTTP mode requer
botTokenmaissigningSecret(na raiz ou por conta). botToken,appToken,signingSecreteuserTokenaceitam strings em texto simples ou objetos SecretRef.- Snapshots de conta do Slack expõem campos por credencial de origem/status, como
botTokenSource,botTokenStatus,appTokenStatuse, em modo HTTP,signingSecretStatus.configured_unavailablesignifica que a conta está configurada por SecretRef, mas o caminho atual de comando/runtime não conseguiu resolver o valor do segredo. configWrites: falsebloqueia gravações de configuração iniciadas pelo Slack.channels.slack.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado.channels.slack.streaming.modeé a chave canônica de modo de stream do Slack.channels.slack.streaming.nativeTransportcontrola o transporte nativo de streaming do Slack. Valores legadosstreamMode,streamingbooleano enativeStreamingsão migrados automaticamente.- Use
user:<id>(DM) ouchannel:<id>para destinos de entrega.
off, own (padrão), all, allowlist (de reactionAllowlist).
Isolamento de sessão por thread: thread.historyScope é por thread (padrão) ou compartilhado entre o canal. thread.inheritParent copia a transcrição do canal pai para novas threads.
- Streaming nativo do Slack mais o status no estilo assistente do Slack “está digitando…” exigem um alvo de resposta em thread. DMs de nível superior permanecem fora de thread por padrão, então usam
typingReactionou entrega normal em vez da prévia em estilo thread. typingReactionadiciona uma reação temporária à mensagem de entrada do Slack enquanto uma resposta está em execução, depois a remove na conclusão. Use um shortcode de emoji do Slack, como"hourglass_flowing_sand".channels.slack.execApprovals: entrega nativa de aprovações de execução no Slack e autorização de aprovadores. Mesmo schema do Discord:enabled(true/false/"auto"),approvers(IDs de usuário do Slack),agentFilter,sessionFilteretarget("dm","channel"ou"both").
| Grupo de ação | Padrão | Observações |
|---|---|---|
| reactions | habilitado | Reagir + listar reações |
| messages | habilitado | Ler/enviar/editar/excluir |
| pins | habilitado | Fixar/desafixar/listar |
| memberInfo | habilitado | Informações de membro |
| emojiList | habilitado | Lista de emojis personalizados |
Mattermost
Mattermost é distribuído como Plugin:openclaw plugins install @openclaw/mattermost.
oncall (responde em @-mention, padrão), onmessage (toda mensagem), onchar (mensagens que começam com prefixo de acionamento).
Quando comandos nativos do Mattermost estão habilitados:
commands.callbackPathdeve ser um caminho (por exemplo/api/channels/mattermost/command), não uma URL completa.commands.callbackUrldeve resolver para o endpoint do gateway do OpenClaw e ser acessível a partir do servidor Mattermost.- Callbacks nativos de slash são autenticados com os tokens por comando retornados
pelo Mattermost durante o registro do comando slash. Se o registro falhar ou nenhum
comando for ativado, o OpenClaw rejeita callbacks com
Unauthorized: invalid command token. - Para hosts de callback privados/tailnet/internos, o Mattermost pode exigir que
ServiceSettings.AllowedUntrustedInternalConnectionsinclua o host/domínio do callback. Use valores de host/domínio, não URLs completas. channels.mattermost.configWrites: permitir ou negar gravações de configuração iniciadas pelo Mattermost.channels.mattermost.requireMention: exigir@mentionantes de responder em canais.channels.mattermost.groups.<channelId>.requireMention: sobrescrita de bloqueio por menção por canal ("*"para padrão).channels.mattermost.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado.
Signal
off, own (padrão), all, allowlist (de reactionAllowlist).
channels.signal.account: fixa a inicialização do canal a uma identidade específica de conta do Signal.channels.signal.configWrites: permite ou nega gravações de configuração iniciadas pelo Signal.channels.signal.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado.
BlueBubbles
BlueBubbles é o caminho recomendado para iMessage (com suporte de Plugin, configurado emchannels.bluebubbles).
- Caminhos de chave principais cobertos aqui:
channels.bluebubbles,channels.bluebubbles.dmPolicy. channels.bluebubbles.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado.- Entradas
bindings[]de nível superior comtype: "acp"podem vincular conversas do BlueBubbles a sessões ACP persistentes. Use um identificador ou string de alvo do BlueBubbles (chat_id:*,chat_guid:*,chat_identifier:*) emmatch.peer.id. Semântica compartilhada dos campos: ACP Agents. - A configuração completa do canal BlueBubbles está documentada em BlueBubbles.
iMessage
O OpenClaw iniciaimsg rpc (JSON-RPC por stdio). Nenhum daemon ou porta é necessário.
-
channels.imessage.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado. - Requer Full Disk Access ao banco de dados do Messages.
-
Prefira alvos
chat_id:<id>. Useimsg chats --limit 20para listar chats. -
cliPathpode apontar para um wrapper SSH; definaremoteHost(hostouuser@host) para busca de anexos por SCP. -
attachmentRootseremoteAttachmentRootsrestringem caminhos de anexos de entrada (padrão:/Users/*/Library/Messages/Attachments). -
SCP usa verificação estrita de chave de host, então garanta que a chave do host relay já exista em
~/.ssh/known_hosts. -
channels.imessage.configWrites: permite ou nega gravações de configuração iniciadas pelo iMessage. -
Entradas
bindings[]de nível superior comtype: "acp"podem vincular conversas do iMessage a sessões ACP persistentes. Use um identificador normalizado ou alvo explícito de chat (chat_id:*,chat_guid:*,chat_identifier:*) emmatch.peer.id. Semântica compartilhada dos campos: ACP Agents.
Exemplo de wrapper SSH para iMessage
Exemplo de wrapper SSH para iMessage
Matrix
Matrix tem suporte de Plugin e é configurado emchannels.matrix.
- A autenticação por token usa
accessToken; a autenticação por senha usauserId+password. channels.matrix.proxyroteia o tráfego HTTP do Matrix por um proxy HTTP(S) explícito. Contas nomeadas podem sobrescrevê-lo comchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkpermite homeservers privados/internos.proxye essa adesão de rede são controles independentes.channels.matrix.defaultAccountseleciona a conta preferida em configurações com várias contas.channels.matrix.autoJoinusaoffpor padrão, então salas convidadas e convites novos no estilo DM são ignorados até você definirautoJoin: "allowlist"comautoJoinAllowlistouautoJoin: "always".channels.matrix.execApprovals: entrega nativa de aprovações de execução no Matrix e autorização de aprovadores.enabled:true,falseou"auto"(padrão). No modo automático, aprovações de execução são ativadas quando aprovadores podem ser resolvidos a partir deapproversoucommands.ownerAllowFrom.approvers: IDs de usuário do Matrix (por exemplo@owner:example.org) autorizados a aprovar solicitações de execução.agentFilter: allowlist opcional de ID de agente. Omita para encaminhar aprovações de todos os agentes.sessionFilter: padrões opcionais de chave de sessão (substring ou regex).target: onde enviar prompts de aprovação."dm"(padrão),"channel"(sala de origem) ou"both".- Sobrescritas por conta:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopecontrola como DMs do Matrix são agrupadas em sessões:per-user(padrão) compartilha por peer roteado, enquantoper-roomisola cada sala de DM.- Sondas de status do Matrix e buscas de diretório ao vivo usam a mesma política de proxy que o tráfego em runtime.
- Configuração completa do Matrix, regras de direcionamento e exemplos de configuração estão documentados em Matrix.
Microsoft Teams
Microsoft Teams tem suporte de Plugin e é configurado emchannels.msteams.
- Caminhos de chave principais cobertos aqui:
channels.msteams,channels.msteams.configWrites. - A configuração completa do Teams (credenciais, Webhook, política de DM/grupo, sobrescritas por equipe/canal) está documentada em Microsoft Teams.
IRC
IRC tem suporte de Plugin e é configurado emchannels.irc.
- Caminhos de chave principais cobertos aqui:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. channels.irc.defaultAccountopcional sobrescreve a seleção padrão de conta quando corresponde a um ID de conta configurado.- A configuração completa do canal IRC (host/porta/TLS/canais/allowlists/bloqueio por menção) está documentada em IRC.
Várias contas (todos os canais)
Execute várias contas por canal (cada uma com seu próprioaccountId):
defaulté usado quandoaccountIdé omitido (CLI + roteamento).- Tokens de env se aplicam apenas à conta default.
- Configurações base do canal se aplicam a todas as contas, a menos que sejam sobrescritas por conta.
- Use
bindings[].match.accountIdpara rotear cada conta para um agente diferente. - Se você adicionar uma conta não padrão via
openclaw channels add(ou onboarding de canal) enquanto ainda estiver em uma configuração de canal de nível superior para conta única, o OpenClaw promove primeiro os valores de conta única no nível superior com escopo de conta para o mapa de contas do canal, para que a conta original continue funcionando. A maioria dos canais os move parachannels.<channel>.accounts.default; o Matrix pode preservar um alvo nomeado/default correspondente existente. - Bindings existentes apenas de canal (sem
accountId) continuam correspondendo à conta padrão; bindings com escopo de conta continuam opcionais. openclaw doctor --fixtambém repara formatos mistos movendo valores de conta única no nível superior com escopo de conta para a conta promovida escolhida para aquele canal. A maioria dos canais usaaccounts.default; o Matrix pode preservar um alvo nomeado/default correspondente existente.
Outros canais de Plugin
Muitos canais de Plugin são configurados comochannels.<id> e documentados em suas páginas dedicadas de canal (por exemplo Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch).
Consulte o índice completo de canais: Channels.
Bloqueio por menção em chat de grupo
Mensagens de grupo usam exigir menção por padrão (menção por metadados ou padrões regex seguros). Isso se aplica a chats de grupo no WhatsApp, Telegram, Discord, Google Chat e iMessage. Tipos de menção:- Menções por metadados: @-mentions nativos da plataforma. Ignorados no modo de conversa consigo mesmo do WhatsApp.
- Padrões de texto: padrões regex seguros em
agents.list[].groupChat.mentionPatterns. Padrões inválidos e repetições aninhadas inseguras são ignorados. - O bloqueio por menção é aplicado apenas quando a detecção é possível (menções nativas ou pelo menos um padrão).
messages.groupChat.historyLimit define o padrão global. Os canais podem sobrescrever com channels.<channel>.historyLimit (ou por conta). Defina 0 para desabilitar.
Limites de histórico de DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Modo de conversa consigo mesmo
Inclua seu próprio número emallowFrom para habilitar o modo de conversa consigo mesmo (ignora @-mentions nativos, responde apenas a padrões de texto):
Comandos (tratamento de comandos de chat)
Detalhes dos comandos
Detalhes dos comandos
- Este bloco configura superfícies de comando. Para o catálogo atual de comandos integrados + empacotados, consulte Slash Commands.
- Esta página é uma referência de chaves de configuração, não o catálogo completo de comandos. Comandos de canal/Plugin como QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phonee Talk/voiceestão documentados em suas páginas de canal/Plugin e em Slash Commands. - Comandos de texto devem ser mensagens independentes com
/no início. native: "auto"ativa comandos nativos para Discord/Telegram e mantém Slack desativado.nativeSkills: "auto"ativa comandos nativos de Skill para Discord/Telegram e mantém Slack desativado.- Sobrescreva por canal com
channels.discord.commands.native(bool ou"auto").falselimpa comandos previamente registrados. - Sobrescreva o registro de Skills nativas por canal com
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsadiciona entradas extras ao menu do bot do Telegram.bash: truehabilita! <cmd>para shell do host. Requertools.elevated.enablede remetente emtools.elevated.allowFrom.<channel>.config: truehabilita/config(lê/gravaopenclaw.json). Para clienteschat.senddo gateway, gravações persistentes de/config set|unsettambém exigemoperator.admin;/config showsomente leitura continua disponível para clientes operadores normais com escopo de escrita.mcp: truehabilita/mcppara configuração de servidor MCP gerenciada pelo OpenClaw emmcp.servers.plugins: truehabilita/pluginspara descoberta de Plugin, instalação e controles de habilitar/desabilitar.channels.<provider>.configWritescontrola mutações de configuração por canal (padrão: true).- Para canais com várias contas,
channels.<provider>.accounts.<id>.configWritestambém controla gravações que direcionam essa conta (por exemplo/allowlist --config --account <id>ou/config set channels.<provider>.accounts.<id>...). restart: falsedesabilita/restarte ações da ferramenta de reinício do gateway. Padrão:true.ownerAllowFromé a allowlist explícita de dono para comandos/ferramentas somente do dono. Ela é separada deallowFrom.ownerDisplay: "hash"aplica hash aos IDs de dono no prompt do sistema. DefinaownerDisplaySecretpara controlar o hashing.allowFromé por provedor. Quando definido, é a única fonte de autorização (allowlists/pareamento do canal euseAccessGroupssão ignorados).useAccessGroups: falsepermite que comandos ignorem políticas de grupo de acesso quandoallowFromnão está definido.- Mapa da documentação de comandos:
Relacionados
- Configuration reference — chaves de nível superior
- Configuration — agents
- Channels overview