Controllo del flusso conversazionale
Apprendi come il tuo dialogo viene elaborato quando una persona interagisce con il tuo assistente in fase di runtime. Impara a utilizzare a tuo vantaggio il flusso di conversazione e a modificarlo secondo necessità.
Puoi influire sul flusso di una conversazione con le seguenti funzioni:
Disambiguazione
La disambiguazione indica all'assistente di chiedere aiuto al cliente quando più di un nodo di dialogo può rispondere all'input del cliente. Invece di indovinare quale nodo elaborare, il tuo assistente condivide un elenco delle opzioni nodo principali con l'utente e gli chiede di scegliere quella corretta.
La disambiguazione viene attivata quando vengono soddisfatte le seguenti condizioni:
- I punteggi di confidenza dei secondi classificati, rilevati nell'input dell'utente, si avvicinano al punteggio di confidenza dell'intento principale.
- Il punteggio di fiducia dell'intento superiore è superiore a 0.2.
Anche quando queste condizioni vengono soddisfatte, la disambiguazione non si verifica a meno che due o più nodi indipendenti nel tuo dialogo non soddisfino i seguenti criteri:
- La condizione del nodo include uno degli intenti che hanno innescato la disambiguazione.
- Nel campo del nome del nodo viene fornita una descrizione dello scopo del nodo. (In alternativa, nel campo del nome nodo esterno può essere inclusa una descrizione.)
È probabile che un nodo con una condizione di nodo booleana valutata come true venga incluso nell'elenco di disambiguazione. Ad esempio, se il nodo verifica la presenza di un tipo di entità e l'entità è menzionata nell'input dell'utente, è idonea a essere inclusa nell'elenco. Tali nodi non attivano la disambiguazione, ma se viene attivata, è probabile che vengano inclusi nell'elenco di disambiguazione risultante.
Ulteriori informazioni
- Esempio di disambiguazione
- Modifica della configurazione della disambiguazione
- Scelta dei nodi da disabilitare
- Disabilitazione della disambiguazione
- Non gestire nulla di tutto ciò
- Disambiguazione dei test
Esempio di disambiguazione
Ad esempio, si dispone di una finestra di dialogo che ha due nodi con condizioni di intento che riguardano le richieste di cancellazione. Le condizioni sono:
- eCommerce_Cancel_Product_Order
- Account_Cancel_Career_Cliente
Se l'utente dice i must cancel it today, nell'input potrebbero essere rilevati i seguenti intenti:
[
{"intent":"Customer_Care_Cancel_Account","confidence":0.5602024316787719},
{"intent":"eCommerce_Cancel_Product_Order","confidence":0.46903514862060547},
{"intent":"Customer_Care_Appointments","confidence":0.29033891558647157},
{"intent":"General_Greetings","confidence":0.2894785046577454},
Se si esegue il test dal riquadro "Prova", è possibile passare il mouse sull'icona dell'occhio per vedere i tre principali intenti riconosciuti nell'input di prova.
Il vostro assistente è 0.5618281841278076 (56%) sicuro che l'obiettivo dell'utente corrisponda all'intento di #Customer_Care_Cancel_Account. Se un altro intento ha un punteggio di affidabilità prossimo al punteggio
di questo intento principale, la disambiguazione viene attivata. In questo esempio, l'intento #eCommerce_Cancel_Product_Order ha un punteggio di confidenza di chiusura del 46%.
Di conseguenza, quando l'utente dice i must cancel it today, è probabile che entrambi i nodi di dialogo siano considerati candidati validi per rispondere. Per stabilire quale nodo di dialogo elaborare, l'assistente chiede all'utente
di selezionarne uno. E per aiutare l'utente a scegliere, l'assistente fornisce un breve riepilogo delle operazioni svolte da ciascun nodo. Il testo di sintesi viene estratto direttamente dal campo del nome del nodo. Se presente
e se viene aggiunta una descrizione, il testo viene preso dal campo del nome del nodo esterno.
La descrizione che viene visualizzata nell'elenco di disambiguazione deriva dal nome (o dal nome del nodo esterno) dell'ultimo nodo elaborato nel ramo in cui si verifica la corrispondenza dell'intento. Per ulteriori informazioni, vedere Disabilitazione dei nodi di utilità saltati.
Si noti che l'assistente riconosce il termine today nell'input dell'utente come una data, una menzione dell'entità @sys-date. Se l'albero di dialogo contiene un nodo che condiziona l'entità @sys-date,
è probabile che venga incluso nell'elenco delle scelte di disambiguazione. Questa immagine la mostra inclusa nell'elenco come opzione Cattura informazioni sulla data.
Modifica della configurazione di disambiguazione
La disambiguazione è attivata automaticamente per tutte le nuove abilità di dialogo. È possibile modificare le impostazioni applicate automaticamente alla disambiguazione dalla pagina Opzioni.
Per modificare le impostazioni della disambiguazione, completa i seguenti passi:
-
In Opzioni, fare clic su Disambiguazione.
-
Nel campo Messaggio di disambiguazione, aggiungere il testo da visualizzare prima dell'elenco delle opzioni dei nodi di dialogo. Ad esempio, cosa vuoi fare?
-
Nel campo Anything else, aggiungete del testo da visualizzare come opzione aggiuntiva che gli utenti possono scegliere se nessuna delle altre opzioni del nodo di dialogo rispecchia ciò che l'utente desidera fare. Ad esempio, Nessuno dei precedenti.
Usa un messaggio breve cosicché venga visualizzato su una riga con le altre opzioni. Il messaggio deve essere inferiore a 512 caratteri. Per informazioni su cosa fa l'assistente se l'utente sceglie questa opzione, vedere Gestione di nessuna delle opzioni precedenti.
-
Se si desidera limitare il numero di opzioni di disambiguazione che possono essere visualizzate da un utente, nel campo Numero massimo di suggerimenti, specificare un numero compreso tra 2 e 5.
Le tue modifiche vengono salvate automaticamente.
Puoi utilizzare l'API per modificare ulteriori impostazioni di disambiguazione. Queste impostazioni includono la sensibilità alla disambiguazione, che influisce sulla frequenza con cui viene attivata la disambiguazione e sul numero di scelte incluse. Per ulteriori informazioni, vedi la Guida di riferimento API.
Scelta dei nodi da non mostrare come opzioni di disambiguazione
Tutti i nodi sono idonei per essere inclusi nell'elenco di disambiguazione.
- Sono inclusi i nodi a qualsiasi livello della gerarchia dell'albero.
- Sono inclusi i nodi che condizionano gli intenti, le entità, le condizioni speciali, le variabili di contesto o qualsiasi combinazione di questi valori.
Considerare la possibilità di nascondere alcuni nodi dall'elenco di disambiguazione.
-
**Nascondere i nodi radice con le condizioni
welcomeeanything_else**A meno che non si aggiungano funzioni aggiuntive a questi nodi, in genere non sono opzioni utili da includere in un elenco di disambiguazione.
-
Nascondere i nodi di utilità saltati
Il testo dell'elenco di disambiguazione è popolato dal nome del nodo (o dal nome del nodo esterno) dell' ultimo nodo elaborato nel ramo in cui la condizione del nodo è soddisfatta.
Non includere i nodi di utilità, come ad esempio ringraziare l'utente, dire addio o chiedere un feedback sulla qualità della risposta, nell'elenco di disambiguazione invece di una frase che descrive lo scopo del nodo root corrispondente.
Per esempio, forse un nodo radice con la condizione di intento corrispondente a
#store-locationsalta a un nodo che chiede agli utenti se sono soddisfatti della risposta. Se il nodo#check_satisfactionha un nome di nodo e una disambiguazione, il nome del nodo saltato viene visualizzato nell'elenco delle disambigue. Di conseguenza,Check satisfactionviene visualizzato nell'elenco di disambiguazione per rappresentare il ramo#store-locationinvece del nomeGet store locationdel nodo radice. -
Nascondere i nodi radice che condizionano solo un'entità o una variabile di contesto
Solo un nodo con un intento corrispondente può attivare la disambiguazione. Tuttavia, quando viene attivato, qualsiasi nodo con una condizione corrispondente viene incluso nell'elenco di disambiguazione. Quando il tuo dialogo include nodi che condizionano le entità, ad esempio, l'ordine dei nodi nella gerarchia della struttura ad albero può diventare significativo in modi imprevisti.
-
L'ordine dei nodi influisce sull'attivazione della disambiguazione. Osservate lo scenario utilizzato in precedenza per introdurre la disambiguazione, ad esempio. Se il nodo che condiziona
@sys-datefosse posizionato più in alto nell'albero delle finestre di dialogo rispetto ai nodi che condizionano gli intenti#Customer_Care_Cancel_Accounte#eCommerce_Cancel_Product_Order, la disambiguazione non verrebbe mai attivata quando un utente inseriscei must cancel it today. Il vostro assistente considererà la data menzionata (today) più importante dei riferimenti alle intenzioni, a causa della posizione dei nodi corrispondenti nell'albero. -
L'ordine dei nodi influisce su quali nodi sono inclusi nell'elenco delle opzioni di disambiguazione. A volte un nodo non viene elencato come opzione di disambiguazione come previsto. Ciò può accadere se un valore di condizione è riferito anche a un nodo che per qualche motivo non può essere incluso nell'elenco di disambiguazione. Ad esempio, un'entità potrebbe attivare un nodo che si trova in una posizione precedente nell'albero delle finestre di dialogo, ma che non è abilitato alla disambiguazione. Se la stessa entità è l'unica condizione per un nodo abilitato alla disambiguazione, ma si trova più in basso nell'albero, potrebbe non essere un'opzione di disambiguazione perché l'assistente non lo raggiunge mai. Se è stato messo in corrispondenza con il nodo precedente ed è stato omesso, il tuo assistente potrebbe non aver elaborato il nodo successivo.
-
Come nascondere i nodi dalla disambiguazione
Puoi evitare che ogni nodo in un dialogo o un singolo nodo di dialogo venga incluso nell'elenco di disambiguazione.
Per disabilitare completamente la disambiguazione:
-
In Opzioni, fare clic su Disambiguazione.
-
Posizionare l'interruttore su Off.
Per evitare che un singolo nodo di dialogo venga incluso nell'elenco di disambiguazione:
-
Fare clic su un nodo di dialogo per aprirlo nella vista di modifica.
-
Fai clic su Settings.
-
Impostare l'interruttore Mostra nome nodo su Off.
Plus Se si è aggiunta una descrizione del riepilogo del nodo al campo del nome del nodo esterno invece che al campo del nome, rimuoverla.
Il campo del nome del nodo esterno ha due scopi. Fornisce le informazioni sul nodo ai clienti quando è incluso in un elenco di disambiguazione. Descrive anche il nodo in un riepilogo chat condiviso con gli operatori del service desk quando una conversazione viene trasferita a una persona. Il campo del nome del nodo esterno è visibile solo nelle competenze che fanno parte di un'istanza di piano a pagamento. Se il campo del nome del nodo esterno contiene del testo, viene utilizzato il suo testo, indipendentemente dalla presenza o meno di testo nel campo del nome.
Per ciascun nodo, verifica gli scenari in cui prevedi che il nodo venga incluso nell'elenco delle opzioni di disambiguazione. I test danno la possibilità di regolare l'ordine dei nodi o altri fattori che potrebbero influire sul funzionamento della disambiguazione in fase di esecuzione. Vedere Disambiguazione dei test.
Assegnazione di priorità a un nodo rispetto alla disambiguazione
Alcuni nodi sono abbastanza importanti per il tuo cliente che vuoi che vengano restituiti da soli, al di fuori di un elenco di disambiguazioni, quando l'assistente è sicuro che il nodo soddisfa un'esigenza del cliente.
Ad esempio, potresti avere un nodo che corrisponde all'intento #stolen_card. Ogni volta che un messaggio in entrata suggerisce che il cliente desidera segnalare una carta di credito rubata, non si desidera che la risposta del
proprio assistente venga persa in un elenco di opzioni di disambiguazione. Si desidera che l'assistente risponda con una singola risposta che aiuti il cliente a risolvere questa questione urgente.
Per progettare il tuo dialogo per dare la priorità a un singolo nodo rispetto alla disambiguazione, completa la seguente procedura:
-
Nel nodo che condiziona l'intento, fai clic su Personalizza per abilitare più risposte condizionate.
-
Aggiungete una risposta condizionata con la seguente condizione:
intent.confidence > ndove
nè un punteggio di affidabilità che ha senso per i tuoi dati di addestramento. Ad esempio:intent.confidence > 0.7 -
Spostare la risposta verso l'alto per essere la prima nell'elenco di risposte condizionate.
-
Fare clic sull'icona a forma di ingranaggio per personalizzare la risposta condizionata.
-
Nella sezione di risposta dell'assistente, aprire l'editor di contesto.
-
Aggiungere la seguente variabile di contesto:
Variabile di contesto Variabile Valore system{"prevent_disambiguation":true} -
Fare clic su Salva.
In alternativa, è possibile aggiungere un nodo di livello root con una condizione come:
#stolen_card && intent.confidence > 0.7Posizionare questo nodo più in alto nella struttura ad albero rispetto al nodo che si trova su
#stolen_card, che consente al nodo di essere incluso in un elenco di disambiguazione. -
Verifica il tuo dialogo. Assicurarsi che la risposta del nodo venga restituita invece di un elenco di disambiguazione quando viene soddisfatta la soglia del punteggio di affidabilità appropriata.
Non gestire nulla di tutto ciò
Quando un utente fa clic sull'opzione Nessuno dei precedenti, l'assistente elimina dal messaggio gli intenti riconosciuti nell'input dell'utente e lo invia nuovamente. Di norma, questa azione attiva il nodo anything else nella tua struttura ad albero di dialogo.
Per personalizzare la risposta che viene restituita in questa situazione, si può aggiungere un nodo radice con una condizione che verifica la presenza di un input dell'utente senza intenti riconosciuti (gli intenti sono spogliati, si ricorda)
e contiene una proprietà suggestion_id. Una proprietà suggestion_id viene aggiunta dall'assistente quando viene attivata la disambiguazione.
Aggiungere un nodo radice con la seguente condizione:
intents.size()==0 && input.suggestion_id
Questa condizione è soddisfatta solo da un input che attiva una serie di opzioni di disambiguazione di cui l'utente dice che nessuna corrisponde all'obiettivo.
Aggiungete una risposta che indichi agli utenti che sanno che avete capito che nessuna delle opzioni suggerite soddisfa le loro esigenze e prendete le misure del caso.
E ancora una volta, è importante il posizionamento dei nodi nella struttura ad albero. Se un nodo che condiziona un tipo di entità citato nell'input utente si trova più in alto di questo nodo nella struttura ad albero, viene visualizzata invece la sua risposta.
Verifica della disambiguazione
Quando si esegue il test, l'ordine in cui vengono elencate le opzioni potrebbe cambiare. Infatti, le opzioni stesse incluse nell'elenco di disambiguazione potrebbero cambiare da un test all'altro.
Questo comportamento è previsto. Nell'ambito dello sviluppo in corso per aiutare l'assistente ad apprendere automaticamente dalle scelte dell'utente, le scelte e il loro ordine nell'elenco di disambiguazione vengono randomizzati di proposito. Cambiare l'ordine aiuta a evitare i pregiudizi che possono essere introdotti da una percentuale di persone che scelgono sempre la prima opzione senza aver esaminato attentamente tutte le loro scelte in precedenza.
Per verificare la disambiguazione, completa i seguenti passi:
-
Nel riquadro "Prova", inserite un enunciato di prova che sia un buon candidato per la disambiguazione, vale a dire che due o più dei vostri nodi di dialogo sono configurati per indirizzare enunciati simili.
-
Se la risposta non contiene un elenco di opzioni del nodo di dialogo tra cui scegliere, controlla di aver aggiunto le informazioni di riepilogo ai campi del nome nodo (o del nome nodo esterno).
-
Se la disambiguazione non viene ancora attivata, potrebbe essere dovuto al fatto che i punteggi di affidabilità per i nodi non sono così vicini al valore come pensi.
-
Per vedere i punteggi di confidenza dei primi tre intenti rilevati nell'input, passare il mouse sull'icona dell'occhio nel riquadro "Prova".
-
Per vedere i punteggi di confidenza di tutti gli intenti rilevati nell'input dell'utente, aggiungere temporaneamente
<? intents ?>alla fine della risposta del nodo per un nodo che si sa verrà attivato.Questa espressione SpEL mostra gli intenti rilevati nell'input utente come un array. L'array include il nome dell'intento e il livello di affidabilità del tuo assistente che l'intento riflette nell'obiettivo dell'utente.
-
Per vedere quali entità, se ci sono, sono state rilevate nell'input dell'utente, si può sostituire temporaneamente la risposta corrente con una singola risposta di testo che contiene l'espressione SpEL
<? entities ?>.Questa espressione SpEL mostra le entità rilevate nell'input utente come un array. L'array include il nome dell'entità, la posizione della menzione dell'entità, la stringa della menzione dell'entità e il livello di fiducia che il termine sia una menzione del tipo di entità specificato.
-
Per visualizzare i dettagli per tutte le risorse utente, incluse altre proprietà come il valore della variabile di contesto al momento della chiamata, esaminare l'intera risposta API. Vedi Visualizzazione dei dettagli della chiamata API.
-
-
Rimuovere temporaneamente la descrizione nel campo del nome (o nel campo del nome del nodo esterno ) per almeno uno dei nodi previsti come opzione di disambiguazione.
-
Immetti di nuovo l'espressione di test nel riquadro "Try it out".
Se alla risposta è stata aggiunta l'espressione
<? intents ?>, il testo include un elenco degli intenti che l'assistente ha riconosciuto nell'enunciato di prova e include il punteggio di confidenza per ciascuno di essi.
Intenti e punteggi di affidabilità
Al termine dei test, rimuovere le espressioni SpEL aggiunte alle risposte dei nodi o aggiungere nuovamente le risposte originali sostituite con le espressioni e ripopolare i campi nome o nome esterno del nodo da cui è stato rimosso il testo.
Digressioni
Una digressione si verifica quando un utente si trova in un flusso di dialogo che risponde a un obiettivo, ma passa agli argomenti per avviare un flusso di dialogo che si rivolge a un obiettivo diverso. Se nessuno dei nodi nel ramo di dialogo corrisponde all'obiettivo dell'ultimo input dell'utente, la conversazione controlla le condizioni del nodo root per una corrispondenza appropriata. Le impostazioni di digressione disponibili per il nodo ti forniscono la capacità di personalizzare ancora di più questo comportamento.
Con le impostazioni di digressione, puoi consentire il ritorno della conversazione al flusso di dialogo che è stato interrotto quando si è verificata la digressione. Ad esempio, è possibile che l'utente stia ordinando un nuovo telefono ma passi agli argomenti per richiedere i tablet. La finestra di dialogo può rispondere alla domanda sui tablet e poi riportare l'utente al punto in cui si era fermato con l'ordine telefonico. Consentire le digressioni e poi poter tornare indietro fornisce ai tuoi utenti un maggiore controllo sul flusso della conversazione nel runtime. Possono cambiare gli argomenti, seguire un flusso di dialogo su un argomento non correlato al loro obiettivo e poi ritornare al punto in cui si trovavano prima. Il risultato è un flusso di dialogo che simula più strettamente una conversazione tra persone.
Prima di iniziare
Mentre verifichi l'intero dialogo, decidi quando e dove consentire le digressioni ed il ritorno dalle digressioni. I controlli di digressione riportati di seguito vengono applicati automaticamente ai nodi.
-
Ogni nodo root nel dialogo è configurato per consentire alle digressioni di farne la loro destinazione per impostazione predefinita. I nodi figlio non possono essere la destinazione di una digressione.
-
I nodi con slot sono configurati per impedire la generazione di digressioni. Tutti gli altri nodi sono configurati per consentire le digressioni. Tuttavia, la conversazione non consente la generazione di una digressione da un nodo nelle seguenti circostanze:
-
Se uno qualsiasi dei nodi figli del nodo corrente contiene la condizione
anything_elseotrue. Queste condizioni sono speciali in quanto si valutano sempre vere. A causa del loro comportamento noto, spesso vengono utilizzate nei dialoghi per forzare un nodo padre a valutare uno specifico nodo figlio in successione. Per evitare di interrompere la logica del flusso di dialogo esistente, le digressioni non sono consentite in questo caso. Prima di poter consentire la generazione di digressioni su un nodo di questo tipo, devi modificare la condizione del nodo figlio con un altro valore. -
Se il nodo è configurato per saltare a un altro nodo o per saltare l'input dell'utente dopo l'elaborazione. La sezione della fase finale di un nodo specifica cosa succede dopo che il nodo è stato elaborato. Quando la finestra di dialogo è configurata per saltare direttamente a un altro nodo, spesso è necessario assicurarsi che venga seguita una sequenza specifica. E quando il nodo è configurato per ignorare l'input utente, equivale a forzare il dialogo ad elaborare il primo nodo figlio dopo il nodo corrente in successione. Per impedire l'interruzione della logica del flusso di dialogo esistente, le digressioni non sono consentite in nessun caso. Prima di poter consentire la generazione delle digressioni da questo nodo, devi modificare il valore specificato nella sezione del passo finale.
-
Personalizzazione delle digressioni
Non devi definire l'inizio e la fine di una digressione. L'utente ha il pieno controllo del flusso di digressione nel runtime. È possibile specificare il modo in cui ciascun nodo viene incluso in una digressione guidata dall'utente. Per ogni nodo, è possibile configurare se una digressione:
- Inizia e lascia il nodo
- Che inizia altrove può puntare ed entrare nel nodo
- Che inizia da un'altra parte ed entra nel nodo deve tornare al flusso di dialogo interrotto dopo che il flusso di dialogo corrente è stato completato
Per modificare il comportamento di un singolo nodo, completa la seguente procedura:
-
Fai clic sul nodo per aprirne la vista di modifica.
-
Fai clic su Personalizza e quindi fai clic sulla scheda Digressioni.
Le opzioni di configurazione sono diverse a seconda del fatto che il nodo che stai modificando sia un nodo root, un nodo figlio, un nodo con figli o un nodo con slot.
Generazione di digressioni da questo nodo
Se le circostanze elencate in precedenza non si applicano, puoi effettuare le seguenti scelte:
-
Tutti i tipi di nodo: scegli se permettere agli utenti di consentire la generazione di una digressione dal nodo corrente prima che raggiungano la fine del ramo di dialogo corrente.
-
Tutti i nodi che hanno figli: Scegliere se si desidera che la conversazione ritorni al nodo corrente se la risposta del nodo è stata visualizzata e i suoi nodi figli sono secondari rispetto all'obiettivo. Impostare l'interruttore Consentire il ritorno da digressioni attivate dopo la risposta di questo nodo su No per evitare che la finestra di dialogo ritorni al nodo corrente e continui a elaborare il suo ramo.
Ad esempio, se l'utente chiede
Do you sell cupcakes?e la rispostaWe offer cupcakes in a variety of flavors and sizesviene visualizzata prima che l'utente cambi argomento, si potrebbe non volere che la finestra di dialogo torni al punto in cui è stata interrotta. In particolare, se i nodi figlio riguardano possibili domande successive dell'utente e possono essere tranquillamente ignorati.Tuttavia, se il nodo si basa sui nodi figlio per far fronte alla domanda, potresti voler forzare la conversazione a ritornare e a proseguire l'elaborazione dei nodi nel ramo corrente. Ad esempio, la risposta iniziale potrebbe essere
We offer cupcakes in all shapes and sizes. Which menu do you want to see: gluten-free, dairy-free, or regular?. Se l'utente cambia argomento, si potrebbe desiderare che la finestra di dialogo ritorni in modo che l'utente possa scegliere un tipo di menu e ottenere le informazioni desiderate. -
Nodi con slot: scegli se desideri consentire agli utenti di generare digressioni dal nodo prima che vengano riempiti tutti gli slot. Impostare l'interruttore Consenti digressioni durante il riempimento della fessura su Sì per abilitare le digressioni.
Se abilitato, quando la conversazione ritorna dalla digressione, viene visualizzata la richiesta per lo slot non riempito successivo per incoraggiare l'utente a continuare a fornire le informazioni. Se disabilitato, qualsiasi input inoltrato dall'utente che non contiene un valore che può riempire lo slot verrà ignorato. Tuttavia, puoi far fronte a domande non richieste, che sai che i tuoi utenti potrebbero porre mentre interagiscono con il nodo, definendo i gestori slot. Per ulteriori informazioni, vedi Aggiunta di slot.
-
Nodi con slot: Scegliere se l'utente può allontanarsi se torna al nodo corrente, selezionando la casella di controllo Only digress from slots to nodes that allow returns.
Quando selezionato, mentre il dialogo ricerca un nodo per rispondere ad una domanda non correlata dell'utente, ignora i nodi root che non sono configurati per il ritorno dopo la digressione. Selezionare questa casella di controllo se si vuole evitare che gli utenti possano abbandonare definitivamente il nodo prima di aver completato gli slot richiesti.
Digressioni in questo nodo
Puoi effettuare le seguenti scelte sul comportamento delle digressioni in un nodo:
-
Impedisci agli utenti di generare digressioni nel nodo. Per ulteriori dettagli, vedi Disabilitazione delle digressioni in un nodo root.
-
Quando le digressioni nel nodo sono abilitate, scegli se il dialogo deve tornare al flusso di dialogo da cui è stata generata la digressione. Una volta terminata l'elaborazione del ramo del nodo corrente, il flusso di dialogo torna al nodo interrotto. Per fare in modo che la finestra di dialogo ritorni dopo, selezionare Ritorno dopo digressione.
-
-
Fai clic su Apply.
-
Utilizza il riquadro "Try it out" per verificare il comportamento della digressione.
Di nuovo, non puoi definire l'inizio e la fine di una digressione. L'utente controlla dove e quando si verificano le digressioni. È possibile applicare impostazioni che determinano il modo in cui un singolo nodo partecipa a uno di essi. Poiché le digressioni sono così imprevedibili, è difficile sapere in che modo le decisioni di configurazione influiscono sull'intera conversazione. Per vedere effettivamente l'impatto delle scelte effettuate, devi verificare il dialogo.
I nodi #reservation e #cuisine rappresentano due rami del dialogo che possono partecipare a una singola digressione diretta dall'utente. Le impostazioni di digressione configurate per ciascun singolo nodo costituiscono ciò che rende possibile questo tipo di digressione nel runtime.
Suggerimenti sull'utilizzo delle digressioni
Messaggio di ritorno personalizzato: Per tutti i nodi in cui si abilitano i ritorni dalle digressioni, considerate la possibilità di aggiungere una dicitura che indichi agli utenti dove stanno tornando quando si sono interrotti in un flusso di dialogo precedente. Nella risposta testuale, utilizzare una sintassi speciale per aggiungere due versioni della risposta.
Se non si aggiunge un messaggio, lo stesso testo di risposta viene visualizzato una seconda volta per informare gli utenti che sono tornati al nodo da cui si erano allontanati. È possibile rendere più chiaro agli utenti che sono tornati al thread di conversazione originale, specificando un messaggio univoco da visualizzare al loro ritorno.
Ad esempio, se la risposta testuale originale per il nodo è What's the order number?, si potrebbe voler visualizzare un messaggio del tipo Now let's get back to where we left off. What is the order number? quando
gli utenti tornano al nodo.
Per eseguire tale operazione, utilizza la seguente sintassi per specificare la risposta di testo del nodo:
<? (returning_from_digression)? "post-digression message" : "first-time message" ?>
Ad esempio:
<? (returning_from_digression)? "Now, let's get back to where we left off.
What is the order number?" : "What's the order number?" ?>
Non puoi includere espressioni SpEL o la sintassi abbreviata nelle risposte di testo che aggiungi. In effetti, non puoi proprio utilizzare la sintassi abbreviata. Al contrario, devi creare il messaggio concatenando le stringhe di testo e la sintassi dell'espressione SpEL completa per formare la risposta completa.
Ad esempio, si usi la seguente sintassi per includere una variabile di contesto in una risposta di testo che normalmente verrebbe specificata come What can I do for you, $username? :
<? (returning_from_digression)? "Where were we, " +
context["username"] + "? Oh right, I was asking what can I do
for you today." : "What can I do for you today, " +
context["username"] + "?" ?>
Per dettagli sulla sintassi dell'espressione SpEL completa, vedi Espressione per l'accesso agli oggetti.
Blocco dei ritorni: in alcuni casi, potresti voler impedire un ritorno a un flusso di conversazione interrotto in base a una scelta fatta dall'utente nel flusso di dialogo corrente. Puoi utilizzare la sintassi speciale per impedire un ritorno da un nodo specifico.
Ad esempio, potresti avere un nodo che condiziona #General_Connect_To_Agent o un intento simile. Quando viene attivata, se si vuole ottenere la conferma dell'utente prima di trasferirlo a un servizio esterno, si può aggiungere
una risposta come Do you want me to transfer you to an agent now?. Si potrebbero aggiungere due nodi figli che condizionano su #yes e #no.
Il modo migliore per gestire le digressioni per questo tipo di ramo consiste nell'impostare il nodo root per consentire il ritorno dalla digressione. Tuttavia, nel nodo #yes, includere l'espressione SpEL <? clearDialogStack() ?> nella risposta. Ad esempio:
OK. I will transfer you now. <? clearDialogStack() ?>
Questa espressione SpEL impedisce il ritorno della digressione da questo nodo. Quando viene richiesta una conferma, se l'utente risponde affermativamente, viene visualizzata la risposta appropriata e il flusso di dialogo che è stato interrotto non viene ripreso. Se l'utente risponde negativamente, viene riportato al flusso che è stato interrotto.
Disabilitazione delle digressioni in un nodo root
Quando un flusso esegue una digressione in un nodo root, segue il corso del dialogo configurato per tale nodo. Il flusso potrebbe elaborare una serie di nodi secondari prima della fine del ramo del nodo e poi tornare al flusso del dialogo che è stato interrotto. Eseguendo il test, potresti scoprire che un nodo root viene attivato troppo spesso, in momenti imprevisti, o che il dialogo è troppo complesso e invia l'utente troppo lontano dalla rotta. Se stabilisci che preferisci non consentire agli utenti di eseguire digressioni in esso, puoi configurare il nodo root in modo da non consentire digressioni.
Per disabilitare completamente le digressioni in un nodo root, completa la seguente procedura:
- Fai clic per aprire il nodo root che desideri modificare.
- Fai clic su Personalizza e quindi fai clic sulla scheda Digressioni.
- Impostare l'opzione Consenti digressioni in questo nodo su Off.
- Fai clic su Apply.
Se decidi che vuoi impedire le digressioni in diversi nodi root, ma non vuoi modificare ciascun nodo singolarmente, puoi aggiungere i nodi a una cartella. Dalla pagina Personalizza della cartella, è possibile impostare l'interruttore Consenti digressioni in questo nodo su Off per applicare la configurazione a tutti i nodi. Per ulteriori informazioni, consultare Organizzazione della finestra di dialogo con le cartelle.
Considerazioni sulla progettazione
Evita l'aumento del nodo di fallback: molti designer del dialogo includono un nodo con una condizione true o anything_else alla fine di ogni ramo del dialogo come un modo per impedire agli utenti
di rimanere bloccati nel ramo. Questa progettazione restituisce un messaggio generico se l'input utente non corrisponde a nessun elemento che hai anticipato e incluso come indirizzato a un nodo di dialogo specifico. Tuttavia, gli utenti
non possono generare le digressioni dai flussi di dialogo che utilizzano questo approccio.
Valuta i rami che utilizzano questo approccio per stabilire se sarebbe meglio consentire la generazione di digressioni dal ramo. Se l'input dell'utente non corrisponde a nulla di quanto previsto, potrebbe trovare una corrispondenza con un
flusso di dialogo completamente diverso nella vostra struttura. Invece di rispondere con un messaggio generico, puoi utilizzare efficacemente il resto del dialogo per cercare di indirizzare l'input utente. E il nodo a livello root Anything else può sempre rispondere all'input che nessuno degli altri nodi root può indirizzare.
Riconsiderare i salti a un nodo di chiusura: Molte finestre di dialogo sono progettate per porre una domanda di chiusura standard, come ad esempio Did I answer your question today?. Gli utenti non possono allontanarsi
da nodi configurati per saltare a un altro nodo. Pertanto, se configuri tutti i tuoi nodi finali del ramo in modo che passino a un nodo di chiusura comune, le digressioni non potranno verificarsi. Prendi in considerazione di tracciare la
soddisfazione dell'utente attraverso metriche o in altri modi.
Testare le possibili catene di digressioni: Se l'utente divaga dal nodo corrente a un altro nodo che consente la digressione, l'utente potrebbe allontanarsi da quell'altro nodo e ripetere lo schema. Se il nodo di partenza nella catena di digressioni è configurato per ritornare dopo la digressione, l'utente, alla fine, verrà riportato al nodo di dialogo corrente. In effetti, i nodi successivi nella catena che sono configurati per non farvi ritorno, vengono esclusi dall'essere considerati come destinazioni della digressione. Verifica gli scenari che generano più volte le digressioni per stabilire se i singoli nodi funzionano come previsto.
Le condizioni di passo non vengono rivalutate al ritorno della digressione: poiché la condizione di passo è già stata valutata prima della digressione, non viene valutata nuovamente al ritorno della digressione. Se il flusso conversazionale richiede che la condizione del passo venga valutata di nuovo, aggiungete il reprompting nello stesso passo in cui è iniziata la digressione. Se non si vuole ripetere il prompt allo stesso passo e si vogliono evitare ritorni a vuoto, procedere come segue:
- Andate su Home > Azioni > Creato da voi.
- Selezionare l'azione in cui si desidera evitare i ritorni di fiamma.
- Fare clic su Impostazioni dell'azione.
- Passate la levetta su On in Cambia argomento di conversazione.
- Selezionate Non tornare mai all'azione originale dopo aver completato questa azione.
- Fare clic su Salva.
Il nodo corrente ha la priorità: I nodi al di fuori del flusso corrente vengono considerati come obiettivi di digressione solo se il flusso corrente non è in grado di rispondere all'input dell'utente. In un nodo con slot che consente digressioni, è necessario chiarire agli utenti quali informazioni sono necessarie e aggiungere dichiarazioni di conferma che vengono visualizzate dopo che l'utente ha fornito un valore.
Durante il processo di riempimento dello slot può essere riempito qualsiasi slot. Pertanto, uno slot potrebbe acquisire input utente non previsto. Ad esempio, potresti avere un nodo con slot che raccoglie le informazioni necessarie per prenotare
una cena. Uno degli slot raccoglie le informazioni sulla data. L'utente potrebbe chiedere a What's the weather meant to be tomorrow?. Si potrebbe avere un nodo radice che condiziona #forecast che potrebbe rispondere all'utente.
Tuttavia, poiché l'input dell'utente include la parola tomorrow e il nodo di prenotazione con gli slot è in fase di elaborazione, l'assistente presume che l'utente stia fornendo o aggiornando la data di prenotazione. Il nodo corrente ha sempre la priorità. Se definisci un'istruzione di conferma chiara, ad esempio Ok, setting the reservation date to tomorrow, è più probabile che l'utente si renda conto che si è verificato un fraintendimento e che lo risolva.
Se l'utente fornisce un valore che non è previsto da nessuno degli slot, potrebbe corrispondere a un nodo root non correlato a cui l'utente non ha mai inteso eseguire la digressione.
Assicurati di eseguire molti test mentre configuri il comportamento della digressione.
Quando usare le digressioni invece dei gestori di slot: Per le domande generali che gli utenti potrebbero porre, utilizzare un nodo radice che consenta digressioni al suo interno, elabori l'input e poi torni al flusso in corso. Per i nodi con slot, cercate di anticipare i tipi di domande correlate che gli utenti potrebbero voler porre quando riempiono gli slot e affrontatele aggiungendo gestori al nodo.
Ad esempio, se il nodo con gli slot raccoglie le informazioni necessarie per completare una richiesta di risarcimento assicurativo, si potrebbero aggiungere gestori che rispondano alle domande più comuni sull'assicurazione. Tuttavia, per le domande su come ottenere assistenza, sulle sedi dei vostri negozi o sulla storia della vostra azienda, utilizzate un nodo di livello principale.