Recevoir tous les messages de conversation
Le modèle d’autorisations de consentement spécifique à la ressource (RSC), initialement développé pour les API Microsoft Teams Graph, est étendu aux scénarios de bot. Avec RSC, les propriétaires de conversation peuvent donner leur consentement pour qu’un bot reçoive tous les messages utilisateur dans les canaux et conversations standard sans être @mentioned. Cela peut être activé en spécifiant les ChannelMessage.Read.Group
chaînes d’autorisation ou ChatMessage.Read.Chat
dans le manifeste de votre application (précédemment appelé manifeste d’application Teams). Les propriétaires de conversation peuvent accorder leur consentement pendant le processus d’installation ou de mise à niveau de l’application après la publication des mises à jour de l’application. Pour plus d’informations sur l’activation de RSC pour votre application et à l’intérieur d’un locataire, consultez Consentement spécifique à la ressource.
Remarque
Les bots qui reçoivent tous les messages de conversation avec RSC sont pris en charge dans les environnements Government Community Cloud (GCC), GCC-High et Department of Defense (DOD).
Permettre aux bots de recevoir tous les messages de canal ou de conversation
Les ChannelMessage.Read.Group
autorisations RSC et ChatMessage.Read.Chat
sont étendues aux bots. Avec le consentement de l’utilisateur et l’installation de l’application, ces autorisations :
- Autorisez une application graphique spécifiée à obtenir tous les messages dans les canaux et les conversations, respectivement.
- Permettre à un bot défini dans le manifeste de l’application de recevoir tous les messages de conversation sans être @mentioned dans les contextes appropriés où les autorisations s’appliquent.
Filtrage des messages de mention
// When ChannelMessage.Read.Group or ChatMessage.Read.Chat RSC is in the app manifest, this method is called even when bot is not @mentioned.
// This code snippet allows the bot to ignore all messages that do not @mention the bot.
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Ignore the message if bot was not mentioned.
// Remove this if block to process all messages received by the bot.
if (!turnContext.Activity.GetMentions().Any(mention => mention.Mentioned.Id.Equals(turnContext.Activity.Recipient.Id, StringComparison.OrdinalIgnoreCase)))
{
return;
}
// Sends an activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(MessageFactory.Text("Using RSC the bot can receive messages across channels or chats in team without being @mentioned."));
}
Autorisation RSC
Les services qui ont besoin d’accéder à toutes les données de message Teams doivent utiliser les API Graph qui fournissent l’accès aux données archivées dans les canaux et les conversations. Les bots doivent utiliser l’autorisation ChannelMessage.Read.Group
RSC et ChatMessage.Read.Chat
de manière appropriée pour créer et améliorer l’expérience attrayante pour que les utilisateurs réussissent l’approbation du Microsoft Teams Store. La description de l’application doit inclure la façon dont le bot utilise les données qu’il lit :
- Les
ChannelMessage.Read.Group
autorisations RSC etChatMessage.Read.Chat
ne peuvent pas être utilisées par les bots pour extraire de grandes quantités de données client. - La possibilité pour les bots de recevoir tous les messages dans les conversations à l’aide
ChatMessage.Read.Chat
de n’est activée qu’après une nouvelle installation ou une nouvelle installation dans une conversation. - Si vous avez une application qui utilise l’autorisation
ChatMessage.Read.Chat
RSC pour les scénarios Graph, testez l’application en suivant les étapes de chargement d’une application personnalisée dans une conversation et modifiez l’application avant que la fonctionnalité ne soit généralement disponible. Si vous ne souhaitez pas que votre bot reçoive tous les messages de conversation, implémentez l’extrait de code suivant. Si aucune action n’est effectuée, votre bot reçoit tous les messages après de nouvelles installations.
Mettre à jour le manifeste de l’application
Pour que votre bot reçoive tous les messages de conversation, les chaînes d’autorisation RSC appropriées doivent être spécifiées dans la authorization.permissions.resourceSpecific
propriété du manifeste de votre application. Pour plus d’informations, consultez Schéma de manifeste d’application.
Le code suivant fournit un exemple de manifeste d’application :
- webApplicationInfo.id : VOTRE ID d’application Microsoft Entra. L’ID d’application peut être le même que l’ID de votre bot.
- webApplicationInfo.resource : n’importe quelle chaîne. Le champ de ressource n’a aucune opération dans RSC, mais doit être ajouté avec une valeur pour éviter toute réponse d’erreur.
- authorization.permissions.resourceSpecific : autorisations RSC pour votre application avec ou les deux
ChannelMessage.Read.Group
etChatMessage.Read.Chat
spécifiés. Pour plus d’informations, consultez autorisations spécifiques à la ressource.
Le code suivant fournit un exemple de manifeste d’application version 1.12 ou ultérieure :
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.12/MicrosoftTeams.schema.json",
"manifestVersion": "1.12",
"version": "1.0.0",
"id": "8239c8f3-ed78-4512-933e-babfd28856f1",
"packageName": "com.contoso.rscechobot",
"developer": {
"name": "Contoso",
"websiteUrl": "https://www.contoso.com",
"privacyUrl": "https://www.contoso.com/privacy",
"termsOfUseUrl": "https://www.contoso.com/tos"
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"name": {
"short": "RscEchoBot",
"full": "Echo bot with RSC configured for all conversation messages"
},
"description": {
"short": "Echo bot with RSC configured for all channel and chat messages",
"full": "Echo bot configured with all channel and chat messages RSC permission in manifest"
},
"accentColor": "#FFFFFF",
"staticTabs": [
{
"entityId": "conversations",
"scopes": [
"personal"
]
},
{
"entityId": "about",
"scopes": [
"personal"
]
}
],
"webApplicationInfo": {
"id": "07338883-af76-47b3-86e4-2603c50be638",
"resource": "https://AnyString"
},
"authorization": {
"permissions": {
"resourceSpecific": [
{
"type": "Application",
"name": "ChannelMessage.Read.Group"
},
{
"type": "Application",
"name": "ChatMessage.Read.Chat"
}
]
}
},
"bots": [
{
"botId": "07338883-af76-47b3-86e4-2603c50be638",
"scopes": [
"personal",
"team",
"groupchat"
],
"supportsFiles": false,
"isNotificationOnly": false
}
],
"permissions": [
"identity",
"messageTeamMembers"
],
"validDomains": []
}
Charger une application personnalisée dans une conversation
Les étapes suivantes vous guident pour charger et valider le bot qui reçoit tous les messages de canal dans une équipe sans être @mentioned:
Sélectionnez ou créez une équipe.
Sélectionnez ●●● dans le volet gauche. Le menu déroulant s’affiche.
Sélectionnez Gérer l’équipe dans le menu déroulant.
Sélectionner les applications. Plusieurs applications s’affichent.
Sélectionnez Charger une application personnalisée dans le coin inférieur droit.
Sélectionnez Ouvrir.
Sélectionnez Ajouter dans la fenêtre contextuelle des détails de l’application pour ajouter le bot à l’équipe sélectionnée.
Sélectionnez un canal et entrez un message dans le canal de votre bot.
Le bot reçoit le message sans être @mentioned.
Extraits de code
Le code suivant fournit un exemple des autorisations RSC :
// Handle when a message is addressed to the bot.
// When rsc is enabled the method will be called even when bot is addressed without being @mentioned.
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Sends an activity to the sender of the incoming activity.
await turnContext.SendActivityAsync(MessageFactory.Text("Using RSC the bot can receive messages across channels or chats in team without being @mentioned."));
}
Exemple de code
Exemple de nom | Description | .NET | Node.js | Manifeste d'application |
---|---|---|---|---|
Messages de canal avec autorisations RSC | Cet exemple d’application montre comment un bot peut recevoir tous les messages de canal avec RSC sans être @mentioned. | View | View | View |