热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么MicrosoftGraphAPI告诉我刚刚创建的事件在它们仍然存在时被“@removed”?

当我me/calendars/[calendar-id]/events使用以下有效负载执行POST时。它成功创建了事件,我收到了新事件的ID:

当我me/calendars/[calendar-id]/events使用以下有效负载执行 POST 时。它成功创建了事件,我收到了新事件的 ID:

{
"start": {
"timeZone": "America/Chicago",
"dateTime": "2022-12-23T15:00:00"
},
"end": {
"timeZone": "America/Chicago",
"dateTime": "2022-12-23T18:00:00"
},
"subject": "Please don't delete me!",
"body": {
"contentType": "text",
"content": "I'm just an event in the future, I wonder if I'll send a '@removed' notice?"
}
"isCancelled": false,
"type": "singleInstance"
}

但在那之后不久,我的 webhook 收到了该事件的信息,表明它刚刚被删除:

{
"@odata.type": "#microsoft.graph.event"
"id": [that-event-id]
"@removed": {
"reason": "deleted"
}
}

当我去查看我的 Outlook 日历时,该事件似乎仍然存在,如果我得到它,它isCancelled是错误的。

这只发生在一年多以前或两年后创建的事件中。

回答


我们自己被同样的问题困扰了大约一个月,我想我昨天终于能够追踪到这个问题了。

我们使用events delta API而不是 webhook API,但显然相同的错误会影响两者......微软的某个人真的需要解决这个问题,这太疯狂了。

回答

对事件增量请求最初设置的startDateTime..endDateTime窗口外事件的更改始终显示为增量。@removed

更多细节

事件增量 API 捕获初始startDateTime..endDateTime窗口,然后将其用于所有带有$deltatoken. 如果您的 delta 查询使用$select等,这也会意外地咬您,因为在您创建新的 delta 之前对其进行的更改不会应用(通过不传递初始值$deltatoken

这个细节导致我们为自己设置了一个定时炸弹。我们最初的窗口有点宽,但突然开始收到广泛的事件报告,这些事件显示为已取消,但绝对没有从日历中删除。

这是一个错误

拜托,来自微软的人承认这是一个真正的问题。在离散指定的时间窗口之外进行的更改不应影响它,这使得构建我们信任的集成变得困难。






推荐阅读
author-avatar
小子少耍酷10
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有