Receber notificações de alteração para atualizações de eventos de chamada de emergência do Microsoft Teams

O Microsoft Teams é compatível com notificações de chamadas de emergência. Essas notificações podem ser roteadas para informar o pessoal de segurança específico dentro do Teams. A notificação de eventos de chamada de emergência do Microsoft Graph estende esse recurso para permitir que notificações de chamadas de emergência sejam recebidas fora do Teams (por exemplo, por aplicativos cliente personalizados), conforme mostrado no diagrama a seguir.

Diagrama de fluxo de notificação de eventos de chamada de emergência

  1. O administrador de locatários do Teams configura a chamada de emergência para o locatário.
  2. O aplicativo cliente cria uma assinatura de evento de chamada de emergência do Microsoft Graph.
  3. A notificação de evento de chamada de emergência é acionada para o aplicativo cliente quando um usuário do Teams faz uma chamada de emergência (por exemplo, 911) no Teams.
  4. O aplicativo cliente renova a assinatura existente antes que ela expire ou cria uma nova depois que ela expirar para continuar a assinar notificações de eventos de chamada de emergência.

Permissões

Tipo de permissão Permissões (da com menos para a com mais privilégios) Versões com suporte
Delegado (conta corporativa ou de estudante) Sem suporte. Sem suporte.
Delegado (conta pessoal da Microsoft) Sem suporte. Sem suporte.
Application CallEvents-Emergency.Read.All Beta, v 1.0

Inscrever-se em eventos iniciados por chamada de emergência

Para assinar quando um número de política de chamada de emergência for discado, defina a resource propriedade no conteúdo da assinatura como communications/calls/getEmergencyEventsByPolicy(policyName='{policyName}'), substituindo o {policyName} campo pelo nome da política configurada para sua organização.

As assinaturas de eventos de chamada de emergência dão suporte apenas a notificações avançadas. Defina includeResourceData como e forneça um valor de true certificado codificado em base64 para encryptionCertificate e um identificador de cadeia de caracteres para encryptionCertificateId. Para obter mais informações, consulte Configurar notificações de alteração que incluem dados de recursos.

As assinaturas de eventos de chamadas de emergência têm uma vida útil máxima de um dia. Para manter as assinaturas por mais tempo, atualize a propriedade expirationDateTime da assinatura. Para obter mais informações, consulte Atualizar API de assinatura.

Observação

As assinaturas são limitadas a uma assinatura por combinação de aplicativo, locatário e nome de política. Uma segunda assinatura que usa o mesmo aplicativo, locatário e política de emergência que outra falhará com o código de status HTTP 409, o que significa que a solicitação de assinatura foi duplicada e não pode ser criada.

Exemplo de conteúdo de assinatura

POST https://graph.microsoft.com/v1.0/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}"
}

Para obter a definição de propriedades na solicitação de assinatura, consulte Recurso de assinatura.

Notificações de eventos de chamada de emergência

As notificações para chamadas de emergência são acionadas quando uma chamada com uma política de chamada de emergência aplicável é iniciada.

Exemplo de conteúdo de notificação

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

Exemplo de dados de recurso de notificação descriptografado

{
    "@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"
                }
            }
        }
    }
}