Compartilhar via


Obter notificações de alteração para atualizações de eventos virtuais do Microsoft Teams

As notificações de alteração no Microsoft Graph suportam subscrições para eventos virtuais. As notificações de alteração fornecem um modelo de baixa latência ao permitir-lhe manter um webhook para eventos virtuais do Microsoft Teams. As subscrições de eventos virtuais têm um período máximo de um dia. Para prolongar a duração de uma subscrição, a subscrição tem de ser renovada antes do período de expiração. Em alternativa, um utilizador pode decidir criar uma nova subscrição para o recurso após a expiração de uma subscrição existente. Para obter mais informações, veja Utilizar a Microsoft Graph API para obter notificações de alteração.

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) VirtualEvent.Read, VirtualEvent.ReadWrite v1.0, Beta
Delegado (conta pessoal da Microsoft) Sem suporte. Sem suporte.
Application VirtualEvent.Read.All v1.0, Beta

Eventos virtuais subscritos

A tabela seguinte fornece um resumo dos tipos de eventos virtuais subscritos, os URLs de recursos utilizados no payload da subscrição e os tipos de alteração suportados para a subscrição de notificação.

Tipos de eventos virtuais URL do Recurso Tipos de alteração suportados Tipos de permissões suportados
Todos os eventos (ao nível do inquilino) solutions/virtualEvents/events criadas Application
Todos os eventos (ao nível do inquilino por IDs de organizador/co-organizador) solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']) criadas Application
Os eventos de um webinar específico solutions/virtualEvents/webinars/{webinarId} atualizado Aplicação, delegada
Eventos prontos para relatórios de participação para um webinar solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports criadas Aplicação, delegada
Os eventos de sessão de um webinar solutions/virtualEvents/webinars/{webinarId}/sessions criado, atualizado Aplicação, delegada
Os eventos de registo de um webinar solutions/virtualEvents/webinars/{webinarId}/registrations criado, atualizado Aplicação, delegada

Nota: Substitua os valores em por parênteses pelos valores reais.

Subscrever todos os eventos criados num inquilino

Pode especificar subscrições para todos os eventos de uma aplicação e inquilino exclusivos no payload da subscrição com a seguinte sintaxe: solutions/virtualEvents/events. A subscrição designa o URL de notificação para receber todas as notificações criadas por eventos num inquilino para eventos virtuais. Apenas são suportadas notificações criadas por eventos para esta subscrição. Um inquilino só pode ter um tipo de subscrição por aplicação. As permissões de eventos virtuais delegadas pelo utilizador estão impedidas de criar este tipo de subscrição.

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

{
  "changeType": "created",
  "notificationUrl": "https://webhook.contoso.com/api",
  "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
  "resource": "solutions/virtualEvents/events",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "secretClientState"
}

Subscrever todos os eventos criados num inquilino com organizadores relevantes

Pode subscrever todos os eventos que incluam membros de um conjunto de organizadores ou co-organizadores através do seguinte recurso: solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']). Estas subscrições recebem notificações criadas para todos os eventos virtuais para um conjunto de IDs de organizador ou co-organizador. Esta subscrição é considerada uma subscrição de todos os eventos criados num inquilino. As permissões de eventos virtuais delegadas pelo utilizador estão impedidas de criar este tipo de subscrição.

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

{
  "changeType": "created",
  "notificationUrl": "https://webhook.contoso.com/api",
  "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
  "resource": "solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2'])",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "secretClientState"
}

Subscrever eventos atualizados de um webinar específico

Para receber notificações atualizadas de um webinar específico, tem de criar uma subscrição para esse webinar exclusivo com o seguinte recurso: solutions/virtualEvents/webinars/{webinarId}.

Uma aplicação só pode ter uma subscrição por webinar dentro de um inquilino. Um token delegado pelo utilizador permite-lhe configurar uma subscrição para receber notificações de atualização de webinars num inquilino. Esta subscrição só está disponível para utilizadores que organizaram ou co-organizaram webinars no mesmo inquilino que o anfitrião do evento.

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

{
  "changeType": "updated",
  "notificationUrl": "https://webhook.contoso.com/api",
  "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
  "resource": "solutions/virtualEvents/webinars/{webinarId}",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "secretClientState"
}

Subscrever eventos de relatórios de participação para todas as sessões num webinar

Para receber notificações quando os relatórios de assiduidade ficam disponíveis para sessões num webinar de eventos virtuais, tem de ser criada uma subscrição com o seguinte recurso: solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports.

Uma aplicação só pode ter uma subscrição para os relatórios de participação de um webinar dentro de um inquilino. Um token delegado pelo utilizador permite-lhe configurar uma subscrição para receber notificações de atualização de webinars num inquilino. Esta subscrição só está disponível para utilizadores que organizaram ou co-organizaram webinars no mesmo inquilino que o anfitrião do evento.

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

{
  "changeType": "created",
  "notificationUrl": "https://webhook.contoso.com/api",
  "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
  "resource": "solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "secretClientState"
}

Subscrever notificações de eventos de sessão para um webinar

Para subscrever notificações para sessões que são criadas ou atualizadas num webinar, especifique o recurso como solutions/virtualEvents/webinars/{webinarId}/sessions.

Uma aplicação só pode ter uma subscrição de nível de sessão individual por webinar num inquilino. Um token delegado pelo utilizador permite-lhe configurar uma subscrição para receber notificações de atualização de webinars num inquilino. Esta subscrição só está disponível para utilizadores que organizaram ou co-organizaram webinars no mesmo inquilino que o anfitrião do evento.

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

{
  "changeType": "created, updated",
  "notificationUrl": "https://webhook.contoso.com/api",
  "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
  "resource": "solutions/virtualEvents/webinars/{webinarId}/sessions",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "secretClientState"
}

