Поделиться через


Получение уведомлений об изменениях для обновлений виртуальных событий Microsoft Teams

Уведомления об изменении в Microsoft Graph поддерживают подписки на виртуальные события. Уведомления об изменениях обеспечивают модель с низкой задержкой, позволяя поддерживать веб-перехватчик для виртуальных событий Microsoft Teams. Виртуальные подписки на события имеют максимальный период в день. Чтобы продлить время существования подписки, ее необходимо продлить до истечения срока действия. Кроме того, пользователь может создать новую подписку для ресурса после истечения срока действия существующей подписки. Дополнительные сведения см. в статье Получение уведомлений об изменениях с помощью API Graph Майкрософт.

Разрешения

Тип разрешения Разрешения (в порядке повышения привилегий) Поддерживаемые версии
Делегированные (рабочая или учебная учетная запись) VirtualEvent.Read, VirtualEvent.ReadWrite версия 1.0, бета-версия
Делегированные (личная учетная запись Майкрософт) Не поддерживается. Не поддерживается.
Приложение VirtualEvent.Read.All версия 1.0, бета-версия

Подписываемые виртуальные события

В следующей таблице приведена сводка подписываемых типов виртуальных событий, URL-адресов ресурсов, используемых в полезных данных подписки, и поддерживаемых типов изменений для подписки на уведомления.

Типы виртуальных событий URL-адрес ресурса Поддерживаемые типы изменений Поддерживаемые типы разрешений
Все события (на уровне клиента) solutions/virtualEvents/events создано Приложение
Все события (на уровне клиента по идентификаторам организатора или соорганизатора) solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']) создано Приложение
События определенного вебинара solutions/virtualEvents/webinars/{webinarId} Обновлено Делегированное приложение
События подготовки отчета о посещаемости для вебинара solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports создано Делегированное приложение
События сеанса **вебинара ** solutions/virtualEvents/webinars/{webinarId}/sessions создано, обновлено Делегированное приложение
События регистрации вебинара solutions/virtualEvents/webinars/{webinarId}/registrations создано, обновлено Делегированное приложение
События конкретного ратуши solutions/virtualEvents/townhalls/{townhallId} Обновлено Делегированное приложение
Отчет о посещаемости готовых событий для таунхолл solutions/virtualEvents/townhalls/{townhallId}/getAttendanceReports создано Делегированное приложение
События сеанса конкретного ратхолля solutions/virtualEvents/townhalls/{townhallId}/sessions создано, обновлено Делегированное приложение
Готовая публикация видео по запросу solutions/virtualEvents/{eventType}/{eventId}/getVideoOnDemandPublication Обновлено Делегированное приложение

Подписка на все события, созданные в клиенте

Подписки для всех событий уникального приложения и клиента можно указать в полезных данных подписки с помощью следующего синтаксиса: solutions/virtualEvents/events. Подписка указывает URL-адрес уведомления для получения всех уведомлений, созданных событиями в клиенте для виртуальных событий. Для этой подписки поддерживаются только уведомления, созданные событиями. Клиент может иметь только один тип подписки для каждого приложения. Делегированные пользователем разрешения на виртуальные события ограничены в создании подписки этого типа.

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

Подписка на все события, созданные в клиенте с соответствующими организаторами

Вы можете подписаться на все события, включающие участников набора организаторов или соорганизаторов, с помощью следующего ресурса: solutions/virtualEvents/events/getEventsFromOrganizers(organizerIds=['id1', 'id2']). Эти подписки получают все созданные уведомления для всех виртуальных событий для набора идентификаторов организатора или соорганизатора. Эта подписка считается подпиской на все события, созданные в клиенте. Делегированные пользователем разрешения на виртуальные события ограничены в создании подписки этого типа.

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

Подписка на обновленные события определенного вебинара

Чтобы получать обновленные уведомления для определенного вебинара, необходимо создать подписку на этот уникальный вебинар с помощью следующего ресурса: solutions/virtualEvents/webinars/{webinarId}.

Приложение может иметь только одну подписку на вебинар внутри клиента. Маркер, делегированный пользователем, позволяет настроить одну подписку для получения уведомлений об обновлении вебинара в клиенте. Эта подписка доступна только для пользователей, которые организовали или совместно организовали вебинары в том же клиенте, что и узел событий.

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

Подписка на события отчета о посещаемости для всех сеансов в вебинаре

Чтобы получать уведомления, когда отчеты о посещаемости становятся доступными для сеансов в вебинаре виртуальных событий, необходимо создать подписку со следующим ресурсом: solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports.

Приложение может иметь только одну подписку на отчеты о посещаемости вебинара внутри клиента. Маркер, делегированный пользователем, позволяет настроить одну подписку для получения уведомлений об обновлении вебинара в клиенте. Эта подписка доступна только для пользователей, которые организовали или совместно организовали вебинары в том же клиенте, что и узел событий.

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

Подписка на уведомления о событиях сеанса для вебинара

Чтобы подписаться на уведомления для сеансов, созданных или обновленных на вебинаре, укажите ресурс как solutions/virtualEvents/webinars/{webinarId}/sessions.

