Outlook 加载项:对日历事件日期和时间更改采取措施

Outlook add-in: take action on calendar event date and time changes

我们有一个 Outlook office.js 加载项,它使用加载项命令来帮助我们的用户创建自定义日历事件。我们希望在用户更改该事件的日期或时间时执行一些操作。

使用较旧的基于 COM 的 Outlook 加载项,这是可能的,因为您可以在打开特定日历事件时自动启动加载项添加您可以连接到发送事件。

新的加载项命令模型存在问题。这是我目前的理解:

  1. 当用户在加载项任务窗格打开的情况下编辑他们的事件日期或时间时,无法通知他们进行了更改。最糟糕的是,用户稍后可以从他们的日历中打开该事件,除非他们触发了您的加载项任务窗格,否则您的加载项甚至不会 运行。用户必须手动触发 Outlook 加载项命令才能打开任务窗格,因为任务窗格无法根据附加到日历项目的某些可检测数据自动触发。

  2. 如果您连接到发送事件,您可以调用 Outlook REST API 来获取日期和时间并执行操作。不幸的是,要连接到发送事件,您需要管理员打开该功能,并且您的加载项将被拒绝进行 Office 商店验证。此外,我不确定发送事件是否适用于日历项目。好像仅限于电子邮件。

  3. 如果您想使用 Outlook 通知 REST API 来接收有关日历事件的通知 creation/modification/deletion,该通知订阅是有时间限制的,无法自动-更新通知订阅,似乎没有内置的方式将自定义参数传回通知监听器。

我希望我已经足够清楚并且我上面列出的详细信息是准确的。

当用户编辑由我们的加载项创建的其中一个日历事件的日期或时间时,对于我们如何自动执行操作,有没有人有任何建议?

这是通过 Microsoft Graph 利用 Webhook Subscriptions and Event Deltas 完成的。

只要检测到日历发生变化,webhook 就会被触发。当您收到事件时,您可以从 Microsoft Graph 请求日历增量。这将为您提供自上次轮询以来更改的所有事件。从这里您可以请求一个特定的事件,包括您之前与该事件一起存储的任何扩展数据。

至于续订,当您创建订阅时,它 returns 该订阅的 expirationDateTime。当您的订阅到期时,您可以 renew it 并收到新的到期日期:

PATCH https://graph.microsoft.com/v1.0/subscriptions/{id}

Content-Type: application/json
{
  "expirationDateTime": "2016-03-22T11:00:00.0000000Z"
}