Fulfillment

Nell'ambito del turno conversazionale di un agente, deve rispondere all'utente finale con una risposta a una domanda, una query per ottenere informazioni o la chiusura della sessione. L'agente potrebbe anche dover contattare il servizio per generare risposte dinamiche o eseguire azioni per un turno. L'evasione degli ordini viene utilizzata per eseguire queste operazioni.

Un fulfillment può contenere uno dei seguenti elementi:

  • Messaggi di risposta statici.
  • Il webhook richiede risposte dinamiche e/o azioni.
  • Preimpostazioni dei parametri per impostare o sostituire i valori dei parametri.

A turno di un agente, è possibile (e a volte desiderabile) chiamare più fulfillment, ognuno dei quali può generare un messaggio di risposta. Dialogflow conserva queste risposte in una coda di risposte. Una volta terminato il turno dell'agente, Dialogflow invia le risposte ordinate all'utente finale.

Il fulfillment ES è limitato alla connessione di un servizio webhook. L'ambito del fulfillment per l'esperienza cliente è stato ampliato, quindi ora copre tutti i tipi di prompt e risposte.

Casi d'uso relativi all'evasione degli ordini

Il fulfillment viene utilizzato ovunque sia necessario un messaggio di risposta:

Per ognuno di questi casi d'uso, la console aprirà un riquadro di modifica dei fulfillment.

Screenshot dell'evasione degli ordini

Messaggi di risposta statici (opzioni di dialogo)

I messaggi di risposta statici sono risposte degli agenti che definisci in fase di progettazione. Li definisci durante la creazione del fulfillment. 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 riquadro di completamento presenta una scheda iniziale di messaggio di risposta, ma puoi fare clic su Aggiungi opzione di dialogo per aggiungere altre schede per altri tipi di messaggi di risposta.

Testo

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

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

Questi messaggi possono contenere riferimenti a parametri e funzioni di sistema incorporate.

Payload personalizzato

Alcune integrazioni supportano una risposta del payload personalizzata per gestire risposte avanzate. Questi payload personalizzati sono forniti in un formato JSON definito nella documentazione dell'integrazione. Ad esempio, consulta il formato payload personalizzato di Dialogflow Messenger.

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

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

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

Consulta anche la sezione Modelli di payload personalizzati di seguito.

Passaggio a un operatore

Questa risposta segnala al chiamante dell'API Detect intent che la conversazione deve essere consegnata a un agente umano. Dialogflow utilizza questo indicatore solo per identificare le conversazioni gestite a scopo di misurazione e non modifica in alcun modo lo stato della sessione. Il sistema o l'integrazione possono utilizzare questo segnale per eseguire le azioni necessarie per trasferire la conversazione. Dialogflow non impone alcuna struttura a questi dati, quindi puoi scegliere la struttura più adatta al tuo sistema.

Metadati relativi alla riuscita della conversazione

Questa risposta segnala al chiamante dell'API di rilevamento dell'intent che la conversazione con l'agente Dialogflow è riuscita. Dialogflow utilizza questo indicatore solo per identificare le conversazioni riuscite a fini di misurazione e non modifica in alcun modo lo stato della sessione. Il tuo sistema o la tua integrazione possono utilizzare questo indicatore per intraprendere le azioni necessarie. Dialogflow non impone alcuna struttura a questi dati, quindi puoi scegliere la struttura più adatta al tuo sistema.

Riproduci audio preregistrato

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

I requisiti per il formato dei file audio potrebbero variare a seconda delle integrazioni. Ad esempio, consulta i requisiti per il gateway telefonico Dialogflow CX.

Per le integrazioni della telefonia partner, l'URL del file audio deve essere accessibile al partner. Un URL disponibile pubblicamente, come un file pubblico in Cloud Storage, è sempre accessibile al partner. Il partner potrebbe anche fornire accesso limitato ai file audio. Per i dettagli, consulta la documentazione del partner.

Testo audio di output

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

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

Il testo dell'audio di output è concatenato in modo simile alle risposte testuali. Se le risposte di testo audio di output sono una combinazione di testo e SSML, il risultato concatenato viene considerato come SSML. Idealmente, il designer dell'agente dovrebbe utilizzare testo o SSML in modo coerente.

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] che [response] possono utilizzare funzioni di sistema incorporate per generare valori dinamici durante le conversazioni. Per ulteriori informazioni, consulta i riferimenti alle funzioni di sistema e alle condizioni del percorso. Il valore [condition] viene risolto in base allo stato della sessione all'inizio del fulfillment. Se [response] si basa sullo stato della sessione, viene risolto in base allo stato aggiornato della sessione al termine del fulfillment.

Per gli agenti multilingue, [condition] è comune per 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, il valore [response] viene cancellato per tutte le lingue diverse da quella selezionata durante l'aggiornamento di [condition].

Chiamata di trasferimento della telefonia

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

Messaggi di risposta specifici per canale

Durante la definizione del fulfillment, 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. Tutti i messaggi di risposta che non sono specifici di un canale vengono denominati messaggi di risposta predefiniti.

In fase di runtime, Dialogflow seleziona il messaggio di risposta predefinito o un messaggio di risposta specifico del 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 canale. I messaggi di risposta predefiniti possono essere utilizzati come fallback quando il sistema non fornisce un canale valido.

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