Subscrever eventos de chamada de reunião de uma sessão específica

Para obter informações sobre como subscrever eventos de chamada de reunião de uma sessão específica, consulte Obter notificações de alteração para atualizações de chamadas de reunião do Microsoft Teams.

Subscrever eventos de registo de um webinar

Para subscrever notificações para eventos de registo de um webinar, especifique o recurso como solutions/virtualEvents/webinars/{webinarId}/registrations.

Uma aplicação só pode ter uma subscrição de nível de registo individual por webinar dentro de um inquilino. Um token delegado pelo utilizador permite-lhe configurar uma subscrição para receber notificações de atualização de webinars num inquilino. No entanto, a subscrição só está disponível para utilizadores que organizaram ou co-organizaram webinars no mesmo inquilino que o anfitrião do evento.

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

{
  "changeType": "created, updated",
  "notificationUrl": "https://webhook.contoso.com/api",
  "lifecycleNotificationUrl": "https://webhook.contoso.com/api",
  "resource": "solutions/virtualEvents/webinars/{webinarId}/registrations",
  "expirationDateTime": "2021-02-01T11:00:00.0000000Z",
  "clientState": "secretClientState"
}

Receber notificações de eventos

As notificações incluem o URL do recurso alterado. Pode enviar um pedido separado para o URL do recurso para obter informações sobre um recurso criado ou atualizado.

Tipos de notificação

A tabela seguinte indica os tipos de notificação e alteração suportados para o recurso de eventos virtuais.

Tipo de notificação ID do recurso Alterar tipos
Webinar solutions/virtualEvents/webinars/{webinarId} criado, atualizado
Sessão solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId} criado, atualizado
Registro solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId} criado, atualizado
Relatório de Participação na Reunião solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports criadas

Exemplos de notificação de eventos

Os exemplos JSON seguintes mostram as respostas para cada tipo de alteração suportado de um evento.

Evento criado

{
  "value": [
    {
      "subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
      "clientState": "secret client state",
      "changeType": "created",
      "tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
      "resource": "solutions/virtualEvents/events/",
      "subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
      "resourceData": {
        "@odata.id": "solutions/virtualEvents/webinars/{webinarId}/",
        "@odata.type": "#microsoft.graph.virtualEvent",
        "id": "solutions/virtualEvents/webinars/{webinarId}/"
      }
    }
  ]
}

Evento atualizado

{
  "value": [
    {
      "subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
      "clientState": "secret client state",
      "changeType": "updated",
      "tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
      "resource": "solutions/virtualEvents/webinars/{webinarId}/",
      "subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
      "resourceData": {
        "@odata.id": "solutions/virtualEvents/webinars/{webinarId}/",
        "@odata.type": "#microsoft.graph.virtualEvent",
        "id": "solutions/virtualEvents/webinars/{webinarId}/"
      }
    }
  ]
}

Exemplos de notificação de sessão

Os exemplos JSON seguintes mostram as respostas para cada tipo de alteração suportado de uma sessão.

Sessão criada

{
  "value": [
    {
      "subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
      "clientState": "secret client state",
      "changeType": "created",
      "tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
      "resource": "solutions/virtualEvents/webinars/{webinarId}/sessions",
      "subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
      "resourceData": {
        "@odata.id": "solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId}",
        "@odata.type": "#microsoft.graph.virtualEventSession",
        "id": "solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId}"
      }
    }
  ]
}

Sessão atualizada

{
  "value": [
    {
      "subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
      "clientState": "secret client state",
      "changeType": "updated",
      "tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
      "resource": "solutions/virtualEvents/webinars/{webinarId}/sessions",
      "subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
      "resourceData": {
        "@odata.id": "solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId}",
        "@odata.type": "#microsoft.graph.virtualEventSession",
        "id": "solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId}"
      }
    }
  ]
}

Eventos atualizados da chamada de reunião de sessão

Para obter informações sobre os tipos de notificações recebidas para atualizações de chamadas de reunião, veja Tipos de notificações de eventos.

Exemplos de notificações de registo

Os exemplos JSON seguintes mostram as respostas para cada tipo de alteração suportado de um registo.

Registo criado

{
  "value": [
    {
      "subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
      "clientState": "secret client state",
      "changeType": "created",
      "tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
      "resource": "solutions/virtualEvents/webinars/{webinarId}/registrations",
      "subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
      "resourceData": {
        "@odata.id": "solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId}",
        "@odata.type": "#microsoft.graph.virtualEventRegistration",
        "id": "solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId}"
      }
    }
  ]
}

Registo atualizado

{
  "value": [
    {
      "subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
      "clientState": "secret client state",
      "changeType": "updated",
      "tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
      "resource": "solutions/virtualEvents/webinars/{webinarId}/registrations",
      "subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
      "resourceData": {
        "@odata.id": "solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId}",
        "@odata.type": "#microsoft.graph.virtualEventRegistration",
        "id": "solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId}"
      }
    }
  ]
}

Relatório de participação criado

Os eventos criados por um relatório de participação devolvem o ponto final do objeto meetingAttendanceReport . Os utilizadores podem utilizar este ponto final no **resourceData.@odata.id** para consultar os detalhes no objeto meetingAttendanceReport .

{
  "value": [
    {
      "subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
      "clientState": "secret client state",
      "changeType": "created",
      "tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
      "resource": "solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports",
      "subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
      "resourceData": {
        "@odata.id": "solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId}/attendanceReports/{reportId}",
        "@odata.type": "#microsoft.graph.meetingAttendanceReport",
        "id": "{reportId}"
      }
    }
  ]
}