MSGraph分组webhook eventTime

时间:2018-02-16 01:09:37

标签: microsoft-graph

我正在通过webhook收听群组端点。

我通过Outlook Online + Group执行以下操作

  1. 创建群组
  2. 设置所有者
  3. 添加一名成员
  4. 我立刻得到了所有三个的webhook事件,这很好,我认为事情是批量的。但eventTime是相同的 - 这使得很难理解这些事件发生的顺序。所以我要求澄清resourceData.eventTime应该是相同的,还是应该是不同的。

    {
      "value": [
        {
          "changeType": "updated",
          "clientState": "its_me_flow",
          "resource": "Groups/7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
          "resourceData": {
            "@odata.type": "#Microsoft.Graph.Group",
            "@odata.id": "Groups/7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
            "id": "7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
            "organizationId": "26e65220-5561-46ef-9783-ce5f20489241",
            "eventTime": "2018-02-13T00:20:03.9107966Z"
          },
          "subscriptionExpirationDateTime": "2018-02-13T04:07:19.7318815+00:00",
          "subscriptionId": "c8c521bf-2bcb-4b93-821f-40a1fb72c0f8"
        },
        {
          "changeType": "updated",
          "clientState": "its_me_flow",
          "resource": "Groups/7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
          "resourceData": {
            "@odata.type": "#Microsoft.Graph.Group",
            "@odata.id": "Groups/7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
            "id": "7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
            "organizationId": "26e65220-5561-46ef-9783-ce5f20489241",
            "eventTime": "2018-02-13T00:20:03.9107966Z",
            "owner@delta": [
              {
                "id": "36e3b856-3c2e-4605-ac5f-99064d229c3a"
              }
            ]
          },
          "subscriptionExpirationDateTime": "2018-02-13T04:07:19.7318815+00:00",
          "subscriptionId": "c8c521bf-2bcb-4b93-821f-40a1fb72c0f8"
        },
        {
          "changeType": "updated",
          "clientState": "its_me_flow",
          "resource": "Groups/7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
          "resourceData": {
            "@odata.type": "#Microsoft.Graph.Group",
            "@odata.id": "Groups/7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
            "id": "7763cbdb-7f79-4b95-bb3b-d8e83413f7ad",
            "organizationId": "26e65220-5561-46ef-9783-ce5f20489241",
            "eventTime": "2018-02-13T00:20:03.9107966Z",
            "members@delta": [
              {
                "id": "36e3b856-3c2e-4605-ac5f-99064d229c3a"
              },
              {
                "id": "9b47aca9-efc6-488c-8afd-c323eccad4b4"
              }
            ]
          },
          "subscriptionExpirationDateTime": "2018-02-13T04:07:19.7318815+00:00",
          "subscriptionId": "c8c521bf-2bcb-4b93-821f-40a1fb72c0f8"
        }
      ]
    }

    看到eventTime是完全相同的。从所有者@ delta和members @ delta的外观来看,订单是正确的,但是我可以信任该数组顺序吗?如果eventTime是顺序的,那就更喜欢了。

1 个答案:

答案 0 :(得分:0)

这类似于通过Delta Query接收更改页面,其中许多对象可以包含在单个页面中,并且页面中已更改对象的顺序遵循某种逻辑顺序。 (例如:在您的情况下,所有者添加后跟成员添加)。

由于webhooks无法保证事件的排序,因此eventTime旨在帮助订购在不同时间点接收的事件页面。例如:Microsoft图形尝试在时间T1和T2发送更改P1和P2的页面。但是,目标webhook端点在时间T1处于关闭状态,因此Microsoft图形将以指数延迟重试最多4小时。虽然webhook端点可能在时间T2可用。因此,首先接收页面P2,然后在这种情况下接收P1。为了帮助客户端区分和排序事件,可以使用eventTime字段。