作者:小子少耍酷10 | 来源:互联网 | 2023-08-07 12:32
当我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
)
这个细节导致我们为自己设置了一个定时炸弹。我们最初的窗口有点宽,但突然开始收到广泛的事件报告,这些事件显示为已取消,但绝对没有从日历中删除。
这是一个错误
拜托,来自微软的人承认这是一个真正的问题。在离散指定的时间窗口之外进行的更改不应影响它,这使得构建我们信任的集成变得困难。