我试图通过微软图表接收日历事件的推送通知
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测试)。
这是一个巨大的问题,因为我更新数据库每当请求进来。
有人遇到过这个问题吗?我到处都找遍了,没有结果。
任何输入将不胜感激!!=).
1条答案
按热度按时间3duebb1j1#
我也有同样的问题。当在办公日历中创建新事件时,我每次都会收到一个
ChangeType: Created
通知,同时收到三个ChangeType: Updated
通知。当我在办公室取消活动时,我总是收到3个更新通知,最后是1个ChangeType: Deleted
。在这里,您可以使用ChangeKey验证。每次你从办公室收到新的通知,你都必须从API请求该事件,对吗?
一旦你获取了那个事件,你就可以检查event.ChangeKey属性是否改变了。
这和网站中的etag是一样的。如果内容发生变化,etag哈希也会发生变化。
因此,当您收到
Created
通知时,获取该事件的ChangeKey并将其存储到数组或数据库中,每当您收到通知时,请记住验证您是否已经在数组或数据库中拥有该事件的ID,以及ChangeKey是否已更改。如果ChangeKey与上次相同,则不需要在数据库中更新该事件。这也适用于循环事件,即使一个事件发生了更改,SeriesMaster事件的ChangeKey也会更改。