使用RoomLists获取GetUserAvailability

时间:2018-01-13 12:38:06

标签: c# exchangewebservices

编辑1:' ...无法在商店中找到'消息实际上是房间的权限问题。必须授予用户审阅者权限。

编辑2:CalendarEvents集合为空,因为它似乎只包含繁忙信息。如果我在我要求建议的时候在一个房间里开会,那就会被退回。

我尝试使用Exchange 2010 Web服务(EWS)的Room Finder功能。

我有两个问题:

  1. MS sample给您的印象是您即将获得该信息。图片显示了房间的请求,但代码没有...这应该很容易添加一个类型为Room或RoomList的新参加者。
  2. 在询问免费的忙碌信息时,向代码添加房间不会产生任何结果。 CalendarEvents集合为空。

    foreach (AttendeeAvailability availability in results.AttendeesAvailability)
    {
        Console.WriteLine("Availability information for {0}:\n", attendees[i].SmtpAddress);
    
        foreach (CalendarEvent calEvent in availability.CalendarEvents)
        {
            Console.WriteLine("\tBusy from {0} to {1} \n", calEvent.StartTime.ToString(), calEvent.EndTime.ToString());
        }
    
        i++;
    }
    
  3. 此外,要求特定房间的预约:

    CalendarView calendarView = new CalendarView(DateTime.Now, DateTime.Now.AddHours(8));
           FolderId folderID = new FolderId(WellKnownFolderName.Calendar, roomAddress.Address);
           FindItemsResults roomAppts = service.FindAppointments(folderID, calendarView);
    

    给我一​​个错误: '在商店'

    中找不到指定的文件夹

    我不知道这是否属于下方的许可问题......

    我正在针对Office 365帐户测试此代码。如果我使用Outlook(Mac版)我无法看到房间,这似乎指出了许可问题。但是使用Outlook Web,我可以看到房间并保存日历事件。

    很奇怪。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

  
    

给我一​​个错误:'在商店中找不到指定的文件夹'

  

此错误表示您至少没有相关文件夹的审阅者权限。

GetUserAvailblity与使用FindAppointments不同,因为它使用邮箱发布的FreeBusy信息。因此,它将使用FreeBusy权限https://support.microsoft.com/en-au/help/2865291/how-to-set-free-busy-permissions-in-exchange-management-shell-in-offic,其中最严格的(FreeBusyOnly)将仅返回可用性数据(例如,空闲或忙碌)。要返回CalendarEvents,至少需要LimitedDetails。

开始的地方是确保您在相关日历上至少拥有LimitedDetails。另一件事是启用跟踪https://msdn.microsoft.com/en-us/library/office/dd633676(v=exchg.80).aspx并查看正在返回的原始数据(例如,如果它实际上只返回可用性信息,则会显示)。