Fulfillment

Per il turno conversazionale di un agente, l'agente deve rispondere all'utente finale con la risposta a una domanda, una richiesta di informazioni o la chiusura della sessione. Il tuo agente potrebbe anche dover contattare il tuo servizio per generare risposte dinamiche o intraprendere azioni per un turno. Fulfillment viene utilizzato per eseguire tutte queste operazioni.

Un adempimento può contenere uno dei seguenti elementi:

  • Messaggi di risposta statici.
  • Chiamate webhook per risposte dinamiche e/o per intraprendere azioni.
  • Preset dei parametri per impostare o eseguire l'override dei valori dei parametri.

Durante il turno di un agente, è possibile (e a volte auspicabile) chiamare più fulfillment, ognuno dei quali può generare un messaggio di risposta. Dialogflow CX gestisce queste risposte in una coda di risposte. Al termine del turno dell'agente, Dialogflow CX invia le risposte ordinate all'utente finale.

Casi d'uso per l'evasione

L'evasione viene utilizzata ovunque sia necessario un messaggio di risposta:

Per ciascuno di questi casi d'uso, la console aprirà un riquadro di modifica dell'evasione.

Screenshot del fulfillment

Risposte dell'agente (opzioni di dialogo)

I messaggi di risposta dell'agente sono risposte dell'agente che definisci in fase di progettazione. Li definisci quando crei l'evasione. In fase di runtime, queste risposte vengono aggiunte alla coda di risposte.

Esistono diversi tipi di messaggi di risposta, descritti nelle sottosezioni seguenti. Quando utilizzi la console, un pannello di evasione ha una scheda iniziale Dialogo dell'agente, ma puoi fare clic su + Aggiungi risposta al dialogo per aggiungere altre schede per altri tipi di messaggi di risposta.

Risposta di testo statica

I messaggi di risposta con testo statico inviano un dialogo di testo all'utente finale. Se le chiamate API o le chiamate di integrazione per il rilevamento dell'intent utilizzano la sintesi vocale, questo testo verrà utilizzato per generare contenuti audio. In questo caso, il testo fornito può facoltativamente utilizzare il Speech Synthesis Markup Language (SSML).

Puoi definire più schede di risposta di testo e più risposte di testo all'interno di ogni scheda. Se definisci più schede, queste vengono concatenate per una singola risposta in fase di esecuzione. Se definisci più risposte all'interno di una scheda, uno dei messaggi nella scheda viene scelto in modo casuale in fase di runtime.

Questi messaggi possono contenere riferimenti ai parametri e funzioni di sistema inline.

Payload personalizzato

Alcune integrazioni supportano una risposta di payload personalizzata per gestire le risposte avanzate. Questi payload personalizzati devono essere forniti nel formato JSON definito nella documentazione dell'integrazione. Ad esempio, vedi il formato del payload personalizzato di Dialogflow CX Messenger.

Puoi includere riferimenti ai parametri nel JSON del payload personalizzato. Devono essere trattati come valori stringa JSON, quindi assicurati di racchiuderli tra virgolette doppie. Ad esempio:

{
  "someField": "$session.params.date"
}

Puoi anche inviare un payload personalizzato alle integrazioni che sviluppi. Non verrà elaborato da Dialogflow CX, quindi devi gestirlo nella tua logica di business.

Consulta anche la sezione seguente relativa ai modelli di payload personalizzati.

Trasferimento a un operatore

Questa risposta indica al chiamante dell'API di rilevamento dell'intent che la conversazione deve essere trasferita a un agente umano. Dialogflow CX utilizza questo segnale solo per identificare le conversazioni trasferite a fini di misurazione e non altera in alcun modo lo stato della sessione. Il tuo sistema o la tua integrazione può utilizzare questo segnale per intraprendere le azioni necessarie per trasferire la conversazione. Dialogflow CX non impone alcuna struttura a questi dati, quindi puoi scegliere qualsiasi struttura adatta al tuo sistema.

Metadati di successo della conversazione

Questa risposta indica al chiamante dell'API di rilevamento dell'intent che la conversazione con l'agente Dialogflow CX è andata a buon fine. Dialogflow CX utilizza questo segnale solo per identificare le conversazioni andate a buon fine ai fini della misurazione e non altera in alcun modo lo stato della sessione. Il tuo sistema o la tua integrazione può utilizzare questo segnale per intraprendere le azioni necessarie. Dialogflow CX non impone alcuna struttura a questi dati, quindi puoi scegliere quella più adatta al tuo sistema.

