Tunneling: esempio di una live chat su AIsuru

Tunneling: esempio di una live chat

In questa sezione vedremo come implementare una live chat usando gli intenti dinamici e il tunneling. Questo esempio ci permetterà di esplorare nel dettaglio sia il funzionamento del tunneling che la struttura delle chiamate degli intenti dinamici.

Il caso della live chat

Una live chat è un esempio perfetto per illustrare il tunneling poiché richiede:

  • Una conversazione continuativa con un servizio esterno;

  • Il mantenimento del contesto tra i messaggi;

  • La gestione in tempo reale delle risposte.

Struttura dell'intento dinamico

Per implementare la live chat, configuriamo l'intento dinamico con:

  • Nome: "LIVE_CHAT";

  • Frasi di attivazione: "Voglio parlare con un operatore", "Live chat", ecc.;

  • Webhook: URL del servizio che gestisce la live chat.

Quando l'utente attiva l'intento, il webhook riceve una richiesta con questa struttura:

{
  "intentName": "LIVE_CHAT",
  "utterance": "Voglio parlare con un operatore",
  "slotValues": {},
  "currentTag": "string",
  "currentTagAuthenticated": true,
  "contextVars": {},
  "memoriID": "string",
  "sessionID": "string",
  "culture": "it-IT"
}

Avvio del tunneling

Il webhook risponde attivando il tunneling per prendere il controllo della conversazione:

{
  "emission": "Ti sto mettendo in contatto con un operatore. Attendi un momento...",
  "conclusive": true,
  "tunneling": true
  }
}

Da questo momento:

  1. Ogni messaggio dell'utente viene inviato direttamente al webhook;

  2. L'Agente non elabora più i messaggi ma li inoltra al servizio di chat;

  3. Le risposte dell'operatore arrivano attraverso il webhook (che le passa all'Agente con l'emission).

Gestione della conversazione

Durante la chat, ogni messaggio dell'utente genera una richiesta al webhook:

{
  "intentName": "LIVE_CHAT",
  "utterance": "Ho un problema con il mio ordine",
  "sessionID": "string",
  "culture": "it-IT"
}

Il webhook risponde mantenendo attivo il tunneling:

{
  "emission": "Operatore: Certo, mi dica il numero del suo ordine",
  "tunneling": true,
  "conclusive": true
}

Chiusura della chat

Quando l'operatore chiude la chat, il webhook invia una risposta che termina il tunneling:

{
  "emission": "La chat è stata chiusa. Grazie per aver utilizzato il nostro servizio di assistenza!",
  "tunneling": false,
  "conclusive": true
}

L'Agente riprende il normale controllo della conversazione.

Il flag tunneling determina chi gestisce la conversazione: se true, il webhook ha il controllo; se false, l'Agente riprende il controllo.

L'esempio della live chat dimostra come il tunneling permetta di creare interazioni complesse mantenendo un'architettura pulita e gestibile. Gli stessi principi si possono applicare a molti altri scenari che richiedono una conversazione continuativa con un sistema esterno.

Last updated