2017-10-20 87 views
2

從組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 
     } 
    ] 
} 

如何在組應用一組看起來:

[Groups App on iOS]

回答

1

這可能有助於打破對象層次這裏:

  1. Group - 父母交談資源的集合
  2. Conversation - 父線程資源集合
  3. Thread - 家長對發佈資源的集合
  4. 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。當然

+0

當然,這是可能的,但這會讓客戶變慢。如果我有10 000個用戶在每個負載上遍歷線程,該怎麼辦? –

+0

有效負載的大小可能會產生影響,但您可以通過選擇必要的最小數量的字段來緩解這一點。如果用戶想深入研究,您可以隨時撥打其他詳細信息。另一個選項(我使用了很多)將結果緩存在服務器上很短的時間。這消除了500個對您的後端的同時請求變成對Graph的500個同時調用。擁有10-30秒的緩存可以對性能產生巨大影響。 –

+0

是的,但我仍然會說它有點令人驚訝,你沒有得到任何獨特的用戶參考。至少一封電子郵件將不勝感激。 仍然需要緩存所有內容,長期使用webhooks來更新緩存,以便能夠以任何有意義的方式使用Graph API。 –

相關問題