Microsoft graph api 在我创建/更新/删除日历时收到两次outlook rest推送通知

Microsoft graph api 在我创建/更新/删除日历时收到两次outlook rest推送通知,microsoft-graph-api,outlook-restapi,Microsoft Graph Api,Outlook Restapi,我有一个要求,无论何时创建/更新/删除任何日历项目,我都需要得到通知。我按照计划订阅日历通知 我已成功订阅日历活动。但每当我创建新日历时,我都会收到两次通知。 下面是通知请求数据 第一次通知请求数据: { “价值”:[{ “@odata.type”:“#Microsoft.OutlookServices.Notification”, “Id”:空, “订阅ID”:“OTA0N0MwQj==”, “SubscriptionExpirationDateTime”:“2017-09-27T05:30:

我有一个要求,无论何时创建/更新/删除任何日历项目,我都需要得到通知。我按照计划订阅日历通知

我已成功订阅日历活动。但每当我创建新日历时,我都会收到两次通知。 下面是通知请求数据

第一次通知请求数据:

{
“价值”:[{
“@odata.type”:“#Microsoft.OutlookServices.Notification”,
“Id”:空,
“订阅ID”:“OTA0N0MwQj==”,
“SubscriptionExpirationDateTime”:“2017-09-27T05:30:49.6163119Z”,
“序列号”:1,
“变更类型”:“已创建”,
“资源”:https://outlook.office.com/api/v2.0/Users('1520ed5a')/Events('AAMkADAzNDUxODY=')”,
“资源数据”:{
“@odata.type”:“#Microsoft.OutlookServices.Event”,
“@odata.id”:”https://outlook.office.com/api/v2.0/Users('1520ed5a')/Events('AAMkADAzNDUxODY=')”,
“@odata.etag”:“W/\”DwAAABYAAAB4h4N+ELBRSbQKq1A05YT8AADcUdIx\”,
“Id”:“AAMkADAzNDUxOD=”
}
}]
}
第二个通知请求数据:

{
“价值”:[{
“@odata.type”:“#Microsoft.OutlookServices.Notification”,
“Id”:空,
“订阅ID”:“OTA0N0MwQj==”,
“SubscriptionExpirationDateTime”:“2017-09-27T05:30:49.6163119Z”,
“序列号”:2,
“变更类型”:“已更新”,
“资源”:https://outlook.office.com/api/v2.0/Users('1520ed5a')/Events('AAMkADAzNDUxODY=')”,
“资源数据”:{
“@odata.type”:“#Microsoft.OutlookServices.Event”,
“@odata.id”:”https://outlook.office.com/api/v2.0/Users('1520ed5a')/Events('AAMkADAzNDUxODY=')”,
“@odata.etag”:“DwAAABYAAAB4h4N+elbrsbqkq1a05yt8aadcudy\”,
“Id”:“AAMkADAzNDUxOD=”
}
}]
}
如果观察两个请求数据,则在第一个请求数据中,它将显示
ChangeType
Created
,在第二个请求数据中,它将
ChangeType
Updated

更新或删除日历时的相同行为(收到两次通知)


知道如何摆脱第二次通知吗?

这不是预期的行为,我自己也无法复制它。我最好的猜测是您有其他系统监控日历并自动编辑日历事件。这可以解释为什么您在创建
后几乎立即得到更新行动


在同步时,建议使用Microsoft Graph API的功能。当您收到通知时,您只需拉取
/delta
,并仅返回已更改的记录。如果您收到错误通知,这将消除第二次同步后的重复处理
/delta
将为空。如果您需要更改,但不需要更改您关心的属性,则可以放弃结果并消除对数据存储的任何不必要的写入。

为什么要删除它?在创建它之后,似乎有什么东西正在立即更新它。我想删除它,因为一旦收到在推送通知中,我会将日历与我们的数据库日历对象同步。如果我收到两次通知,则此同步逻辑将执行两次,这是多余的。正如您所说,将假定在我们创建日历后立即有内容更新日历。但我会收到两次通知,即使在编辑或删除日历时也是如此。我我只是尝试在这里确认一下,但我看不到这种行为。因此,日历中的任何更新内容似乎都是特定于您的设置的。您的同步逻辑应该以不同的方式处理创建和更新,对吗?因此,这不应该引起问题,因为您应该首先在本地存储中创建一个记录,然后再更新它?这是一个问题仅对与会者显示两次。如果不添加任何与会者,则只会发出一次通知。
/delta
是否支持
$filter
查询参数?支持对
/beta
端点中的用户和组进行筛选,但不支持日历。在日历上,它将报告对该日历的任何更改。