Introduzione a Visual Flow Designer
Di seguito è riportato un breve set di passi per iniziare a utilizzare Visual Flow Designer.
Creare la competenza di flusso di Visual Designer
- Fare clic su + Nuova competenza nella pagina di arrivo delle competenze.
- Scegliere Visuale come modalità della finestra di dialogo.
Nota
Per rendere disponibile questa opzione, è necessario impostare la versione della piattaforma su 22.04 o successiva. - Creare intenti ed entità. Prima di creare variabili e flussi di intenti, è necessario disporre di questi elementi.
- Fare clic su Flussi
nella barra di navigazione a sinistra. L'editor viene aperto al flusso principale, in cui è possibile impostare e gestire la configurazione per l'intero skill. Tra le altre cose, è possibile utilizzare la pagina Variabili skill per aggiungere le variabili condivise tra i flussi e la relativa pagina Eventi per creare e gestire i mapping dei flussi transazionali agli intenti e il mapping dei flussi di utility agli eventi built-in che gestiscono intenti non risolti, errori di finestra di dialogo e la presentazione di intenti di risposta.
Mappa eventi
È possibile aggiungere, modificare o eliminare mapping dalla pagina Evento del flusso principale. È possibile utilizzare la finestra di dialogo di mapping per vari tipi di eventi nei flussi esistenti.
Descrizione dell'immagine df-2-0-event-mapping-dialog.png
Per accedere a questa finestra di dialogo, fare clic su .
Descrizione dell'illustrazione df-2-0-event-mappings-page.png
Genera un flusso di eventi intenti
Qui è possibile creare flussi per eseguire il mapping a intenti specifici nello skill. I flussi di intenti vengono in genere mappati agli intenti normali, anche se è possibile crearli anche per gli intenti di risposta.
Per creare un flusso di eventi dell'intento, procedere come segue.
- Creare l'intento corrispondente e le entità a cui verrà fatto riferimento all'interno del flusso.
Ad esempio, se si sta creando un'abilità per la pizza, è possibile creare i seguenti artifact:
- Intento orderPizza.
- Entità dell'elenco di valori PizzaTopping.
- Allenare l'abilità.
- Introduzione al flusso:
- Fare clic su Flussi nella barra di navigazione a sinistra, quindi fare clic su + Aggiungi flusso.
- Immettere un nome di flusso, quindi selezionare il nome dell'intento mappato a questo flusso. Fare quindi clic su Crea.
Nota
È possibile scegliere solo dal flusso disponibile.
- Creare le variabili utilizzate nel flusso:
- Aprire la scheda Configurazione. quindi fare clic su + Aggiungi variabile.
- Selezionare il tipo di variabile. Se la variabile fa riferimento a un'entità, completare la finestra di dialogo denominando la variabile per l'entità selezionata. quindi fare clic su Applica.Nota
All'interno di un flusso, una variabile e un parametro di output possono condividere lo stesso nome. Le variabili e i parametri di output non possono tuttavia avere gli stessi nomi dei parametri di input.
- Creare il flusso:
- Aprire la scheda Flusso.
- Fare clic sul menu
nell'avvio del flusso, quindi fare clic su Aggiungi stato iniziale per aprire la finestra di dialogo Aggiungi stato.
- Selezionare uno stato dal selettore componenti, quindi fare clic su Inserisci.
- Aprire la finestra di ispezione delle proprietà dello stato per configurare il componente.
- Selezionare Fai domanda, quindi fare clic su Inserisci.
- Aprire la scheda Componente nella finestra delle proprietà dello stato della domanda.
- Aggiungi una domanda ("Che pizza vuoi?", per esempio). Quindi, selezionate la variabile di flusso.
Suggerimento
Utilizzare i bundle di risorse per tutto il testo rivolto all'utente nello skill. - Aggiungere un altro stato dopo la domanda facendo clic sul menu.
- Scegliere Invia messaggio, quindi fare clic su Inserisci.
- Nella finestra delle proprietà per lo stato del messaggio di invio, immettere un messaggio di conferma con un'espressione FreeMarker che accede alla variabile di flusso utilizzando la sintassi
${varName.value.value}
. Ad esempio:
Se si fa riferimento a un'entità sacchetto composto a livello di flusso, utilizzare la sintassiYour ${PizzaType.value.value} pizza is on the way.
${cbVarName.value.itemName.<attribute>}
.Dopo aver aggiunto gli stati al flusso, è possibile riassegnare lo stato iniziale facendo clic sul menu
, quindi scegliendo Imposta stato iniziale.
Descrizione dell'illustrazione df-2-0-make-start-state.png - Aprire la scheda Transizioni della finestra di ispezione delle proprietà del componente di output. Si noti che Flusso finale (implicito) è selezionato come transizione. Poiché questo flusso non ha parametri di output obbligatori, la transizione al flusso finale implicito sarà sufficiente. Se tuttavia il flusso dispone di uno o più parametri di output obbligatori, lo stato di output dovrà passare a uno stato di flusso finale effettivo (inserito facendo clic su Controllo flusso > Flusso finale nella finestra di dialogo Aggiungi stato) che specifica i parametri di output del flusso.
Valori delle variabili di riferimento nelle espressioni FreeMarker
Utilizzare ${varName.value.value}
per fare riferimento a un'entità elenco di valori. Poiché le entità vengono risolte come oggetti JSON, il primo .value
restituisce l'oggetto JSON e il secondo .value
restituisce il valore di una proprietà in tale oggetto JSON. Per restituire il valore dell'entità nella lingua principale dello skill, utilizzare ${varName.value.primaryLanguageValue}
.
${cbVarName.value.itemName.value}
per gli elementi dell'elenco di valori e {cbVarName.value.itemName}
per gli elementi dell'elenco non di valore.
- Quando un elemento è un elenco di valori, utilizzare una proprietà di valore:
${cbVarName.value.itemName.value}
o${cbVarName.value.itemName.primaryLanguageValue}
. - Per gli elementi di elenco non di valore, non è possibile accedere all'elemento con una proprietà di valore (nessun valore
.value
o.primaryLanguageValue
). Ad esempio, se si fa riferimento a un'entità DATE il cui nome elemento èdate
nel sacchetto composito, utilizzare${cbVarName.value.date}
. Per un elemento entità NUMBER (number
), utilizzare${cbVarName.value.number}
.
skill.
Ad esempio, l'espressione seguente fa riferimento a un elemento (Type
) in un'entità bag composta (Order
) condivisa tra i flussi:${skill.Order.value.Type.value}
skill
non è obbligatorio nelle espressioni per le variabili con ambito di flusso:${Order.value.Type.value}
Suggerimento
Il completamento automatico rende la scrittura delle espressioni FreeMarker di Apache meno soggetta a errori.Crea un flusso per eventi integrati
È probabile che si desideri disporre di flussi di utility per eventi integrati come la gestione di intenti non risolti, errori di finestra di dialogo e la presentazione di intenti di risposta. È possibile mappare questi flussi agli eventi built-in nel flusso principale. In generale, i flussi mappati agli eventi built-in vengono richiamati quando non esiste un flusso attivo a livello di intento, ad esempio quando lo skill viene avviato o quando un flusso di intenti termina con uno stato di flusso finale.
Ad esempio, per creare un flusso generico che gestisca tutti gli intenti di risposta:
- Creare o importare un intento di risposta e quindi addestrare lo skill.
- Fare clic su Flussi, quindi su + Aggiungi flusso.
- Inserire un nome di flusso per il flusso di intenti di risposta, quindi fare clic su Crea.
- Fare clic sul menu
nell'avvio del flusso, quindi fare clic su Aggiungi stato iniziale per aprire la finestra di dialogo Aggiungi stato.
- Aggiungere uno stato di risposta intento visualizzato selezionando Messaggistica utente > Visualizza testo e messaggi multimediali > Visualizza risposta intento oppure immettendo la risposta intento nel campo Cerca. quindi fare clic su Inserisci.
Suggerimento
Il campo di ricerca consente di individuare un modello di stato. - Fare clic sullo stato di visualizzazione della risposta dell'intento per aprire la scheda Componente di Property Inspector, quindi fare clic su Modifica elementi di risposta.
- Aggiornare il messaggio di testo, incorporando l'espressione FreeMarker del modello che accede al messaggio di intento di risposta (
"${skill.system.event.value.intent.answer}"
). Ad esempio:"Hello, ${profile.firstName?capitalize} ${profile.lastName?capitalize}. You were asking about ${skill.system.event.value.intent.intentName?lower_case}. Here's your answer: ${skill.system.event.value.intent.answer}."
Nota
- Fare clic su Applica.
- Fare clic su Flusso principale.
- Fare clic su
accanto a Eventi built-in.
- Completare la finestra di dialogo Crea handler eventi built-in:
- Selezionare Intento risposta (situato in Eventi intento) dall'elenco a discesa Tipo di evento non gestito.
- Selezionare il flusso di intenti risposta dall'elenco a discesa Flusso mappato.
- Selezionare Intento risposta (situato in Eventi intento) dall'elenco a discesa Tipo di evento non gestito.
- Fare clic su Crea.
Il flusso di eventi di errore della finestra di dialogo può esistere sia a livello di skill che a livello di flusso. Il flusso di errore della finestra di dialogo a livello di skill, mappato all'evento incorporato Errore finestra di dialogo, funge da fallback in assenza di un flusso di gestione degli errori mappato all'evento Errore finestra di dialogo a livello di flusso. Se la competenza non dispone di alcun flusso di errori di finestra di dialogo, viene visualizzato il messaggio di errore predefinito (Oops! Sto riscontrando problemi).
Messaggi di esempio per i flussi di eventi integrati
Evento integrato | Esempi e sintassi delle espressioni |
---|---|
Intento risposta | Utilizzare la sintassi seguente per i flussi generici che gestiscono tutti gli intenti di risposta per lo skill:
Ad esempio: Ciao, |
Errore finestra di dialogo | Usare la sintassi seguente per i messaggi di errore della finestra di dialogo: Ad esempio:Errore durante l'elaborazione dell'ordine: |