Concevoir et contrôler un flux de conversation

S’APPLIQUE À : SDK v4

Dans une application classique, l’interface utilisateur (IU) se compose d’une série d’écrans. Une application ou un site Web peut utiliser un ou plusieurs écrans selon les besoins du processus en termes d’échange d’informations avec l’utilisateur. La plupart des applications commencent par afficher un écran principal assurant l’accueil des utilisateurs et leur permettant de naviguer vers d’autres écrans. Ceux-ci peuvent offrir diverses fonctions comme la création d’une nouvelle commande, la consultation de produits ou la recherche d’aide.

Comme les applications et les sites Web, les bots sont dotés d’une interface utilisateur. Toutefois, celle-ci ne se compose pas d’écrans, mais de messages. Les messages peuvent inclure des boutons, du texte et d’autres éléments ou être entièrement basés sur la voix.

Alors qu’une application ou un site Web classique peut inviter l’utilisateur à entrer une multitude d’informations sur un même écran, un bot recueillera la même quantité d’informations à l’aide de plusieurs messages. Ainsi, le processus de collecte d’informations auprès de l’utilisateur repose sur une expérience active : l’utilisateur tient une conversation active avec le bot.

Un bot bien conçu offrira un flux de conversation naturel. Le bot doit être en mesure de gérer la conversation principale de façon fluide et de gérer correctement les interruptions ou les changements de sujet.

Flux de conversation procédural

Les conversations avec un bot peuvent être axées sur la tâche que le bot essaie d’effectuer (flux procédural). Le bot pose à l’utilisateur une série de questions pour recueillir toutes les informations dont il a besoin pour traiter la tâche.

Dans le cadre d’un flux de conversation procédural, vous définissez l’ordre des questions, et le bot pose les questions dans cet ordre. Vous pouvez organiser les questions en groupes logiques pour conserver le code cMicrosoft Entralized tout en restant focalisé sur le guidage de la conversation. Par exemple, vous pouvez concevoir un module contenant la logique qui permet à l’utilisateur de consulter les produits et un module distinct contenant la logique qui permet à l’utilisateur de créer une nouvelle commande.

Vous pouvez structurer ces modules selon le type de flux souhaité (libre, séquentiel, etc.). Le kit SDK Bot Framework propose une bibliothèque de dialogues qui vous permet de construire n’importe quel flux de conversation dont votre bot a besoin. La bibliothèque comprend des dialogues en cascade pour créer une séquence d’étapes et des invites pour poser des questions aux utilisateurs. Pour plus d’informations, consultez Bibliothèque des dialogues.

Diagram comparing application GUI flow against bot conversation flow.

Dans une application classique, tout commence par l’écran principal. L’écran principal appelle l’écran de nouvelle commande. L’écran de nouvelle commande conserve le contrôle jusqu’à ce qu’il se ferme ou appelle d’autres écrans, comme l’écran de recherche de produit. Si l’écran de nouvelle commande se ferme, l’utilisateur est renvoyé à l’écran principal.

Dans un bot utilisant des dialogues, tout commence par le dialogue racine. Le dialogue racine appelle le dialogue de nouvelle commande. À ce stade, la boîte de dialogue de nouvelle commande prend le contrôle de la conversation et le conserve jusqu’à ce qu’elle se ferme ou appelle une autre boîte de dialogue, comme la boîte de dialogue de recherche de produit. Si le dialogue de nouvelle commande se ferme, le contrôle de la conversation revient au dialogue racine.

Pour obtenir un exemple d’implémentation d’un flux conversationnel à l’aide des bibliothèques de dialogues, consultez Implémenter des flux de conversation séquentiels.

Gestion des interruptions

Il peut être tentant de supposer que les utilisateurs effectueront les tâches procédurales une par une de manière claire et ordonnée. Par exemple, dans le cadre d’un flux de conversation procédural utilisant des dialogues, l’utilisateur commence par le dialogue racine et invoque le dialogue de nouvelle commande. Depuis le dialogue de nouvelle commande, il invoque le dialogue de recherche de produits. Ensuite, lors de la sélection de l’un des résultats répertoriés dans la boîte de dialogue de recherche de produit, il invoque la boîte de dialogue de nouvelle commande. Une fois la commande terminée, il se retrouve à nouveau sur le dialogue racine.

Il serait très pratique que les utilisateurs naviguent toujours de façon logique et linéaire. Cependant, cela se produit rarement. Les utilisateurs ne communiquent pas toujours dans l’ordre séquentiel. Ils ont tendance à changer fréquemment d’avis. Prenons l’exemple suivant :

Example of a user asking a question in response to a question from the bot.

Il se peut que votre bot soit basé sur une approche procédurale, mais que l’utilisateur décide de faire quelque chose de complètement différent ou de poser une question qui n’est pas liée au sujet actuel. Dans l’exemple plus haut, l’utilisateur pose une question, alors que le bot l’invite à répondre par oui ou par non. Comment votre bot doit-il répondre ?

  • Insister pour que l’utilisateur réponde d’abord à la question.
  • Ignorer toutes les actions précédentes de l’utilisateur, réinitialiser toute la pile de boîtes de dialogue et recommencer depuis le début en essayant de répondre à la question de l’utilisateur.
  • Tenter de répondre à la question de l’utilisateur, puis revenir à la question oui/non et essayer de reprendre la procédure à ce stade.

Il n’existe aucune réponse correcte à cette question. En effet, la meilleure solution dépend des spécificités de votre scénario et des attentes raisonnables de l’utilisateur quant à la façon dont le bot va répondre. Découvrez comment gérer les interruptions utilisateur pour un bot conçu pour gérer certains types d’interruptions.

Faire expirer une conversation

Il est parfois utile de redémarrer une conversation depuis le début. Par exemple, si un utilisateur ne répond pas après un certain temps. Les différentes méthodes pour mettre fin à une conversation comprennent :

  • Suivez la dernière fois qu'un message a été reçu d'un utilisateur et effacez l'état si l'heure est supérieure à une longueur préconfigurée lors de la réception du message suivant de l'utilisateur.
  • Utilisez une fonctionnalité de couche de stockage, telle que la durée de vie de Cosmos DB, pour effacer automatiquement l'état après une durée préconfigurée.

Pour plus d'informations, consultez Comment faire expirer une conversation.

Étapes suivantes

La gestion de la navigation de l’utilisateur dans les boîtes de dialogue et la conception d’un flux de conversation d’une manière qui permette aux utilisateurs d’atteindre leurs objectifs (y compris de façon non linéaire) constituent des enjeux majeurs de la conception de bot. L’article Concevoir la navigation des bots passe en revue les pièges fréquents inhérents à une navigation mal conçue et aborde les stratégies permettant de les éviter.