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 au niveau des messages 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 et ChatMessage.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.

Capture d’écran montrant les modifications à apporter dans le manifeste de l’application.

Le code suivant fournit un exemple de manifeste d’application :

  • webApplicationInfo.id : ID de votre 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 et ChatMessage.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:

  1. Sélectionnez ou créez une équipe.

  2. Sélectionnez ●●● dans le volet gauche. Le menu déroulant s’affiche.

  3. Sélectionnez Gérer l’équipe dans le menu déroulant.

    Capture d’écran montrant l’option d’équipe de gestion dans l’application Teams.

  4. Sélectionner les applications. Plusieurs applications s’affichent.

  5. Sélectionnez Charger une application personnalisée dans le coin inférieur droit.

    Capture d’écran montrant l’option Charger une application personnalisée.

  6. Sélectionnez Ouvrir.

    Capture d’écran montrant la boîte de dialogue ouvrir pour sélectionner le package d’application.

  7. Sélectionnez Ajouter dans la fenêtre contextuelle des détails de l’application pour ajouter le bot à l’équipe sélectionnée.

    Capture d’écran montrant le bouton Ajouter pour ajouter un bot à une équipe.

  8. Sélectionnez un canal et entrez un message dans le canal de votre bot.

    Le bot reçoit le message sans être @mentioned.

    Capture d’écran montrant un bot recevant un message dans un canal.

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

Voir aussi