Senden von proaktiven Installationsmeldungen
Proaktives Messaging in Microsoft Teams
Proaktive Nachrichten werden von Bots initiiert, um Unterhaltungen mit Benutzern zu beginnen. Sie dienen vielen Zwecken, darunter dem Senden von Begrüßungsnachrichten, dem Durchführen von Umfragen oder dem Senden organisationsweiter Benachrichtigungen. Proaktive Nachrichten in Microsoft Teams können als Ad-hoc- oder dialogbasierte Unterhaltungen gesendet werden:
Nachrichtentyp | Beschreibung |
---|---|
Proaktive Ad-hoc-Nachrichten | Der Bot schiebt eine Nachricht ein, ohne die Unterhaltung zu unterbrechen. |
Dialogbasierte proaktive Nachrichten | Der Bot erstellt einen neuen Dialogthread, übernimmt die Kontrolle über eine Unterhaltung, übermittelt die proaktive Nachricht, schließt und gibt die Steuerung an den vorherigen Dialogthread zurück. |
Proaktive App-Installation in Microsoft Teams
Bevor Ihr Bot proaktiv eine Nachricht an einen Benutzer senden kann, muss er entweder als persönliche App oder in einem Team installiert werden, in dem der Benutzer Mitglied ist. Manchmal müssen Sie Benutzern, die Ihre App noch nicht installiert haben oder zuvor mit Ihrer App interagiert haben, proaktiv nachrichten. Wenn Sie beispielsweise wichtige Informationen an alle Personen in Ihrer Organisation senden müssen, können Sie die Microsoft Graph-API verwenden, um Ihren Bot proaktiv für Ihre Benutzer zu installieren.
Berechtigungen
Microsoft Graph-Berechtigungen für den teamsAppInstallation-Ressourcentyp helfen Ihnen, den Installationslebenszyklus Ihrer App für alle Benutzerbereiche (persönlich) oder Teambereiche (Kanal) innerhalb der Microsoft Teams-Plattform zu verwalten:
Anwendungsberechtigung | Beschreibung |
---|---|
TeamsAppInstallation.ReadWriteSelfForUser.All |
Ermöglicht es einer Microsoft-Teams-App, sich selbst für einen Benutzer ohne vorherige Anmeldung oder Nutzung zu lesen, installieren, aktualisieren und deinstallieren. |
TeamsAppInstallation.ReadWriteSelfForTeam.All |
Ermöglicht es einer Microsoft-Teams-App, sich selbst für ein beliebiges Team ohne vorherige Anmeldung oder Nutzung zu lesen, installieren, aktualisieren und deinstallieren. |
Um diese Berechtigungen verwenden zu können, müssen Sie Ihrem App-Manifest (zuvor Teams-App-Manifest genannt) einen webApplicationInfo-Schlüssel mit den folgenden Werten hinzufügen:
- id: Ihre Microsoft Entra-App-ID.
- resource: Die Ressourcen-URL für die App
Hinweis
Ihr Bot benötigt Anwendungsberechtigungen und keine delegierten Benutzerberechtigungen, da die Installation für andere vorgesehen ist.
Ein Microsoft Entra-Mandantenadministrator muss einer Anwendung explizit Berechtigungen erteilen. Nachdem der Anwendung Berechtigungen erteilt wurden, erhalten alle Mitglieder des Microsoft Entra-Mandanten die gewährten Berechtigungen.
Aktivieren der proaktiven Bot-Installation und des proaktiven Bot-Messagings
Wichtig
Microsoft Graph kann nur Apps installieren, die im App Store Ihrer Organisation oder im Microsoft Teams Store veröffentlicht wurden.
Erstellen und Veröffentlichen eines proaktiven Messaging-Bots für Microsoft Teams
Um zu beginnen, benötigen Sie einen Bot für Teams mit proaktiven Messagingfunktionen , der sich im App Store Ihrer Organisation oder im Teams Store befindet.
Tipp
Die produktionsbereite Company Communicator-App-Vorlage ermöglicht Messaging und ist ein guter Ausgangspunkt zum Erstellen Ihrer proaktiven Bot-Anwendung.
Abrufen der teamsAppId
für Ihre App
Sie können die teamsAppId
wie folgt abrufen:
Aus dem App-Katalog Ihrer Organisation:
Microsoft Graph-Seitenreferenz:teamsApp-Ressourcentyp
HTTP GET-Anforderung:
GET https://graph.microsoft.com/v1.0/appCatalogs/teamsApps?$filter=externalId eq '{IdFromManifest}'
Die Anforderung muss ein
teamsApp
-Objektid
zurückgeben, bei dem es sich um die vom App-Katalog generierte App-ID handelt. Dies unterscheidet sich von der ID, die Sie in Ihrem App-Manifest angegeben haben:{ "value": [ { "id": "b1c5353a-7aca-41b3-830f-27d5218fe0e5", "externalId": "f31b1263-ba99-435a-a679-911d24850d7c", "name": "Test App", "version": "1.0.1", "distributionMethod": "Organization" } ] }
Hinweis
Wenn sich die App im Teams Store befindet, ist identisch
teamsAppId
mitIdFromManifest
undexternalId
darf in diesem Fall nicht verwendet werden.Wenn Ihre App bereits für einen Benutzer im persönlichen Bereich hochgeladen wurde:
Microsoft Graph-Seitenreferenz:Auflisten von Apps, die für Benutzer installiert sind
HTTP GET-Anforderung:
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/externalId eq '{IdFromManifest}'
Wenn Ihre App bereits für einen Kanal im Teambereich hochgeladen wurde:
Microsoft Graph-Seitenreferenz:Apps im Team auflisten
HTTP GET-Anforderung:
GET https://graph.microsoft.com/v1.0/teams/{team-id}/installedApps?$expand=teamsApp&$filter=teamsApp/externalId eq '{IdFromManifest}'
Tipp
Um die Ergebnisliste einzugrenzen, können Sie jedes der Felder des teamsApp-Objekts filtern.
Bestimmen, ob Ihr Bot für einen Nachrichtenempfänger installiert ist
Sie können wie folgt ermitteln, ob Ihr Bot für einen Nachrichtenempfänger installiert ist:
Microsoft Graph-Seitenreferenz:Auflisten von Apps, die für Benutzer installiert sind
HTTP GET-Anforderung:
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '{teamsAppId}'
Die Anforderung gibt Folgendes zurück:
- Ein leeres Array, wenn die App nicht installiert ist.
- Ein Array mit einem einzelnen teamsAppInstallation-Objekt, wenn die App installiert ist.
Installieren Ihrer App
Sie können Ihre App wie folgt installieren:
Microsoft Graph-Seitenreferenz:App für Benutzer installieren
HTTP POST-Anforderung:
POST https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps
Content-Type: application/json
{
"teamsApp@odata.bind" : "https://graph.microsoft.com/v1.0/appCatalogs/teamsApps/{teamsAppId}"
}
Wenn Microsoft Teams bei dem Benutzer gerade aktiv ist, erfolgt die App-Installation sofort. Möglicherweise ist ein Neustart erforderlich, damit die installierte App angezeigt wird.
Abrufen der chatId
einer Unterhaltung
Wenn Ihre App für den Benutzer installiert ist, empfängt der Bot eine conversationUpdate
Ereignisbenachrichtigung , die die erforderlichen Informationen zum Senden der proaktiven Nachricht enthält.
Microsoft Graph-Seitenreferenz:Chat abrufen
Sie müssen über die
{teamsAppInstallationId}
Ihrer App verfügen. Wenn sie nicht vorhanden ist, verwenden Sie Folgendes:HTTP GET-Anforderung:
GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/id eq '{teamsAppId}'
Die id-Eigenschaft der Antwort ist die
teamsAppInstallationId
.Führen Sie die folgende Anforderung aus, um die
chatId
abzurufen:HTTP GET-Anforderung (Berechtigung—
TeamsAppInstallation.ReadWriteSelfForUser.All
):GET https://graph.microsoft.com/v1.0/users/{user-id}/teamwork/installedApps/{teamsAppInstallationId}/chat
Die id-Eigenschaft der Antwort ist die
chatId
.Sie können die
chatId
auch mit der folgenden Anforderung abrufen, sie erfordert jedoch die umfassendereChat.Read.All
-Berechtigung:HTTP GET-Anforderung (Berechtigung—
Chat.Read.All
):GET https://graph.microsoft.com/v1.0/users/{user-id}/chats?$filter=installedApps/any(a:a/teamsApp/id eq '{teamsAppId}')
Senden proaktiver Nachrichten
Ihr Bot kann proaktive Nachrichten senden, nachdem er für einen Benutzer oder ein Team hinzugefügt wurde und alle Benutzerinformationen erhalten hat.
Codeausschnitte
Der folgende Code stellt ein Beispiel für das Senden proaktiver Nachrichten dar:
public async Task<int> SendNotificationToAllUsersAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
int msgSentCount = 0;
// Send notification to all the members.
foreach (var conversationReference in _conversationReferences.Values)
{
await turnContext.Adapter.ContinueConversationAsync(_configuration["MicrosoftAppId"], conversationReference, BotCallback, cancellationToken);
msgSentCount++;
}
return msgSentCount;
}
private async Task BotCallback(ITurnContext turnContext, CancellationToken cancellationToken)
{
// Sends an activity to the sender of the incoming activity.
await turnContext.SendActivityAsync("Proactive hello.");
}
Codebeispiel
Beispielname | Beschreibung | .NET | Node.js |
---|---|---|---|
Proaktive Installation der App und Senden proaktiver Benachrichtigungen | Dieses Beispiel zeigt, wie Sie die proaktive Installation der App für Benutzer verwenden und proaktive Benachrichtigungen senden können, indem Sie Microsoft Graph APIs aufrufen. | View | Anzeigen |