Получайте уведомления об изменениях для обновлений собраний Microsoft Teams

Уведомления об изменениях в Microsoft Graph позволяют подписаться на начало и завершение вызова и обновления списка вызовов для собраний по сети Microsoft Teams. Уведомления об изменениях обеспечивают модель с низкой задержкой, позволяя управлять подпиской. Кроме того, вы можете получать данные ресурсов в уведомлениях и, следовательно, избегать вызова API, чтобы получить полезные данные.

Максимальный срок действия подписки составляет 3 дня. Чтобы сохранить подписку более этого периода, необходимо выполнить запрос на продление подписки. Дополнительные сведения см. в разделе Обновление подписки. Кроме того, пользователь может дождаться истечения срока действия подписки и создать новую подписку с тем же ресурсом собрания.

Чтобы получать уведомления об изменениях для событий звонков собрания, подпишитесь на /communications/onlineMeetings/?$filter=JoinWebUrl eq '{JoinWebUrl}'.

Этот ресурс поддерживает уведомления с данными ресурса. Дополнительные сведения о настройке уведомлений с данными ресурсов см. в статье Настройка уведомлений об изменениях, включающих данные ресурсов.

Разрешения

Тип разрешения Разрешения (в порядке повышения привилегий) Поддерживаемые версии
Делегированные (рабочая или учебная учетная запись) Не поддерживается. Не поддерживается.
Делегированные (личная учетная запись Майкрософт) Не поддерживается. Не поддерживается.
Для приложений OnlineMeetings.Read.All, OnlineMeetings.ReadWrite.All бета

Пример

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

{
  "changeType": "updated",
  "notificationUrl": "https://webhook.azurewebsites.net/api/resourceNotifications",
  "resource": "/communications/onlineMeetings/?$filter=JoinWebUrl eq '{JoinWebUrl}'",
  "includeResourceData": true,
  "encryptionCertificate": "{base64encodedCertificate}",
  "encryptionCertificateId": "{customId}",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "{secretClientState}"
}

Примечание.

Замените {JoinWebUrl} фактическим значением при указании ресурса. JoinWebURL для собрания включается в свойство joinWebUrl ресурса onlineMeeting или в клиент Teams для собрания.

Уведомления с зашифрованными данными ресурсов

{
  "value": [{
    "subscriptionId": "{Subscription id}",
    "clientState": "{secret client state}",
    "changeType": "updated",
    "tenantId": "{Organization/Tenant id}",
    "resource": "communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
    "subscriptionExpirationDateTime": "2022-02-28T00:00:00.0000000Z",
    "resourceData": {
      "@odata.id": "communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
      "@odata.type": "#microsoft.graph.onlineMeeting",
      "id": "communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'"
    },
    "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}"]
}

Дополнительные сведения о проверке маркеров и расшифровке полезных данных см. в статье Настройка уведомлений об изменениях, включающих данные ресурсов.

Типы уведомлений о событиях

Ниже указаны поддерживаемые события собраний.

  • CallStarted — происходит при начале вызова собрания.
  • CallEnded — происходит после завершения приглашения на собрание.
  • CallRosterUpdate — происходит, когда участник присоединяется к собранию или выходит из нее.

Расшифрованные примеры полезных данных

CallStarted

{
  "@odata.type":"#Microsoft.Graph.onlineMeeting",
  "@odata.id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "eventType":"{Microsoft.Communication.CallStarted}",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
  "state":"active"
}

CallEnded

{
  "@odata.type":"#Microsoft.Graph.onlineMeeting",
  "@odata.id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "eventType":"{Microsoft.Communication.CallEnded}",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
  "state":"inactive"
}

CallRosterUpdate

{
  "@odata.type":"#Microsoft.Graph.onlineMeeting",
  "@odata.id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "id":"communications/onlineMeetings?$filter=joinWebUrl+eq+'{joinWebUrl}'",
  "eventType":"Microsoft.Communication.CallRosterUpdate",
  "eventDateTime":"2022-02-28T00:00:00.0000000Z",
  "activeParticipants@joined": [
    {
      "Id": "a4d67b60-56a5-4202-9f1c-f123ff40621e",
      "Identity": 
      {
        "User": 
        {
          "Id": "f92ca67f-0564-414b-8caa-8c95b8099928",
          "DisplayName": "user display name",
          "TenantId": "85045508-f5bd-405e-a553-52700f86e29c"
        }
      }
    }
  ],
  "activeParticipants@exited": [
    {
      "Id": "11141402-1b62-4795-b540-4ffee8544231",
      "Identity": 
      {
        "AzureCommunicationServicesUser": 
        {
          "AzureCommunicationServicesResourceId": "534c244d-49f8-47a1-9e8e-70d115a2ef4d",
          "Id": "8:acs:534c244d-49f8-47a1-9e8e-70d115a2ef4d_28f01a7b-42cd-4e37-ae1a-bd653377f4b7",
          "DisplayName": "acs user display name"
        }
      }
    }
  ]
}

События CallRosterUpdate включают два свойства: activeParticipants@joined для изображения участников, добавленных к собранию, и activeParticipants@exited для участников, покидающих приглашение на собрание.

Активный участник представлен следующим образом:

{
  "Id": "string",
  "Identity": "microsoft.graph.communicationsIdentitySet"
}
  • Свойство Id соответствует идентификатору участника, который является уникальным идентификатором, назначенным каждому участнику в вызове собрания.
  • Свойство Identity соответствует параметру communicationsIdentitySet. Дополнительные сведения см. в разделе Тип ресурса communicationsIdentitySet.