Flussi
Un flusso è una parte del flusso della finestra di dialogo degli skill che definisce l'interazione con l'utente per completare un task o una parte di un task che l'utente desidera eseguire.
Di seguito sono riportati alcuni esempi tipici di flussi.
- Flussi basati su intenti, in cui a ogni intento definito nello skill è associato un flusso, ad esempio 'Ordina pizza', 'Invia denaro' o 'Crea spesa'.
- Flussi di supporto o utility per task quali l'autorizzazione utente, l'inserimento di nuovi utenti, la registrazione o la fornitura di assistenza utente. Tali flussi possono essere richiamati da più flussi.
Ad esempio, è possibile disporre di un flusso secondario Crea conto richiamato da flussi quali Order Pizza o Send Money.
Tipi di flusso
In generale, i flussi si suddividono nei seguenti tipi:
- Flusso principale.
- Flussi di intenti.
- Flussi per eventi integrati e transizioni di sistema.
- Flussi secondari che possono essere utilizzati dai flussi di livello superiore.
Flusso principale
Con i flussi di dialogo creati in Visual Flow Designer, ogni flusso di dialogo dispone di un unico flusso principale utilizzato per configurare:
- Mapping tra eventi e flussi.
- Variabili di contesto globali che possono essere utilizzate in tutti i flussi dello skill.
Quando si accede a una variabile di questo tipo con un'espressione Freemarker, il nome della variabile viene preceduto da
skill.
nell'espressione.Queste variabili a livello di skill vengono cancellate dopo la scadenza della sessione utente. La scadenza della sessione è configurata a livello di canale e in genere è di 24 ore per impostazione predefinita.
Il flusso principale non è in realtà un flusso in quanto tale. Piuttosto, è il centro di controllo per lo skill, dal quale gli utenti vengono indirizzati a flussi specializzati mappati agli intenti risolti. La configurazione del flusso principale include la variabile skill.system.nlpresult
predefinita che viene popolata con risultati di corrispondenza intento ed entità ogni volta che un intento viene risolto, il che consente di passare il controllo ai singoli flussi.
Flussi intenti
Quando si progettano i flussi di dialogo con Visual Flow Designer, si creano i flussi che vengono quindi mappati agli intenti. Tutti gli intenti normali (ovvero intenti che non sono intenti di risposta) devono essere collegati a un flusso.
Per gli intenti risposta, è possibile utilizzare (o una combinazione) dei seguenti approcci:
- Creare un singolo flusso e mapparlo all'evento incorporato Intento risposta.
- Creare singoli flussi per intenti di risposta specifici.
Questo approccio consente di avere prompt o domande specifici per precedere e/o seguire ogni risposta.
È inoltre possibile non fornire alcun flusso per gli intenti risposta, nel qual caso la risposta viene fornita all'utente senza che il flusso della finestra di dialogo sia coinvolto direttamente.
Flussi utility per eventi integrati e transizioni di sistema
È possibile creare flussi attivati dagli eventi built-in dello skill (ad esempio Intento risposta e Errore finestra di dialogo), eventi personalizzati e transazioni di sistema (ad esempio Autorizza utente e Errore finestra di dialogo).
Flussi secondari personalizzati
È inoltre possibile creare flussi non mappati a un intento specifico o basati su eventi incorporati (o transizioni di sistema), ma che possono essere richiamati da altri flussi.
Ad esempio, in una competenza per un ristorante, è possibile disporre di un flusso Mostra menu che può essere richiamato al centro di un flusso di ordini se un utente lo richiede.
Variabili e ambito
In Visual Flow Designer, le variabili per possono essere definite a due livelli:
- in un singolo flusso. È possibile accedere alle variabili definite a questo livello solo dall'interno del flusso in cui sono definite.
Non è possibile accedere direttamente a una variabile di portata al di fuori del flusso in cui è definita, anche da flussi secondari o flussi chiamanti. È tuttavia possibile definire i parametri di input e output per un flusso per passare i valori da e verso le variabili definite nel flusso.
Al termine del flusso, i valori delle variabili vengono reimpostati.
La maggior parte delle variabili deve essere definita a questo livello. Facendo uso regolare delle variabili di flusso, rendi i tuoi flussi più autonomi, il che li rende più facili da riutilizzare, più facili da testare in isolamento e meno probabilità di essere influenzati negativamente da bug in altri flussi.
- Nel flusso principale. Le variabili definite qui hanno un ambito a livello di competenza (globale), il che significa che è possibile accedervi da tutti i flussi della competenza.
I valori per queste variabili globali persistono durante la sessione dell'utente con la competenza. Le variabili vengono cancellate al termine della sessione utente con la competenza, che si verifica quando si verifica una delle seguenti operazioni:
- L'utente chiude la finestra di chat.
- Timeout della sessione dopo un periodo di inattività (il cui valore è definito a livello di canale e che in genere è di 24 ore).
- Nel contesto di un assistente digitale, l'utente esce dallo skill o raggiunge uno stato che richiama direttamente un altro skill.
Nota
Quando l'utente interrompe una conversazione con un input non sequitur e viene temporaneamente instradato a una competenza diversa, l'assistente digitale rimane nel contesto della competenza originale e le relative variabili non vengono cancellate automaticamente. In questo caso, se l'utente torna allo skill originale dopo l'interruzione, le variabili contengono i relativi valori. Se l'utente sceglie di non tornare allo skill originale, lo skill originale viene chiuso e le variabili vengono cancellate.
È necessario limitare l'uso di queste variabili di ambito skill alle variabili che richiedono un contesto condiviso. Ad esempio, in un'abilità di consegna di cibo, potrebbe essere necessaria una variabile a livello di abilità per l'elenco di tutti gli ordini effettuati da un utente in una sessione.
Nei componenti Risposta comune e Imposta variabile, è inoltre possibile creare variabili di ambito utente o profilo. In questi casi, è possibile creare le variabili utilizzando l'elenco a discesa direttamente nella proprietà Variabile del componente (non il pulsante Crea accanto alla proprietà). Vedere Altri tipi di variabili.
I valori della variabile devono corrispondere al tipo dichiarato per la variabile. Se a una variabile viene assegnato un valore che non corrisponde al tipo dichiarato, si verifica un errore di runtime.
In Visual Flow Designer è possibile assegnare alle variabili un valore iniziale quando vengono dichiarate. Questo è diverso nei flussi di dialogo basati su YAML, in cui è necessario utilizzare un componente
System.SetVariable
per impostare il valore iniziale.
Note per gli sviluppatori utilizzati per i flussi di dialogo basati su YAML
Se si è abituati a progettare flussi di dialogo utilizzando l'editor di codice OBotML, è necessario conoscere le informazioni riportate di seguito sui flussi creati con Visual Flow Designer.
- Nessuna transizione
return
disponibile in Visual Flow Designer.Quando viene raggiunto l'ultimo stato di un flusso, le variabili del flusso vengono cancellate automaticamente (anche se le variabili a livello di skill rimangono attive fino alla fine della sessione).
- Le transizioni di stato possono essere definite solo tramite le azioni di transizione o transizione
next
.Quando si utilizza il designer per inserire uno stato in un flusso, nello stato e nello stato precedente vengono inserite le transizioni
next
appropriate.Non sono consentite transizioni implicite basate sulla sequenza degli stati. Se non è possibile trovare alcuna transizione corrispondente, verrà restituito un errore di runtime.
- Non è possibile utilizzare direttamente le espressioni FreeMarker per definire in modo condizionale gli stati di destinazione per le transizioni in un componente. Per specificare in modo condizionale lo stato di destinazione, inserire un componente Switch nel flusso per contenere l'espressione e definire le transizioni dell'azione in base al risultato dell'espressione.
Progettazione dei flussi
Crea flusso
Prima di poter mappare qualsiasi tipo di evento, che si tratti di un evento intento per un flusso transazionale o di un evento incorporato per un flusso di utility, è necessario creare il flusso stesso. Il mapping eventualmente assegnato a un flusso determina se il relativo ambito si estende all'intero skill o solo a un flusso.
Per creare un flusso, fare clic su + Aggiungi flusso.
L'editor viene popolato con un nodo iniziale di flusso . Si costruisce il flusso da qui. L'editor include anche il nodo Eventi in cui definire i flussi secondari per gli eventi di transizione del sistema che gestiscono gli errori di finestra di dialogo, i messaggi utente non ordinati, l'input utente imprevisto e l'autenticazione.
Descrizione dell'immagine df-2-0-initial-flow.png
Il flusso può terminare senza uno stato di flusso finale effettivo (implicitamente), ma se sono stati definiti parametri di output che passano i valori richiesti a un altro flusso, è necessario aggiungere uno stato di flusso finale , che specifica questi parametri di output.
Suggerimento
Fare clic su Convalida, quindi esaminare i risultati quando si crea un flusso..
Creazione di variabili a livello di skill
- Selezionare Flusso principale > Variabile skill.
- Fare clic su + Aggiungi variabile, quindi completare la finestra di dialogo.
- Selezionare il tipo di variabile come entità, tipo primitivo o lista (array JSON) o mappa (oggetto JSON). Se la variabile fa riferimento a un'entità (personalizzata o incorporata), completare la finestra di dialogo denominando la variabile per l'entità selezionata.
Nota
È necessario creare variabili per qualsiasi variabile impostata o creata nei gestori di eventi entità o nei componenti personalizzati. - Se necessario, immettere un valore iniziale (predefinito). Può essere un valore singolo (ad esempio,
false
, per un valore booleano o4
per un numero intero), un'espressione (ad esempio,list.ManageAccounts.addAccount
per una stringa) o un oggetto JSON, che racchiude le chiavi e i valori tra virgolette doppie ("
), come illustrato dal seguente oggetto elenco:
Questo snippet illustra il valore predefinito per una variabile di tipo elenco in un array.[ { "pizzaType":"Veggie", "price":"10 USD" } ]
Suggerimento
Se si imposta un valore iniziale per una variabile, non sarà necessario aggiungere uno stato Imposta variabile nel flusso per assegnargli un valore iniziale.
Designazione di uno stato iniziale

