Получайте уведомления об изменениях для обновлений собраний 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.