我需要从Microsoft Graph返回用户列表。我通过/v1.0/users端点执行此操作。
e.g。
https://graph.microsoft.com/v1.0/users/
但是,它目前会返回在Exchange中设置为资源的会议室帐户。
我看不到一种简单的方法来检测这些,因此很容易从我的列表中过滤它们。
有没有人知道我可以过滤什么,或者在对象中查找它是指资源还是用户帐户?
答案 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的GetRoomLists和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支持区分邮箱类型,则可以从链接here提交反馈。
答案 2 :(得分:0)
Microsoft Graph API已经更新:你可以使用知道Fei Xue所说的GetRooms方法。
这只是一种解决方法,但它应该符合您的需求:使用https://graph.microsoft.com/beta/me/findRooms
检索组织中的所有会议室。