Поделиться через


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

Microsoft Teams поддерживает уведомления о экстренных вызовах. Эти уведомления можно направить для информирования конкретных сотрудников службы безопасности в Teams. Уведомление о событиях экстренных вызовов Microsoft Graph расширяет эту возможность, позволяя получать уведомления о экстренных вызовах за пределами Teams (например, пользовательскими клиентскими приложениями), как показано на следующей схеме.

Схема потока уведомлений о событиях экстренных вызовов

  1. Администратор клиента Teams настраивает экстренный вызов для клиента.
  2. Клиентское приложение создает подписку на события экстренных вызовов Microsoft Graph.
  3. Уведомление о событии экстренного вызова запускается в клиентское приложение, когда пользователь Teams выполняет экстренный вызов (например, 911) в Teams.
  4. Клиентское приложение либо продлевает существующую подписку до истечения срока ее действия, либо создает новую по истечении срока действия, чтобы продолжить подписку на уведомления о событиях экстренных вызовов.

Разрешения

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

Подписка на события запуска экстренных вызовов

Чтобы подписаться на номер политики экстренных вызовов, задайте resource для свойства в полезных данных communications/calls/getEmergencyEventsByPolicy(policyName='{policyName}')подписки значение , заменив {policyName} поле именем политики, настроенной для вашей организации.

Подписки на события экстренных вызовов поддерживают только расширенные уведомления. Задайте includeResourceData значение true и укажите значение сертификата в кодировке Base64 для encryptionCertificate и идентификатор строки для encryptionCertificateId. Дополнительные сведения см. в разделе Настройка уведомлений об изменениях, включающих данные ресурсов.

Срок жизни подписок на события экстренных вызовов составляет один день. Чтобы сохранить подписки дольше, обновите свойство expirationDateTime подписки. Дополнительные сведения см. в разделе Обновление API подписки.

Примечание.

Подписки ограничены одной подпиской для каждого приложения, клиента и имени политики. Вторая подписка, использующая то же приложение, клиент и политику для чрезвычайных ситуаций, что и другая, завершится ошибкой с кодом состояния HTTP 409, что означает, что запрос подписки был дублирован и не может быть создан.

Пример полезных данных подписки

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

{
  "changeType": "updated",
  "notificationUrl": "https://contoso.com/notificationUrl",
  "resource": "communications/calls/getEmergencyEventsByPolicy(policyName='EmergencyPolicy')",
  "includeResourceData": true,
  "encryptionCertificate": "{base64encodedCertificate}",
  "encryptionCertificateId": "{customId}",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "{secretClientState}"
}

Определение свойств в запросе подписки см. в разделе Ресурс подписки.

Уведомления о событиях экстренных вызовов

Уведомления о экстренных вызовах активируются при инициировании вызова с применимой политикой экстренных вызовов.

Пример полезных данных уведомления

POST https://contoso.com/notificationUrl
Content-Type: application/json

{
  "value": [{
    "subscriptionId": "{Subscription id}",
    "clientState": "{secret client state}",
    "changeType": "updated",
    "tenantId": "00000000-0000-0000-0000-000000000000",
    "resource": "communications/calls/getEmergencyEventsByPolicy(policyName='EmergencyPolicy')",
    "subscriptionExpirationDateTime": "2021-02-01T11:00:00.0000000Z",
    "resourceData": {
        "@odata.id": "communications/calls/getEmergencyEventsByPolicy(policyName='EmergencyPolicy')",
        "@odata.type": "#microsoft.graph.emergencyCallEvent",
        "id": "11111111-0000-0000-0000-000000000000",
    },
    "organizationId": "00000000-0000-0000-0000-000000000000",
    "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}"]
}

Пример данных расшифрованных ресурсов уведомлений

{
    "@odata.id": "communications/calls/getEmergencyEventsByPolicy(policyName='EmergencyPolicy')",
    "@odata.type": "#microsoft.graph.emergencyCallEvent",
    "id": "11111111-0000-0000-0000-000000000000",
    "emergencyCallEvent": { 
        "id": "11111111-0000-0000-0000-000000000000",  
        "callEventType": "callStarted",
        "policyName": "EmergencyPolicy",
        "eventDateTime": "2024-01-01T10:00:00.0000000+00:00",
        "emergencyNumberDialed": "{emergencyNumberDialed}",
        "callerInfo": {
            "displayName": "Emergency caller display name", 
            "upn": "emergencyCaller@contoso.com", 
            "phoneNumber": "00000000000",
            "tenantId": "00000000-0000-0000-0000-000000000000",
            "location": {
                "address": {
                    "street": "Microsoft Way",
                    "city": "Redmond",
                    "state": "WA",
                    "countryOrRegion": "United States",
                    "postalCode": "00000",
                    "additionalData": {
                    "companyName": "Company name",
                    "additionalInfo": "700",
                    "houseNumber": "725",
                    "county": "County",
                    "streetSuffix": "Street suffix"
                    }
                },
                "coordinates": {
                    "latitude": "00.0000",
                    "longitude": "00.0000"
                }
            }
        }
    }
}