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

How can I detect a meeting room in list of users returned from the Microsoft Graph?

我需要 return 来自 Microsoft Graph 的用户列表。我正在通过 /v1.0/users 端点执行此操作。

例如

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

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

我找不到一种简单的方法来检测这些内容,从而轻松地将它们从我的列表中过滤掉。

有谁知道我可以根据什么进行筛选,或者在 object 中查找哪些内容可以表明它是资源还是用户帐户?

目前Microsoft Graph无法区分邮箱是用户还是房间。作为解决方法,我们可以使用 EWS 的 GetRoomLists and GetRooms 获取房间。下面是一个获取房间列表和房间的例子,供大家参考:

// 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支持区分邮箱类型,可以提交反馈link here.

我 运行 这个问题也有一段时间了。然而,我只是偶然发现了这个更新,它看起来像图中新的 People API 端点 API 可以支持区分用户和 rooms/resources: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'

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

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