Empfangen aller Unterhaltungsnachrichten

Das ursprünglich für Microsoft Teams Graph-APIs entwickelte Berechtigungsmodell für die ressourcenspezifische Zustimmung (RSC) wird auf Botszenarien erweitert. Mit RSC können Konversationsbesitzer einem Bot zustimmen, alle Benutzernachrichten in Standardkanälen und Chats zu empfangen, ohne zu sein @mentioned. Dies kann aktiviert werden, indem Sie die ChannelMessage.Read.Group Berechtigungszeichenfolgen oder ChatMessage.Read.Chat in Ihrem App-Manifest angeben (zuvor als Teams-App-Manifest bezeichnet). Konversationsbesitzer können die Zustimmung während der App-Installation oder des Upgradevorgangs erteilen, nachdem die App-Updates veröffentlicht wurden. Weitere Informationen zum Aktivieren von RSC für Ihre App und innerhalb eines Mandanten finden Sie unter Ressourcenspezifische Zustimmung.

Hinweis

Bots, die alle Konversationsnachrichten mit RSC empfangen, werden in Umgebungen mit Government Community Cloud (GCC), GCC-High und Department of Defense (DOD) unterstützt.

Bots ermöglichen, alle Kanal- oder Chatnachrichten zu empfangen

Die ChannelMessage.Read.Group RSC-Berechtigungen und ChatMessage.Read.Chat werden auf Bots erweitert. Mit Der Zustimmung des Benutzers und der App-Installation werden diese Berechtigungen:

  • Zulassen, dass eine angegebene Graphanwendung alle Nachrichten in Kanälen bzw. Chats abrufen kann.
  • Aktivieren Sie einen im App-Manifest definierten Bot, um alle Unterhaltungsnachrichten zu empfangen, ohne sich @mentioned in relevanten Kontexten zu befinden, in denen die Berechtigungen gelten.

Filtern bei Erwähnungsmeldungen

// 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."));
}

RSC-Berechtigung

Dienste, die Zugriff auf alle Teams-Nachrichtendaten benötigen, müssen die Graph-APIs verwenden, die Zugriff auf archivierte Daten in Kanälen und Chats ermöglichen. Bots müssen die ChannelMessage.Read.Group RSC-Berechtigung und ChatMessage.Read.Chat die RSC-Berechtigung entsprechend verwenden, um eine ansprechende Erfahrung für Benutzer zu erstellen und zu verbessern, damit sie die Genehmigung für den Microsoft Teams Store erteilen können. Die App-Beschreibung muss enthalten, wie der Bot die gelesenen Daten verwendet:

  • Die ChannelMessage.Read.Group RSC-Berechtigung und ChatMessage.Read.Chat dürfen von Bots nicht verwendet werden, um große Mengen von Kundendaten zu extrahieren.
  • Die Möglichkeit, dass Bots alle Nachrichten in Chats mit ChatMessage.Read.Chat empfangen können, ist erst nach einer Neuinstallation oder Neuinstallation in einem Chat aktiviert.
  • Wenn Sie über eine App verfügen, die die ChatMessage.Read.Chat RSC-Berechtigung für Graph-Szenarien verwendet, testen Sie die App anhand der Schritte unter Hochladen einer benutzerdefinierten App in einer Unterhaltung , und ändern Sie die App, bevor das Feature allgemein verfügbar ist. Wenn Sie nicht möchten, dass Ihr Bot alle Chatnachrichten empfängt, implementieren Sie den folgenden Codeausschnitt. Wenn keine Aktion ausgeführt wird, empfängt Ihr Bot alle Nachrichten nach Neuinstallationen.

Aktualisieren des App-Manifests

Damit Ihr Bot alle Konversationsnachrichten empfangen kann, müssen die relevanten RSC-Berechtigungszeichenfolgen in der authorization.permissions.resourceSpecific -Eigenschaft Ihres App-Manifests angegeben werden. Weitere Informationen finden Sie unter App-Manifestschema.

Screenshot: Änderungen, die im App-Manifest vorgenommen werden sollen

Der folgende Code enthält ein Beispiel für das App-Manifest:

  • webApplicationInfo.id: Ihre Microsoft Entra-App-ID. Die App-ID kann mit Ihrer Bot-ID identisch sein.
  • webApplicationInfo.resource: Beliebige Zeichenfolge. Das Ressourcenfeld weist in RSC keinen Vorgang auf, muss aber mit einem Wert hinzugefügt werden, um eine Fehlerantwort zu vermeiden.
  • authorization.permissions.resourceSpecific: RSC-Berechtigungen für Ihre App mit oder beidem ChannelMessage.Read.Group und ChatMessage.Read.Chat angegeben. Weitere Informationen finden Sie unter ressourcenspezifische Berechtigungen.

Der folgende Code enthält ein Beispiel für die App-Manifestversion 1.12 oder höher:

{
    "$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": []
}

Hochladen einer benutzerdefinierten App in einer Unterhaltung

Die folgenden Schritte führen Sie zum Hochladen und Überprüfen eines Bots, der alle Kanalnachrichten in einem Team empfängt, ohne zu sein @mentioned:

  1. Wählen Sie ein Team aus, oder erstellen Sie es.

  2. Wählen Sie im linken Bereich ●●● aus. Das Dropdownmenü wird angezeigt.

  3. Wählen Sie im Dropdownmenü Team verwalten aus.

    Screenshot: Option

  4. Wählen Sie Apps aus. Es werden mehrere Apps angezeigt.

  5. Wählen Sie in der unteren rechten Ecke Benutzerdefinierte App hochladen aus.

    Screenshot: Option zum Hochladen einer benutzerdefinierten App

  6. Klicken Sie auf Öffnen.

    Screenshot: Dialogfeld

  7. Wählen Sie im Popupfenster der App-Details Hinzufügen aus, um den Bot Ihrem ausgewählten Team hinzuzufügen.

    Screenshot: Schaltfläche

  8. Wählen Sie einen Kanal aus, und geben Sie im Kanal eine Nachricht für Ihren Bot ein.

    Der Bot empfängt die Nachricht, ohne zu sein @mentioned.

    Screenshot: Bot empfängt Nachrichten in einem Kanal.

Codeausschnitte

Der folgende Code enthält ein Beispiel für die RSC-Berechtigungen:


// 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."));
}

Codebeispiel

Beispielname Beschreibung .NET Node.js App-Manifest
Kanalnachrichten mit RSC-Berechtigungen Diese Beispiel-App zeigt, wie ein Bot alle Kanalnachrichten mit RSC empfangen kann, ohne zu sein @mentioned. View View Anzeigen

Siehe auch