Microsoft Graph:获取日历事件响应的更新消息时出现ErrorItemNotFound

时间:2020-04-15 13:19:21

标签: microsoft-graph-api microsoft-graph-mail microsoft-graph-calendar

我们的租户上有一个服务帐户,该帐户具有一个Outlook邮箱和一个日历。
此服务帐户在其日历中创建事件,并通过Microsoft Graph向邀请发送邀请给与会者。
/ messages的服务帐户subscribes更新其自己邮箱的通知:

{
   "changeType": "updated",
   "notificationUrl": "https://webhook.azurewebsites.net/api/send/myNotifyClient",
   "resource": "me/messages",
   "expirationDateTime":"2016-11-20T18:23:45.9356913Z",
   "clientState": "secretClientValue",
   "latestSupportedTlsVersion": "v1_2"
}

如果其中一位与会者对新的会议日期建议做出了暂时性答复,我们将收到服务帐户收到的电子邮件通知,其中包含答复和建议日期:

{
  ...,
  "resourceData": {
    "@odata.type": "#Microsoft.Graph.Message",
    "@odata.id": "Users/{service_account_id}/Messages/AAMkAGFlY2E0ZWM4LTA3OGEtNDY2OS04ZDA0LTA4YTA5OWIxMTcxMQBGAAAAAADNyiJ8h61FRpmwpx9BAnv-BwDH8bMHMKLFSakCYHIeBUnvAAAAAAEMAADH8bMHMKLFSakCYHIeBUnvAADz_ctmAAA="
  }
}

我们的目标是获取此消息以及响应/日期信息。为此,我们进行GET /me/messages/{message_id} requestmessage_id是通过订阅通知提供给我们的。

但是,尝试获取订阅通知提供的消息会导致ErrorItemNotFound。在查看服务帐户的消息历史记录时,我们注意到最后一条消息的ID与订阅的ID匹配,除了一个字母之外:订阅中的字母比历史记录中找到的最后一条消息的字母小1。例如,订阅给出的message_id等于...hAAA=,历史记录的最后一条消息给出...iAAA=

  1. 我们该如何解决?我认为这是一个新问题,我不相信我过去曾通过类似的实现方式遇到过这个问题。
  2. 是否存在另一种较为宽松的方式来知道对事件做出临时响应的用户建议的日期?

那太好了,因为当前我们必须发出一些真的很奇怪 / me / messages GET请求以获取我们想要的信息:

me/messages/{message_id}?$select=SingleValueExtendedProperties&$expand=microsoft.graph.eventMessage/event($select=id),singleValueExtendedProperties($filter%3Did+eq+'SystemTime+%7B00062002-0000-0000-C000-000000000046%7D+Id+0x8250'+or+id+eq+'SystemTime+%7B00062002-0000-0000-C000-000000000046%7D+Id+0x8251'+or+id+eq+'SystemTime+%7B6ED8DA90-450B-101B-98DA-00AA003F1305%7D+Id+0x00000009')

修改 我已将changeType更改为“ created”。该实现目前似乎可以正常工作。我将保持更新状态,因为行为似乎仍然不稳定。

0 个答案:

没有答案