NodeJS Microsoft Graph Webhook/Subscription,获取到我的notificationUrl的多个帖子

5w9g7ksd  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(112)

我试图通过微软图表接收日历事件的推送通知
notificationURL指向运行在NodeJS上的webservice
我的订阅有这些选项。

{
   "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响应请求,而没有任何内容(用Postman测试)。
这是一个巨大的问题,因为我更新数据库每当请求进来。
有人遇到过这个问题吗?我到处都找遍了,没有结果。
任何输入将不胜感激!!=).

3duebb1j

3duebb1j1#

我也有同样的问题。当在办公日历中创建新事件时,我每次都会收到一个ChangeType: Created通知,同时收到三个ChangeType: Updated通知。当我在办公室取消活动时,我总是收到3个更新通知,最后是1个ChangeType: Deleted
在这里,您可以使用ChangeKey验证。每次你从办公室收到新的通知,你都必须从API请求该事件,对吗?
一旦你获取了那个事件,你就可以检查event.ChangeKey属性是否改变了。
这和网站中的etag是一样的。如果内容发生变化,etag哈希也会发生变化。
因此,当您收到Created通知时,获取该事件的ChangeKey并将其存储到数组或数据库中,每当您收到通知时,请记住验证您是否已经在数组或数据库中拥有该事件的ID,以及ChangeKey是否已更改。如果ChangeKey与上次相同,则不需要在数据库中更新该事件。
这也适用于循环事件,即使一个事件发生了更改,SeriesMaster事件的ChangeKey也会更改。

相关问题