通过图谱API的Exchange Web服务托管API中的ICalUid查找/过滤日历

时间:2017-11-12 14:54:35

标签: c# office365 exchangewebservices

在Graph API客户端中,有一个Filter扩展方法,可以在构建请求时使用,也可用于ICalUid过滤。如何仅通过其ICalUid在EWS托管API中检索约会?

[更新#1 - 11.13]

正如提到的图谱API可能已经建议的那样,我需要使用此方法来使用Office 365,而不一定是旧的Exchange版本。这将是解决方案的“一个很好的”功能。 我真正需要的是会议独有的ID,但在所有日历中都是相同的,并且也适用于孤立和异常事件。看起来,ICalUid在Graph API中满足此标准,但在EWS中不满足,因为EWS在每次出现时都返回相同的ICalUid。

[更新#2 - 11.13]

看起来我需要的属性是PidLidGlobalObjectId。我找到了几篇帖子,如何将其作为ExtendedProperty检索,并且我可以在使用CalendarFolder.FindAppointmentsExchangeService.BindToItems时检索它。但是我无法将此属性用作过滤器。我知道我必须将这个二进制属性转换为Base64。

var s = Convert.ToBase64String(searchval);
var sf = new SearchFilter.IsEqualTo(PidLidGlobalObjectId, s);
var fi = new FolderId(WellKnownFolderName.Calendar, new Mailbox(MailboxToAccess));
var cf = await CalendarFolder.Bind(service, fi);
var res = await cf.FindItems(sf, new ItemView(1)); // yields empty
没有SearchFilter的

FindItems会返回所有Single和RecurringMaster项。因此,这相当于Graph API的events集合。但我需要过滤CalendarView,因为只有在系列出现和异常是单个对象的情况下,此属性才有意义。在Graph API中,calendarview是一个可以使用OData查询过滤的单独集合。

有没有办法实现同样的目的:使用SearcFilter但在CalendarView上应用?

(注意:我只是通过使用权限来访问没有模拟的外国日历。)

谢谢!

0 个答案:

没有答案