Flux
Un flux est une partie du flux de dialogue de compétence qui définit l'interaction avec l'utilisateur pour terminer une tâche ou une partie d'une tâche que l'utilisateur souhaite effectuer.
Voici des exemples courants de flux :
- Flux axés sur les intentions, où chaque intention définie dans la compétence est associée à un flux, par exemple 'Order Pizza', 'Send Money' ou 'Create Expense'.
- Flux de soutien ou d'utilitaire pour des tâches telles que l'autorisation de l'utilisateur, l'intégration d'un nouvel utilisateur, la journalisation ou l'assistance de l'utilisateur. Ces flux peuvent être appelés à partir de plusieurs flux.
Par exemple, vous pouvez avoir un sous-flux Créer un compte que vous appelez à partir de flux tels que Order Pizza ou Send Money.
Types de flux
D'une manière générale, les flux se décomposent en types suivants :
- Flux principal.
- Flux d'intention.
- Flux pour les événements intégrés et les transitions de système.
- Sous-flux pouvant être utilisés par les flux de niveau supérieur.
Flux principal
Avec les flux de dialogue créés dans Visual Flow Designer, chaque flux de dialogue comporte un seul flux principal qui est utilisé pour configurer :
- Mappages entre les événements et les flux.
- Variables de contexte global pouvant être utilisées dans tous les flux de la compétence.
Lors de l'accès à une telle variable avec une expression Freemarker, vous ajoutez le préfixe
skill.
au nom de la variable dans l'expression.Ces variables de niveau compétence sont effacées après l'expiration de la session utilisateur. L'expiration de la session est configurée au niveau du canal et est généralement de 24 heures par défaut.
Le flux principal n'est pas vraiment un flux en tant que tel. Il s'agit plutôt du centre de contrôle de la compétence, à partir duquel les utilisateurs sont dirigés vers des flux spécialisés qui sont mappés aux intentions résolues. La configuration du flux principal inclut la variable skill.system.nlpresult
prédéfinie qui est alimentée avec les résultats de correspondance d'intention et d'entité chaque fois qu'une intention est résolue, ce qui permet de transmettre le contrôle à des flux individuels.
Flux d'intention
Lorsque vous concevez des flux de dialogue avec Visual Flow Designer, vous créez des flux que vous mappez ensuite à vos intentions. Toutes les intentions standard (c'est-à-dire les intentions qui ne sont pas des intentions de réponse) doivent être liées à un flux.
Pour les intentions de réponse, vous pouvez utiliser l'une ou l'autre des approches suivantes (ou une combinaison) :
- Créez un flux unique et mappez-le à l'événement intégré d'intention de réponse.
- Créer des flux individuels pour des intentions de réponse spécifiques.
Cette approche vous permet d'avoir des invites ou des questions spécifiques à précéder et/ou à suivre chaque réponse.
Vous avez également la possibilité de ne fournir aucun flux pour les intentions de réponse, auquel cas la réponse est donnée à l'utilisateur sans que le flux de dialogue soit directement impliqué.
Flux d'utilitaire pour les événements intégrés et les transitions de système
Vous pouvez créer des flux déclenchés par les événements intégrés de la compétence (tels que l'intention de réponse et l'erreur de dialogue), les événements personnalisés et les transitions de système (telles que l'autorisation de l'utilisateur et l'erreur de dialogue).
Sous-flux personnalisés
Vous pouvez également créer des flux qui ne sont pas mappés à une intention spécifique ou basés sur des événements intégrés (ou des transitions système) mais qui peuvent être appelés par d'autres flux.
Par exemple, dans une compétence pour un restaurant, vous pouvez avoir un flux Afficher le menu qui peut être appelé au milieu d'un flux de commande si un utilisateur le demande.
Variables et portée
Dans Visual Flow Designer, les variables pour peuvent être définies à deux niveaux :
- dans un flux individuel. Les variables définies à ce niveau ne sont accessibles qu'à partir du flux où elles sont définies.
Une variable de portée de flux ne peut pas être accédée directement en dehors du flux où elle est définie, même à partir de sous-flux ou de flux appelants. Toutefois, vous pouvez définir des paramètres d'entrée et de sortie pour qu'un flux transmette des valeurs vers et depuis les variables définies dans le flux.
Lorsque le flux se termine, les valeurs de variable sont réinitialisées.
La plupart de vos variables doivent être définies à ce niveau. En utilisant régulièrement des variables de flux, vous rendez vos flux plus autonomes, ce qui les rend plus faciles à réutiliser, plus faciles à tester isolément et moins susceptibles d'être affectés par des bogues dans d'autres flux.
- Dans le flux principal. Les variables définies ici ont une portée à l'échelle de la compétence (globale), ce qui signifie qu'elles sont accessibles à tous les flux de la compétence.
Les valeurs de ces variables globales persistent pendant la session de l'utilisateur avec la compétence. Les variables sont effacées à la fin de la session utilisateur avec la compétence, ce qui se produit lorsque l'une des situations suivantes se produit :
- L'utilisateur ferme la fenêtre de clavardage.
- La session expire après une période d'inactivité (dont la valeur est définie au niveau du canal et qui est généralement de 24 heures).
- Dans le contexte d'un assistant numérique, l'utilisateur quitte la compétence ou atteint un état qui appelle directement une autre compétence.
Note
Lorsque l'utilisateur interrompt une conversation avec une entrée non séquentielle et est acheminée temporairement vers une autre compétence, l'assistant numérique reste dans le contexte de la compétence initiale et ses variables ne sont pas effacées automatiquement. Dans ce cas, si l'utilisateur retourne à la compétence initiale après l'interruption, les variables contiennent leurs valeurs. Si l'utilisateur choisit de ne pas retourner à la compétence initiale, la compétence initiale est abandonnée et les variables sont effacées.
Vous devez limiter l'utilisation de ces variables de portée de compétence aux variables qui nécessitent un contexte partagé. Par exemple, dans une compétence de livraison de nourriture, vous pourriez avoir besoin d'une variable de niveau compétence pour la liste de toutes les commandes qu'un utilisateur a effectuées dans une session.
Dans les composants Réponse commune et Définir une variable, vous pouvez également créer des variables d'étendue d'utilisateur ou de profil. Dans ce cas, vous créez les variables à l'aide de la liste déroulante directement dans la propriété Variable du composant (pas le bouton Créer à côté de la propriété). Voir Autres types de variables.
Les valeurs de variable doivent correspondre au type déclaré pour la variable. Si une valeur affectée à une variable ne correspond pas à son type déclaré, une erreur d'exécution se produit.
Dans le concepteur de flux visuel, une valeur initiale peut être affectée aux variables lors de leur déclaration. (Ceci est différent dans les flux de dialogue basés sur YAML, où vous devez utiliser un composant
System.SetVariable
pour définir la valeur initiale.)
Notes pour les développeurs utilisés pour les flux de dialogue basés sur YAML
Si vous êtes habitué à concevoir des flux de dialogue à l'aide de l'éditeur de code OBotML, vous devez connaître les éléments suivants au sujet des flux que vous créez avec Visual Flow Designer :
- Aucune transition
return
n'est disponible dans le concepteur de flux visuel.Lorsque le dernier état d'un flux est atteint, les variables du flux sont effacées automatiquement (bien que toutes les variables de niveau compétence restent actives jusqu'à la fin de la session).
- Les transitions d'état ne peuvent être définies qu'au moyen des actions de transition ou de transition
next
.Lorsque vous utilisez le concepteur pour insérer un état dans un flux, les transitions
next
appropriées sont insérées dans cet état et dans l'état précédent.Les transitions implicites basées sur la séquence des états ne sont pas autorisées. Si aucune transition correspondante n'est trouvée, une erreur d'exécution est générée.
- Il n'est pas possible d'utiliser directement des expressions FreeMarker pour définir conditionnellement les états cibles des transitions dans un composant. Pour spécifier conditionnellement l'état cible, insérez un composant Switch dans le flux pour contenir l'expression et définir les transitions d'action en fonction du résultat de l'expression.
Concevoir des flux
Créer un flux
Avant de pouvoir mapper n'importe quel type d'événement, qu'il s'agisse d'un événement d'intention pour un flux transactionnel ou d'un événement intégré pour un flux d'utilitaire, vous devez d'abord créer le flux lui-même. Le mappage que vous affectez éventuellement à un flux détermine si sa portée s'étend à l'ensemble de la compétence ou uniquement à un flux.
Pour créer un flux, cliquez sur + Ajouter un flux.
L'éditeur est alimenté avec un noeud de début de flux . Vous construisez le flux d'ici. L'éditeur inclut également le noeud Events (Événements) dans lequel vous définissez les sous-flux des événements de transition du système qui gèrent les erreurs de dialogue, les messages utilisateur désordonnés, les entrées utilisateur inattendues et l'authentification.
Description de l'illustration df-2-0-initial-flow.png
Votre flux peut se terminer sans état de flux de fin réel (implicitement), mais si vous avez défini des paramètres de sortie qui transmettent les valeurs requises à un autre flux, vous devez ajouter un état de flux de fin , qui spécifie ces paramètres de sortie.
Conseil :
Cliquez sur Valider, puis vérifiez les conclusions lors de la création d'un flux..
Créer les variables de niveau compétence
- Sélectionnez Flux principal > Variable de compétence.
- Cliquez sur + Add Variable (Ajouter une variable), puis remplissez la boîte de dialogue.
- Sélectionnez le type de variable en tant qu'entité, type primitif, liste (tableau JSON) ou mappage (objet JSON). Si la variable référence une entité (personnalisée ou intégrée), terminez la boîte de dialogue en nommant la variable pour l'entité sélectionnée.
Note
Vous devez créer des variables pour toutes les variables définies ou créées dans les programmes de traitement d'événements d'entité ou les composants personnalisés. - Si nécessaire, entrez une valeur initiale (par défaut). Il peut s'agir d'une valeur unique (par exemple,
false
, pour une valeur booléenne ou4
pour un nombre entier), d'une expression (par exemple,list.ManageAccounts.addAccount
pour une chaîne) ou d'un objet JSON, qui encadre les clés et les valeurs entre guillemets doubles ("
), comme illustré par l'objet de liste suivant :
Cet extrait illustre la valeur par défaut d'une variable de type liste dans un tableau.[ { "pizzaType":"Veggie", "price":"10 USD" } ]
Conseil :
Si vous définissez une valeur initiale pour une variable, vous n'aurez pas besoin d'ajouter un état Set Variable dans le flux pour lui donner une valeur initiale.
Désigner un état de début

L'état de début est le premier état à s'exécuter dans un flux. Si d'autres états précèdent l'état de début, le flux ignore ces états, les laissant non exécutés.
Ajouter un État
Description of the illustration df-2-0-initial-flow.png
From the Flow start node, you can build out your state by first clicking the menu and then by inserting a state selected from the Add State dialog, opened by clicking Add start state.
Description of the illustration df-2-0-add-state-dialog.png
Insérer un état entre les États
- Cliquez sur la ligne de transition qui connecte les deux états, puis ouvrez le menu Add State en cliquant sur
. Notez que la ligne de transition indique le type de transition entre les états (
next
, par exemple). - Créez un état à la volée en sélectionnant Ajouter un état dans le menu Prochaine transition ou Transition vers pour les actions.
Modifier les propriétés d'un état
Cliquer sur un état ouvre son éditeur de propriétés, où vous définissez la configuration et les transitions du composant.
Description de l'illustration df-2-0-start-state-properties.png
L'éditeur de propriété pour l'état de sortie, par exemple, est un composant d'envoi de message pour la sortie d'une chaîne.
Description de l'illustration df-2-0-start-state-component-page.png
Suppression des États
Vous pouvez supprimer un état en pointant sa vignette, en cliquant sur , puis en sélectionnant Supprimer.
AVERTISSEMENT :
La suppression d'un état peut avoir des conséquences inattendues. Si vous supprimez un état, celui-ci est entièrement supprimé de chaque endroit où il apparaît dans le flux. Si vous supprimez le mauvais état, vous pouvez le restaurer.- Sélectionnez Supprimer les états dans le menu.
- Cliquez sur Supprimer dans la boîte de dialogue de confirmation.
Si vous avez supprimé les états par erreur, cliquez sur Annuler.
Conseil :
Si vous voulez simplement supprimer une occurrence d'un état dans un flux, vous pouvez le déconnecter de cette partie du flux en changeant la valeur de la transition vers lui à partir de l'état précédent.Restaurer un état supprimé
Si vous supprimez accidentellement un état et réalisez ensuite que vous le souhaitez, vous pouvez le restaurer tant que vous restez dans Visual Flow Designer et que vous n'avez apporté aucune autre modification. Pour ce faire :
- Localisez le dialogue confirmant que l'état a été supprimé. Cela devrait apparaître en bas à gauche de votre écran et ressembler à la capture d'écran suivante :
- Cliquez sur Annuler.
Reconnecter un état déconnecté
Au cours du développement, vous pouvez provoquer une rupture entre les états en modifiant une transition. À ce stade, la partie du flux qui est séparée du flux est garée dans une vignette nommée Disconnected (Déconnecté), qui s'affiche sous la vignette Events (Événements).
Vous pouvez reconnecter une partie d'un flux déconnecté à un flux de travail en spécifiant le nom d'un état déconnecté en tant que transition dans le flux de travail. Pour ce faire :
- Si vous ne savez pas quels états ont été déconnectés, cliquez deux fois sur la vignette Disconnected (Déconnecté) pour afficher les états qui ont été déconnectés du flux.
- Sélectionnez la vignette de l'état à partir duquel vous souhaitez passer à l'état actuellement déconnecté pour ouvrir son inspecteur des propriétés.
- Dans l'inspecteur de propriétés, sélectionnez l'onglet Transitions.
- Si vous utilisez la transition suivante, sélectionnez l'état déconnecté dans la liste déroulante Transition suivante.
- Si vous utilisez une transition d'action, cliquez sur Modifier (
) pour la transition que vous voulez utiliser pour l'état et remplacez la valeur Transition par par l'état auquel vous voulez vous connecter.
Insérer un nouveau premier état

