Conversations basées sur les événements à l'aide d'un gestionnaire d'activités

S'APPLIQUE À : (SDK) v4

Un gestionnaire d'activités est un moyen basé sur les événements d'organiser la logique conversationnelle pour votre bot. Chaque type ou sous-type d'activité représente un type différent d'événement conversationnel. Sous couvert, le gestionnaire de tour du bot appelle le gestionnaire d'activité individuel pour le type d'activité qu'il a reçu.

Par exemple, si le bot reçoit une activité de message, le gestionnaire de tour verra cette activité entrante et l'enverra au gestionnaire d'activité sur activité de message. Lors de la construction de votre bot, la logique de gestion et de réponse aux messages sera placée dans ce gestionnaire d'activité sur activité de message. De même, votre logique de gestion des membres ajoutés à la conversation sera intégrée à votre gestionnaire sur les membres ajoutés, qui est appelé chaque fois qu'un membre est ajouté à la conversation.

Pour d'autres façons d'organiser la logique du bot, consultez la section Logique du bot dans la rubrique Fonctionnement des bots.

Remarque

Les kits SDK JavaScript, C# et Python Bot Framework continueront d’être pris en charge. Toutefois, le kit de développement logiciel (SDK) Java est mis hors service avec une prise en charge finale à long terme se terminant en novembre 2023.

Les bots existants créés avec le kit de développement logiciel (SDK) Java continueront de fonctionner.

Pour la nouvelle génération de bots, envisagez d’utiliser Microsoft Copilot Studio et lisez-en plus sur le choix de la solution copilote appropriée.

Pour plus d'informations, consultez L'avenir de la construction de bots.

Pour implémenter votre logique pour ces gestionnaires, vous allez remplacer ces méthodes dans votre bot, comme dans l'exemple de gestionnaire d'activité ci-dessous. Comme aucun de ces gestionnaires ne dispose d'une implémentation de base, ajoutez simplement la logique que vous voulez dans votre remplacement.

Il peut arriver que vous souhaitiez remplacer le gestionnaire de tours standard, comme l'enregistrement de l'état à la fin d'un tour. Lors de cette opération, veillez à appeler en premier await base.OnTurnAsync(turnContext, cancellationToken); pour vous assurer que l’implémentation de base de OnTurnAsync est exécutée avant votre code supplémentaire. Cette implémentation de base est, entre autres choses, chargée d’appeler le reste des gestionnaires d’activités, tels que OnMessageActivityAsync.

Gestion des activités

La logique du bot traite les activités entrantes à partir d’un ou de plusieurs canaux, et génère des activités sortantes en réponse.

La logique principale du bot est définie dans le code du bot. Pour implémenter un bot en tant que gestionnaire d'activités, dérivez votre classe de bot à partir de ActivityHandlerlaquelle implémente l'interface IBot. ActivityHandler définit divers gestionnaires pour différents types d'activités, comme OnMessageActivityAsync et OnMembersAddedAsync. Ces méthodes sont protégées, mais peuvent être remplacées dans la mesure où nous dérivons de ActivityHandler.

Les gestionnaires définis dans ActivityHandler sont :

