Gestionnaire d'activité du robot
Ce document s’appuie sur l’article sur le fonctionnement des bots dans la documentation principale de Bot Framework. La principale différence entre les bots développés pour Microsoft Teams et le framework bot principal réside dans les fonctionnalités fournies dans Teams.
Un gestionnaire d’activités est utilisé pour organiser la logique conversationnelle de votre bot. Les activités sont gérées de deux manières à l’aide de gestionnaires d’activités Teams et de logique de bot. Le gestionnaire d’activités Teams ajoute la prise en charge des événements et des interactions spécifiques à Teams. L’objet bot contient le raisonnement conversationnel ou la logique d’un tour et expose un gestionnaire de tours, qui est la méthode qui peut accepter les activités entrantes de l’adaptateur de bot.
Gestionnaires d’activités Microsoft Teams
Teams gestionnaire d’activités est dérivé du gestionnaire d’activités de Microsoft Bot Framework. Il achemine toutes les activités Teams avant d’autoriser la gestion des activités non Teams spécifiques.
Lorsqu’un bot pour Teams reçoit une activité, elle est routée vers les gestionnaires d’activités. Toutes les activités sont routées via un gestionnaire de base appelé gestionnaire de tour. Le gestionnaire de tours appelle le gestionnaire d’activités requis pour gérer le type d’activité reçu. Le bot Teams est dérivé de la TeamsActivityHandler
classe, qui est dérivée de la classe bot ActivityHandler
framework.
Remarque
Si le traitement de l’activité du bot prend plus de 15 secondes, Teams envoie une demande de nouvelle tentative au point de terminaison du bot. Par conséquent, vous verrez des demandes en double dans votre bot.
Les bots sont créés à l’aide de Bot Framework. Si les bots reçoivent une activité de message, le gestionnaire de tours reçoit une notification de cette activité entrante. Le gestionnaire de tours envoie ensuite l’activité entrante au gestionnaire d’activités OnMessageActivityAsync
. Dans Teams, cette fonctionnalité reste la même. Si le bot reçoit une activité de mise à jour de conversation, le gestionnaire de tours reçoit une notification de cette activité entrante et envoie l’activité entrante à OnConversationUpdateActivityAsync
. Le gestionnaire d’activités Teams vérifie d’abord les événements spécifiques Teams. Si aucun événement n’est trouvé, il les transmet ensuite au gestionnaire d’activités de Bot Framework.
Dans la classe de gestionnaire d’activités Teams, il existe deux principaux gestionnaires d’activités Teams, OnConversationUpdateActivityAsync
et OnInvokeActivityAsync
.
OnConversationUpdateActivityAsync
route toutes les activités de mise à jour de conversation et OnInvokeActivityAsync
route toutes les activités Teams appeler.
Pour implémenter votre logique pour Teams gestionnaires d’activités spécifiques, vous devez remplacer les méthodes de votre bot, comme indiqué dans la section logique du bot. Il n’existe aucune implémentation de base pour ces gestionnaires. Par conséquent, ajoutez la logique souhaitée dans votre remplacement.
Extraits de code pour les gestionnaires d’activités Teams :
OnTeamsChannelCreatedAsync
protected override Task OnTeamsChannelCreatedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsChannelDeletedAsync
protected override Task OnTeamsChannelDeletedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsChannelRenamedAsync
protected override Task OnTeamsChannelRenamedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsTeamRenamedAsync
protected override Task OnTeamsTeamRenamedAsync(TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMembersAddedAsync
protected override Task OnTeamsMembersAddedAsync(IList<TeamsChannelAccount> teamsMembersAdded, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMembersRemovedAsync
protected override Task OnTeamsMembersRemovedAsync(IList<TeamsChannelAccount> teamsMembersRemoved, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken);
{
// Code logic here
}
OnTeamsMessageEditAsync
protected override async Task OnTeamsMessageEditAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMessageUndeleteAsync
protected override async Task OnTeamsMessageUndeleteAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
OnTeamsMessageSoftDeleteAsync
protected override async Task OnTeamsMessageSoftDeleteAsync(ITurnContext<IMessageDeleteActivity> turnContext, CancellationToken cancellationToken)
{
// Code logic here
}
Logique de bot
La logique du bot traite les activités entrantes à partir d’un ou plusieurs de vos canaux de bot et génère en réponse des activités sortantes. Cela est toujours vrai pour les bots dérivés de la classe de gestionnaire d’activités Teams, qui vérifie d’abord les activités Teams. Après avoir vérifié Teams activités, elle transmet toutes les autres activités au gestionnaire d’activités de Bot Framework.
Principaux gestionnaires Bot Framework
Remarque
- À l’exception des activités des membres ajoutés et supprimés, tous les gestionnaires d’activités décrits dans cette section continuent de fonctionner comme ils le font avec un bot non Teams.
- La méthode
onInstallationUpdateActivityAsync()
est utilisée pour obtenir les paramètres régionaux de Microsoft Teams lors de l’ajout du bot à Microsoft Teams.
Les gestionnaires d’activités sont différents dans le contexte d’une équipe, où un nouveau membre est ajouté à l’équipe au lieu d’un thread de message.
La liste des gestionnaires définis dans ActivityHandler
inclut les événements suivants :
Événement | Handler | Description |
---|---|---|
Tout type d’activité reçu | OnTurnAsync |
Cette méthode appelle l’un des autres gestionnaires, en fonction du type d’activité reçue. |
Activité de message reçue | OnMessageActivityAsync |
Vous pouvez remplacer cette méthode pour gérer une Message activité. |
Activité de mise à jour de message reçue | OnMessageUpdateActivityAsync |
Vous pouvez remplacer cette méthode pour gérer une activité de mise à jour de message. |
Activité de suppression de message reçue | OnMessageDeleteActivityAsync |
Vous pouvez remplacer cette méthode pour gérer une activité de suppression de message. |
Activité de mise à jour de conversation reçue | OnConversationUpdateActivityAsync |
Cette méthode appelle un gestionnaire si des membres autres que le bot ont rejoint ou quitté la conversation, sur une ConversationUpdate activité. |
Les membres non-bot ont rejoint la conversation | OnMembersAddedAsync |
Cette méthode peut être remplacée pour gérer les membres qui rejoignent une conversation. |
Les membres non-bot ont quitté la conversation | OnMembersRemovedAsync |
Cette méthode peut être substituée pour gérer les membres quittant une conversation. |
Activité d’événement reçue | OnEventActivityAsync |
Cette méthode appelle un gestionnaire spécifique au type d’événement, sur une Event activité. |
Activité d’événement de réponse de jeton reçue | OnTokenResponseEventAsync |
Cette méthode peut être remplacée pour gérer les événements de réponse de jeton. |
Activité d’événement sans réponse de jeton reçue | OnEventAsync |
Cette méthode peut être remplacée pour gérer d’autres types d’événements. |
Autre type d’activité reçu | OnUnrecognizedActivityTypeAsync |
Cette méthode peut être substituée pour gérer n’importe quel type d’activité autrement non géré. |
Gestionnaires d’activités Microsoft Teams
Étend TeamsActivityHandler
la liste des gestionnaires dans la section Principaux gestionnaires Bot Framework pour inclure les événements suivants :
Événement | Handler | Description |
---|---|---|
channelCreated | OnTeamsChannelCreatedAsync |
Cette méthode peut être substituée pour gérer un canal Teams en cours de création. Pour plus d’informations, consultez canal créé dans Événements de mise à jour de conversation. |
ChannelDeleted | OnTeamsChannelDeletedAsync |
Cette méthode peut être remplacée pour gérer un canal Teams en cours de suppression. Pour plus d’informations, consultez Canal supprimé dans Événements de mise à jour de conversation. |
channelRenamed | OnTeamsChannelRenamedAsync |
Cette méthode peut être remplacée pour gérer un canal Teams renommé. Pour plus d’informations, consultez Canal renommé dans Événements de mise à jour de conversation. |
teamRenamed | OnTeamsTeamRenamedAsync |
return Task.CompletedTask; Cette méthode peut être remplacée pour gérer une équipe Teams renommée. Pour plus d’informations, consultez l’équipe renommée dans Événements de mise à jour de conversation. |
MembersAdded | OnTeamsMembersAddedAsync |
Cette méthode appelle la OnMembersAddedAsync méthode dans ActivityHandler . La méthode peut être remplacée pour gérer les membres qui rejoignent une équipe. Pour plus d’informations, consultez Membres de l’équipe ajoutés dans Événements de mise à jour de conversation. |
MembersRemoved | OnTeamsMembersRemovedAsync |
Cette méthode appelle la OnMembersRemovedAsync méthode dans ActivityHandler . La méthode peut être remplacée pour gérer les membres quittant une équipe. Pour plus d’informations, consultez Membres de l’équipe supprimés dans Événements de mise à jour de conversation. |
messageModifier | OnTeamsMessageEditAsync |
Vous pouvez remplacer cette méthode pour gérer un événement de modification de message Teams. |
messageUndelete | OnTeamsMessageUndeleteAsync |
Vous pouvez remplacer cette méthode pour gérer un événement d’annulation de suppression de message Teams. |
messageSoftDelete | OnTeamsMessageSoftDeleteAsync |
Vous pouvez remplacer cette méthode pour gérer un événement de suppression réversible de message Teams. |
Teams appeler des activités
La liste des gestionnaires d’activités Teams appelés à partir du OnInvokeActivityAsync
gestionnaire d’activités Teams comprend les types d’appels suivants :
Appeler des types | Handler | Description |
---|---|---|
CardAction.Invoke | OnTeamsCardActionInvokeAsync |
Lorsque le connecteur reçoit une activité d’appel d’action de carte, cette méthode est appelée. |
fileConsent/invoke | OnTeamsFileConsentAcceptAsync |
Lorsqu’un utilisateur accepte une carte de consentement de fichier, cette méthode est appelée. |
fileConsent/invoke | OnTeamsFileConsentAsync |
Lorsque le connecteur reçoit une activité de carte de consentement de fichier, cette méthode est appelée. |
fileConsent/invoke | OnTeamsFileConsentDeclineAsync |
Lorsqu’un utilisateur refuse une carte de consentement de fichier, cette méthode est appelée. |
actionableMessage/executeAction | OnTeamsO365ConnectorCardActionAsync |
Lorsque le connecteur reçoit une carte de connecteur pour l’activité d’action Groupes Microsoft 365, cette méthode est appelée. |
signin/verifyState | OnTeamsSigninVerifyStateAsync |
Lorsque le connecteur reçoit une signIn activité de vérification de l’état, cette méthode est appelée. |
tâche/extraction | OnTeamsTaskModuleFetchAsync |
Vous pouvez remplacer cette méthode dans une classe dérivée pour fournir une logique lorsqu’une boîte de dialogue (appelée module de tâche dans TeamsJS v1.x) est extraite. |
task/submit | OnTeamsTaskModuleSubmitAsync |
Vous pouvez remplacer cette méthode dans une classe dérivée pour fournir une logique lors de l’envoi d’un dialogue. |
Les activités Invoke répertoriées dans cette section sont destinées aux bots conversationnels dans Teams. Le Kit de développement logiciel (SDK) Bot Framework prend également en charge les activités d’appel spécifiques aux extensions de message. Pour plus d’informations, consultez les extensions de message.
Maintenant que vous vous êtes familiarisé avec les gestionnaires d’activité des bots, voyons comment les bots se comportent différemment en fonction de la conversation et des messages qu’ils reçoivent ou envoient.
Exemple de code
Exemple de nom | Description | .NET | Node.js | Python |
---|---|---|---|---|
Bot de conversation Teams | Cet exemple d’application montre comment utiliser différents événements de conversation de bot disponibles dans Bot Framework v4. | View | View | View |
Échantillons de bottes | Ensemble d’exemples Bot Framework v4. | View | View | View |
Étape suivante
Voir aussi
- Créer des bots pour Teams
- Kit de développement logiciel client JavaScript Teams
- Schéma du manifeste d’application pour Teams
- Informations de référence sur l’API pour le service Bot Framework Connector
- Obtenir le contexte spécifique à Teams pour votre bot
- Messages dans les conversations des robots
- Dialogues de composant et de cascade