Empfangen von Unterhaltungsnachrichten mit RSC
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ähnung Nachrichten
// 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 undChatMessage.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.
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
undChatMessage.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:
Wählen Sie ein Team aus, oder erstellen Sie es.
Wählen Sie im linken Bereich ●●● aus. Das Dropdownmenü wird angezeigt.
Wählen Sie im Dropdownmenü Team verwalten aus.
Wählen Sie Apps aus. Es werden mehrere Apps angezeigt.
Wählen Sie in der unteren rechten Ecke Benutzerdefinierte App hochladen aus.
Klicken Sie auf Öffnen.
Wählen Sie im Popupfenster der App-Details Hinzufügen aus, um den Bot Ihrem ausgewählten Team hinzuzufügen.
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.
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 |