Creazione di un dialogo complesso
In questa esercitazione, crei una finestra di dialogo per un assistente che aiuta gli utenti con richieste su un ristorante fittizio chiamato Truck Stop Gourmand.
Obiettivi di apprendimento
Al termine dell'esercitazione, si apprenderà come:
- Pianificare una finestra di dialogo.
- Definisci intenti personalizzati.
- Aggiungi nodi di dialogo che possono gestire i tuoi intenti.
- Aggiungere entità per rendere le risposte più specifiche.
- Aggiungere un'entità modello e utilizzarla nella finestra di dialogo per individuare i modelli nell'immissione utente.
- Impostare e fare riferimento alle variabili di contesto.
Durata
Il completamento di questa esercitazione richiede circa 2 o 3 ore.
Prerequisito
Prima di iniziare, completa l'Esercitazione introduttiva con il dialogo.
Utilizzi il dialogo che hai creato e aggiungi nodi al dialogo semplice che hai creato come parte dell'esercitazione introduttiva.
Pianifica il dialogo
Stai creando un assistente per un ristorante chiamato Truck Stop Gourmand che ha una posizione e una fiorente attività di pasticceria. Desideri che il semplice assistente risponda a domande degli utenti sul ristorante, sul suo menu e annulli gli ordini di torte dei clienti. Pertanto, devi creare degli intenti che gestiscono le domande relative ai seguenti argomenti:
- Informazioni sul ristorante
- Dettagli sul menu
- Annullamenti degli ordini
Inizi creando degli intenti che rappresentano questi oggetti e quindi crei un dialogo che risponda alle domande dell'utente su di essi.
Rispondi alle domande sul ristorante
Aggiungi un intento che riconosce quando i clienti pongono domande per avere dettagli sul ristorante stesso. Un intento è lo scopo o l'obiettivo espresso nell'input utente. L'intento #General_About_You
fornito con il catalogo di
contenuto General fornisce una funzione simile, ma i suoi esempi utente sono progettati per focalizzarsi su domande riguardo l'assistente invece che sul business che sta utilizzando l'assistente per aiutare i propri clienti. Quindi,
aggiungi il tuo intento.
Aggiungi l'intento #about_restaurant
-
Nella pagina Intenti, fai clic su Crea intento.
-
Aggiungi il seguente nome intento e poi fai clic su Crea intento:
about_restaurant
L'intento #about_restaurant viene aggiunto. Un prefisso di segno numerico (
#
) viene aggiunto al nome dell'intento per etichettarlo come intento. Questa convenzione di denominazione consente a te e agli altri utenti di riconoscere l'intento come un intento. Non ha ancora espressioni utente di esempio associate ad esso. -
Nel campo Aggiungi esempi utente, immetti le seguenti espressioni:
Tell me about the restaurant i want to know about you who are the restaurant owners and what is their philosophy? What's your story? Where do you source your produce from? Who is your head chef and what is the chef's background? How many locations do you have? do you cater or host functions on site? Do you deliver? Are you open for breakfast?
-
Fai clic sulla freccia Chiudi
per completare l'aggiunta dell'intento
#reservation
e delle sue espressioni di esempio.
Hai aggiunto un intento e fornito degli esempi di espressioni che degli utenti reali potrebbero immettere per attivare questo intento.
Aggiungi un nodo di dialogo che viene attivato dall'intento #about_restaurant
Aggiungi un nodo di dialogo che riconosce quando l'input utente associa l'intento che hai creato nel passo precedente, il che significa che la sua condizione controlla se il tuo assistente ha riconosciuto l'intento #about_restaurant
dall'input utente.
-
Fare clic su Finestra di dialogo per aprire la finestra di dialogo.
-
Trova il nodo #General_Greetings nell'albero di dialogo.
Aggiungerai un nodo che controlla le domande relative al ristorante dopo questo nodo greeting iniziale per rispecchiare il flusso che puoi aspettarti di incontrare in una conversazione normale. Ad esempio,
Hello.
thenTell me about yourself.
-
Fare clic sull'icona opzioni Node
nel nodo Clienti di riferimento, quindi selezionare Aggiungi nodo in basso.
-
Inizia a immettere
#about_restaurant
nel campo Se l'assistente riconosce e selezionalo dall'elenco.Questo nodo viene utilizzato se l'input utente corrisponde all'intento
#about_restaurant
. -
In Assistant risponde, immettere la risposta di testo:
Truck Stop Gourmand is the brainchild of Gloria and Fred Smith. What started out as a food truck in 2004 has expanded into a thriving restaurant. We now have one brick-and-mortar restaurant in downtown Portland. The bigger kitchen brought with it new chefs, but each one is faithful to the philosophy that made the Smith food truck so popular to begin with: deliver fresh, local produce in inventive and delicious ways. Join us for lunch or dinner seven days a week. Or order a cake from our bakery.
Aggiungi anche un'immagine alla risposta.
-
Fai clic su Add response type.
-
Seleziona Image dall'elenco a discesa. Nel campo Image source, aggiungi
https://www.ibmlearningcenter.com/wp-content/uploads/2018/02/IBM-Learning-Center-Food4.jpg
. -
Sposta in alto il tipo di risposta dell'immagine, in modo che venga visualizzato nella risposta prima che venga visualizzato il testo. Fare clic sulla freccia Sposta su
per riordinare i due tipi di risposta.
Immagine prima della risposta e della risposta del testo -
Fare clic sull'icona di chiusura
per chiudere la vista di modifica del nodo.
Verifica il nodo di dialogo #about_restaurant
Verifica l'intento controllando se le espressioni utente che sono simili, ma non uguali, agli esempi che hai aggiunto hanno addestrato il tuo assistente a riconoscere l'input con un intento #about_restaurant
.
-
Fai clic su Try it.
-
Immettere
I want to learn more about your restaurant.
Il tuo assistente indica che l'intento
#about_restaurant
è stato riconosciuto e restituisce una risposta con l'immagine e il testo che hai specificato per il nodo di dialogo.Provalo
Hai aggiunto un intento personalizzato e un nodo di dialogo che sa come gestirlo.
L'intento #about_restaurant
è progettato per riconoscere varie domande generali sul ristorante. Hai aggiunto un singolo nodo per acquisire tali domande. La risposta è lunga, ma è una singola affermazione che può potenzialmente
rispondere alle domande su tutti i seguenti argomenti:
- Proprietari di ristoranti
- Storia del ristorante
- philosophy
- Numero di siti
- Giorni di funzionamento
- Pasti serviti
- Il ristorante fa le torte su ordinazione
Per domande generali, è adatta una singola risposta generale.
Gestisci ordini torta
I clienti possono effettuare ordini di persona, telefonicamente o utilizzando il modulo d'ordine sul sito web. Dopo aver effettuato l'ordine, l'utente lo può annullare tramite l'assistente virtuale. Per prima cosa, definisci un'entità che può riconoscere i numeri di ordine. Successivamente, aggiungi un intento che riconosce quando gli utenti vogliono annullare un ordine di torte.
Aggiunta di un'entità modello del numero di ordine
Vuoi che l'assistente riconosca i numeri di ordine, in modo da creare un'entità modello per riconoscere il formato univoco utilizzato dal ristorante per identificare i suoi ordini. La sintassi dei numeri di ordine utilizzati dal panificio
del ristorante è di due lettere maiuscole seguite da 5 numeri. Ad esempio, YR34663
. Aggiungi un'entità che può riconoscere questo modello di caratteri.
-
Fare clic su Entità personali per aprire la pagina Entità.
-
Fai clic su Create entity.
-
Immetti
order_number
nel campo del nome dell'entità. -
Fai clic su Create entity.
-
Aggiungere
order_syntax
al campo Nome valore. -
Fare clic sulla freccia rivolta verso il basso accanto a Sinonimi per modificare il tipo in Modelli.
Modello -
Aggiungere la seguente espressione regolare al campo Modello:
[A-Z]{2}\d{5}
-
Fai clic su Add value.
-
Fare clic sulla freccia Chiudi
per completare l'aggiunta dell'entità
@order_number
.
Aggiungi un intento di annullamento degli ordini
-
Nella pagina Intenti, fai clic su Crea intento.
-
Aggiungi il seguente nome intento e poi fai clic su Crea intento:
cancel_order
-
Nel campo Aggiungi esempi utente, immetti le seguenti espressioni:
I want to cancel my cake order I need to cancel an order I just placed Can I cancel my cake order? I'd like to cancel my order There's been a change. I need to cancel my bakery order. please cancel the birthday cake order I placed last week The party theme changed; we don't need a cake anymore that order i placed, i need to cancel it.
-
Fare clic sulla freccia Chiudi
per completare l'aggiunta dell'entità
#cancel_order
.
Aggiungi un intento yes.
Prima di completare un'attività per conto dell'utente, è necessario ottenere la conferma che si sta effettuando l'azione appropriata. Aggiungi un intento #yes al dialogo che può riconoscere quando un utente è d'accordo con quello che sta proponendo il tuo assistente.
-
Nella pagina Intenti, fai clic su Crea intento.
-
Aggiungi il seguente nome intento e poi fai clic su Crea intento:
yes
-
Nel campo Aggiungi esempi utente, immetti le seguenti espressioni:
Yes Correct Please do. You've got it right. Please do that. that is correct. That's right yeah Yup Yes, I'd like to go ahead with that.
-
Fai clic sulla freccia Chiudi
per completare l'aggiunta dell'intento
#yes
.
Aggiungi dei nodi di dialogo che possono gestire le richieste di annullamento di un ordine.
Ora, aggiungi un nodo di dialogo che può gestire le richieste per annullare un ordine di torte.
-
Fare clic su Finestra di dialogo per aprire la finestra di dialogo.
-
Trova il nodo #menu nell'albero di dialogo.
-
Fare clic sull'icona Node
sul nodo #menu, quindi selezionare Aggiungi nodo in basso.
-
Iniziare a immettere
#cancel_order
nel campo Se l'assistente riconosce di questo nodo, quindi selezionarlo dall'elenco. -
In Assistant risponde, immettere la risposta di testo:
If the pickup time is more than 48 hours from now, you can cancel your order.
Prima di poter annullare l'ordine, è necessario conoscere il numero d'ordine. L'utente potrebbe specificare il numero di ordine nella richiesta originale. Pertanto, per evitare di chiedere nuovamente il numero di ordine, controlla se è presente un numero con il modello del numero di ordine nell'input originale. A tale scopo, definisci una variabile di contesto che salverebbe il numero di ordine se viene specificato.
-
In Assistente risponde, fare clic sull'icona Opzioni
e selezionare Apri editor di contesto.
-
Impostare il contesto utilizzando questi valori:
Order number context variable details Variabile Valore $ordernumber
<? @order_number.literal ?>
Il valore della variabile di contesto (
<? @order_number.literal ?>
) è un'espressione SpEL che acquisisce il numero che l'utente specifica che corrisponde al pattern definito dall'entità del pattern @order_number . Lo salva nella variabile$ordernumber
. -
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Ora, aggiungere i nodi child che richiedono il numero di ordine o che ricevono la conferma dall'utente che desiderano annullare un ordine con il numero di ordine rilevato.
-
Fare clic su Node icona opzioni
sul nodo #cancel_order, quindi selezionare Aggiungi nodo figlio.
-
Aggiungere un'etichetta al nodo per distinguerlo dagli altri nodi child che si stanno aggiungendo. Nel campo Immetti nome nodo, aggiungere
Ask for order number
. -
In Se l'assistente riconosce, immetti
true
come condizione. -
In Assistant risponde, immettere la risposta di testo:
What is the order number?
-
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Ora, aggiungi un altro nodo figlio che informa l'utente che stai annullando l'ordine.
-
Fare clic sull'icona opzioni Node
sul nodo Richiedi numero ordine, quindi selezionare Aggiungi nodo figlio.
-
In Se l'assistente riconosce, immetti
@order_number
come condizione. -
In Assistente risponde, fare clic sull'icona Opzioni
e selezionare Apri editor di contesto.
-
Impostare il contesto utilizzando questi valori:
Order number context variable details Variabile Valore $ordernumber
<? @order_number.literal ?>
-
In Assistant risponde, immettere la risposta di testo:
OK. The order $ordernumber is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
-
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Aggiungi un altro nodo per acquisire il caso in cui un utente fornisce un numero, ma non è un numero di ordine valido.
-
Fare clic sull'icona Node
sul nodo @order_number, quindi selezionare Aggiungi nodo in basso.
-
In Se l'assistente riconosce, immetti
true
come condizione. -
In Assistant risponde, immettere la risposta di testo:
I need the order number to cancel the order for you. If you don't know the order number, please call us to cancel over the phone.
-
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Aggiungi un nodo dopo il nodo della richiesta di annullamento degli ordini iniziale che risponde nel caso in cui l'utente fornisca il numero di ordine nella richiesta iniziale, in questo modo non dovrai chiederlo nuovamente.
-
Fare clic su Node icona opzioni
sul nodo #cancel_order, quindi selezionare Aggiungi nodo figlio.
-
Aggiungi un'etichetta al nodo per distinguerlo dagli altri nodi figlio. Nel campo Immetti nome nodo, aggiungere
Number provided
. -
In Se l'assistente riconosce, immetti
@order_number
come condizione. -
In Assistant risponde, immettere la risposta di testo:
Just to confirm, you want to cancel order $ordernumber?
-
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Devi aggiungere dei nodi figlio che controllano la risposta di un utente alla tua domanda di conferma.
-
Fare clic su Node icona opzioni
sul nodo Numero fornito, quindi selezionare Aggiungi nodo figlio.
-
In Se l'assistente riconosce, immetti
#yes
come condizione. -
In Assistant risponde, immettere la risposta di testo:
OK. The order $ordernumber is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
-
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
-
Fare clic sull'icona Node
sul nodo #yes, quindi selezionare Aggiungi nodo in basso.
-
In Se l'assistente riconosce, immetti
true
come condizione.
Non aggiungere una risposta alle risposte dell'assistente. Invece, gli utenti vengono reindirizzati al ramo che richiede i dettagli del numero d'ordine creati in precedenza.
-
In Then assistant deve scegliere Passa a.
-
Selezionare il nodo Richiedi numero ordine.
-
Scegli Se l'assistente riconosce (condizione).
Salta a -
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Forzare la conversazione per valutare i nodi child nel nodo #cancel_order al runtime.
-
Fare clic per aprire il nodo
#cancel_order
nella vista di modifica. -
In Then assistant deve selezionare
Skip user input
. -
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Verifica gli annullamenti degli ordini
Verifica se il tuo assistente può riconoscere i modelli di caratteri che corrispondono al modello utilizzato per i numeri di ordine del prodotto nell'input utente.
-
Fai clic su Try it.
-
Immettere
i want to cancel my order number TW12345.
Il tuo assistente riconosce sia l'intento
#cancel_order
che l'entità@order_number
. Risponde con,If the pickup time is more than 48 hours from now, you can cancel your order. Just to confirm, you want to cancel order TW12345?
. -
Immetti
Yes
.Il tuo assistente riconosce l'intento
#yes
e risponde conOK. The order TW12345 is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
.Provalo Ora, provaci quando non conosci il numero di ordine.
-
Fai clic su Clear nel riquadro "Try it out" per ricominciare.
-
Immettere
I want to cancel my order.
Il tuo assistente riconosce l'intento
#cancel_order
e risponde conIf the pickup time is more than 48 hours from now, you can cancel your order. What is the order number?
. -
Immetti,
I don't know.
Il tuo assistente risponde con
I need the order number to cancel the order for you. If you don't know the order number, please call us to cancel over the phone.
.
Aggiungere nodi per chiarire il formato del numero d'ordine
Se fai più test, potresti scoprire che la finestra di dialogo non è utile negli scenari in cui l'utente non ricorda il formato del numero d'ordine. L'utente potrebbe includere solo i numeri o le lettere, ma dimenticare che devono essere maiuscole. Pertanto, sarebbe il caso di fornirgli degli indizi in questi casi, giusto? Se vuoi essere gentile, aggiungi un altro nodo alla struttura ad albero di dialogo che controlla i numeri nell'input utente.
-
Fare clic sull'icona Node
sul nodo @order_number, quindi selezionare Aggiungi nodo in basso.
-
In Se l'assistente riconosce, immetti
input.text.find('\d')
come condizione. -
Nel campo della condizione, aggiungi
input.text.find('\d')
, che rappresenta un'espressione SpEL che indica che se trovi uno o più numeri nell'input utente, viene attivata questa risposta. -
In Assistant risponde, immettere la risposta di testo:
The correct format for our order numbers is AAnnnnn. The A's represents 2 uppercase letters, and the n's represent 5 numbers. Do you have an order number in that format?
-
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
-
Fare clic sull'icona opzioni Node
sul nodo input.text.find('\d'), quindi selezionare Aggiungi nodo figlio.
-
In Se l'assistente riconosce, immetti
true
come condizione. -
Fare clic su Personalizza, impostare l'opzione Più risposte condizionate su Attivo, quindi fare clic su Applica.
-
In ** Assistant risponde, aggiungere le risposte con le seguenti condizioni:
Dettagli condizione Se l'assistente riconosce L'assistente risponde Quindi l'assistente dovrebbe @order_number
OK. The order $ordernumber is canceled. We hope we get the opportunity to bake a cake for you sometime soon.
Impostazioni nodo predefinite true
I need the order number to cancel the order for you. If you don't know the order number, please call us to cancel over the phone.
Dettagli condizione -
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Ora, quando si esegue il test, è possibile fornire una serie di numeri o una combinazione di numeri e testo come input, e la finestra di dialogo ricorda il formato numero di ordine corretto. Hai testato il tuo dialogo, trovato una debolezza in esso, e lo hai corretto.
Un altro modo per affrontare questo tipo di scenario è aggiungere un nodo con slot. Vedi l'esercitazione Aggiunta di un nodo con slot ad un dialogo per ulteriori informazioni sull'utilizzo degli slot.
Aggiungi il tocco personale
Se l'utente mostra interesse nel bot stesso, desideri che l'assistente virtuale riconosca tale curiosità e interagisca con l'utente in un modo più personale. Potresti ricordare l'intento #General_About_You
, che viene fornito con
il catalogo di contenuto Generale, che abbiamo considerato di utilizzare in precedenza prima di aggiungere il tuo intento #about_restaurant
personalizzato. È costruito per riconoscere tali domande dall'utente. Aggiungi
un nodo che genera condizioni su questo intento. Nella tua risposta, puoi chiedere il nome dell'utente e salvarlo in una variabile $username che puoi utilizzare altrove nel dialogo, se disponibile.
Aggiungi un nodo che gestisce le domande sul bot
Aggiungi un nodo di dialogo che può riconoscere l'interesse dell'utente sul bot e che risponde.
-
Fare clic su Finestra di dialogo per aprire la finestra di dialogo.
-
Fare clic sull'icona opzioni Node
sul nodo Benvenuti, quindi selezionare Aggiungi nodo sotto.
-
Inizia a immettere
#General_About_You
nel campo Se l'assistente riconosce e selezionalo dall'elenco. -
In Assistant risponde, immettere la risposta di testo:
I am a virtual assistant that is designed to answer your questions about the Truck Stop Gourmand restaurant. What should I call you?
-
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
-
Fare clic su Node icona opzioni
sul nodo #General_About_You, quindi selezionare Aggiungi nodo figlio.
-
In Se l'assistente riconosce, immetti
true
come condizione. -
In Assistant risponde, immettere la risposta di testo:
Hello, <? input.text ?>! It's lovely to meet you. How can I help you today?
Per acquisire il nome fornito dall'utente, aggiungi una variabile di contesto al nodo.
-
In Assistant responds, fare clic sul menu delle opzioni
e selezionare Open context editor.
-
Impostare il contesto utilizzando questi valori:
Imposta contesto Variabile Valore $username
"<? input.text ?>"
Il valore della variabile di contesto (
<? input.text ?>
) è un'espressione SpEL che acquisisce il nome utente come specificato dall'utente e lo salva nella variabile di contesto$username
. -
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Se in fase di runtime, l'utente attiva questo nodo e fornisce un nome, registrare il nome dell'utente. Se lo conosci, dovresti utilizzarlo. Aggiungi risposte condizionali al nodo di dialogo del messaggio di saluto che hai aggiunto precedentemente per includere una risposta condizionale che utilizza il nome utente, se è noto.
Aggiungere il nome utente al messaggio di saluto
Se conosci il nome dell'utente, dovresti includerlo nel tuo messaggio di benvenuto. A tal scopo, aggiungi delle risposte condizionali e includi una variante del messaggio di benvenuto che include il nome dell'utente.
-
Trova il nodo Greet customers nella struttura ad albero di dialogo e fai clic per aprirlo nella vista di modifica.
-
Fare clic su Personalizza, impostare l'opzione Più risposte condizionate su Attivo, quindi fare clic su Applica.
-
Fai clic su Add response.
-
In Se l'assistente riconosce, immettere
$username
. -
In Rispondi con, immetti una risposta di testo:
Good day to you, $username!
-
Fare clic sulla freccia Sposta su
per riordinare i due tipi di risposta.
Sposta risposta in alto -
Fare clic sull'icona Chiudi
per chiudere la vista di modifica del nodo.
Verifica la personalizzazione
Verifica se il tuo assistente può riconoscere e salvare il nome dell'utente e poi fare riferimento all'utente in un secondo momento.
-
Fai clic su Try it.
-
Fai clic su Clear per riavviare la sessione di conversazione.
-
Immettere
Who are you?
Il tuo assistente riconosce l'intento
#General_About_You
. La sua risposta termina con la domanda,What should I call you?
. -
Immettere
Jane
.Il tuo assistente salva
Jane
nella variabile$username
e rispondeHello, Jane! It's lovely to meet you. How can I help you today?
. -
Per verificare il nodo
Greet customers
, immettereHello.
.Il tuo assistente riconosce l'intento
Greet customers
e dice,Good day to you, Jane!
. Utilizza la risposta condizionale che include il nome dell'utente perché la variabile di contesto$username
contiene un valore nel momento in cui viene attivato il nodo del messaggio di benvenuto.
Puoi aggiungere una risposta condizionale che generi condizioni su e includa il nome dell'utente per tutte le altre risposte in cui la personalizzazione potrebbe aggiungere del valore alla conversazione.
Riepilogo
È stato creato un dialogo più complesso che reagisce alle domande e alle richieste del cliente.