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