Ändern von Benachrichtigungen für Microsoft Teams-Ressourcen

Änderungsbenachrichtigungen für Microsoft Teams-Ressourcen mithilfe Microsoft Graph ermöglichen es Ihnen, Änderungen (Erstellen, Aktualisieren und Löschen) einer Ressource zu abonnieren. Änderungsbenachrichtigungen bieten ein Modell mit geringer Wartezeit, da Sie sie über ein Abonnement verwalten können. Sie können auch die Ressourcendaten in den Benachrichtigungen erhalten und müssen so nicht die API aufrufen, um die Nutzlast abzurufen.

Hinweis

Die maximale Dauer eines Abonnements beträgt 60 Minuten. Abonnements können jedoch verlängert werden, bis der Aufrufer die Berechtigung für den Zugriff auf die Ressource hat.

Ändern von Benachrichtigungstypen

Microsoft Teams unterstützt zwei Arten von Änderungsbenachrichtigungen:

  • Änderungsbenachrichtigung, um alle Änderungen im Zusammenhang mit einer Ressource mandantenweit nachzuverfolgen: Sie können beispielsweise Änderungen in Nachrichten in jedem Kanal des Mandanten abonnieren und benachrichtigt werden, wenn eine Nachricht in einem beliebigen Kanal im Mandanten erstellt, aktualisiert oder gelöscht wird. Diese Benachrichtigungen können Lizenzierungs- und Zahlungsanforderungen aufweisen z. B. Änderungsbenachrichtigungen für Nachrichten und Mitgliedschaften.

  • Änderungsbenachrichtigung, um alle Änderungen im Zusammenhang mit einer bestimmten Ressource nachzuverfolgen: Sie können beispielsweise Änderungen in Nachrichten in einem bestimmten Kanal abonnieren und benachrichtigt werden, wenn eine Nachricht in diesem Kanal erstellt, aktualisiert oder gelöscht wird.

Ausführliche Informationen dazu, welche Ressourcen welche Arten von Änderungsbenachrichtigungen unterstützen, finden Sie unter Microsoft Graph Änderungsbenachrichtigungen.

Unterstützte Ressourcen

In der folgenden Tabelle sind die Microsoft Teams-Ressourcen, die Änderungsbenachrichtigungen unterstützen, und die entsprechenden Ressourcenpfade aufgeführt. Wenden Sie den Ressourcenpfad für Ihr Szenario an, wie beim Erstellen eines Abonnements angegeben. Der Typ der Ressourcenpfadnutzlast ist der Typ unter der Spalte "Ressource" oder eine Auflistung dieses Typs.

Ressource Unterstützte Ressourcenpfade In Benachrichtigungen können Ressourcendaten einbezogen werden
Teams channel Änderungen an Kanälen in allen Teams:
/teams/getAllChannels
Änderungen am Kanal in einem bestimmten Team:
/teams/{id}/channels
Ja
Teams Chat Änderungen an allen Chats im Mandanten:
/chats
Änderungen an einem bestimmten Chat:
/chats/{id}
Änderungen an allen Chats im Mandanten, in denen eine bestimmte Teams-App installiert ist:
/appCatalogs/teamsApps/{id}/installedToChats
Ja
Teams chatMessage Änderungen an Chatnachrichten in allen Kanälen aller Teams:
/teams/getAllMessages
Änderungen an Chatnachrichten in einem bestimmten Kanal:
/teams/{id}/channels/{id}/messages
Änderungen an Chatnachrichten in allen Chats:
/chats/getAllMessages
Änderungen an Chatnachrichten in einem bestimmten Chat:
/chats/{id}/messages
Änderungen an Chatnachrichten in allen Chats, an denen ein bestimmter Benutzer teilnimmt:
/users/{id}/chats/getAllMessages
Änderungen an Chatnachrichten in allen Chats im Mandanten, in denen eine bestimmte Teams-App installiert ist:
/appCatalogs/teamsApps/{id}/installedToChats/getAllMessages
Ja
Teams conversationMember Änderungen an der Mitgliedschaft in einem bestimmten Team:
/teams/{id}/members
Änderungen an der Mitgliedschaft in einem bestimmten Chat:
/chats/{id}/members
Änderungen an der Mitgliedschaft in allen Chats:
/chats/getAllMembers
Neue oder geänderte Mitglieder in allen Kanälen unter einem bestimmten Team:
teams/{id}/channels/getAllMembers
Änderungen an der Mitgliedschaft in allen Chats im Mandanten, in dem eine bestimmte Teams-App installiert ist:
/appCatalogs/teamsApps/{id}/installedToChats/getAllMembers
Änderungen an der Mitgliedschaft in allen Kanälen des Mandanten:
teams/getAllChannels/getAllMembers
Ja
Teams team Änderungen an allen Teams im Mandanten:
/teams
Änderungen an einem bestimmten Team:
/teams/{id}
Ja

Nutzlast der Benachrichtigung

Je nach Abonnement, können Sie die Benachrichtigung entweder mit Ressourcendaten erhalten oder ohne. Wenn Sie mit Ressourcendaten abonnieren, können Sie die Nutzlast der Nachricht zusammen mit der Benachrichtigung erhalten, d. h. Sie müssen nicht mehr zurückrufen, um den Inhalt zu erhalten.

Benachrichtigungen mit Ressourcendaten

