Compartilhar via


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

O Microsoft Teams suporta notificações para chamadas de emergência. Estas notificações podem ser encaminhadas para informar pessoal de segurança específico no Teams. A notificação de eventos de chamada de emergência do Microsoft Graph expande esta capacidade para permitir que as notificações de chamadas de emergência sejam recebidas fora do Teams (por exemplo, por aplicações cliente personalizadas), conforme mostrado no diagrama seguinte.

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

  1. O administrador de inquilinos do Teams configura as chamadas de emergência para o inquilino.
  2. A aplicação cliente cria uma subscrição de evento de chamada de emergência do Microsoft Graph.
  3. A notificação de evento de chamada de emergência é acionada para a aplicação cliente quando um utilizador do Teams faz uma chamada de emergência (por exemplo, 911) no Teams.
  4. A aplicação cliente renova a subscrição existente antes de expirar ou cria uma nova depois de expirar para continuar a subscrever 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.

Subscrever eventos de chamadas de emergência iniciadas

Para subscrever quando um número de política de chamada de emergência é marcado, defina a resource propriedade no payload da subscrição como communications/calls/getEmergencyEventsByPolicy(policyName='{policyName}'), substituindo o {policyName} campo pelo nome da política configurado para a sua organização.

As subscrições para eventos de chamada de emergência só suportam notificações avançadas. Defina includeResourceData como true e forneça o valor de certificado codificado base64 para encryptionCertificate e um identificador de cadeia para encryptionCertificateId. Para obter mais informações, veja Configurar notificações de alteração que incluem dados de recursos.

As subscrições para eventos de chamada de emergência têm um tempo máximo de vida útil da subscrição de um dia. Para manter as subscrições por mais tempo, atualize a propriedade expirationDateTime da subscrição. Para obter mais informações, veja Atualizar a API de subscrição.

Observação

As subscrições estão limitadas a uma subscrição por aplicação, inquilino e combinação de nomes de política. Uma segunda subscrição que utiliza a mesma aplicação, inquilino e política de emergência como outra falhará com o código de status HTTP 409, o que significa que o pedido de subscrição foi duplicado e não pode ser criado.

Exemplo de payload da subscrição

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

Para obter a definição de propriedades no pedido de subscrição, veja Recurso de subscrição.

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

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

Exemplo de payload 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 recursos de notificação desencriptados

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