Microsoft Graph Webhook/Subscription,获取多个 post 到我的 notificationUrl

Microsoft Graph Webhook/Subscription, getting multiple post to my notificationUrl

我正在尝试通过 Microsoft Graph 接收有关日历事件的推送通知

notificationURL 指向 运行ning on NodeJS

的网络服务

我的订阅有这些选项。

   {
   "changeType": "created,updated,deleted",
   "notificationUrl": "myurl",
   "resource": "users/userid/events?$filter=sensitivity%20eq%20%27Normal%27",
   "expirationDateTime":"2016-11-05T18:23:45.9356913Z",
   "clientState": "customclientstate"
}

但是,每当更改单个事件时,我都会收到来自订阅的多个 POST 调用(2~4)(所有调用都具有相同的主体)。

只有一个订阅处于活动状态,一个日历,我正在响应状态代码为 204 的请求,没有任何内容(已通过邮递员测试)。

这是个大问题,因为每当有请求时我都会更新数据库。

有人 运行 遇到过这个问题吗?我一直在寻找,没有任何结果。

任何输入将不胜感激!! =).

我也有同样的问题。在办公室日历中创建新事件时,我每次都会收到一条 ChangeType: Created 的通知,同时收到三条 ChangeType: Updated 的通知。当我在办公室取消活动时,我总是收到 3 条更新通知,最后收到 1 条 ChangeType: Deleted.

您在这里可以做的是使用 ChangeKey 验证。每次从办公室收到新通知时,您都必须从 API 请求该事件,对吧?

获取该事件后,您可以检查 event.ChangeKey 属性 是否已更改。

和网站中的etag一样。如果内容发生变化,etag 哈希也会发生变化。

因此,当您收到 Created 通知时,获取该事件的 ChangeKey 并将其存储到数组或数据库中,每当您收到通知时,请记住验证您是否已经在数组或数据库中拥有该事件的 ID,以及 ChangeKey 是否已存在已经改变。如果 ChangeKey 与上次相同,则无需在数据库中更新该事件。

这也适用于重复发生的事件,即使一次发生改变了 SeriesMaster 事件的 ChangeKey 也会改变。