如何在Microsoft Graph Groups API中获得用户参考?
从组API和/Conversations
终点即可获得对话的列表,并在组应用程序看,当你可以看到图像的用户。如何在Microsoft Graph Groups API中获得用户参考?
但数据从API返回的没有任何利好数据使用用户查找。
我至少会想到一个电子邮件地址,而不是仅仅是远离唯一的名称。有没有一种有效的方式让用户不需要遍历所有的线程和文章?从API
数据:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#groups('{id}')/threads",
"value": [{
"id": "{id}",
"topic": "Test main thread",
"hasAttachments": false,
"lastDeliveredDateTime": "2017-10-20T11:35:04Z",
"uniqueSenders": [
"Jonas Stensved"
],
"preview": "{message preview content}",
"isLocked": false
},
{
"id": "{id}",
"topic": "The new Test group is ready",
"hasAttachments": false,
"lastDeliveredDateTime": "2017-10-13T10:33:03Z",
"uniqueSenders": [
"Test"
],
"preview": "{message preview content}",
"isLocked": false
}
]
}
如何在组应用一组看起来:
[]
你可以得到小组成员名单,并在它们之间迭代。根据组的大小,这可能需要分页。您可以在文档中找到更多的信息:https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/group
我希望这有助于。
这可能有助于打破对象层次这里:
-
Group
- 父母交谈资源的集合 -
Conversation
- 父线程资源集合 -
Thread
- 家长对发布资源的集合 -
Post
- 用户发送给本集团的实际内容
要查看哪个User
资源映射到给定的Thread
,您需要向下钻取另一个级别以查找线程中包含的Post
资源。
您可以使用$expand=posts
参数扩大Posts
集合做到这一点。您也可以($select=from)
$expand
,因此您只能返回您需要映射回User
资源的属性。
所以这个查询:
/v1.0/groups/{group-id}/threads?$expand=posts($select=from)
将为您提供这样的Thread
结果:
{
"id": "{thread-id}",
"topic": "New Training Plans",
"hasAttachments": false,
"lastDeliveredDateTime": "2017-07-31T18:59:05Z",
"uniqueSenders": [
"HR Taskforce"
],
"preview": "{thread-preview}",
"isLocked": false,
"[email protected]": "https://graph.microsoft.com/v1.0/$metadata#groups('{group-id}')/threads('{thread-id}')/posts(from)",
"posts": [{
"@odata.etag": "W/\"CwAAABYAAADE9kXbLjqkSJUGeLzs6eumAAAAAA0/\"",
"id": "{post-id}",
"changeKey": "CwAAABYAAADE9kXbLjqkSJUGeLzs6eumAAAAAA0/",
"from": {
"emailAddress": {
"name": "HR Taskforce",
"address": "[email protected]"
}
}
}]
}
你可以试试这个自己使用this Graph Explorer example。当然
当然,这是可能的,但这会让客户变慢。如果我有10 000个用户在每个负载上遍历线程,该怎么办? –
有效负载的大小可能会产生影响,但您可以通过选择必要的最小数量的字段来缓解这一点。如果用户想深入研究,您可以随时拨打其他详细信息。另一个选项(我使用了很多)将结果缓存在服务器上很短的时间。这消除了500个对您的后端的同时请求变成对Graph的500个同时调用。拥有10-30秒的缓存可以对性能产生巨大影响。 –
是的,但我仍然会说它有点令人惊讶,你没有得到任何独特的用户参考。至少一封电子邮件将不胜感激。 仍然需要缓存所有内容,长期使用webhooks来更新缓存,以便能够以任何有意义的方式使用Graph API。 –
是,问题更多的是对如何做到这一点的一个好办法。没有找到解决方法。 –