如何在Microsoft Graph返回的用户列表中检测会议室?

时间:2016-08-20 17:53:44

标签: office365 microsoft-graph

我需要从Microsoft Graph返回用户列表。我通过/v1.0/users端点执行此操作。

e.g。

https://graph.microsoft.com/v1.0/users/

但是,它目前会返回在Exchange中设置为资源的会议室帐户。

我看不到一种简单的方法来检测这些,因此很容易从我的列表中过滤它们。

有没有人知道我可以过滤什么,或者在对象中查找它是指资源还是用户帐户?

3 个答案:

答案 0 :(得分:5)

我现在也遇到过这个问题。但是,我只是偶然发现了这个更新,看起来图API中的新People API端点可以支持区分用户和房间/资源:https://dev.office.com/blogs/people-api-available-in-microsoft-graph-v1

我刚刚在沙盒中运行了一个快速测试,确认了这个查询:

GET https://graph.microsoft.com/v1.0/me/people?$filter=personType/subclass eq 'Room'

返回我租户的房间资源列表。很好,似乎User.ReadBasic.All权限对/me/people端点来说已经足够了。

答案 1 :(得分:0)

目前,Microsoft Graph无法区分邮箱是用户还是房间。作为解决方法,我们可以使用EWS的GetRoomListsGetRooms来获取房间。以下是获取房间列表和房间供您参考的示例:

// Return all the room lists in the organization.
// This method call results in a GetRoomLists call to EWS.
EmailAddressCollection myRoomLists = service.GetRoomLists();

// Display the room lists.
foreach (EmailAddress address in myRoomLists)
{
    Console.WriteLine("Email Address: {0} Mailbox Type: {1}", address.Address, address.MailboxType);
}

private static void GetRooms(ExchangeService service)
{
     // Return all the room lists in the organization
     EmailAddressCollection myRoomLists = service.GetRoomLists();

     // Retrieve the room list that matches your criteria
     EmailAddress myAddress = new EmailAddress("building31@contoso.com");
     foreach (EmailAddress address in myRoomLists)
     {
          if (address == myAddress)
          {
               Console.WriteLine("Found {0} in room list", myAddress);
          }
     }

     // Expand the selected collection to get a list of rooms.
     System.Collections.ObjectModel.Collection<EmailAddress> myRoomAddresses = service.GetRooms(myAddress);

     // Display the individual rooms.
     foreach (EmailAddress address in myRoomAddresses)
     {
          Console.WriteLine("Email Address: {0}", address.Address);
     }
}

如果您使用Microsoft Graph支持区分邮箱类型,则可以从链接here提交反馈。

答案 2 :(得分:0)

Microsoft Graph API已经更新:你可以使用知道Fei Xue所说的GetRooms方法。 这只是一种解决方法,但它应该符合您的需求:使用https://graph.microsoft.com/beta/me/findRooms检索组织中的所有会议室。