我试图通过微软图形接收有关日历事件的推送通知
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/