Приложение может иметь только одну подписку на уровне сеанса для каждого вебинара в клиенте. Маркер, делегированный пользователем, позволяет настроить одну подписку для получения уведомлений об обновлении вебинара в клиенте. Эта подписка доступна только для пользователей, которые организовали или совместно организовали вебинары в том же клиенте, что и узел событий.

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

Подписка на публикацию видео по запросу для всех сеансов в вебинаре

Чтобы подписаться на уведомления о публикации сеанса по запросу, укажите ресурс как solutions/virtualEvents/{eventType}/{eventId}/getVideoOnDemandPublication.

Приложение может иметь подписку только на каждое виртуальное событие в клиенте для публикации видео по запросу. Маркер делегированного пользователя позволяет настроить одну подписку на каждое виртуальное событие в клиенте. Подписка доступна только для пользователей, которые являются организатором или перечислены в качестве соорганизатора в том же клиенте, что и узел событий.

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

Подписка на события вызова собрания определенного сеанса

Сведения о том, как подписаться на события приглашения на собрание определенного сеанса, см. в статье Получение уведомлений об изменениях для обновлений вызовов собраний Microsoft Teams.

Подписка на события регистрации для вебинара

Чтобы подписаться на уведомления о событиях регистрации вебинара, укажите ресурс как solutions/virtualEvents/webinars/{webinarId}/registrations.

Приложение может иметь только одну подписку уровня регистрации для каждого вебинара внутри клиента. Маркер, делегированный пользователем, позволяет настроить одну подписку для получения уведомлений об обновлении вебинара в клиенте. Однако подписка доступна только для пользователей, которые организовали или совместно организовали вебинары в том же клиенте, что и узел событий.

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

Подписка на обновленные события конкретной ратуши

Чтобы получать обновленные уведомления для конкретной ратуши, необходимо создать подписку для этого уникального ратуши с помощью следующего ресурса: solutions/virtualEvents/townhalls/{townhall_id}.

Приложение может иметь только одну подписку на каждую ратушу внутри клиента. Маркер, делегированный пользователем, позволяет настроить одну подписку для получения уведомлений об обновлениях в клиенте. Эта подписка доступна только для пользователей, которые организовали или совместно организовали ратуши в том же клиенте, что и организатор мероприятия.

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

Получение уведомлений о событиях

Уведомления включают URL-адрес ресурса измененного ресурса. Вы можете отправить отдельный запрос на URL-адрес ресурса, чтобы получить сведения о созданном или обновленном ресурсе.

Типы уведомлений

В следующей таблице указаны поддерживаемые типы уведомлений и изменений для ресурса виртуальных событий.

Тип уведомления ИД ресурса Типы изменений
Вебинар solutions/virtualEvents/webinars/{webinarId} создано, обновлено
Session solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId} создано, обновлено
Регистрация solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId} создано, обновлено
Отчет о посещаемости собрания solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports создано
Таунхолл solutions/virtualEvents/townhalls/{townhallId} создано, обновлено
Session solutions/virtualEvents/townhalls/{townhallId}/sessions/{sessionId} создано, обновлено
Отчет о посещаемости собрания solutions/virtualEvents/townhalls/{webinarId}/getAttendanceReports создано
Опубликовано видео сеанса по запросу solutions/virtualEvents/{eventType}/{eventId}/sessions/{sessionId} Обновлено

Примеры уведомлений о событиях

В следующих примерах JSON показаны ответы для каждого поддерживаемого типа изменения события.

Событие создано

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

Вебинар обновлен

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

Примеры уведомлений сеанса

В следующих примерах JSON показаны ответы для каждого поддерживаемого типа изменения сеанса.

Сеанс создан

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

Сеанс обновлен

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

Опубликовано видео по запросу

События, создаваемые при публикации видео по запросу для виртуального сеанса событий. Приложение или пользователь могут использовать **resourceData.@odata.id** свойство для обнаружения доступных видео по запросу сеанса виртуальных событий.

При получении уведомления для сеансов вебинара виртуального события уведомление информирует приложение или пользователя только о публикации URL-адреса видео по запросу для вебинара виртуального события. URL-адрес видео по запросу для сеанса виртуального события может иметь значение NULL или использовать только организатор. Приложение или пользователь должны определить, какие уникальные URL-адреса видео по запросу следует предоставить разным участникам, так как один URL-адрес видео по запросу не подходит для всех пользователей.

Для виртуальных сеансов ратуши событий в объекте сеанса виртуального события доступен универсальный URL-адрес видео по запросу, который может использоваться всеми участниками.

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

Обновленные события собрания сеанса

Сведения о типах уведомлений, получаемых для обновления вызовов собраний, см. в разделе Типы уведомлений о событиях.

Примеры уведомлений о регистрации

В следующих примерах JSON показаны ответы для каждого поддерживаемого типа изменения регистрации.

Регистрация создана

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

Регистрация обновлена

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

Создан отчет о посещаемости

События, созданные отчетом о посещаемости, возвращают конечную точку объекта meetingAttendanceReport . Пользователи могут использовать эту конечную точку в **resourceData.@odata.id** свойство для запроса сведений в объекте 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}"
      }
    }
  ]
}

Ратуша создана

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