Freigeben über


Abrufen von Änderungsbenachrichtigungen für Updates von Microsoft Teams-Besprechungsanrufereignissen

Änderungsbenachrichtigungen in Microsoft Graph ermöglichen es Ihnen, den gestarteten Anruf, den Beendeten Anruf und die Liste für Microsoft Teams-Onlinebesprechungen 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.

Ein Abonnement hat einen maximalen Ablaufzeitraum von drei Tagen. Um das Abonnement länger als diesen Zeitraum beizubehalten, muss eine Abonnementverlängerungsanforderung gestellt werden. Weitere Informationen finden Sie unter Aktualisieren des Abonnements. Alternativ kann ein Benutzer warten, bis das Abonnement abläuft, und ein neues Abonnement mit derselben Besprechungsressource erstellen.

Diese Ressource unterstützt Benachrichtigungen mit Ressourcendaten. Weitere Informationen zum Einrichten von Benachrichtigungen mit Ressourcendaten finden Sie unter Einrichten von Änderungsbenachrichtigungen, die Ressourcendaten enthalten.

Hinweis

Ab dem 30. Juni 2024 wird empfohlen, umfangreiche Benachrichtigungen zu abonnieren, um Änderungen an einem aktiven Besprechungsanruf zu erhalten.

Berechtigungen

Berechtigungstyp Berechtigungen (von der Berechtigung mit den wenigsten Rechten zu der mit den meisten Rechten) Unterstützte Versionen
Delegiert (Geschäfts-, Schul- oder Unikonto) Nicht unterstützt Nicht unterstützt
Delegiert (persönliches Microsoft-Konto) Nicht unterstützt Nicht unterstützt
Application OnlineMeetings.Read.All, OnlineMeetings.ReadWrite.All Beta

Abonnieren von Onlinebesprechungsereignissen

Um Änderungsbenachrichtigungen für die Anrufereignisse für eine Besprechung zu /communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEventserhalten, abonnieren Sie , wobei der joinWebUrl URL-codierte Wert der Besprechungsteilnehmer-URL ist.

Beispielsweise muss die joinWebUrl in der folgenden URL für eine Onlinebesprechung abgerufen werden.

https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZmYwZTEyYjctZjA5MS00OTkzLWJhNzEtYzFiZDVjNGE0OGFj%40thread.v2/0?context=%7b%22Tid%22%3a%22909c6581-5130-43e9-88f3-fcb3582cde37%22%2c%22Oid%22%3a%22048c94fb-dda6-48b8-9fc8-6740ee418fb9%22%7d

Um ein Abonnement zu parken, muss das Argument URL-codiert sein und als joinWebUrl in der Ressourceneigenschaft verwendet werden, wie im folgenden Beispiel gezeigt.

https%3A%2F%2Fteams.microsoft.com%2Fl%2Fmeetup-join%2F19%253ameeting_ZmYwZTEyYjctZjA5MS00OTkzLWJhNzEtYzFiZDVjNGE0OGFj%2540thread.v2%2F0%3Fcontext%3D%257b%2522Tid%2522%253a%2522909c6581-5130-43e9-88f3-fcb3582cde37%2522%252c%2522Oid%2522%253a%2522048c94fb-dda6-48b8-9fc8-6740ee418fb9%2522%257d

Hinweis

Ersetzen Sie durch {JoinWebUrl} den tatsächlichen URL-codierten Wert, wenn Sie die Ressource angeben. Die JoinWebURL für die Besprechung ist in der joinWebUrl-Eigenschaft der onlineMeeting-Ressource oder im Teams-Client für eine Besprechung enthalten.

Legen Sie auf fest includeResourceDatatrue , und geben Sie geeignete Werte für encryptionCertificate und encryptionCertificateId an, um umfangreiche Benachrichtigungen zu abonnieren.

Beispiel für ein Abonnement für umfangreiche Benachrichtigungsnutzlasten

POST https://graph.microsoft.com/beta/subscriptions
Content-Type: application/json

{
  "changeType": "updated",
  "notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
  "resource": "communications/onlineMeetings(joinWebUrl='https%3A%2F%2Fteams.microsoft.com%2Fl%2Fmeetup-join%2F19%253ameeting_ZmYwZTEyYjctZjA5MS00OTkzLWJhNzEtYzFiZDVjNGE0OGFj%2540thread.v2%2F0%3Fcontext%3D%257b%2522Tid%2522%253a%2522909c6581-5130-43e9-88f3-fcb3582cde37%2522%252c%2522Oid%2522%253a%2522048c94fb-dda6-48b8-9fc8-6740ee418fb9%2522%257d')/meetingCallEvents",
  "includeResourceData": true,
  "encryptionCertificate": "{base64encodedCertificate}",
  "encryptionCertificateId": "{customId}",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "{secretClientState}"
}

Hinweis

Abonnements für grundlegende Benachrichtigungen sind für Änderungsbenachrichtigungen für Besprechungsanrufe verfügbar. Da grundlegende Benachrichtigungen jedoch nur die Ressourcen-ID und keine weiteren Details enthalten und eine API, die Besprechungsanrufdaten mit dieser ID abruft, nicht verfügbar ist, empfiehlt es sich, umfangreiche Benachrichtigungen für Änderungsbenachrichtigungen für Besprechungsanrufe zu abonnieren. Weitere Informationen finden Sie im Abschnitt Umfangreiche Benachrichtigungen .

