Fulfillment

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

Un adempimento può contenere uno dei seguenti elementi:

  • Messaggi di risposta statici.
  • Le chiamate webhook richiedono risposte dinamiche e/o l'esecuzione di azioni.
  • Preimpostazioni dei parametri per impostare o ignorare i valori dei parametri.

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

Casi d'uso di evasione degli ordini

L'implementazione 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 dell'evasione

Messaggi di risposta statici (opzioni di dialogo)

I messaggi di risposta statica sono le risposte dell'agente che definisci in fase di progettazione. Li definisci quando crei il fulfillment. Durante l'esecuzione, queste risposte vengono aggiunte alla coda di risposta.

Esistono diversi tipi di messaggi di risposta, descritti nelle sottosezioni seguenti. Quando utilizzi la console, un riquadro di adempimento contiene una scheda iniziale di messaggio di risposta di testo, 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 API o di integrazione per il rilevamento dell'intenzione utilizzano la sintesi vocale, questo testo verrà utilizzato per generare contenuti audio. In questo caso, il testo fornito può facoltativamente utilizzare il linguaggio 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 della scheda viene scelto in modo casuale in fase di esecuzione.

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

Payload personalizzato

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

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

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

Puoi anche inviare un payload personalizzato alle integrazioni che sviluppi. Non verrà elaborato da Conversational Agents (Dialogflow CX), quindi devi gestirlo nella tua logica aziendale.

Consulta anche la sezione Modelli di payload personalizzati di seguito.

Riassegnazione a un agente

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

Metadati relativi al successo della conversazione

Questa risposta indica all'autore della chiamata dell'API detect intent che la conversazione con l'agente Conversational Agents (Dialogflow CX) è andata a buon fine. Conversational Agents (Dialogflow CX) utilizza questo indicatore solo per identificare le conversazioni andate a buon fine a fini di misurazione e non altera in alcun modo lo stato della sessione. Il tuo sistema o la tua integrazione può utilizzare questo indicatore per intraprendere le azioni necessarie. Conversational Agents (Dialogflow CX) non impone alcuna struttura a questi dati, quindi puoi scegliere qualsiasi struttura adatta al tuo sistema.

Riprodurre audio preregistrato

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

I requisiti per i formati dei file audio possono variare in base alle 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 l'accesso con restrizioni per i file audio. Per ulteriori dettagli, consulta la documentazione del partner.

Testo audio in uscita

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

Se il tuo agente gestisce sia le sessioni di testo che quelle vocali e vuoi utilizzare gli stessi messaggi di risposta, usa 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 audio in testo dell'output sono una combinazione di testo e SSML, il risultato concatenato viene trattato come SSML. Idealmente, il designer dell'agente deve 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] che [response] possono utilizzare funzioni di sistema in linea per generare valori dinamici durante le conversazioni. Per ulteriori informazioni, controlla i riferimenti alle funzioni di sistema e alle condizioni di percorso. [condition] viene risolto in base allo stato della sessione all'inizio dell'esecuzione. Se [response] si basa sullo stato della sessione, viene risolto in base allo stato della sessione aggiornato al termine dell'esecuzione.

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 chiamate di telefonia

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

Messaggi di risposta specifici del canale

Quando definisci l'evasione, puoi creare messaggi di risposta specifici per i canali, in modo da poter 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 esecuzione, Conversational Agents (Dialogflow CX) selezionerà il messaggio di risposta predefinito o un messaggio di risposta specifico per il canale quando una richiesta di rilevamento dell'intenzione specifica un canale. Come best practice, devi definire i messaggi di risposta predefiniti, anche se utilizzi messaggi di risposta specifici per canale. I messaggi di risposta predefiniti possono fungere da alternativa 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 l'API Agenti conversazionali (Dialogflow CX) direttamente per le chiamate di runtime, puoi utilizzare i nomi di canale 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 consente 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 esecuzione

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

Seleziona un protocollo e una versione per il riferimento sessione:

