OpenClawSkills
GitHub
Conceptos Básicos • 5 min de lectura

Enrutamiento de Canales

Reglas de enrutamiento y contexto compartido entre canales (WhatsApp/Telegram/Discord/Slack, etc.).

OpenClaw enruta respuestas determinísticamente de vuelta al "canal de donde vino el mensaje". El modelo no elige el canal; el enrutamiento es controlado por la configuración del host y permanece predecible.

Tutorial.step

Términos Clave

- ''Canal'': ''whatsapp'', ''telegram'', ''discord'', ''slack'', ''signal'', ''imessage'', ''webchat''.

- AccountId: instancia de cuenta por canal (cuando es soportado).

- AgentId: un workspace aislado + almacén de sesión ("cerebro").

- SessionKey: la clave de bucket usada para almacenar contexto y controlar concurrencia.

Tutorial.step

Formas de clave de sesión (ejemplos)

Los mensajes directos colapsan a la sesión principal del agente:

- ''agent:<agentId>:<mainKey>'' (predeterminado: ''agent:main:main'')

Los grupos y canales permanecen aislados por canal:

- Grupos: ''agent:<agentId>:<channel>:group:<id>''

- Canales/salas: ''agent:<agentId>:<channel>:channel:<id>''

Hilos:

- Los hilos de Slack/Discord añaden '':thread:<threadId>'' a la clave base.

- Los temas de foro de Telegram embeben '':topic:<topicId>'' en la clave de grupo.

Ejemplos: ''agent:main:telegram:group:-1001234567890:topic:42'', ''agent:main:discord:channel:123456:thread:987654''

Tutorial.step

Reglas de enrutamiento (cómo se elige un agente)

El enrutamiento elige un agente para cada mensaje entrante:

1. ''Coincidencia exacta de par'' (''bindings'' con ''peer.kind'' + ''peer.id'').

2. ''Coincidencia de guild'' (Discord) via ''guildId''.

3. ''Coincidencia de team'' (Slack) via ''teamId''.

4. ''Coincidencia de cuenta'' (''accountId'' en el canal).

5. Coincidencia de canal (cualquier cuenta en ese canal).

6. ''Agente predeterminado'' (''agents.list[].default'', sino primera entrada de lista, fallback a ''main'').

El agente coincidente determina qué workspace y almacén de sesión se usan.

Tutorial.step

Grupos de difusión (ejecutar múltiples agentes)

Los grupos de difusión te permiten ejecutar múltiples agentes para el mismo par cuando OpenClaw normalmente respondería (por ejemplo: en grupos de WhatsApp, después de mención/activación).

Config:

Json5
{
  broadcast: {
    strategy: "parallel",
    "[email protected]": ["alfred", "baerbel"],
    "+15555550123": ["support", "logger"]
  }
}

Ver: ''/broadcast-groups''

Tutorial.step

Resumen de configuración

- ''agents.list'': definiciones de agentes nombrados (workspace, modelo, etc.).

- ''bindings'': mapea canales/cuentas/pares entrantes a agentes.

Ejemplo:

Json5
{
  agents: {
    list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }]
  },
  bindings: [
    { match: { channel: "slack", teamId: "T123" }, agentId: "support" },
    { match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" }
  ]
}
Tutorial.step

Almacenamiento de sesión

Los almacenes de sesión viven bajo el directorio de estado (predeterminado ''~/.openclaw''):

- ''~/.openclaw/agents/<agentId>/sessions/sessions.json''

- Las transcripciones JSONL viven junto al almacén

Puedes anular la ruta del almacén via ''session.store'' y plantilla ''{agentId}''.

Tutorial.step

Comportamiento de WebChat

WebChat se adjunta al agente seleccionado y por defecto usa la sesión principal del agente. Por esto, WebChat te permite ver contexto cruzado de canales para ese agente en un solo lugar.

Tutorial.step

Contexto de respuesta

Las respuestas entrantes incluyen:

- ''ReplyToId'', ''ReplyToBody'', y ''ReplyToSender'' cuando están disponibles.

- El contexto citado se añade a ''Body'' como un bloque ''[Replying to ...]''.

Esto es consistente entre canales.