Come viene elaborata la finestra di dialogo

Il dialogo utilizza gli intenti che vengono identificati nell'input dell'utente, oltre al contesto ottenuto dall'applicazione, per interagire con l'utente e infine fornire una risposta utile.

Il dialogo mette in corrispondenza gli intenti (ciò che gli utenti dicono di voler fare) con le risposte (ciò che il bot risponde). La risposta potrebbe essere la risposta a una domanda come What are your store hours? o l'esecuzione di un comando, come l'esecuzione di un ordine. L'intento e l'entità potrebbero essere informazioni sufficienti per identificare la risposta corretta o il dialogo potrebbe chiedere all'utente un ulteriore input necessario per rispondere correttamente. Ad esempio, se un utente lo chiede, Where can I get some food? è possibile che si desideri chiarire se si desidera un ristorante o un negozio di alimentari, per cenare o uscire, e così via. Puoi chiedere ulteriori dettagli in una risposta di testo e creare uno o più nodi figlio per elaborare il nuovo input.

Questo dialogo viene rappresentato graficamente in watsonx Assistant come una struttura ad albero. Crea un ramo per elaborare ogni intento che desideri venga gestito dalla conversazione. Un ramo è composto da più nodi.

Nodi del dialogo

Ogni nodo di dialogo contiene, come minimo, una condizione e una risposta.