Protocollo V3 V3beta1
REST Risorsa sessione Risorsa sessione
RPC Interfaccia di sessione Interfaccia di sessione
C++ SessionsClient Non disponibile
C# SessionsClient Non disponibile
Vai 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 non viene trovato alcun canale corrispondente nell'evasione, il messaggio di risposta predefinito verrà restituito da Conversational Agents (Dialogflow CX).

Modelli di payload personalizzati

Se utilizzi spesso payload personalizzati, dovresti utilizzare i modelli di payload personalizzati. I payload personalizzati a volte sono grandi e complessi, quindi l'utilizzo di modelli può contribuire a semplificare la procedura di creazione dell'agente.

Puoi fornire questi modelli nelle impostazioni dell'agente, in modo che siano disponibili per la selezione ogni volta che crei l'evasione 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'evasione che richiede questi pulsanti, devi solo selezionare il modello al momento della creazione.

Quando selezioni un modello per un payload personalizzato di adempimento, 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 adempimento 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'erogazione, fai clic su Seleziona modello quando crei un payload personalizzato per l'erogazione.

Chiamate webhook

Quando viene chiamata un'evasione e questa ha un webhook, l'agente invia una richiesta al tuo webhook. L'webhook può eseguire qualsiasi azione necessaria all'interno del servizio, fornire un messaggio di risposta dinamico, eseguire l'override dei valori dei parametri e modificare la pagina corrente.

Di seguito sono descritte le impostazioni degli webhook per l'evasione degli ordini:

Termine Definizione
Attivare l'webhook In questo modo viene attivato l'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 di webhook inviata al tuo servizio webhook. Questo può essere utilizzato per controllare il comportamento dell'webhook in modo specifico per l'evasione.
Restituire una risposta parziale Consente l'annullamento della riproduzione di una risposta parziale. Per maggiori dettagli, consulta le impostazioni avanzate di Speech.

Preimpostazioni dei parametri

Puoi utilizzare un'implementazione per fornire preset che impostano o sostituiscono i valori dei parametri correnti. Questi preset verranno applicati prima della risoluzione dei messaggi di risposta statici o della chiamata a un webhook.

Puoi anche utilizzare 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()
  • Aumento di 1 di un parametro esistente counter:

    Parametro Valore
    contatore $sys.func.ADD($session.params.counter, 1)
  • Impostare 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)

Impostazioni avanzate per il parlato

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

Coda di risposta

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

Risposta parziale per l'API di streaming

Per impostazione predefinita, Conversational Agents (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 completamento 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 tuo webhook probabilmente verrà eseguito per molto tempo, puoi aggiungere una risposta statica nell'elaborazione e attivare la risposta parziale. In questo modo, Conversational Agents (Dialogflow CX) svuota la coda di risposta e invia tutti i messaggi come risposta parziale prima di chiamare l'webhook.

La risposta parziale non è attualmente supportata per quanto segue, 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 completamento del webhook richiede 5 secondi e che non attivi la risposta parziale. Il turno di conversazione dell'agente Conversational Agents (Dialogflow CX) non termina finché il webhook non è completato. Durante questo turno di 5 secondi, le risposte vengono messe in coda in attesa del webhook e non vengono restituite all'utente finale finché il turno non è completato. Ciò comporta un'esperienza utente negativa.

Senza risposta parziale.

Se attivi la risposta parziale nella prima esecuzione, Conversational Agents (Dialogflow CX) restituisce rapidamente il primo messaggio di esecuzione e chiama l'webhook. Una volta completato il webhook, Conversational Agents (Dialogflow CX) restituisce la risposta finale. In questo scenario, l'esperienza utente finale è migliorata perché gli utenti vengono informati che devono attendere poco. Inoltre, la chiamata all'webhook viene eseguita contemporaneamente all'invio di una risposta all'utente finale.

Con risposta parziale.

Speech Synthesis Markup Language (SSML)

Puoi utilizzare il linguaggio SSML (Speech Synthesis Markup Language) nei campi di adempimento del testo o dell'output audio. In questo modo puoi personalizzare la risposta audio fornendo dettagli sulle pause e sulla formattazione audio per acronimi, date, orari, abbreviazioni o testo da censurare.

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