Comprendre les concepts du bot
Les interactions d’un bot peuvent être à l’aide de texte, de parole, d’images ou de vidéos. Il traite l’entrée de l’utilisateur pour comprendre sa demande et évalue l’entrée pour effectuer les tâches pertinentes. Un bot peut demander des informations ou activer l’accès aux services et répondre à l’utilisateur.
Étendues de bot
Les bots dans Microsoft Teams peuvent être intégrés dans une conversation à deux, une conversation de groupe ou un canal dans une équipe. Chaque étendue fournit des opportunités et des défis uniques pour votre bot conversationnel.
Dans un canal | Dans une conversation de groupe | Dans une conversation privée |
---|---|---|
Portée massive | Moins de membres | Mode traditionnel |
Interactions individuelles concises | @mention vers le bot | Questions et réponses Un bot |
@mention vers le bot | Similaire au canal | Bots qui décrivent les rires et prennent des notes |
Dans un canal
Les canaux contiennent des conversations entre plusieurs personnes, même jusqu’à 2000. Cela donne potentiellement une portée massive à votre bot, mais les interactions individuelles doivent être concises. Les interactions multitour traditionnelles ne fonctionnent pas. Au lieu de cela, vous devez utiliser des cartes ou des dialogues interactifs (appelés modules de tâche dans TeamsJS v1.x) ou déplacer la conversation vers une conversation un-à-un pour collecter un grand nombre d’informations. Votre bot a uniquement accès aux messages où il s’agit de @mentioned
. Vous pouvez récupérer des messages supplémentaires à partir de la conversation à l’aide d’autorisations Microsoft Graph et au niveau de l’organisation.
Les bots fonctionnent mieux dans un canal dans les cas suivants :
- Notifications, où vous fournissez une carte interactive permettant aux utilisateurs de prendre des informations supplémentaires.
- Scénarios de commentaires, tels que les sondages et les enquêtes.
- Un cycle de requête ou de réponse unique résout les interactions et les résultats sont utiles pour plusieurs membres de la conversation.
- Les bots sociaux ou amusants, où vous obtenez une image de chat exceptionnelle, choisissez aléatoirement un gagnant, etc.
Dans une conversation de groupe
Les conversations de groupe sont des conversations non thématiques entre trois personnes au minimum. Elles impliquent généralement moins de membres qu’un canal et sont plus éphémères. À l’instar d’un canal, votre bot n’a accès qu’aux messages où il se trouve @mentioned
directement.
Les bots qui fonctionnent mieux dans un canal fonctionnent également mieux dans une conversation de groupe.
Dans une conversation privée
Les bots de conversation interagissent traditionnellement de cette façon avec les utilisateurs. Voici quelques exemples de bots conversationnels un-à-un :
- Questions et réponses Un bot
- bots qui lancent des flux de travail dans d’autres systèmes.
- des bots qui racontent des blagues.
- bots qui prennent des notes. Avant de créer des chatbots un-à-un, déterminez si une interface basée sur une conversation est la meilleure façon de présenter vos fonctionnalités.
Gestionnaire d’activités et logique de bot
Pour créer une application bot qui répond à vos besoins, il est essentiel de comprendre le gestionnaire d’activité microsoft Teams et la logique du bot. Ces deux composants clés fonctionnent ensemble pour organiser la logique conversationnelle.
Gestionnaire d’activités Teams : les gestionnaires d’activités Teams étendent les fonctionnalités des bots standard en ajoutant la prise en charge des événements et des interactions spécifiques à Teams. Ces événements peuvent inclure la création de canaux, les ajouts de membres de l’équipe et d’autres actions propres à l’environnement Teams. En utilisant des gestionnaires d’activités Teams, les bots peuvent fournir une expérience utilisateur plus intégrée et transparente au sein de la plateforme Teams.
Logique du bot : l’objet bot, qui héberge la logique conversationnelle du bot, est chargé de prendre des décisions en fonction des entrées utilisateur. Il expose un gestionnaire de tour, qui est la méthode qui accepte les activités entrantes de l’adaptateur de bot. La logique du bot garantit que chaque tour de la conversation est géré de manière appropriée, ce qui contribue à la cohérence et à l’efficacité globales du bot.
Ces deux composants fonctionnent ensemble pour créer une expérience conversationnelle attrayante. Le gestionnaire d’activités traite ce que l’utilisateur dit, tandis que la logique du bot détermine la meilleure réponse. Ensemble, ils permettent :
- Comprendre le contexte de la conversation
- Personnalisation des interactions
- Récupération efficace des informations
- Gestion d’un flux conversationnel adaptatif
En comprenant le gestionnaire d’activités et la logique du bot, vous pouvez concevoir et implémenter des solutions d’IA conversationnelle et de bot conventionnelles intelligentes et conviviales.
Gestionnaire d’activités Teams
Le gestionnaire d’activités est au cœur des fonctionnalités d’un bot, en gérant et en traitant les interactions utilisateur. Il est basé sur le gestionnaire d’activités de l’Microsoft Bot Framework et achemine toutes les activités Teams avant de gérer celles qui ne sont pas spécifiques à Teams. Il agit comme un intermédiaire entre l’entrée de l’utilisateur et la réponse du bot :
- Reçoit les messages entrants.
- Récupère des données clés à partir d’une entrée utilisateur.
- Identifie l’intention de l’utilisateur à l’aide du traitement en langage naturel (NLP).
- Gère le contexte et l’état de la conversation.
- Génère des réponses basées sur l’entrée et l’intention de l’utilisateur.
Le gestionnaire d’activités améliore l’expérience utilisateur, l’efficacité, la précision, la scalabilité et la flexibilité.
Lorsqu’un bot Teams obtient une activité, elle est routée via les gestionnaires d’activités. Toutes les activités passent par un gestionnaire de base appelé gestionnaire de tour, qui appelle ensuite le gestionnaire d’activités approprié. Le bot Teams est dérivé de la TeamsActivityHandler
classe , qui provient de la classe de ActivityHandler
Bot Framework.
Remarque
Si le traitement d’une activité de bot prend plus de 15 secondes, Teams envoie une demande de nouvelle tentative au point de terminaison du bot, de sorte que vous pouvez voir des demandes en double.
Les bots sont générés à l’aide de Bot Framework. Lorsqu’un bot reçoit un message, le gestionnaire de tour est averti et l’envoie au OnMessageActivityAsync
gestionnaire. Cela fonctionne de la même façon dans Teams. Si le bot reçoit une mise à jour de conversation, le gestionnaire de tour l’envoie à OnConversationUpdateActivityAsync
. Le gestionnaire d’activités Teams recherche d’abord les événements spécifiques à Teams. S’il n’y en a pas, il les transmet au gestionnaire d’activités de Bot Framework.
Dans la classe de gestionnaire d’activités Teams, il existe deux gestionnaires d’activités Teams principaux :
-
OnConversationUpdateActivityAsync
achemine toutes les activités de mise à jour de conversation. -
OnInvokeActivityAsync
achemine toutes les activités d’appel Teams.
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.
Pour configurer votre logique pour les gestionnaires d’activités spécifiques à Teams, vous devez remplacer les méthodes de votre bot, comme indiqué dans la section logique du bot . Il n’existe aucune implémentation par défaut pour ces gestionnaires. Il vous suffit donc d’ajouter 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
}
Exemple de gestionnaire d’activité de bot
Le code suivant fournit un exemple d’activité de bot pour une étendue d’équipe de canal :
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var mention = new Mention
{
Mentioned = turnContext.Activity.From,
// EncodeName: Converts the name to a valid XML name.
Text = $"<at>{XmlConvert.EncodeName(turnContext.Activity.From.Name)}</at>",
};
// MessageFactory.Text(): Specifies the type of text data in a message attachment.
var replyActivity = MessageFactory.Text($"Hello {mention.Text}.");
replyActivity.Entities = new List<Entity> { mention };
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(replyActivity, cancellationToken);
}
Le code suivant fournit un exemple d’activité de bot pour une conversation un-à-un :
// Handle message activity
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Remove recipient mention text from Text property.
// Use with caution because this function is altering the text on the Activity.
turnContext.Activity.RemoveRecipientMention();
var text = turnContext.Activity.Text.Trim().ToLower();
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(MessageFactory.Text($"Your message is {text}."), cancellationToken);
}
Logique de bot
La logique du bot intègre les règles fondamentales et les frameworks de prise de décision qui dictent les actions et les interactions d’un bot. Il décrit la façon dont le bot interprète les entrées utilisateur, formule les réponses et participe aux conversations.
Dans Teams, 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 | Gestionnaire ou méthode sdk | 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 | Gestionnaire ou méthode sdk | 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. |
messageEdit |
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 | Gestionnaire ou méthode sdk | Description |
---|---|---|
CardAction.Invoke |
OnTeamsCardActionInvokeAsync() |
Lorsque le connecteur reçoit une activité d’appel d’action carte, cette méthode est appelée. |
fileConsent/invoke | OnTeamsFileConsentAcceptAsync() |
Lorsqu’un utilisateur accepte un carte de consentement de fichier, cette méthode est appelée. |
fileConsent/invoke | OnTeamsFileConsentAsync() |
Lorsque le connecteur reçoit un consentement de fichier carte activité, cette méthode est appelée. |
fileConsent/invoke | OnTeamsFileConsentDeclineAsync() |
Lorsqu’un utilisateur refuse un consentement de fichier carte, cette méthode est appelée. |
actionableMessage/executeAction | OnTeamsO365ConnectorCardActionAsync() |
Lorsque le connecteur reçoit un connecteur carte pour Groupes Microsoft 365 activité d’action, 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.
Recommandations
Une boîte de dialogue étendue entre votre bot et l’utilisateur est un moyen lent et complexe d’accomplir une tâche. Un bot qui prend en charge des commandes excessives, en particulier un large éventail de commandes, n’est pas réussi ou n’est pas vu de manière positive par les utilisateurs.
Éviter les expériences multitours dans la conversation Un dialogue étendu nécessite que le développeur conserve l’état. Pour quitter cet état, un utilisateur doit expirer ou sélectionner Annuler. En outre, le processus est fastidieux. Par exemple, consultez le scénario de conversation suivant :
UTILISATEUR : planifier une réunion avec Megan.
BOT : J’ai trouvé 200 résultats, y compris un prénom et un nom.
UTILISATEUR : Planifiez une réunion avec Megan Bowen.
BOT : OK, à quelle heure voulez-vous rencontrer Megan Bowen ?
UTILISATEUR : 13:00.
BOT : quel jour ?
Prendre en charge six commandes ou moins fréquentes Comme il n’y a que six commandes visibles dans le menu du bot actuel, il est peu probable que quelque chose de plus soit utilisé avec une fréquence quelconque. Les bots qui s’inscrivent dans un domaine spécifique plutôt que d’essayer d’être un grand assistant fonctionnent mieux.
Optimiser la taille de la base de connaissances pour une interaction plus rapide L’un des inconvénients des bots est qu’il est difficile de maintenir une récupération volumineuse base de connaissances avec des réponses non notées. Les bots sont particulièrement adaptés aux interactions courtes et rapides, sans passer en revue les longues listes à la recherche d’une réponse.
Explorer d’autres fonctionnalités du bot
En plus des fonctionnalités de bot classiques, vous pouvez également explorer les fonctionnalités avancées disponibles dans une application bot Teams :
- Modifications apportées à l’API du bot Teams pour récupérer les membres de l’équipe ou de la conversation.
- Appels et bots de réunions en ligne.
- Activez l’authentification unique pour votre application.
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 |