Bei Benachrichtigungen mit Ressourcendaten sieht die Nutzlast wie folgt aus. Diese Nutzlast dient für eine Benachrichtigung, die der Chatnachrichtenressource entspricht. Die tatsächliche Benachrichtigung enthält die ressource und resourceData -Eigenschaften, die die Ressource darstellen, die die Benachrichtigung ausgelöst hat.

{
    "value": [{
        "subscriptionId": "10493aa0-4d29-4df5-bc0c-ef742cc6cd7f",
        "changeType": "created",
        "clientState": "<<--SpecifiedClientState-->>",
        "subscriptionExpirationDateTime": "2021-02-02T10:30:34.9097561-08:00",
        "resource": "chats('19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces')/messages('1612289765949')",
        "resourceData": {
            "id": "1612289765949",
            "@odata.type": "#Microsoft.Graph.chatMessage",
            "@odata.id": "chats('19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces')/messages('1612289765949')"
        },
        "encryptedContent": {
            "data": "<<--EncryptedContent-->",
            "dataKey": "<<--EnryptedDataKeyUsedForEncryptingContent-->>",
            "encryptionCertificateId": "<<--IdOfTheCertificateUsedForEncryptingDataKey-->>",
            "encryptionCertificateThumbprint": "<<--ThumbprintOfTheCertificateUsedForEncryptingDataKey-->>"
        },
        "tenantId": "<<--TenantForWhichNotificationWasSent-->>"
    }],
    "validationTokens": ["<<--ValidationTokens-->>"]
}

Einzelheiten zum Validieren von Tokens und Entschlüsseln der Nutzlast finden Sie unter Änderungsbenachrichtigungen einrichten, die Ressourcendaten enthalten.

Die entschlüsselte Benachrichtigungsnutzlast sieht wie folgt aus. Die entschlüsselte Nutzlast für das vorherige Beispiel entspricht dem chatMessage- Schema. Die Nutzlast ist der von GET-Vorgängen zurückgegebenen Nutzlast ähnlich.

{
  "id": "1612289992105",
  "replyToId": null,
  "etag": "1612289992105",
  "messageType": "message",
  "createdDateTime": "2021-02-02T18:19:52Z",
  "lastModifiedDateTime": "2021-02-02T18:19:52.105Z",
  "lastEditedDateTime": null,
  "deletedDateTime": null,
  "subject": null,
  "summary": null,
  "chatId": "19:8ea0e38b-efb3-4757-924a-5f94061cf8c2_97f62344-57dc-409c-88ad-c4af14158ff5@unq.gbl.spaces",
  "importance": "normal",
  "locale": "en-us",
  "webUrl": null,
  "from": {
    "application": null,
    "device": null,
    "user": {
      "id": "8ea0e38b-efb3-4757-924a-5f94061cf8c2",
      "displayName": "Ramjot Singh",
      "userIdentityType": "aadUser"
    },
    "conversation": null
  },
  "body": {
    "contentType": "text",
    "content": "test"
  },
  "channelIdentity": null,
  "attachments": [],
  "mentions": [],
  "policyViolation": null,
  "reactions": [],
  "replies": [],
  "hostedContents": []
}

Benachrichtigungen ohne Ressourcendaten

Benachrichtigungen ohne Ressourcendaten enthalten genügend Informationen, um GET-Aufrufe zu tätigen, um die Ressource zu erhalten. Abonnements für Benachrichtigungen ohne Ressourcendaten erfordern kein Verschlüsselungszertifikat (da die tatsächlichen Ressourcendaten nicht übermittelt werden).

Das Nutzlast sieht wie folgt aus. Diese Nutzlast gilt für eine Nachricht, die in einem Kanal gesendet wurde.

{
  "subscriptionId": "9f9d1ed0-c9cc-42e7-8d80-a7fc4b0cda3c",
  "changeType": "created",
  "tenantId": "<<--TenantForWhichNotificationWasSent-->>",  
  "clientState": "<<--SpecifiedClientState-->>",
  "subscriptionExpirationDateTime": "2021-02-02T11:26:41.0537895-08:00",
  "resource": "teams('fbe2bf47-16c8-47cf-b4a5-4b9b187c508b')/channels('19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2')/messages('1612293113399')",
  "resourceData": {
    "id": "1612293113399",
    "@odata.type": "#Microsoft.Graph.chatMessage",
    "@odata.id": "teams('fbe2bf47-16c8-47cf-b4a5-4b9b187c508b')/channels('19:4a95f7d8db4c4e7fae857bcebe0623e6@thread.tacv2')/messages('1612293113399')"
  }
}

Das vorherige Beispiel oben zeigt eine Benachrichtigung, die einer Chatnachrichtenressource entspricht. Die tatsächliche Benachrichtigung enthält die ressource und resourceData -Eigenschaften, die die Ressource darstellen, die die Benachrichtigung ausgelöst hat. Die ressource und @odata.id -Eigenschaften können verwendet werden, um Aufrufe an Microsoft Graph zu tätigen, um die Nutzlast für die Nachricht zu erhalten.

Hinweis

GET-Aufrufe geben immer den aktuellen Status der Ressource zurück. Wenn die Ressource zwischen dem Senden der Benachrichtigung und dem Abrufen der Ressource geändert wird, gibt der Vorgang die aktualisierte Ressource zurück.

Siehe auch