Skip to content

Descripción General Multicanal

Triggerfish se conecta a sus plataformas de mensajería existentes. Pueden hablar con su agente donde ya se comunican -- terminal, Telegram, Slack, Discord, WhatsApp, un widget web o correo electrónico. Cada canal tiene su propio nivel de clasificación, verificaciones de identidad del propietario y aplicación de políticas.

Cómo Funcionan los Canales

Cada adaptador de canal implementa la misma interfaz: connect, disconnect, send, onMessage y status. El enrutador de canales se ubica por encima de todos los adaptadores y gestiona el despacho de mensajes, las verificaciones de clasificación y la lógica de reintentos.

Enrutador de canales: todos los adaptadores de canal fluyen a través de una puerta de clasificación central hacia el Gateway Server

Cuando un mensaje llega por cualquier canal, el enrutador:

  1. Identifica al remitente (propietario o externo) usando verificaciones de identidad a nivel de código -- no interpretación del LLM
  2. Etiqueta el mensaje con el nivel de clasificación del canal
  3. Lo reenvía al motor de políticas para su aplicación
  4. Enruta la respuesta del agente de vuelta por el mismo canal

Clasificación de Canales

Cada canal tiene un nivel de clasificación predeterminado que determina qué datos pueden fluir a través de él. El motor de políticas aplica la regla de no escritura descendente: los datos en un nivel de clasificación determinado nunca pueden fluir a un canal con una clasificación inferior.

CanalClasificación PredeterminadaDetección de Propietario
CLIINTERNALSiempre propietario (usuario de terminal)
TelegramINTERNALCoincidencia de ID de usuario de Telegram
SignalPUBLICNunca propietario (el adaptador ES su teléfono)
SlackPUBLICID de usuario de Slack vía OAuth
DiscordPUBLICCoincidencia de ID de usuario de Discord
WhatsAppPUBLICCoincidencia de número telefónico
WebChatPUBLICNunca propietario (visitantes)
EmailCONFIDENTIALCoincidencia de dirección de correo

Totalmente Configurable Todas las clasificaciones son configurables en su

triggerfish.yaml. Pueden establecer cualquier canal en cualquier nivel de clasificación según sus requisitos de seguridad.

yaml
channels:
  telegram:
    classification: CONFIDENTIAL
  slack:
    classification: INTERNAL

Clasificación Efectiva

La clasificación efectiva de cualquier mensaje es el mínimo entre la clasificación del canal y la clasificación del destinatario:

Nivel del CanalNivel del DestinatarioNivel Efectivo
INTERNALINTERNALINTERNAL
INTERNALEXTERNALPUBLIC
CONFIDENTIALINTERNALINTERNAL
CONFIDENTIALEXTERNALPUBLIC

Esto significa que incluso si un canal está clasificado como CONFIDENTIAL, los mensajes a destinatarios externos en ese canal se tratan como PUBLIC.

Estados del Canal

Los canales pasan por estados definidos:

  • UNTRUSTED -- Los canales nuevos o desconocidos comienzan aquí. No fluyen datos de entrada ni de salida. El canal está completamente aislado hasta que lo clasifiquen.
  • CLASSIFIED -- El canal tiene un nivel de clasificación asignado y está activo. Los mensajes fluyen según las reglas de política.
  • BLOCKED -- El canal ha sido deshabilitado explícitamente. No se procesan mensajes.

Canales UNTRUSTED Un canal UNTRUSTED no puede recibir ningún dato

del agente ni enviar datos al contexto del agente. Este es un límite de seguridad estricto, no una sugerencia. :::

Enrutador de Canales

El enrutador de canales administra todos los adaptadores registrados y proporciona:

  • Registro de adaptadores -- Registrar y desregistrar adaptadores de canal por ID de canal
  • Despacho de mensajes -- Enrutar mensajes salientes al adaptador correcto
  • Reintento con retroceso exponencial -- Los envíos fallidos se reintentan hasta 3 veces con demoras crecientes (1s, 2s, 4s)
  • Operaciones masivas -- connectAll() y disconnectAll() para gestión del ciclo de vida
yaml
# El comportamiento de reintento del enrutador es configurable
router:
  maxRetries: 3
  baseDelay: 1000 # milisegundos

Ripple: Indicadores de Escritura y Presencia

Triggerfish retransmite indicadores de escritura y estado de presencia entre canales que los soportan. Esto se llama Ripple.

CanalIndicadores de EscrituraConfirmaciones de Lectura
TelegramEnvío y recepción
SignalEnvío y recepción--
SlackSolo envío--
DiscordSolo envío--
WhatsAppEnvío y recepción
WebChatEnvío y recepción

Estados de presencia del agente: idle, online, away, busy, processing, speaking, error.

División de Mensajes

Las plataformas tienen límites de longitud de mensaje. Triggerfish divide automáticamente las respuestas largas para ajustarse a las restricciones de cada plataforma, separando por saltos de línea o espacios para facilitar la lectura:

CanalLongitud Máxima de Mensaje
Telegram4,096 caracteres
Signal4,000 caracteres
Discord2,000 caracteres
Slack40,000 caracteres
WhatsApp4,096 caracteres
WebChatIlimitado

Próximos Pasos

Configuren los canales que utilizan:

  • CLI -- Siempre disponible, no requiere configuración
  • Telegram -- Creen un bot con @BotFather
  • Signal -- Vinculen mediante el daemon signal-cli
  • Slack -- Creen una app de Slack con Socket Mode
  • Discord -- Creen una aplicación de bot en Discord
  • WhatsApp -- Conéctense vía WhatsApp Business Cloud API
  • WebChat -- Incrusten un widget de chat en su sitio
  • Email -- Conéctense vía IMAP y relay SMTP