Lo stato iniziale è il primo stato da eseguire all'interno di un flusso. Se altri stati precedono lo stato iniziale, il flusso salterà tali stati, lasciandoli non eseguiti.
Aggiungi uno stato
Descrizione dell'immagine df-2-0-initial-flow.png
Dal nodo di avvio del flusso, è possibile creare lo stato facendo prima clic sul menu , quindi inserendo uno stato selezionato nella finestra di dialogo Aggiungi stato, aperta facendo clic su Aggiungi stato iniziale.
Descrizione dell'immagine df-2-0-add-state-dialog.png
Inserisci stato tra stati
- Fare clic sulla linea di transizione che collega i due stati, quindi aprire il menu Aggiungi stato facendo clic su
. Si noti che la linea di transizione indica il tipo di transizione tra gli stati (
next
, ad esempio). - Per creare uno stato al volo, scegliere Aggiungi stato dal menu Transazione successiva o dal menu Transizione a per le azioni.
Modificare le proprietà di uno stato
Se si fa clic su uno stato, viene visualizzato l'editor delle proprietà, in cui è possibile impostare la configurazione del componente e le transizioni.
Descrizione dell'immagine df-2-0-start-state-properties.png
L'editor delle proprietà per lo stato di output, ad esempio, è un componente del messaggio di invio per l'output di una stringa.
Descrizione dell'immagine df-2-0-start-state-component-page.png
Eliminazione degli stati
Per eliminare uno stato, passare il puntatore del mouse sulla relativa casella, fare clic su , quindi selezionare Elimina.
AVVERTENZA:
L'eliminazione di uno stato può avere conseguenze indesiderate. Se si elimina uno stato, lo stato viene rimosso completamente da ogni posizione visualizzata nel flusso. Se si elimina uno stato errato, è possibile ripristinarlo.- Scegliere Elimina stati dal menu.
- Fare clic su Elimina nella finestra di dialogo di conferma.
Se gli stati sono stati eliminati per errore, fare clic su Annulla.
Suggerimento
Se si desidera rimuovere una sola occorrenza di uno stato in un flusso, è possibile disconnetterlo da tale parte del flusso modificando il valore della transizione allo stato precedente.Ripristina stato eliminato
Se si elimina accidentalmente uno stato e si rende conto di volerlo ripristinare, è possibile ripristinarlo finché si rimane in Visual Flow Designer e non sono state apportate altre modifiche. A questo scopo:
- Individuare la finestra di dialogo che conferma l'eliminazione dello stato. Questo dovrebbe apparire nella parte inferiore sinistra dello schermo e assomigliare al seguente screenshot:
- Fare clic su Undo.
Riconnetti stato disconnesso
Nel corso dello sviluppo, si potrebbe causare una rottura tra gli stati modificando una transizione. A questo punto, la parte del flusso interrotta dal flusso viene parcheggiata all'interno di una casella denominata Disconnesso, visualizzata sotto la casella Eventi.
È possibile riconnettere una parte di un flusso disconnesso a un flusso di lavoro specificando il nome di uno stato disconnesso come transizione nel flusso di lavoro. A questo scopo:
- Se non si è certi degli stati disconnessi, fare doppio clic sulla casella Disconnesso per visualizzare gli stati disconnessi dal flusso.
- Selezionare la casella dello stato da cui si desidera passare allo stato attualmente disconnesso per aprire la finestra di ispezione delle proprietà.
- Nella finestra di ispezione delle proprietà selezionare la scheda Transizioni.
- Se si utilizza la transizione successiva, selezionare lo stato di disconnessione dall'elenco a discesa Transazione successiva.
- Se si sta utilizzando una transizione di azione, fare clic su Modifica (
) per la transizione che si desidera utilizzare per lo stato e modificare il valore Transizione a in base allo stato a cui si desidera connettersi.
Inserisci nuovo primo stato

