Partager via


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 le manteau, 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é 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 les messages. 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

Pour créer des agents avec votre choix de services IA, d’orchestration et de connaissances, envisagez d’utiliser le Kit de développement logiciel (SDK) Microsoft 365 Agents. Le SDK Agents prend en charge C#, JavaScript ou Python. Vous pouvez en savoir plus sur le Kit de développement logiciel (SDK) Agents à aka.ms/agents. Si vous recherchez une plateforme d’agent SaaS, envisagez Microsoft Copilot Studio. Si vous disposez d’un bot existant créé avec le Kit de développement logiciel (SDK) Bot Framework, vous pouvez mettre à jour votre bot vers le Kit de développement logiciel (SDK) Agents. Vous pouvez passer en revue les principales modifications et mises à jour dans le guide de migration du SDK Bot Framework vers SDK Agents. Les tickets de support pour le Kit de développement logiciel (SDK) Bot Framework ne seront plus pris en charge à compter du 31 décembre 2025.

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. Pour chacun de ces gestionnaires, il n'existe pas d'implémentation de base, il suffit donc d'ajouter la logique que vous souhaitez dans votre remplacement.

Dans certaines situations, vous voudrez remplacer le gestionnaire de base du tour, par exemple pour sauvegarder un é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 Gestionnaire Descriptif
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 Lors d'une activité installationUpdate, un gestionnaire est appelé en fonction de l'installation ou de la désinstallation du bot.
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 presque toujours pris en charge, et il est généralement le plus répandu.

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.

Importante

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.