Ir al contenido

Refactor de Outbound Session Mirroring

¿Alguna vez has enviado un mensaje a través de una API y has notado que la respuesta aparece en una sesión que no corresponde? Es un problema común cuando el sistema intenta registrar el mensaje saliente en la sesión del agente en lugar de la sesión del destinatario. Esto rompe el hilo de la conversación y dificulta el seguimiento del historial, especialmente cuando los objetivos de primer contacto no tienen entradas de sesión previas.

Para solucionar esto, hemos rediseñado cómo se procesan los mensajes salientes. La idea es simple: el ruteo debe coincidir con el comportamiento de los mensajes entrantes (inbound) para que el mirroring sea coherente.

  • Core channels o extensiones compatibles (Slack, Discord, Telegram, Matrix, MS Teams, Mattermost, BlueBubbles, Nextcloud Talk, Zalo, Nostr o Tlon).
  • Acceso a los servicios de ruteo en src/infra/outbound.

Sigue estos pasos para implementar el nuevo sistema de ruteo en 5 minutos:

  1. Configura el ruteo de sesión: Utiliza el nuevo helper resolveOutboundSessionRoute en src/infra/outbound/outbound-session.ts. Este componente construye el sessionKey del objetivo usando buildAgentSessionKey, asegurando que el mensaje se registre donde el usuario realmente lo ve.
  2. Asegura la creación de la sesión: Llama a ensureOutboundSessionEntry para escribir metadatos mínimos de MsgContext. Esto garantiza que, si es la primera vez que contactas a un usuario, la sesión se cree automáticamente alineada con el formato inbound.
  3. Actualiza el flujo de envío: En runMessageAction, deriva el sessionKey del objetivo antes de pasarlo a executeSendAction. Ya no dependas de la sesión actual del agente.
  4. Simplifica Gateway send: Si usas Gateway, puedes omitir el sessionKey. El sistema ahora lo deriva automáticamente a partir del target y el agente por defecto, normalizando los keys a minúsculas antes de hacer el mirroring.
  • Mensajes de Slack fuera de hilo: Si los mensajes salientes no aparecen en el hilo correcto, verifica que estés usando resolveThreadSessionKeys para añadir el sufijo de replyTo o threadId.
  • DMs de Mattermost fallidos: Asegúrate de que el ruteo esté eliminando el carácter @ de los targets de Mattermost para que coincidan con las sesiones de mensajes directos.

Para resolver dudas específicas sobre tu implementación, consulta al AI Setup Assistant.

OpenClaw

OpenClaw Expert

Sigues atascado?

Si esta pagina no resolvio tu caso, pregunta a OpenClaw Expert para pasos concretos.