Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As notificações de alteração no Microsoft Graph dão suporte a assinaturas de eventos virtuais. As notificações de alteração fornecem um modelo de baixa latência, permitindo que você mantenha um webhook para eventos virtuais do Microsoft Teams. As assinaturas de eventos virtuais têm um período máximo de um dia. Para estender a vida útil de uma assinatura, ela deve ser renovada antes do período de expiração. Como alternativa, um usuário pode decidir criar uma nova assinatura para o recurso após a expiração de uma assinatura existente. Para obter mais informações, consulte Usar a API do Graph Microsoft 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 assináveis
A tabela a seguir fornece um resumo dos tipos de eventos virtuais subscritores, as URLs de recursos usadas no conteúdo da assinatura e os tipos de alteração com suporte para a assinatura de notificação.
| Tipos de eventos virtuais | URL do recurso | Tipos de alteração com suporte | Tipos de permissão com suporte |
|---|---|---|---|
| Todos os eventos (nível do locatário) | solutions/virtualEvents/events |
criadas | Application |
| Todos os eventos (nível de locatário por IDs de organizador/coorganizador) | solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']) |
criadas | Application |
| Os eventos de um webinar específico | solutions/virtualEvents/webinars/{webinarId} |
atualizado | Aplicativo, delegado |
| Relatório de presença pronto Eventos para um webinar | solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports |
criadas | Aplicativo, delegado |
| Os eventos da sessão de um **webinar** | solutions/virtualEvents/webinars/{webinarId}/sessions |
criado, atualizado | Aplicativo, delegado |
| Os eventos de registro de um webinar | solutions/virtualEvents/webinars/{webinarId}/registrations |
criado, atualizado | Aplicativo, delegado |
| Os eventos de uma prefeitura específica | solutions/virtualEvents/townhalls/{townhallId} |
atualizado | Aplicativo, delegado |
| Relatório de presença Eventos prontos para uma reunião municipal | solutions/virtualEvents/townhalls/{townhallId}/getAttendanceReports |
criadas | Aplicativo, delegado |
| Os eventos de sessão de uma reunião municipal específica | solutions/virtualEvents/townhalls/{townhallId}/sessions |
criado, atualizado | Aplicativo, delegado |
| Publicação pronta para vídeo sob demanda | solutions/virtualEvents/{eventType}/{eventId}/getVideoOnDemandPublication |
atualizado | Aplicativo, delegado |
Assinar todos os eventos criados em um locatário
Você pode especificar assinaturas para todos os eventos de um aplicativo e locatário exclusivos no conteúdo da assinatura usando a seguinte sintaxe: solutions/virtualEvents/events. A assinatura designa a URL de notificação para receber todas as notificações criadas por eventos em um locatário para eventos virtuais. Só há suporte para notificações criadas por eventos para essa assinatura. Um locatário só pode ter um tipo de assinatura por aplicativo. As permissões de evento virtual delegadas pelo usuário são restritas para criar esse tipo de assinatura.
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"
}
Assinar todos os eventos criados em um locatário com organizadores relevantes
Você pode se inscrever em todos os eventos que incluem membros de um conjunto de organizadores ou coorganizadores usando o seguinte recurso: solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']). Essas assinaturas recebem todas as notificações criadas para todos os eventos virtuais para um conjunto de IDs de organizador ou coorganizador. Essa assinatura é considerada uma assinatura para todos os eventos criados em um locatário. As permissões de evento virtual delegadas pelo usuário são restritas para criar esse tipo de assinatura.
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"
}
Inscrever-se em eventos atualizados de um webinar específico
Para receber notificações atualizadas para um webinar específico, você precisa criar uma assinatura para esse webinar exclusivo usando o seguinte recurso: solutions/virtualEvents/webinars/{webinarId}.
Um aplicativo pode ter apenas uma assinatura por webinar dentro de um locatário. Um token delegado pelo usuário permite que você configure uma assinatura para receber notificações de atualização do webinar em um locatário. Essa assinatura só está disponível para usuários que organizaram ou coorganizaram webinars no mesmo locatário que o host 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"
}
Assinar eventos de relatório de presença para todas as sessões em um webinar
Para receber notificações quando os relatórios de presença forem disponibilizados para sessões em um webinar de evento virtual, é necessário criar uma assinatura com o seguinte recurso: solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports.
Um aplicativo pode ter apenas uma assinatura para relatórios de presença de um webinar dentro de um locatário. Um token delegado pelo usuário permite que você configure uma assinatura para receber notificações de atualização do webinar em um locatário. Essa assinatura só está disponível para usuários que organizaram ou coorganizaram webinars no mesmo locatário que o host 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"
}
Inscrever-se para receber notificações de eventos de sessão de um webinar
Para assinar notificações de sessões criadas ou atualizadas em um webinar, especifique o recurso como solutions/virtualEvents/webinars/{webinarId}/sessions.
Um aplicativo só pode ter uma única assinatura de nível de sessão por webinar em um locatário. Um token delegado pelo usuário permite que você configure uma assinatura para receber notificações de atualização do webinar em um locatário. Essa assinatura só está disponível para usuários que organizaram ou coorganizaram webinars no mesmo locatário que o host 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"
}
Assinar a publicação de vídeo sob demanda para todas as sessões em um webinar
Para assinar notificações quando ocorrer a publicação de vídeo sob demanda de uma sessão, especifique o recurso como solutions/virtualEvents/{eventType}/{eventId}/getVideoOnDemandPublication.
Um aplicativo só pode ter uma assinatura por evento virtual em um locatário para publicações de vídeo sob demanda. Um token delegado pelo usuário permite que você configure uma assinatura por evento virtual em um locatário. A assinatura só está disponível para usuários que são o organizador ou listados como coorganizadores no mesmo locatário que o host do evento.
POST https://graph.microsoft.com/beta/subscriptions
{
"changeType": "updated",
"notificationUrl": "https://webhook.contoso.com/api",
"lifecycleNotificationUrl": "https://webhook.contoso.com/api",
"resource": "solutions/virtualEvents/{eventType}/{eventId}/getVideoOnDemandPublication",
"expirationDateTime": "2025-02-01T11:00:00.0000000Z",
"clientState": "secretClientState"
}
Inscrever-se em eventos de chamada de reunião de uma sessão específica
Para obter informações sobre como assinar eventos de chamada de reunião de uma sessão específica, consulte Obter notificações de alteração para atualizações de chamada de reunião do Microsoft Teams.
Inscreva-se em eventos de registro para um webinar
Para assinar notificações de eventos de registro de um webinar, especifique o recurso como solutions/virtualEvents/webinars/{webinarId}/registrations.
Um aplicativo só pode ter uma única assinatura de nível de registro por webinar dentro de um locatário. Um token delegado pelo usuário permite que você configure uma assinatura para receber notificações de atualização do webinar em um locatário. No entanto, a assinatura só está disponível para usuários que organizaram ou coorganizaram webinars no mesmo locatário que o host 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"
}
Assinar eventos atualizados de uma reunião geral específica
Para receber notificações atualizadas para uma reunião geral específica, você precisa criar uma assinatura para essa reunião geral exclusiva usando o seguinte recurso: solutions/virtualEvents/townhalls/{townhall_id}.
Um aplicativo só pode ter uma assinatura por reunião geral dentro de um locatário. Um token delegado pelo usuário permite que você configure uma assinatura para receber notificações de atualização da reunião geral em um locatário. Essa assinatura só está disponível para usuários que organizaram ou coorganizaram reuniões gerais no mesmo locatário que o organizador do evento.
POST https://graph.microsoft.com/beta/subscriptions
{
"changeType": "updated",
"notificationUrl": "https://contonso.com",
"lifecycleNotificationUrl": "https://contonso.com",
"resource": "solutions/virtualevents/townhalls/{townhall_id},
"expirationDateTime": "2026-01-31T12:00:00.0000000Z",
"clientState": "virtualevent-townhall-subscription",
}
Recebendo notificações de eventos
As notificações incluem a URL do recurso alterado. Você pode enviar uma solicitação separada para a URL do recurso para obter informações sobre um recurso criado ou atualizado.
Tipos de notificação
A tabela a seguir indica os tipos de notificação e alteração com suporte 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 da reunião | solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports |
criadas |
| Câmara Municipal | solutions/virtualEvents/townhalls/{townhallId} |
criado, atualizado |
| Sessão | solutions/virtualEvents/townhalls/{townhallId}/sessions/{sessionId} |
criado, atualizado |
| Relatório de participação da reunião | solutions/virtualEvents/townhalls/{webinarId}/getAttendanceReports |
criadas |
| Sessão de vídeo sob demanda publicada | solutions/virtualEvents/{eventType}/{eventId}/sessions/{sessionId} |
atualizado |
Exemplos de notificação de eventos
Os exemplos de JSON a seguir mostram as respostas para cada tipo de alteração compatível 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}/"
}
}
]
}
Webinar 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 a seguir mostram as respostas para cada tipo de alteração compatível 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}"
}
}
]
}
Vídeo sob demanda publicado
Eventos criados quando o vídeo sob demanda é publicado para uma sessão de evento virtual. O aplicativo ou usuário pode usar **resourceData.@odata.id** para descobrir qual sessão de evento virtual o vídeo sob demanda está disponível.
Quando uma notificação é recebida para sessões de webinar de evento virtual, a notificação informa apenas ao aplicativo ou usuário que a URL de vídeo sob demanda para o webinar de evento virtual foi publicada. A URL de vídeo sob demanda para a sessão de evento virtual pode ser nula ou utilizável somente pelo organizador. O aplicativo ou usuário deve determinar quais URLs exclusivas de vídeo sob demanda devem ser fornecidas aos diferentes participantes, já que uma única URL de vídeo sob demanda não funciona para todos os usuários.
Para sessões de reunião geral de evento virtual, uma URL universal de vídeo sob demanda está disponível no objeto de sessão de evento virtual, que pode ser usado por todos os participantes.
{
"value": [
{
"subscriptionId": "7015b436-a8b8-4260-af80-5af8cba32e62",
"clientState": "secret client state",
"changeType": "updated",
"tenantId": "f5b076c8-b508-4ba3-a1a7-19d1c0bcef03",
"resource": "solutions/virtualEvents/{eventType}/{eventId}/getVideoOnDemandPublication",
"subscriptionExpirationDateTime": "2023-01-28T00:00:00.0000000Z",
"resourceData": {
"@odata.id": "solutions/virtualEvents/{eventType}/{eventId}/sessions/{sessionId}",
"@odata.type": "#microsoft.graph.virtualeventsession",
"id": "solutions/virtualEvents/{eventType}/{eventId}/sessions/{sessionId}"
}
}
]
}
Eventos atualizados de 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, consulte Tipos de notificações de eventos.
Exemplos de notificações de registro
Os exemplos JSON a seguir mostram as respostas para cada tipo de alteração compatível de um registro.
Registro 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}"
}
}
]
}
Registro 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 presença criado
Os eventos criados por um relatório de presença retornam o ponto de extremidade do objeto meetingAttendanceReport . Os usuários podem usar esse ponto de extremidade no **resourceData.@odata.id** propriedade 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}"
}
}
]
}
Reunião geral criada
{
"value": [
{
"subscriptionId": "eb1226bf-be92-0a00-04c5-43d87ee913c6",
"clientState": "virtualevent-townhall-subscription",
"changeType": "created",
"resource": "solutions/virtualevents/townhalls/{townhallId}",
"subscriptionExpirationDateTime": "2026-01-28T00:00:00.0000000Z",
"resourceData": {
"@odata.type": "#microsoft.graph.virtualEventTownhall",
"@odata.id": "solutions/virtualevents/townhalls/{townhallId}",
"id": "solutions/virtualevents/townhalls/{townhallId}"
}
}
]
}