channels/channel-routing.md
O OpenClaw roteia as respostas de volta para o canal de onde a mensagem veio. O modelo não escolhe um canal; o roteamento é determinístico e controlado pela configuração do host.Termos chave
- Canal:
whatsapp,telegram,discord,slack,signal,imessage,webchat. - AccountId: instância de conta por canal (quando suportado).
- AgentId: um workspace isolado + armazenamento de sessão (“cérebro”).
- SessionKey: a chave de bucket usada para armazenar contexto e controlar concorrência.
Formatos de chave de sessão (exemplos)
Mensagens diretas colapsam para a sessão principal do agente:agent:<agentId>:<mainKey>(padrão:agent:main:main)
- Grupos:
agent:<agentId>:<channel>:group:<id> - Canais/salas:
agent:<agentId>:<channel>:channel:<id>
- Tópicos do Slack/Discord acrescentam
:thread:<threadId>à chave base. - Tópicos de fórum do Telegram incorporam
:topic:<topicId>na chave do grupo.
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654
Regras de roteamento (como um agente é escolhido)
O roteamento seleciona um agente para cada mensagem de entrada:- Correspondência exata de par (
bindingscompeer.kind+peer.id). - Correspondência por parente (herança de thread).
- Correspondência por guild + roles (Discord) via
guildId+roles. - Correspondência de guilda (Discord) via
guildId. - Correspondência de equipe (Slack) via
teamId. - Correspondência de conta (
accountIdno canal). - Correspondência de canal (qualquer conta nesse canal).
- Agente padrão (
agents.list[].default, caso contrário a primeira entrada da lista, fallback paramain).
peer, guildId, teamId, roles), todos os campos fornecidos devem corresponder para que o binding seja aplicado.
O agente correspondente determina qual workspace e armazenamento de sessão são usados.
Grupos de broadcast (executar múltiplos agentes)
Grupos de broadcast permitem executar múltiplos agentes para o mesmo par quando o OpenClaw normalmente responderia (por exemplo: em grupos do WhatsApp, após o gating de menção/ativação). Configuração:Visão geral de configuração
agents.list: definições nomeadas de agentes (workspace, modelo etc.).bindings: mapeia canais/contas/pares de entrada para agentes.
Armazenamento de sessão
Os armazenamentos de sessão ficam no diretório de estado (padrão~/.openclaw):
~/.openclaw/agents/<agentId>/sessions/sessions.json- Transcrições JSONL ficam junto ao armazenamento
session.store e template {agentId}.
Comportamento do WebChat
O WebChat se conecta ao agente selecionado e, por padrão, à sessão principal do agente. Por causa disso, o WebChat permite ver o contexto entre canais desse agente em um só lugar.Contexto de resposta
As respostas de entrada incluem:ReplyToId,ReplyToBodyeReplyToSenderquando disponíveis.- O contexto citado é anexado a
Bodycomo um bloco[Replying to ...].