- Pointez l'état du noeud de début pour appeler le menu
.
- Sélectionnez Ajouter l'état précédent.
- Sélectionnez un modèle dans la boîte de dialogue Add State. Vous pouvez choisir la transition
Next
par défaut ou créer une action de transition, que vous pourrez configurer ultérieurement dans l'éditeur de propriétés. - Après avoir inséré l'état précédent, vous pouvez l'affecter en tant que noeud de début en sélectionnant Activer l'état de début dans le menu.
Copier les États
- Cliquez sur le menu
de l'état à copier, puis sélectionnez Copier les états. Votre sélection peut inclure un seul état, ou une branche entière, en fonction de la position de l'état et de sa relation avec d'autres états.
- Sélectionnez le flux cible (le flux courant ou un autre flux au sein de la compétence). Cliquez ensuite sur Copier. Si vous sélectionnez un flux distinct, toutes les variables associées à la sélection seront copiées dans ce flux.
- Ouvrez le noeud Déconnecté, puis définissez une transition qui connecte l'état ou les états au flux. Si vous créez un flux basé sur les états copiés, sélectionnez Activer l'état de début pour l'état sélectionné.Note
Les états copiés dans le flux courant sont différenciés des originaux avec un 1. Par exemple, la copie decancelOrder
estcancelOrder1
.