Ändern von Benachrichtigungen für Microsoft Teams-Ressourcen

Änderungsbenachrichtigungen für Microsoft Teams-Ressourcen mithilfe von Microsoft Graph ermöglichen es Ihnen, die Änderungen einer Ressource zu abonnieren (Erstellen, Aktualisieren und Löschen). Änderungsbenachrichtigungen bieten ein Modell mit geringer Latenz, mit dem Sie ein Abonnement verwalten können. Sie können auch die Ressourcendaten in den Benachrichtigungen abrufen und vermeiden, dass die API aufgerufen wird, um die Nutzlast abzurufen.

Hinweis

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

Ä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 zum Nachverfolgen aller Änderungen für eine bestimmte Ressource: Beispielsweise können Sie Änderungen an Nachrichten in einem bestimmten Kanal abonnieren und benachrichtigt werden, wenn eine Nachricht 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.

Hinweis

Abonnements für Ressourcen, die mit einem Sternchen (*) gekennzeichnet sind, sind nur auf dem /beta Endpunkt verfügbar.

Ressource Unterstützte Ressourcenpfade In Benachrichtigungen können Ressourcendaten einbezogen werden
Teams-AnrufAufzeichnung Alle Aufzeichnungen in einem organization:communications/onlineMeetings/getAllRecordings
Alle Aufzeichnungen für eine bestimmte Besprechung: communications/onlineMeetings/{onlineMeetingId}/recordings
Eine Anrufaufzeichnung, die in einer Besprechung verfügbar wird, die von einem bestimmten Benutzer organisiert wird: users/{userId}/onlineMeetings/getAllRecordings
Eine Anrufaufzeichnung, die in einer Besprechung verfügbar wird, in der eine bestimmte Teams-App installiert ist: appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllRecordings *
Ja
Teams callTranscript Alle Transkripte in einem organization:communications/onlineMeetings/getAllTranscripts
Alle Transkripte für eine bestimmte Besprechung: communications/onlineMeetings/{onlineMeetingId}/transcripts
Ein Anruftranskript, das in einer Besprechung verfügbar wird, die von einem bestimmten Benutzer organisiert wird: users/{userId}/onlineMeetings/getAllTranscripts
Ein Anruftranskript, das in einer Besprechung verfügbar wird, in der eine bestimmte Teams-App installiert ist: appCatalogs/teamsApps/{id}/installedToOnlineMeetings/getAllTrancripts *
Ja
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 in dem 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

Sie können die Benachrichtigung je nach Abonnement mit oder ohne Ressourcendaten erhalten. Wenn Sie mit Ressourcendaten abonnieren, können Sie die Nachrichtennutzlast und die Benachrichtigung abrufen, wodurch sie nicht mehr zurückrufen und den Inhalt abrufen müssen.

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-->>"]
}

Ausführliche Informationen zum Überprüfen von Token und entschlüsseln der Nutzlast finden Sie unter Einrichten von Änderungsbenachrichtigungen, 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 gesendet 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 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.