2016-11-03 29 views
1

我试着通过微软图形接收日历事件推送通知微软图形网络挂接/认购,越来越多的帖子到我notificationUrl

的notificationURL点到web服务这是对的NodeJS

订阅我已经有一台运行这些选项。然而

{ 
    "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没有任何内容(用邮递员测试)的请求。

其因为即时通讯更新DB一个巨大的问题,每当请求的用武之地。

有没有人碰到这个问题?我一直在寻找没有任何结果。

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

+0

我无法重现您所看到的问题。您是否收到关于创建或更新事件的多个通知?你可以通过查看subscriptionId和changeType属性来检查通知有效载荷是否相同?注意,删除一个事件触发2个通知,一个更新,一个被删除。 您可能创建了2个或更多共享相同notificationUrl的订阅。 –

+0

多个事件进来有相同的订阅ID。并且我在创建和更新时都收到多个通知。我认为这是两个订阅具有相同的notificationURL的情况,但删除所有订阅并确保我没有收到任何通知后,我再次尝试使用单个订阅来获取多个通知 –

回答

0

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

你可以在这里做的是使用ChangeKey验证。每当你从办公室得到新的通知,你必须从API请求这个事件,对吧?

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

它与网站中的etag一样。如果内容改变,etag哈希值会改变。

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

这也适用于周期性事件,如果偶发事件发生了改变,SeriesMaster事件的ChangeKey也会发生变化。