Obtención de notificaciones de cambios para las actualizaciones de eventos virtuales de Microsoft Teams

Las notificaciones de cambio de Microsoft Graph admiten suscripciones a eventos virtuales. Las notificaciones de cambio proporcionan un modelo de baja latencia al permitirle mantener un webhook a eventos virtuales de Microsoft Teams. Las suscripciones a eventos virtuales tienen un período máximo de un día. Para ampliar la duración de una suscripción, la suscripción debe renovarse antes del período de expiración. Como alternativa, un usuario podría decidir crear una nueva suscripción para el recurso después de la expiración de una suscripción existente. Para obtener más información, consulte Uso de microsoft Graph API para obtener notificaciones de cambios.

Permisos

Tipo de permiso Permisos (de menos a más privilegiados) Versiones compatibles
Delegado (cuenta profesional o educativa) VirtualEvent.Read, VirtualEvent.ReadWrite v1.0, Beta
Delegado (cuenta personal de Microsoft) No admitida. No admitida.
Aplicación VirtualEvent.Read.All v1.0, Beta

Eventos virtuales suscritos

En la tabla siguiente se proporciona un resumen de los tipos de eventos virtuales suscritos, las direcciones URL de recursos usadas en la carga de la suscripción y los tipos de cambio admitidos para la suscripción de notificación.

Tipos de eventos virtuales Dirección URL del recurso Tipos de cambio admitidos Tipos de permisos admitidos
Todos los eventos (nivel de inquilino) solutions/virtualEvents/events creado Aplicación
Todos los eventos (identificadores de organizador o coorganizador a nivel de inquilino) solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']) creado Aplicación
Los eventos de un seminario web específico solutions/virtualEvents/webinars/{webinarId} Actualizado Aplicación, delegada
Los eventos de sesión de un seminario web solutions/virtualEvents/webinars/{webinarId}/sessions creado, actualizado Aplicación, delegada
Los eventos de registro de un seminario web solutions/virtualEvents/webinars/{webinarId}/registrations creado, actualizado Aplicación, delegada

Nota: Reemplace los valores de por paréntesis por valores reales.

Suscribirse a todos los eventos creados en un inquilino

Puede especificar suscripciones para todos los eventos de una aplicación y un inquilino únicos en la carga de la suscripción mediante la sintaxis siguiente: solutions/virtualEvents/events. La suscripción designa la dirección URL de notificación para recibir todas las notificaciones creadas por eventos en un inquilino para eventos virtuales. Solo se admiten las notificaciones creadas por eventos para esta suscripción. Un inquilino solo puede tener un tipo de suscripción por aplicación. Los permisos de eventos virtuales delegados por el usuario están restringidos a la creación de este tipo de suscripción.

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

Suscribirse a todos los eventos creados en un inquilino con los organizadores pertinentes

Puede suscribirse a todos los eventos que incluyan cualquier miembro de un conjunto de organizadores o coorganizador mediante el siguiente recurso: solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']). Estas suscripciones reciben las notificaciones creadas para todos los eventos virtuales de un conjunto de identificadores de organizador o coorganizador. Esta suscripción se considera una suscripción a todos los eventos creados en un inquilino. Los permisos de eventos virtuales delegados por el usuario están restringidos a la creación de este tipo de suscripción.

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

Suscripción a eventos actualizados de un seminario web específico

Para recibir notificaciones actualizadas de un seminario web determinado, debe crear una suscripción para ese seminario web único mediante el siguiente recurso: solutions/virtualEvents/webinars/{webinarId}.

Una aplicación solo puede tener una suscripción por seminario web dentro de un inquilino. Un token delegado por el usuario le permite configurar una suscripción para recibir notificaciones de actualización de seminario web dentro de un inquilino, pero la suscripción solo está disponible para los usuarios que organizaron o organizaron seminarios web en el mismo inquilino que el host de eventos.

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

Suscripción a notificaciones de eventos de sesión para un seminario web

Para suscribirse a las notificaciones de las sesiones que se crean o actualizan en un seminario web, especifique el recurso como solutions/virtualEvents/webinars/{webinarId}/sessions.

Una aplicación solo puede tener una suscripción de nivel de sesión única por seminario web en un inquilino. Un token delegado por el usuario le permite configurar una suscripción para recibir notificaciones de actualización de seminario web dentro de un inquilino, pero la suscripción solo está disponible para los usuarios que organizaron o organizaron seminarios web en el mismo inquilino que el host de eventos.

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

Suscribirse a eventos de llamada de reunión de una sesión específica

Para obtener información sobre cómo suscribirse a eventos de llamadas a reuniones de una sesión específica, consulte Obtención de notificaciones de cambio para las actualizaciones de llamadas a reuniones de Microsoft Teams.

Suscripción a eventos de registro para un seminario web

Para suscribirse a notificaciones para eventos de registro de un seminario web, especifique el recurso como solutions/virtualEvents/webinars/{webinarId}/registrations.

Una aplicación solo puede tener una suscripción de nivel de registro única por seminario web dentro de un inquilino. Un token delegado por el usuario permite configurar una suscripción para recibir notificaciones de actualización de seminario web dentro de un inquilino, pero la suscripción solo está disponible para los usuarios que han organizado o organizado seminarios web en el mismo inquilino que el host de eventos.

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

Recepción de notificaciones de eventos

Las notificaciones incluyen la dirección URL del recurso modificado. Puede enviar una solicitud independiente a la dirección URL del recurso para obtener información sobre un recurso creado o actualizado.

Tipos de notificación

En la tabla siguiente se indican los tipos de notificación y cambio admitidos para el recurso de eventos virtuales.

Tipo de notificación Identificador de recurso Tipos de modificación
Seminario web solutions/virtualEvents/webinars/{webinarId} creado, actualizado
Session solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId} creado, actualizado
Registro solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId} creado, actualizado

Ejemplos de notificación de eventos

En los ejemplos JSON siguientes se muestran las respuestas para cada tipo de cambio admitido de un evento.

Evento creado

{
  "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 actualizado

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

Ejemplos de notificación de sesión

En los ejemplos JSON siguientes se muestran las respuestas para cada tipo de cambio admitido de una sesión.

Sesión creada

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

Sesión actualizada

{
  "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 actualizados de la llamada a reunión de sesión

Para obtener información sobre los tipos de notificaciones recibidas para las actualizaciones de llamadas a reuniones, consulte Tipos de notificaciones de eventos.

Ejemplos de notificaciones de registro

En los ejemplos JSON siguientes se muestran las respuestas para cada tipo de cambio admitido de un registro.

Registro creado

{
  "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 actualizado

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