获取Microsoft Teams 虚拟事件更新的更改通知

更改 Microsoft Graph 中的通知支持虚拟事件的订阅。 更改通知通过允许维护 Webhook 来Microsoft Teams 虚拟事件,从而提供低延迟模型。 虚拟事件订阅的最长期限为一天。 若要延长订阅的生存期,必须在到期前续订订阅。 或者,用户可能决定在现有订阅到期后为资源创建新订阅。 有关详细信息,请参阅 使用 Microsoft 图形 API 获取更改通知

权限

权限类型 权限(从最低特权到最高特权) 支持的版本
委派(工作或学校帐户) VirtualEvent.Read、VirtualEvent.ReadWrite v1.0、Beta
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 VirtualEvent.Read.All v1.0、Beta

可订阅的虚拟事件

下表汇总了可订阅的虚拟事件类型、订阅有效负载中使用的资源 URL 以及通知订阅支持的更改类型。

虚拟事件类型 资源 URL 支持的更改类型 支持的权限类型
租户级别) (所有事件 solutions/virtualEvents/events 已创建 应用程序
所有事件 (租户级别的组织者/共同组织者 ID) 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/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'])。 这些订阅接收针对一组组织者或共同组织者 ID 的所有虚拟事件创建的任何通知。 此订阅被视为租户中创建的所有事件的订阅。 用户委托的虚拟事件权限受到限制,无法创建此类订阅。

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

订阅特定会话的会议呼叫事件

有关如何订阅特定会话的会议呼叫事件的信息,请参阅 获取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"
}

接收事件通知

通知包括已更改的资源的资源 URL。 可以向资源 URL 发送单独的请求,以获取有关已创建或更新的资源的信息。

通知类型

下表指示虚拟事件资源支持的通知和更改类型。

通知类型 资源 ID 更改类型
网络研讨会 solutions/virtualEvents/webinars/{webinarId} 已创建、更新
Session solutions/virtualEvents/webinars/{webinarId}/sessions/{sessionId} 已创建、更新
注册 solutions/virtualEvents/webinars/{webinarId}/registrations/{registrationId} 已创建、更新
会议出席情况报告 solutions/virtualEvents/webinars/{webinarId}/getAttendanceReports 已创建

事件通知示例

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

会话会议呼叫更新事件

有关会议呼叫更新收到的通知类型的信息,请参阅 事件通知类型

注册通知示例

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