Exchange 日历,创建约会和唯一 ID

Exchange Calendar, creating appointments and unique ids

我正在使用 ews-java-api 并且有很多问题

我创建约会并监听其他地方创建的约会。

我的问题是我用

创建约会
new Appointment(exchangeService).save(notificationMode)

我还将约会详细信息(包括 uniqueId,我们称之为 x)保存到我的数据库中

我看到约会出现在 exchange 没问题,然后我看到一个通知,它已被自动接受(我可以关闭房间的自动接受,但仍然遇到下面同样的问题。

然后我看到我的 exchange 订阅者开始启动,因为它从 exchange 收到了一个新约会已创建的通知事件。我好像每次都得到4个事件,一个created事件,两个modified事件和move事件。

问题是这些事件中的每一个都有一个 y 而不是我期望的 x 的 uniqueId。

这意味着我无法检查这是否是我已经创建的约会。

我从未像预期的那样收到具有原始 uniqueId x 的事件。我知道唯一 ID 可以更改,这很糟糕,但似乎没有任何其他字段可以使用。

有什么想法可以解决/解决这个问题吗?

项目的给定 ID 将在项目所在的活动目录发生变化时发生变化。听起来您的自动接受正在移动该项目。我没有测试过这种情况。

如果您执行简单的 .save(),您将在下一个 push/pull 时从交换中获得创建和修改事件。似乎没有办法阻止这种情况。它们应该与您从保存中获得的 ID 相同。您只需要检查您是否已经拥有要创建的项目。对于修改,我不能代表微软说明我们为什么要修改,但它应该与创建完全相同。

然后当项目更改目录时,您将获得一个修改和一个移动事件。这 2 个项目的 ID 将与您在原始保存期间收到的 ID 不同。 ItemEvent 有一个 oldItemId,我相信你可以使用。也可以从这些不会改变的 id 中解析出 GUID,但我认为没有必要这样做。最好的方法可能是使用 OldItemId 并处理移动事件。