Impostare messaggi di risposta specifici per canale in fase di progettazione

Per fornire messaggi di risposta specifici per canale per il fulfillment 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 il canale. Fai di nuovo clic su Aggiungi canale per aggiungere un altro canale.

Per fornire messaggi di risposta specifici del canale per il fulfillment 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 predefinito.

Utilizzo dei messaggi di risposta specifici del canale in fase di runtime

Per ricevere un messaggio di risposta specifico per il canale, è necessario specificare il canale nel messaggio di richiesta di rilevamento dell'intent. Controlla il campo queryParams.channel nel metodo detectIntent del tipo Sessions.

Seleziona un protocollo e la versione come riferimento per la sessione:

Protocollo V3 Versione 3 beta 1
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 non è definito nessun canale in una richiesta o se non viene trovato alcun canale corrispondente nel fulfillment, Dialogflow restituisce il messaggio di risposta predefinito.

Modelli di payload personalizzati

Se utilizzi spesso payload personalizzati, dovresti usare modelli di payload personalizzati. I payload personalizzati sono a volte grandi e complessi, pertanto l'uso di modelli può semplificare il processo di creazione degli agenti.

Puoi fornire questi modelli nelle impostazioni dell'agente, in modo che siano disponibili per la selezione ogni volta che crei il fulfillment per l'agente.

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

Quando selezioni un modello per un payload personalizzato di fulfillment, 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 si propaga automaticamente a tutti i payload di fulfillment 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 del fulfillment, fai clic su Seleziona modello durante la creazione di un payload personalizzato per il fulfillment.

Chiamate webhook

Quando viene chiamato un fulfillment, con un webhook, l'agente invia una richiesta al webhook. Il webhook può eseguire tutte le azioni necessarie all'interno del servizio, fornire un messaggio di risposta dinamica, eseguire l'override dei valori dei parametri e modificare la pagina corrente.

Di seguito vengono descritte le impostazioni del webhook per il fulfillment:

Termine Definizione
Attiva webhook In questo modo viene abilitato il webhook per il fulfillment.
Webhook Seleziona la risorsa webhook.
Tag Il tag di testo che fornisci qui verrà inserito nel campo WebhookRequest.fulfillmentInfo.tag della richiesta di webhook inviata al servizio webhook. Può essere utilizzato per controllare il comportamento del webhook in modo specifico per il fulfillment.

Preimpostazioni dei parametri

Puoi utilizzare un fulfillment per fornire preimpostazioni che impostino o sostituiscano i valori dei parametri correnti. Queste preimpostazioni verranno applicate prima di risolvere i messaggi di risposta statici o di chiamare un webhook.

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

Ecco alcuni esempi:

  • Impostando il parametro now sull'ora corrente:

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

    Parametro Valore
    contatore $sys.func.ADD($session.params.counter, 1)
  • Impostando il parametro new-cost sul valore parametro other-cost, conservando il valore completo dell'oggetto composto:

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

Impostazioni vocali avanzate

Queste impostazioni vocali possono facoltativamente eseguire l'override delle stesse impostazioni vocali della pagina, delle stesse impostazioni della voce del flusso e delle stesse impostazioni della voce dell'agente.

Coda di risposte

A turno di un agente, è possibile (e a volte desiderabile) chiamare più fulfillment, ognuno dei quali può generare un messaggio di risposta. Dialogflow conserva queste risposte in una coda di risposte.

Risposta parziale per l'API di streaming

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

Ad esempio, se è probabile che il webhook venga eseguito per molto tempo, puoi aggiungere una risposta statica nel fulfillment e attivare la risposta parziale. In questo modo, Dialogflow elimina la coda di risposta e invia tutti i messaggi come risposta parziale prima di chiamare il webhook.

La risposta parziale non è attualmente supportata per quanto segue, ma verrà supportata in seguito:

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

Screenshot risposta parziale del simulatore

Nell'esempio seguente, tieni presente che il completamento del webhook richiede 5 secondi e non attivi la risposta parziale. Il turno di conversazione dell'agente Dialogflow non termina fino al completamento del webhook. 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 della svolta. Questo comporta un'esperienza utente negativa.

Senza risposta parziale.

Se attivi la risposta parziale nel primo fulfillment, Dialogflow restituisce rapidamente il primo messaggio di fulfillment e chiama il webhook. Una volta completato il webhook, Dialogflow restituisce la risposta finale. In questo scenario l'esperienza dell'utente finale è migliorata, perché gli viene detto di aspettarsi un'attesa breve. Inoltre, la chiamata webhook viene eseguita in contemporanea all'invio di una risposta all'utente finale.

Con risposta parziale.

SSML (Speech Synthesis Markup Language)

Puoi usare il linguaggio SSML (Speech Synthesis Markup Language) nei campi di fulfillment del testo o dell'audio di output. Ciò ti consente di personalizzare la risposta audio fornendo dettagli sulle pause e sulla formattazione dell'audio di acronimi, date, ore, abbreviazioni o testo che deve essere censurato.

Per i dettagli sulla sintassi, consulta la documentazione di SSML per la sintesi vocale.