- Passare il puntatore del mouse sullo stato del nodo iniziale per richiamare il menu
.
- Scegliere Aggiungi stato precedente.
- Selezionare un modello dalla finestra di dialogo Aggiungi stato. È possibile scegliere la transizione
Next
predefinita oppure creare un'azione di transizione che sarà possibile configurare in seguito nell'editor delle proprietà. - Dopo aver inserito lo stato precedente, è possibile assegnarlo come nodo iniziale scegliendo Rendi stato iniziale dal menu.
Stati copia
- Fare clic sul menu
nello stato che si desidera copiare, quindi scegliere Copia stati. La selezione potrebbe includere un singolo stato o un intero ramo, a seconda della posizione e della relazione dello stato con altri stati.
- Selezionare il flusso di destinazione (il flusso corrente o un altro flusso all'interno dello skill). quindi fare clic su Copia. Se si seleziona un flusso separato, tutte le variabili associate alla selezione verranno copiate in tale flusso.
- Aprire il nodo Disconnesso, quindi impostare una transizione che collega lo stato o gli stati al flusso. Se si sta creando un nuovo flusso in base agli stati copiati, scegliere Rendi stato iniziale per lo stato selezionato.Nota
Gli stati copiati nel flusso corrente vengono differenziati dagli originali con un valore 1. Ad esempio, la copia dicancelOrder
ècancelOrder1
.