Riprodurre l'audio preregistrato

Questa risposta riproduce un file audio per le integrazioni che supportano questa funzionalità.

I requisiti di formato dei file audio possono variare a seconda delle integrazioni. Ad esempio, consulta i requisiti per Dialogflow CX Phone Gateway.

Per le integrazioni di telefonia dei partner, l'URL del file audio deve essere accessibile al partner. Un URL disponibile pubblicamente, ad esempio un file pubblico in Cloud Storage, è sempre accessibile al partner. Il partner può anche fornire un accesso limitato per i file audio. Per ulteriori dettagli, consulta la documentazione per i partner.

Testo dell'audio di output

Questa risposta è simile alla risposta text, ma è applicabile solo alla sintesi vocale. Se il tuo agente è in grado di gestire sessioni di testo e vocali, puoi utilizzare risposte di testo e audio di output uniche per creare un'esperienza utente diversa per il testo rispetto alla voce. Se viene fornito il testo audio di output per una sessione vocale, le risposte in testo normale vengono ignorate.

Se il tuo agente gestisce sessioni di testo e vocali e vuoi gli stessi messaggi di risposta, utilizza le risposte di testo sia per le sessioni di testo che per quelle vocali.

Il testo audio di output viene concatenato in modo simile alle risposte di testo. Se le risposte di testo audio di output sono un mix di testo e SSML, il risultato concatenato viene trattato come SSML. Idealmente, il progettista dell'agente dovrebbe utilizzare in modo coerente il testo o l'SSML.

Risposta condizionale

Questo tipo di risposta viene utilizzato per le risposte condizionali. Il formato generale è:

if [condition]
  [response]
elif [condition]
  [response]
elif [condition]
  [response]
else
  [response]
endif

dove:

  • [condition] è lo stesso formato utilizzato per le condizioni del percorso.
  • [response] è una risposta di testo
  • I blocchi elif e else sono facoltativi

Ad esempio:

if $session.params.user-age >= 21
  Ok, you may enter.
else
  Sorry, you cannot enter.
endif

Sia [condition] sia [response] possono utilizzare funzioni di sistema inline per generare valori dinamici durante le conversazioni. Per saperne di più, consulta i riferimenti alle funzioni di sistema e alle condizioni di percorso. Il [condition] viene risolto in base allo stato della sessione all'inizio dell'evasione. Se [response] si basa sullo stato della sessione, viene risolto in base allo stato della sessione aggiornato al termine dell'evasione.

Per gli agenti multilingue, [condition] è comune a tutte le lingue, mentre [response] è specifico per la lingua. Quando modifichi [condition] per una lingua nella console, questa parte viene aggiornata in tutte le lingue dell'agente e, poiché diventa una nuova condizione, [response] viene cancellato per tutte le lingue diverse da quella selezionata durante l'aggiornamento di [condition].

Trasferimento di chiamata di telefonia

Per alcune integrazioni di telefonia, puoi specificare un numero di telefono statunitense per il trasferimento delle chiamate. In fase di runtime, quando l'agente virtuale Dialogflow CX chiama un fulfillment con trasferimento di chiamata, la chiamata viene trasferita al numero specificato e la gestione dell'agente virtuale viene sospesa.

Risposta dello strumento datastore

Questo tipo di risposta configura le risposte dell'agente restituite dagli strumenti di archiviazione dei dati collegati. Se hai configurato uno strumento didatastorei in questo completamento, una scheda di risposta dello strumento didatastorei viene compilata automaticamente.

  • Link alle fonti: consente di impostare il numero massimo di citazioni che verranno restituite all'utente dopo la risposta. Una citazione è un link alla fonte di informazioni nel datastore, visualizzato come pulsanti. Il valore predefinito è 1.
  • Citazioni in linea: anziché i link elencati dopo la risposta, questo campo ti consente di limitare il numero di citazioni in linea restituite per frase.
  • Fallback generativo: se selezioni questa casella, l'agente tenta di generare una risposta creata con l'AI se l'datastore restituisce un risultato vuoto. In caso contrario, passerà alle risposte statiche.
  • Risposte statiche: puoi inserire risposte di testo statiche nel campo finale. Questi vengono inviati all'utente parola per parola.

