我试图通过微软图表接收日历事件的推送通知
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,没有任何内容(使用邮递员测试)。
这是一个巨大的问题,因为我会在请求进入时更新数据库。
有没有人遇到过这个问题?我一直在寻找,没有任何结果。
任何输入将不胜感激!! =)。
答案 0 :(得分:2)
我有同样的问题。在办公室日历中创建新活动时,我每次都会收到ChangeType: Created
的通知,同时会收到ChangeType: Updated
的三个通知。当我在办公室取消活动时,我总是得到3次更新通知,最后是1次ChangeType: Deleted
。
您可以在此处执行的操作是使用ChangeKey验证。每当您从办公室收到新通知时,您都必须从API请求该事件,对吗?
获取该事件后,您可以检查event.ChangeKey属性是否已更改。
与网站上的etag相同。如果内容发生变化,则etag哈希值会发生变化。
因此,当您收到Created
通知时,请获取该事件的ChangeKey并将其存储到数组或数据库中,并且每当收到通知时,请记住验证您是否已将该事件的ID包含在数组或数据库中,以及更改时是否更改了KeyKey 。如果ChangeKey与上次相同,则无需在db。
这也适用于重复发生的事件,即使一次发生更改,SeriesMaster事件的ChangeKey也会发生变化。