Umfassende Benachrichtigungen

Wenn Sie umfangreiche Benachrichtigungen für Änderungsereignisse in einem aktiven Besprechungsanruf abonnieren, werden details der Änderungen in der Benachrichtigungsnutzlast verschlüsselt.

Beispiel für umfangreiche Benachrichtigungsnutzlasten

{
  "value": [{
    "subscriptionId": "{Subscription id}",
    "clientState": "{secret client state}",
    "changeType": "updated",
    "tenantId": "{Organization/Tenant id}",
    "resource": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
    "subscriptionExpirationDateTime": "2022-02-28T00:00:00.0000000Z",
    "resourceData": {
      "@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
      "@odata.type": "#microsoft.graph.callevent",
      "id": "{notificationId}'"
    },
    "organizationId": "{Organization/Tenant id}",
    "encryptedContent": {
      "data": "{Encrypted content}",
      "dataSignature": "{Encrypted data signature}",
      "dataKey": "{Encrypted data key for encrypting content}",
      "encryptionCertificateId": "{User specified id of encryption certificate}",
      "encryptionCertificateThumbprint": "{Encrpytion certification thumbprint}"
    }
  }],
  "validationTokens": ["{Validation Tokens}"]
}

Arten von Ereignisbenachrichtigungen

Im Folgenden sind die unterstützten Besprechungsereignisse aufgeführt:

  • callStarted: Ereignisse für den Start des Besprechungsanrufs.
  • callEnded: Ereignisse für den Zeitpunkt, an dem der Besprechungsanruf beendet wurde.
  • rosterUpdated: Ereignisse für den Zeitpunkt, an dem ein Teilnehmer dem Anruf oder dem Wartebereich beitritt und ihn verlässt.
    • Das ereignis rosterUpdated enthält eine Sammlung von Änderungen an Besprechungsanrufteilnehmern in participants@delta. Diese Sammlung stellt Änderungen von Benutzerteilnehmern in der Besprechungsanrufliste dar. Teilnehmer mit der removedState-Eigenschaft stellen Teilnehmer dar, die die Sammlung verlassen haben. Weitere Informationen finden Sie unter Teilnehmer.

Beispiele für entschlüsselte Nutzdaten

CallStarted

{
  "@odata.type":"#microsoft.graph.callevent",
  "@odata.id":"communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
  "id":"{notificationId}'",
  "eventType":"callStarted",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
}

CallEnded

{
  "@odata.type":"#microsoft.graph.callevent",
  "@odata.id":"communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
  "id":"{notificationId}",
  "eventType":"callEnded",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
}

RosterUpdated : Teilnehmer tritt an der Anruf- oder Lobby-Modalität teil

{
  "@odata.type": "#microsoft.graph.callevent",
  "@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
  "id": "{notificationId}",
  "eventType": "rosterUpdated",
  "eventDateTime": "2022-02-28T00:00:00.0000000Z",
  "participants@delta": [
    {
      "info": {
        "identity": {
          "user": {
            "id": "f3ce5e01-0724-43c7-ae4d-80ca18703a96",
            "displayName": "A user roster update in the call",
            "tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
          }
        }
      },
      "isInLobby": false,
      "id": "e1018298-976a-4956-93e8-f58e43b0016c"
    },
    {
      "info": {
        "identity": {
          "user": {
            "id": "e8bbbe0e-6e3d-42db-9082-213abbe8ee5c",
            "displayName": "User roster update in the lobby of the call",
            "tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
          }
        }
      },
      "isInLobby": true,
      "id": "a7cc3ddb-a469-410d-8057-44dba3b0c073"
    }
  ]
}

RosterUpdated: Teilnehmer wechselt in einen inaktiven Zustand (nicht im Wartebereich oder Anruf)

{
  "@odata.type": "#microsoft.graph.callevent",
  "@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
  "id": "{notificationId}",
  "eventType": "rosterUpdated",
  "eventDateTime": "2022-02-28T00:00:00.0000000Z",
  "participants@delta": [
    {
      "info": {
        "identity": {
          "user": {
            "id": "f3ce5e01-0724-43c7-ae4d-80ca18703a96",
            "displayName": "A user change within the meeting call",
            "tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
          }
        }
      },
      "isInLobby": false,
      "removedState": {
        "reason": "Participant has entered an inactive state in the roster."
      },
      "id": "e1018298-976a-4956-93e8-f58e43b0016c"
    }
  ]
}

RosterUpdated: Teilnehmer beendet den Anruf

{
  "@odata.type": "#microsoft.graph.callevent",
  "@odata.id": "communications/onlineMeetings(joinWebUrl='{joinWebUrl}')/meetingCallEvents",
  "id": "{notificationId}",
  "eventType": "rosterUpdated",
  "eventDateTime": "2022-02-28T00:00:00.0000000Z",
  "participants@delta": [
    {
      "info": {
        "identity": {
          "user": {
            "id": "e98eb11c-8385-445e-8b19-4a2f169ac5bc",
            "displayName": "User that is leaving the call",
            "tenantId": "f69f5191-20ae-4093-8dae-3ec09edeb253"
          }
        }
      },
      "isInLobby": false,
      "removedState": {
        "reason": "Participant has left the meeting call."
      },
      "id": "347040dd-aa51-4ada-8a44-510c65a3a2d3"
    }
  ]
}