Skip to content

Panoramica Multicanale

Triggerfish si connette alle Sue piattaforme di messaggistica esistenti. Parli con il Suo agente ovunque comunichi già -- terminale, Telegram, Slack, Discord, WhatsApp, un widget web o email. Ogni canale ha il proprio livello di classificazione, controlli di identità del proprietario e applicazione delle policy.

Come Funzionano i Canali

Ogni adattatore di canale implementa la stessa interfaccia: connect, disconnect, send, onMessage e status. Il channel router si trova sopra tutti gli adattatori e gestisce l'invio dei messaggi, i controlli di classificazione e la logica di retry.

Channel router: tutti gli adattatori di canale fluiscono attraverso un gate di classificazione centrale verso il Gateway Server

Quando un messaggio arriva su qualsiasi canale, il router:

  1. Identifica il mittente (proprietario o esterno) usando controlli di identità a livello di codice -- non interpretazione dell'LLM
  2. Etichetta il messaggio con il livello di classificazione del canale
  3. Lo inoltra al motore di policy per l'applicazione
  4. Instrada la risposta dell'agente attraverso lo stesso canale

Classificazione dei Canali

Ogni canale ha un livello di classificazione predefinito che determina quali dati possono fluire attraverso di esso. Il motore di policy applica la regola no write-down: i dati a un dato livello di classificazione non possono mai fluire verso un canale con una classificazione inferiore.

CanaleClassificazione PredefinitaRilevamento Proprietario
CLIINTERNALSempre proprietario (utente del terminale)
TelegramINTERNALCorrispondenza ID utente Telegram
SignalPUBLICMai proprietario (l'adattatore È il telefono)
SlackPUBLICID utente Slack tramite OAuth
DiscordPUBLICCorrispondenza ID utente Discord
WhatsAppPUBLICCorrispondenza numero di telefono
WebChatPUBLICMai proprietario (visitatori)
EmailCONFIDENTIALCorrispondenza indirizzo email

Completamente Configurabile Tutte le classificazioni sono configurabili

nel Suo triggerfish.yaml. Può impostare qualsiasi canale a qualsiasi livello di classificazione in base ai Suoi requisiti di sicurezza.

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

Classificazione Effettiva

La classificazione effettiva per qualsiasi messaggio è il minimo tra la classificazione del canale e la classificazione del destinatario:

Livello CanaleLivello DestinatarioLivello Effettivo
INTERNALINTERNALINTERNAL
INTERNALEXTERNALPUBLIC
CONFIDENTIALINTERNALINTERNAL
CONFIDENTIALEXTERNALPUBLIC

Questo significa che anche se un canale è classificato come CONFIDENTIAL, i messaggi a destinatari esterni su quel canale vengono trattati come PUBLIC.

Stati dei Canali

I canali si muovono attraverso stati definiti:

  • UNTRUSTED -- I canali nuovi o sconosciuti partono qui. Nessun dato fluisce in entrata o in uscita. Il canale è completamente isolato finché non lo classifica.
  • CLASSIFIED -- Il canale ha un livello di classificazione assegnato ed è attivo. I messaggi fluiscono secondo le regole di policy.
  • BLOCKED -- Il canale è stato esplicitamente disabilitato. Nessun messaggio viene elaborato.

Canali UNTRUSTED Un canale UNTRUSTED non può ricevere dati

dall'agente e non può inviare dati nel contesto dell'agente. Questo è un confine di sicurezza rigido, non un suggerimento. :::

Channel Router

Il channel router gestisce tutti gli adattatori registrati e fornisce:

  • Registrazione adattatori -- Registra e annulla la registrazione degli adattatori di canale per ID canale
  • Invio messaggi -- Instrada i messaggi in uscita verso l'adattatore corretto
  • Retry con backoff esponenziale -- Gli invii falliti vengono riprovati fino a 3 volte con ritardi crescenti (1s, 2s, 4s)
  • Operazioni in blocco -- connectAll() e disconnectAll() per la gestione del ciclo di vita
yaml
# Il comportamento di retry del router è configurabile
router:
  maxRetries: 3
  baseDelay: 1000 # millisecondi

Ripple: Digitazione e Presenza

Triggerfish trasmette indicatori di digitazione e stato di presenza tra i canali che li supportano. Questo si chiama Ripple.

CanaleIndicatori di DigitazioneConferme di Lettura
TelegramInvio e ricezione
SignalInvio e ricezione--
SlackSolo invio--
DiscordSolo invio--
WhatsAppInvio e ricezione
WebChatInvio e ricezione

Stati di presenza dell'agente: idle, online, away, busy, processing, speaking, error.

Suddivisione Messaggi

Le piattaforme hanno limiti sulla lunghezza dei messaggi. Triggerfish suddivide automaticamente le risposte lunghe per adattarsi ai vincoli di ogni piattaforma, dividendo su newline o spazi per la leggibilità:

CanaleLunghezza Massima Messaggio
Telegram4.096 caratteri
Signal4.000 caratteri
Discord2.000 caratteri
Slack40.000 caratteri
WhatsApp4.096 caratteri
WebChatIllimitata

Prossimi Passi

Configuri i canali che utilizza:

  • CLI -- Sempre disponibile, nessuna configurazione necessaria
  • Telegram -- Crei un bot tramite @BotFather
  • Signal -- Si colleghi tramite il daemon signal-cli
  • Slack -- Crei un'app Slack con Socket Mode
  • Discord -- Crei un'applicazione bot Discord
  • WhatsApp -- Si connetta tramite WhatsApp Business Cloud API
  • WebChat -- Incorpori un widget di chat nel Suo sito
  • Email -- Si connetta tramite IMAP e relay SMTP