Messaggi di risposta specifici per il canale

Quando definisci l'evasione, puoi creare messaggi di risposta specifici per canale, in modo da creare risposte mirate per chat di testo, voce, SMS, integrazioni specifiche che supportano i canali e così via. I messaggi di risposta non specifici per un canale sono chiamati messaggi di risposta predefiniti.

In fase di runtime, Dialogflow CX selezionerà il messaggio di risposta predefinito o un messaggio di risposta specifico per il canale quando una richiesta di rilevamento dell'intent specifica un canale. Come best practice, devi definire messaggi di risposta predefiniti, anche se utilizzi messaggi di risposta specifici per il canale. I messaggi di risposta predefiniti possono fungere da fallback quando il sistema non riesce a fornire un canale valido.

Il nome del canale è un campo personalizzato che puoi impostare su qualsiasi testo. Se utilizzi direttamente l'API Dialogflow CX per le chiamate di runtime, puoi utilizzare i nomi dei canali che preferisci. Se utilizzi un'integrazione esistente, devi utilizzare i nomi dei canali riconosciuti dall'integrazione.

Impostazione di messaggi di risposta specifici per canale in fase di progettazione

Per fornire messaggi di risposta specifici per il canale per l'evasione quando utilizzi la console:

  • Fai clic su Aggiungi canale dopo aver aggiunto i messaggi di risposta predefiniti. L'interfaccia utente ti consentirà di aggiungere messaggi di risposta specifici per canale. Fai di nuovo clic su Aggiungi canale per aggiungere un altro canale.

Per fornire messaggi di risposta specifici per il canale per l'evasione quando utilizzi l'API:

  • Imposta il campo Fulfillment.messages[i].channel sul canale desiderato per ogni messaggio di risposta. Se questo campo non è impostato, la risposta è un messaggio di risposta predefinito.

Utilizzo di messaggi di risposta specifici per canale in fase di runtime

Per ricevere un messaggio di risposta specifico per il canale, il canale deve essere specificato nel messaggio di richiesta di rilevamento dell'intent. Vedi il campo queryParams.channel nel metodo detectIntent del tipo Sessions.

Seleziona un protocollo e una versione per il riferimento alla sessione:

Protocollo V3 V3beta1
REST Risorsa sessione Risorsa sessione
RPC Interfaccia della sessione Interfaccia della sessione
C++ SessionsClient Non disponibile
C# SessionsClient Non disponibile
Go SessionsClient Non disponibile
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP Non disponibile Non disponibile
Python SessionsClient SessionsClient
Ruby Non disponibile Non disponibile

Se in una richiesta non è definito alcun canale o se nell'evasione non viene trovato alcun canale corrispondente, Dialogflow CX restituirà il messaggio di risposta predefinito.

Modelli di payload personalizzati

Se utilizzi spesso payload personalizzati, ti consigliamo di utilizzare modelli di payload personalizzati. I payload personalizzati a volte sono grandi e complessi, quindi l'utilizzo di modelli può semplificare il processo di creazione dell'agente.

Puoi fornire questi modelli nelle impostazioni dell'agente, che li rende disponibili per la selezione ogni volta che crei un fulfillment per l'agente.

Ad esempio, il payload JSON per i pulsanti "Sì" e "No" può essere definito come modelli di payload personalizzati. Quando crei un fulfillment che richiede questi pulsanti, devi solo selezionare il modello durante la creazione del fulfillment.

Quando selezioni un modello per un payload personalizzato di evasione, i contenuti del modello vengono inseriti nel payload. Puoi quindi modificare il payload in base alle tue esigenze.

Se modifichi un modello, la modifica non viene propagata automaticamente a tutti i payload di evasione in cui è stato fatto riferimento.

Per creare un modello di payload personalizzato, consulta le impostazioni generali dell'agente.

Per selezionare un modello di payload personalizzato durante la creazione dell'evasione, fai clic su Seleziona modello quando crei un payload personalizzato di evasione.

Chiamate webhook

Quando viene chiamato un fulfillment e il fulfillment ha un webhook, l'agente invia una richiesta al tuo webhook. Il webhook può eseguire qualsiasi azione necessaria all'interno del servizio, fornire un messaggio di risposta dinamico, ignorare i valori dei parametri e cambiare la pagina corrente.

Di seguito vengono descritte le impostazioni del webhook per l'evasione:

