我试图通过微软图形接收有关日历事件的推送通知

notificationURL指向在NodeJS上运行的Web服务

我进行的订阅具有这些选项。

   {
   "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)(它们都具有相同的主体)。

只有一个订阅处于 Activity 状态,一个日历,并且我用状态代码204响应请求,但没有任何内容(已通过 postman 测试)。

这是一个巨大的问题,因为无论何时收到请求,我都会更新数据库。

有没有人遇到这个问题?香港专业教育学院一直到处寻找没有任何结果。

任何投入将不胜感激!! =)。

最佳答案

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

您可以在此处使用ChangeKey验证。每当您从办公室收到新通知时,都必须通过API请求该事件,对吗?

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

与网站中的etag相同。如果内容更改,则etag哈希更改。

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

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

关于node.js - Microsoft Graph Webhook/Subscription,将多个帖子发送到我的notificationUrl,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40412261/

10-11 18:11