Implémenter des gestionnaires d’activités et des dialogues

Effectué

La logique de traitement de l’activité peut être implémentée de plusieurs façons. Le kit SDK Bot Framework fournit des classes qui peuvent vous aider à générer des bots qui gèrent les conversations à l’aide de :

  • Gestionnaires d’activités : méthodes d’événements que vous pouvez remplacer pour gérer différents types d’activités.
  • Dialogues : modèles plus complexes pour gérer les invites multitour avec état.

Gestionnaires d’activités

Pour les bots simples avec des interactions courtes sans état, vous pouvez utiliser des gestionnaires d’activités pour implémenter un modèle de conversation basé sur les événements dans lequel les événements sont déclenchés par des activités telles que des utilisateurs qui rejoignent la conversation ou la réception d’un message. Quand une activité se produit dans un canal, Bot Framework Service appelle la fonction d’activité de processus de l’adaptateur de bot, en transmettant les détails de l’activité. L’adaptateur crée un contexte de tour pour l’activité et le transmet au gestionnaire de tour du bot, qui appelle le gestionnaire d’activités individuel propre à l’événement.

A bot uses activity handlers to handle turns in a conversation

La classe de base ActivityHandler inclut des méthodes d’événements pour les nombreux types d’activités courantes, notamment :

  • Message reçu
  • Des membres ont rejoint la conversation
  • Des membres ont quitté la conversation
  • Réception d’une réaction à un message
  • Bot installé
  • Autres...

Vous pouvez remplacer tous les gestionnaires d’activités pour lesquels vous souhaitez implémenter une logique personnalisée.

Contexte de tour

Une activité se produit dans le contexte d’un tour, qui représente un échange bidirectionnel unique entre l’utilisateur et le bot. Les méthodes de gestionnaire d’activités incluent un paramètre pour le contexte de tour, que vous pouvez utiliser pour accéder aux informations pertinentes. Par exemple, le gestionnaire d’activités pour l’activité « Message reçu » inclut le texte du message.

Informations complémentaires

Pour plus d’informations sur les gestionnaires d’activités, consultez la documentation sur le kit SDK Bot Framework.

Boîtes de dialogue

Pour les flux conversationnels plus complexes dans lesquels vous devez stocker l’état entre les tours pour activer une invite multitour, vous pouvez implémenter des dialogues. La bibliothèque de dialogues du kit SDK Bot Framework fournit plusieurs classes de dialogue que vous pouvez combiner pour implémenter le flux conversationnel requis pour votre bot.

Il existe deux modèles courants pour l’utilisation des dialogues en vue de composer une conversation de bot :

Dialogues de composants

Un dialogue de composants est un dialogue qui peut contenir d’autres dialogues définis dans son ensemble de dialogues. Souvent, le dialogue initial du dialogue de composants est en cascade, ce qui définit une série d’étapes séquentielles pour guider la conversation. Il est courant que chaque étape soit un dialogue d’invite si bien que le flux conversationnel consiste à collecter des données d’entrée de l’utilisateur séquentiellement. Chaque étape doit être terminée avant de transmettre la sortie à l’étape suivante.

Par exemple, un bot de commande de pizza peut être défini en tant que dialogue en cascade dans lequel l’utilisateur est invité à sélectionner une taille de pizza, puis la garniture et enfin à effectuer le paiement.

A component dialog contains a waterfall dialog for ordering a pizza

Dialogues adaptatifs

Un dialogue adaptatif est un autre type de dialogue de conteneur dont le flux est plus flexible. Il autorise les interruptions, les annulations et les changements de contexte à tout moment de la conversation. Dans ce type de conversation, le bot lance un dialogue racine qui contient un flux d’actions (pouvant inclure des branches et des boucles) et des déclencheurs qui peuvent être initiés par des actions ou par un module de reconnaissance. Le module de reconnaissance analyse les entrées en langage naturel (généralement à l’aide du service Language Understanding) et détecte les intentions, qui peuvent être mappées aux déclencheurs qui modifient le flux de la conversation, souvent en démarrant de nouveaux dialogues enfants, qui contiennent leurs propres actions, déclencheurs et modules de reconnaissance.

Par exemple, le bot de commande de pizza peut commencer par un dialogue racine qui accueille simplement l’utilisateur. Quand l’utilisateur entre un message indiquant qu’il souhaite commander une pizza, le module de reconnaissance détecte cette intention et utilise un déclencheur pour démarrer un autre dialogue contenant le flux des actions requises pour collecter des informations sur la commande de pizza. À tout moment au cours du dialogue de commande de pizza, l’utilisateur peut entrer un message indiquant qu’il souhaite effectuer une autre action (par exemple, annuler la commande) et le module de reconnaissance du dialogue de commande de pizza (ou de son dialogue parent) peut être utilisé pour déclencher une modification appropriée dans le flux conversationnel.

An adaptive dialog for ordering a pizza

Remarque

L’utilisation des dialogues offre une plus grande flexibilité qu’un bot basé exclusivement sur les gestionnaires d’activités, mais la programmation peut être plus complexe. Bien que vous puissiez utiliser le kit SDK Bot Framework pour implémenter des dialogues dans le code, vous pouvez envisager d’utiliser Bot Framework Composer pour générer des bots avec des dialogues complexes, en tirant parti de son interface de conception visuelle.