Termine Definizione
Abilita webhook In questo modo viene attivato il webhook per l'evasione.
Webhook Seleziona la risorsa webhook.
Tag Il tag di testo che fornisci qui verrà inserito nel campo WebhookRequest.fulfillmentInfo.tag della richiesta webhook inviata al tuo servizio webhook. Può essere utilizzato per controllare il comportamento del webhook in modo specifico per l'evasione.
Restituisci risposta parziale Consente l'annullamento della riproduzione di una risposta parziale. Per maggiori dettagli, consulta le impostazioni avanzate di sintesi vocale.

Preset dei parametri

Puoi utilizzare un fulfillment per fornire preset che impostano o sostituiscono i valori dei parametri correnti. Questi preset verranno applicati prima di risolvere i messaggi di risposta statica o di chiamare un webhook.

Puoi anche utilizzare le funzioni di sistema per preimpostare il parametro su un valore generato dinamicamente.

Ecco alcuni esempi:

  • Impostazione di un parametro now sull'ora corrente:

    Parametro Valore
    ora $sys.func.NOW()
  • Incremento di 1 di un parametro esistente counter:

    Parametro Valore
    contatore $sys.func.ADD($session.params.counter, 1)
  • Impostazione di un parametro new-cost sul valore parametro other-cost, mantenendo il valore completo dell'oggetto composito:

    Parametro Valore
    new-cost $sys.func.IDENTITY($session.params.other-cost)

Strumenti datastore

Per saperne di più su questa funzionalità, consulta la documentazione sugli strumenti di archiviazione.

Impostazioni avanzate per il parlato

Queste impostazioni avanzate di sintesi vocale possono facoltativamente ignorare le stesse impostazioni di sintesi vocale della pagina, impostazioni di sintesi vocale del flusso e impostazioni di sintesi vocale dell'agente.

Coda delle risposte

Durante il turno di un agente, è possibile (e a volte auspicabile) chiamare più fulfillment, ognuno dei quali può generare un messaggio di risposta. Dialogflow CX gestisce queste risposte in una coda di risposte.

Risposta parziale per l'API di streaming

Per impostazione predefinita, Dialogflow CX invia le risposte ordinate all'utente finale solo al termine del turno dell'agente. Puoi anche attivare l'opzione Restituisci risposta parziale nel fulfillment per restituire le risposte attualmente in coda come risposta parziale quando utilizzi le API di streaming. Per ulteriori dettagli, consulta la sezione Ciclo di vita di una pagina.

Ad esempio, se il webhook verrà eseguito probabilmente per molto tempo, puoi aggiungere una risposta statica nel fulfillment e attivare la risposta parziale. In questo modo, Dialogflow CX svuota la coda di risposte e invia tutti i messaggi come risposta parziale prima di chiamare il webhook.

Al momento, la risposta parziale non è supportata per i seguenti elementi, ma lo sarà in futuro:

Per testare questa funzionalità nel simulatore, devi attivare la risposta parziale.

Screenshot della risposta parziale del simulatore

Nell'esempio seguente, considera che il webhook impiega 5 secondi per completarsi e che non attivi la risposta parziale. Il turno conversazionale dell'agente Dialogflow CX non termina finché il webhook non viene completato. Durante questo turno di 5 secondi, le risposte vengono messe in coda in attesa del webhook e non vengono restituite all'utente finale fino al completamento del turno. Ciò comporta un'esperienza utente negativa.

Senza risposta parziale.

Se attivi la risposta parziale nel primo fulfillment, Dialogflow CX restituisce il primo messaggio di fulfillment rapidamente e chiama il webhook. Al termine del webhook, Dialogflow CX restituisce la risposta finale. In questo scenario, l'esperienza utente finale migliora perché viene comunicato che è previsto un breve periodo di attesa. Inoltre, la chiamata webhook viene eseguita contemporaneamente all'invio di una risposta all'utente finale.

Con risposta parziale.

Speech Synthesis Markup Language (SSML)

Puoi utilizzare Speech Synthesis Markup Language (SSML) nei campi di testo o di completamento del testo audio di output. Ciò ti consente di personalizzare la risposta audio fornendo dettagli su pause e formattazione audio per acronimi, date, orari, abbreviazioni o testo che deve essere censurato.

Per i dettagli della sintassi, consulta la documentazione SSML di Text-to-Speech.