Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'APPLIQUE À : SDK v4
Les dialogues sont fournis dans quelques types différents. Cet article décrit les dialogues de composant, de cascade et de sollicitation. Pour plus d’informations sur les dialogues en général, consultez l’article de la bibliothèque de dialogues . Pour plus d’informations sur les dialogues adaptatifs, consultez l’introduction aux dialogues adaptatifs.
Un dialogue en cascade (ou cascade) définit une séquence d’étapes, ce qui permet à votre bot de guider un utilisateur par le biais d’un processus linéaire. Ces dialogues sont conçus pour fonctionner dans le contexte d’un dialogue de composant.
Un dialogue de composant est un type de dialogue conteneur qui permet aux dialogues de l’ensemble d’appeler d’autres dialogues dans l’ensemble, tels qu’un dialogue en cascade appelant des dialogues d’invite ou un autre dialogue en cascade. Les boîtes de dialogue de composants gèrent un ensemble de boîtes de dialogue enfant, telles que des boîtes de dialogue en cascade, des invites, etc. Vous pouvez concevoir une boîte de dialogue de composant pour gérer des tâches spécifiques et la réutiliser, dans le même bot ou sur plusieurs bots.
Les dialogues d’invite (invites) sont des dialogues conçus pour demander à l’utilisateur des types d’informations spécifiques, tels qu’un nombre, une date ou un nom, etc. Les requêtes sont conçues pour fonctionner avec des dialogues en cascade dans un dialogue de module.
Boîtes de dialogue de composants
Parfois, vous souhaitez écrire une boîte de dialogue réutilisable pour différents scénarios, telle qu’une boîte de dialogue d’adresse qui demande à l’utilisateur de fournir des valeurs pour la rue, la ville et le code postal.
Le dialogue du composant fournit une stratégie permettant de créer des dialogues indépendants pour gérer des scénarios spécifiques, en divisant un grand ensemble de dialogues en éléments plus gérables. Chacun de ces éléments a son propre jeu de dialogues et évite les collisions de noms avec le jeu de dialogues qui le contient. Pour plus d'informations, consultez la fenêtre de dialogue du composant guide d'utilisation.
Dialogues en cascade
Un dialogue en cascade est une implémentation spécifique d’un dialogue couramment utilisé pour collecter des informations auprès de l’utilisateur ou guider l’utilisateur dans une série de tâches. Chaque étape de la conversation est implémentée en tant que fonction asynchrone qui prend un paramètre de contextualisation de l’étape du processus en cascade (step
). À chaque étape, le bot invite l’utilisateur à entrer (ou peut commencer une boîte de dialogue enfant, mais il s’agit souvent d’une invite), attend une réponse, puis transmet le résultat à l’étape suivante. Le résultat de la première fonction est passé en tant qu’argument à la fonction suivante, et ainsi de suite.
Le diagramme suivant montre une séquence d’étapes en cascade et les opérations de pile effectuées. Les détails sur l’utilisation de la pile de dialogues sont ci-dessous dans la section Using dialogs .
Dans les étapes en cascade, le contexte du dialogue en cascade est stocké dans son contexte d’étape en cascade. Le contexte d’étape est similaire au contexte de dialogue et permet d’accéder au contexte et à l’état de tour actuels. Utilisez l’objet de contexte d’étape en cascade pour interagir avec un jeu de dialogues à partir d’une étape en cascade.
Vous pouvez gérer une valeur de retour à partir d’un dialogue soit dans une étape d'un processus en cascade, soit à partir du gestionnaire de tours de votre bot. Cependant, vous n'avez généralement besoin de vérifier que l'état du résultat du tour de dialogue dans la logique de tour de votre bot. Dans une étape en cascade, le dialogue fournit la valeur de retour dans la propriété resultat du contexte d’étape en cascade.
Propriétés du contexte de l’étape en cascade
Le contexte d’étape en cascade contient les propriétés suivantes :
- Options : contient des informations d’entrée pour la boîte de dialogue.
- Valeurs : contient des informations que vous pouvez ajouter au contexte et est transférée dans les étapes suivantes.
- Résultat : contient le résultat de l’étape précédente.
En outre, la méthode suivante (NextAsync en C#, suivante en JavaScript et Python) passe à l’étape suivante de la boîte de dialogue en cascade au sein du même tour, ce qui permet à votre bot d’ignorer une certaine étape si nécessaire.
Requêtes
Les invites offrent, dans la bibliothèque de dialogues, un moyen simple de demander des informations à l’utilisateur et d'évaluer leur réponse. Par exemple, pour une invite de nombres, vous spécifiez la question ou les informations que vous demandez, et l’invite vérifie automatiquement s’il a reçu une réponse numérique valide. Si c’est le cas, la conversation peut continuer ; si ce n’est pas le cas, il réexécure l’utilisateur pour obtenir une réponse valide.
Dans les coulisses, les invites constituent une boîte de dialogue en deux étapes. Tout d’abord, l’invite demande une entrée ; deuxièmement, elle retourne la valeur valide, ou recommence depuis le début avec une redemande.
Les messages de demande ont des options de demande lorsqu'ils sont appelés, où vous pouvez spécifier le texte à afficher, le message de réessai si la validation échoue, ainsi que les choix pour répondre à la demande. En règle générale, les propriétés d'invite et celles de réessai d'invite sont des activités, bien qu’il existe une certaine variation selon la façon dont cela est géré dans différents langages de programmation.
En outre, vous pouvez choisir d’ajouter une validation personnalisée pour votre invite lorsque vous la créez. Par exemple, imaginons que nous voulons obtenir une taille du groupe à l’aide d'une invite de nombre, mais cette taille doit être supérieure à 2 et inférieure à 12 personnes. L’invite vérifie d’abord s’il a reçu un nombre valide, puis exécute la validation personnalisée si elle est fournie. Si la validation personnalisée échoue, elle réexécure l’utilisateur comme indiqué ci-dessus.
Lorsque la commande se termine, elle retourne explicitement la valeur demandée résultante. Lorsque cette valeur est retournée, nous pouvons être sûrs qu’elle a réussi à la fois la validation d’invite intégrée et toute validation personnalisée supplémentaire qui a pu être fournie.
Pour obtenir des exemples sur l’utilisation de différentes invites, examinez comment utiliser la bibliothèque de dialogues pour collecter des saisies de l'utilisateur.
Types d’invites
Dans les coulisses, les invites constituent une boîte de dialogue en deux étapes. Tout d'abord, l'invite demande une entrée ; ensuite, elle retourne la valeur valide ou recommence depuis le début avec une nouvelle demande d'entrée. La bibliothèque de dialogues propose différentes invites de base, chacune utilisée pour collecter un type de réponse différent. Les invites de base peuvent interpréter les entrées en langage naturel, telles que « dix » ou « une douzaine » pour un nombre, ou « demain » ou « vendredi à 10 h » pour une date-heure.
Prompt | Descriptif | Retours |
---|---|---|
Demande de pièce jointe | Demande une ou plusieurs pièces jointes, telles qu’un document ou une image. | Collection d’objets de pièce jointe . |
Suggérer un choix | Demande un choix parmi un ensemble d’options. | Objet de choix trouvé . |
Confirmer la commande | Demande une confirmation. | Valeur booléenne. |
Invite de date/heure | Demande une date-heure. | Collection d’objets de résolution date/heure . |
Demande de numéro | Demande un nombre. | Valeur numérique. |
Invite de texte | Demande une entrée de texte générale. | Chaîne. |
Pour inviter un utilisateur à entrer, définissez une invite à l’aide de l’une des classes intégrées, telles que l’invite de texte, et ajoutez-la à votre jeu de dialogues. Les invites ont des ID fixes qui doivent être uniques dans un ensemble de dialogues. Vous pouvez avoir un validateur personnalisé pour chaque invite et pour certaines invites, vous pouvez spécifier des paramètres régionaux par défaut.
Paramètres régionaux de la invite
Les paramètres régionaux sont utilisés pour déterminer le comportement propre à la langue du choix, confirmer, date-heure et nombre d’invites. Pour toute entrée utilisateur, si le canal a fourni une propriété locale dans un message utilisateur, elle est utilisée. Sinon, si les paramètres régionaux par défaut de l’invite sont définis, en le fournissant lors de l’appel du constructeur de l’invite ou en le définissant ultérieurement, celui-ci est utilisé. Si aucun de ces paramètres régionaux n’est fourni, l’anglais («en-us») est utilisé comme paramètres régionaux.
Les paramètres régionaux sont un code ISO 639 à deux, trois ou quatre caractères qui représente une famille de langues ou de langues.
Options d’invite
Le deuxième paramètre de la méthode d’invite du contexte d’étape prend un objet d’options d’invite , qui a les propriétés suivantes.
Propriété | Descriptif |
---|---|
Prompt | Activité initiale à envoyer à l’utilisateur afin de demander son avis. |
Invite de réessai | Activité à envoyer à l’utilisateur si sa première entrée n’a pas été validée. |
Choix | Liste de choix pour l'utilisateur, à utiliser dans le cadre d'une invite de choix. |
validations de | Paramètres supplémentaires à utiliser avec un validateur personnalisé. |
style | Définit comment les choix d’une invite de choix ou de confirmation seront présentés à un utilisateur. |
Vous devez toujours spécifier l’activité d’invite initiale à envoyer à l’utilisateur et une invite de nouvelles tentatives pour les instances lorsque l’entrée de l’utilisateur ne valide pas.
Si l’entrée de l’utilisateur n’est pas valide, l’invite de nouvelles tentatives est envoyée à l’utilisateur ; si aucune nouvelle tentative n’a été spécifiée, l’invite initiale est utilisée. Toutefois, si une activité est renvoyée à l’utilisateur à partir du validateur, aucune invite de nouvelle tentative n’est envoyée.
Validation de commande
Vous pouvez valider une réponse d’invite avant de renvoyer la valeur à l’étape suivante du processus en cascade. Une fonction validateur a un paramètre de contexte de validateur d’invite et retourne une valeur booléenne, indiquant si l’entrée réussit la validation. Le contexte de validateur d’invite inclut les propriétés suivantes :
Propriété | Descriptif |
---|---|
Contexte | Contexte de tour actuel pour le bot. |
Reconnu | Résultat de l'analyseur d'entrée de commande qui contient des informations sur l’entrée utilisateur, tel que traité par le module de reconnaissance. |
Options | Contient les options d’invite fournies lors de l'appel pour lancer l’invite. |
Le résultat du module de reconnaissance d’invite contient les propriétés suivantes :
Propriété | Descriptif |
---|---|
Réussi | Indique si le module de reconnaissance a pu analyser l’entrée. |
Valeur | Valeur de retour du module de reconnaissance. Si nécessaire, le code de validation peut modifier cette valeur. |
Utilisation de dialogues
Les dialogues peuvent être considérés comme une pile programmatique, que nous appelons la pile de dialogues, avec le gestionnaire de tours comme celui qui le dirige et sert de secours si la pile est vide. L’élément le plus haut de cette pile est considéré comme le dialogue actif, et le contexte de dialogue dirige toutes les entrées vers la boîte de dialogue active.
Lorsqu’un dialogue commence, il est placé sur la pile et devient le dialogue actif. Il reste le dialogue actif jusqu’à ce qu’il se termine, il est supprimé par la méthode replace dialog , ou un autre dialogue est envoyé sur la pile (par le gestionnaire de tour ou le dialogue actif lui-même) et devient le dialogue actif. Lorsque cette nouvelle boîte de dialogue se termine, elle est retirée de la pile et la boîte de dialogue suivante devient de nouveau active. Cela permet de répéter une boîte de dialogue ou de brancher une conversation, décrite ci-dessous.
Vous pouvez commencer ou continuer un dialogue racine en utilisant la méthode d’extension de dialogue run. Depuis le code du bot, l'appel de la méthode d'exécution de l'extension du dialogue continue le dialogue existant ou démarre une nouvelle instance du dialogue si la pile est actuellement vide. Le contrôle et l’entrée utilisateur sont dirigés vers la boîte de dialogue active sur la pile.
La méthode d’exécution nécessite un accesseur de propriété d’état pour accéder à l’état de la boîte de dialogue. L’accesseur est créé sur la base de l’état de la conversation et utilisé de la même façon que d’autres accesseurs d’état, mais il est créé comme une propriété distincte. Vous trouverez plus d’informations sur la gestion de l’état dans la rubrique sur la gestion de l'état, et l'utilisation de l'état du dialogue est illustrée dans le guide sur le flux de conversation séquentielle.
À partir d’un dialogue, vous avez accès au contexte de dialogue et pouvez l’utiliser pour démarrer d’autres dialogues, mettre fin au dialogue actuel et effectuer d’autres opérations.
Pour démarrer une boîte de dialogue
À partir d’un dialogue en cascade, transmettez l’ID de dialogue du dialogue que vous souhaitez commencer dans le contexte du dialogue en cascade à l’aide du dialogue de démarrage, de l’invite ou de la méthode de dialogue de remplacement .
- Les méthodes de dialogue d’invite et de début poussent une nouvelle instance du dialogue référencé en haut de la pile.
- La méthode de boîte de dialogue de remplacement retire la boîte de dialogue actuelle de la pile et ajoute la boîte de dialogue de remplacement sur la pile. La boîte de dialogue remplacée est annulée et toutes les informations contenues dans l’instance sont supprimées.
Utilisez le paramètre options pour transmettre des informations à la nouvelle instance de la boîte de dialogue. Les options passées dans la nouvelle boîte de dialogue sont accessibles via la propriété options du contexte d’étape dans n’importe quelle étape du dialogue. Pour plus d’informations, consultez comment créer un flux de conversation avancé à l’aide de branches et de boucles.
Pour continuer un dialogue
Dans une boîte de dialogue en cascade, utilisez la propriété valeurs du contexte d’étape pour conserver l’état entre les tours. Toute valeur ajoutée à cette collection lors d'un tour précédent est disponible dans les tours suivants. Pour plus d’informations, consultez comment créer un flux de conversation avancé à l’aide de branches et de boucles.
Pour mettre fin à une boîte de dialogue
Dans un dialogue en cascade, utilisez la méthode end dialog pour mettre fin à un dialogue en le retirant de la pile. La méthode de dialogue de fin peut renvoyer un résultat facultatif au contexte parent (par exemple, le dialogue qui l’a appelé ou le gestionnaire de tour du bot). Ceci est le plus souvent appelé à partir de la boîte de dialogue pour mettre fin à l’instance actuelle.
Vous pouvez appeler la méthode de terminaison de dialogue depuis n'importe où vous avez un contexte de dialogue, mais pour le bot, cela apparaîtra comme si elle avait été appelée depuis la boîte de dialogue active en cours.
Conseil / Astuce
Il est recommandé d’appeler explicitement la méthode de dialogue de fin à la fin du dialogue.
Pour effacer tous les dialogues
Si vous souhaitez afficher toutes les boîtes de dialogue hors de la pile, vous pouvez effacer la pile de dialogues en appelant la méthode Annuler tous les dialogues du contexte de dialogue.
Répéter un dialogue
Vous pouvez remplacer un dialogue par lui-même, en créant une boucle, à l’aide de la méthode replace dialog . Il s’agit d’un excellent moyen de gérer les interactions complexes et une technique de gestion des menus.
Remarque
Si vous devez conserver l’état interne de la boîte de dialogue active, vous devez transmettre des informations à la nouvelle instance de la boîte de dialogue dans l’appel à la méthode replace dialog , puis initialiser la boîte de dialogue de manière appropriée.
Brancher une conversation
Le contexte de dialogue gère la pile de dialogue et, pour chaque dialogue dans la pile, détermine quelle est l'étape suivante. Sa méthode begin dialog crée un enfant et place ce dialogue au sommet de la pile, et sa méthode end dialog retire le dialogue du sommet de la pile. Fin du dialogue est généralement appelée à partir du dialogue qui se termine.
Un dialogue peut démarrer un nouveau dialogue dans le même jeu de dialogues en appelant la méthode de dialogue de début du contexte de dialogue et en fournissant l’ID du nouveau dialogue, ce qui rend ensuite le nouveau dialogue actif. La boîte de dialogue d'origine se trouve toujours sur la pile, mais les appels à la méthode continue dialog du contexte de dialogue sont envoyés uniquement au dialogue situé en haut de la pile, le dialogue actif. Lorsqu’une boîte de dialogue est retirée de la pile, le contexte de la boîte de dialogue reprend avec l’étape suivante de la cascade sur la pile là où il avait quitté la boîte de dialogue d’origine.
Par conséquent, vous pouvez créer une branche dans votre flux de conversation en incluant une étape dans un dialogue qui peut choisir conditionnellement un dialogue pour démarrer parmi un ensemble disponible de dialogues.
Informations supplémentaires
- Pour plus d’informations sur les dialogues adaptatifs, consultez l’introduction aux dialogues adaptatifs.
- Pour plus d’informations sur les compétences, consultez les compétences.