![Shows user input going to a box that contains the statement If: CONDITION, Then: RESPONSE](images/node1-empty.png

  • Condizione: specifica le informazioni che devono essere presenti nell'input utente affinché questo nodo nel dialogo venga attivato. Di norma, le informazioni costituiscono uno specifico intento. Potrebbero anche essere un tipo di entità, un valore di entità o un valore di variabile di contesto. Per ulteriori informazioni, consultare Condizioni.
  • Risposta: l'espressione utilizzata dal tuo assistente per rispondere all'utente. La risposta può anche essere configurata per mostrare un'immagine o un elenco delle opzioni oppure per attivare azioni programmatiche. Per ulteriori informazioni, vedi Risposte.

Il nodo può essere considerato come avente una costruzione if/then: se la condizione è true, allora restituirà questa risposta.

Ad esempio, il seguente nodo viene attivato se la funzione di elaborazione del linguaggio naturale del tuo assistente determina che l'input utente contiene l'intento #cupcake-menu. Come risultato del nodo che viene attivato, il tuo assistente risponde con una risposta appropriata.

Mostra l'utente che chiede informazioni sui gusti dei cupcake. La condizione If è #cupcake-menu e la risposta Then è un elenco di flavor cupcake.
Condizione e risposta semplici

Un singolo nodo con una sola condizione e risposta può gestire semplici richieste dell'utente. Ma, il più delle volte, gli utenti hanno domande più sofisticate o desiderano aiuto con attività più complesse. Puoi aggiungere dei nodi figlio che richiedano all'utente di fornire qualsiasi ulteriore informazione richiesta dal tuo assistente.

Mostra che il primo nodo nel dialogo chiede quale tipo di cupcake l'utente desidera, senza glutine o regolare, e ha due nodi figlio che forniscono una risposta diversa a seconda della risposta dell'utente.
Node con nodi figlio

Flusso del dialogo

Il dialogo che crei viene elaborato dal tuo assistente dal primo nodo nella struttura ad albero all'ultimo.

La freccia punta verso il basso accanto a 3 nodi per mostrare che la finestra di dialogo passa dal primo nodo all'ultimo flusso
Node

Mentre scende lungo la struttura ad albero, se il tuo assistente trova una condizione che viene soddisfatta, attiverà tale nodo. Si sposta quindi insieme al nodo attivato per controllare l'input utente e verificare la presenza di eventuali condizioni del nodo figlio. Mentre controlla i nodi child, si sposta nuovamente dal primo nodo child all'ultimo.

Il tuo assistente continua il suo percorso attraverso la struttura ad albero di dialogo dal primo all'ultimo nodo, insieme a ciascun nodo attivato, quindi dal primo all'ultimo nodo figlio, insieme a ciascun nodo figlio attivato finché non raggiunge l'ultimo nodo nel ramo che sta seguendo.

Mostra la freccia 1 che punta dal primo nodo root all'ultimo, la freccia 2 che punta dalla lunghezza di un nodo attivato e la freccia 3 che punta dal primo all'ultimo nodo child del nodo attivato.Flusso
Node

Quando inizi a creare il dialogo, devi stabilire i rami da includere e dove posizionarli. L'ordine dei rami è importante in quanto i nodi vengono valutati dal primo all'ultimo. Viene utilizzato il primo nodo root la cui condizione corrisponde all'input; tutti i nodi che seguono nella struttura ad albero non vengono attivati.

Quando il tuo assistente raggiunge la fine di un ramo oppure non può trovare una condizione valutata come true nella serie corrente di nodi figlio che sta valutando, ritorna alla base della struttura ad albero. Il tuo assistente elabora i nodi root dal primo all'ultimo. Se nessuna condizione viene valutata come true, viene restituita la risposta proveniente dall'ultimo nodo nella struttura ad albero che di solito contiene una condizione speciale anything_else che viene sempre valutata come true.

Puoi interrompere il flusso standard dal-primo-all'ultimo nei seguenti modi:

  • Personalizzando le operazioni da eseguire una volta elaborato un nodo. Ad esempio, puoi configurare un nodo in modo che passi direttamente ad un altro nodo una volta elaborato anche se l'altro nodo è posizionato prima nella struttura ad albero. Per ulteriori informazioni, consultare Definizione delle operazioni successive.

  • Configurando le risposte condizionali per passare ad altri nodi. Per ulteriori informazioni, vedi Risposte condizionali.

  • Configurando le impostazioni di digressione per i nodi di dialogo. Le digressioni possono anche influire su come gli utenti si spostano tra i nodi nel runtime. Se abiliti la generazione delle digressioni dalla maggior parte dei nodi e configuri le restituzioni, gli utenti potranno passare da un nodo all'altro più facilmente. Per ulteriori informazioni, vedi Digressioni.

Dialogo di esempio

Questo diagramma mostra un mockup di una struttura ad albero di dialogo creata con l'editor del dialogo della GUI.

Struttura ad albero di dialogo di esempio con contenuto di esempio
Struttura ad albero di dialogo

La struttura ad albero di dialogo in questo diagramma contiene due nodi di dialogo root. Una tipica struttura ad albero di dialogo probabilmente avrebbe molti più nodi, ma questa rappresentazione offre un'idea di come potrebbe apparire una sottoserie di nodi.

  • Il primo nodo root condiziona un valore di intento. Ha due nodi figlio ciascuno dei quali condiziona un valore di entità. Il secondo nodo figlio definisce due risposte. La prima risposta viene restituita all'utente se il valore della variabile di contesto corrisponde al valore specificato nella condizione. In caso contrario, viene restituita la seconda risposta.

    Questo tipo standard di nodo è utile per acquisire domande su un determinato argomento e poi, nella risposta root, porre una domanda di follow-up di cui si occuperanno i nodi figlio. Ad esempio, potresti riconoscere una domanda utente relativa agli sconti e porre una domanda di follow-up per chiedere se l'utente fa parte di associazioni con cui l'azienda ha accordi speciali di scontistica. I nodi figlio forniscono risposte diverse in base alla risposta dell'utente alla domanda sull'appartenenza all'associazione.

  • Il secondo nodo root è un nodo con slot. Condiziona anche un valore di intento. Definisce una serie di slot, uno per ogni parte di informazioni che desideri raccogliere dall'utente. Ciascuno slot pone una domanda che induce l'utente a rispondere. Ricerca un valore di entità specifico nella risposta dell'utente alla richiesta, tale valore viene poi salvato in una variabile di contesto dello slot.

    Questo tipo di nodo è utile per raccogliere i dettagli necessari per eseguire una transazione per conto dell'utente. Ad esempio, se l'intento dell'utente è quello di prenotare un volo, gli slot possono raccogliere le informazioni sul luogo di partenza e su quello di destinazione, sulle date del viaggio e così via.