Événement Handler Description
Tout type d’activité reçu OnTurnAsync Appelle l’un des autres gestionnaires, selon le type d’activité reçu.
Activité de message reçue OnMessageActivityAsync Remplacer celui-ci pour gérer une activité message.
Activité reçue de mise à jour de conversation OnConversationUpdateActivityAsync Sur une activité conversationUpdate, appelle un gestionnaire si des membres autres que le bot ont rejoint ou quitté la conversation.
Des membres autres que le bot ont rejoint la conversation OnMembersAddedAsync Substituer celui-ci pour gérer les membres se joignant à une conversation.
Des membres autres que le bot ont quitté la conversation OnMembersRemovedAsync Substituer celui-ci pour gérer les membres quittant une conversation.
Activité d’événement reçue OnEventActivityAsync Sur une activité event, appelle un gestionnaire spécifique au type d’événement.
Activité reçue d’événement de réponse de jeton OnTokenResponseEventAsync Substituer celui-ci pour gérer les événements de réponse de jeton.
Activité reçue d’événement de réponse autre que celle du jeton OnEventAsync Substituer celui-ci pour gérer d’autres types d’événements.
Activité de réaction à un message reçue OnMessageReactionActivityAsync Sur une activité messageReaction, appelle un gestionnaire si une ou plusieurs réactions ont été ajoutées ou supprimées d’un message.
Réactions de message ajoutées à un message OnReactionsAddedAsync Remplacez ceci pour gérer les réactions ajoutées à un message.
Réactions de message supprimées d’un message OnReactionsRemovedAsync Remplacez ceci pour gérer les réactions supprimées d’un message.
Activité de mise à jour de l'installation reçue OnInstallationUpdateActivityAsync Sur une activité installationUpdate, appelle un gestionnaire selon que le bot a été installé ou désinstallé.
Bot installé OnInstallationUpdateAddAsync Remplacez cette option pour ajouter une logique lorsque le bot est installé dans une unité d'organisation.
Bot désinstallé OnInstallationUpdateRemoveAsync Remplacez cette option pour ajouter une logique lorsque le bot est désinstallé dans une unité d'organisation.
Autre type d’activité reçu OnUnrecognizedActivityTypeAsync Substituer celui-ci pour gérer tout type d’activité non géré autrement.

Ces différents gestionnaires disposent de turnContext qui fournit des informations sur l’activité entrante ; celle-ci correspond à la requête HTTP entrante. Les activités pouvant être de différents types, chaque gestionnaire fournit donc une activité fortement typée dans son paramètre de contexte de tour ; dans la plupart des cas, OnMessageActivityAsync est toujours géré, et il est généralement le plus courant.

Comme dans les précédentes versions 4.x de ce framework, il existe également la possibilité d'implémenter la méthode publique OnTurnAsync. Actuellement, l’implémentation de base de cette méthode gère la vérification des erreurs, et appelle ensuite chacun des gestionnaires spécifiques (par exemple, les deux que nous définissons dans cet exemple) selon le type d’activité entrante. Bien souvent, vous pouvez ignorer cette méthode et utiliser les gestionnaires individuels, mais si votre situation nécessite une implémentation personnalisée de OnTurnAsync, elle demeure une alternative.

Important

Si jamais vous substituez la méthode OnTurnAsync, vous devez appeler base.OnTurnAsync pour obtenir que l’implémentation de base appelle tous les autres gestionnaires On<activity>Async, ou appeler ces gestionnaires vous-même. Sinon, ces gestionnaires ne sont pas appelés, et ce code n’est pas exécuté.

Exemple de gestionnaire d'activités

Par exemple, vous pouvez gérer sur membres ajoutés pour accueillir les utilisateurs dans une conversation et gérer sur message pour renvoyer les messages qu'ils envoient au bot.

public class EchoBot : ActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var replyText = $"Echo: {turnContext.Activity.Text}";
        await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
    }

    protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
    {
        var welcomeText = "Hello and welcome!";
        foreach (var member in membersAdded)
        {
            if (member.Id != turnContext.Activity.Recipient.Id)
            {
                await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
            }
        }
    }
}

Étapes suivantes

  • Le canal Microsoft Teams présente certaines activités spécifiques à Teams que votre bot devra prendre en charge pour bien fonctionner avec Teams. Pour comprendre les concepts clés du développement de bots pour Microsoft Teams, consultez Fonctionnement des bots Microsoft Teams.
  • Un gestionnaire d'activités est un bon moyen de concevoir un bot qui n'a pas besoin de suivre l'état conversationnel entre les tours. La bibliothèque des dialogues permet de gérer une conversation de longue durée avec l'utilisateur.