簡體   English   中英

在 Microsoft Teams 中使用 Microsoft Graph API 列出私人團隊頻道成員

[英]List private team channel members with Microsoft Graph API in Microsoft Teams

我的 Microsoft Teams 應用程序用作選項卡,需要獲取聊天成員頻道成員的列表,具體取決於它的安裝位置。

/chats/{chat-id}/members

/teams/{team-id}/channels/{channel-id}/members

為了使用 API,我從客戶端 SDK 庫中獲取Context對象以獲取 API 所需的標識符。 它適用於群聊和一對一(使用Context.chatId )和公共團隊頻道(使用Context.groupIdContext.channelId )。

但是,我嘗試的任何內容似乎都不適用於私人團隊頻道。

為私有團隊頻道返回的上下文對象包含teamIdchannelId ,但它們是相等的,並且對兩個 id 使用一個值自然是行不通的。 以下是 SDK 庫 1.11.0(最新版本)為私人團隊頻道返回的示例:

{
  "locale": "en-us",
  "theme": "default",
  "subEntityId": "",
  "isFullScreen": false,
  "sessionId": "5194fd2b-5c9a-16a7-7411-94ddabffffff",
  "chatId": "",
  "meetingId": "",
  "parentMessageId": "",
  "hostClientType": "desktop",
  "tenantSKU": "unknown",
  "jsonTabUrl": "microsoft-teams-json-tab.azurewebsites.net",
  "userLicenseType": "Unknown",
  "appSessionId": "7503c11c-d524-409c-b58b-004810ffffff",
  "appLaunchId": "c736c663-cc0b-47c3-8824-ba56b7ffffff",
  "isMultiWindow": false,
  "appIconPosition": 79,
  "userClickTime": 1637007245298,
  "sourceOrigin": null,
  "userFileOpenPreference": "inline",
  "osLocaleInfo": {
    "platform": "macos",
    "regionalFormat": "en-gb",
    "longDate": "d MMMM y",
    "shortDate": "dd/MM/y",
    "longTime": "HH:mm:ss z",
    "shortTime": "HH:mm"
  },
  "frameContext": "settings",
  "isTeamArchived": false,
  "teamType": 0,
  "userTeamRole": 0,
  "channelRelativeUrl": "/sites/ffffff/Shared Documents/Devel",
  "channelId": "19:0bc109b412d9448bb6b1b3d4d485700b@thread.tacv2",
  "channelName": "Devel",
  "channelType": "Private",
  "defaultOneNoteSectionId": "",
  "teamId": "19:0bc109b412d9448bb6b1b3d4d485700b@thread.tacv2",
  "teamName": "Devel",
  "teamSiteUrl": "https://ffffff.sharepoint.com/sites/worldrtech-Devel",
  "teamSiteDomain": "ffffff.sharepoint.com",
  "teamSitePath": "/sites/ffffff",
  "teamTemplateId": "",
  "teamSiteId": "",
  "ringId": "general",
  "tid": "d158bb9f-f90c-422d-9d0d-0040efffffff",
  "loginHint": "ffffff@ffffff.uk",
  "upn": "nox@worldr.co.uk",
  "userPrincipalName": "ffffff@ffffff.uk",
  "userObjectId": "fc5a4a6d-60e2-4370-83bd-aab1baffffff"
}

你可以在上面看到兩者是相等的:

"channelId": "19:0bc109b412d9448bb6b1b3d4d485700b@thread.tacv2"
"teamId": "19:0bc109b412d9448bb6b1b3d4d485700b@thread.tacv2"

我想知道,這是否是預期的行為,還是那里有什么問題......🤔根據@Prasad-MSFT 的評論,這是私人頻道的正常行為。

有一個答案建議首先列出用戶加入的所有團隊 但是,我不知道如何將此信息連接到上面顯示的上下文數據。

有沒有辦法列出私人團隊頻道的成員? 我錯過了什么?

更新 1 16.11

我做了一個實驗,但結果讓我很困惑。 我遵循了首先獲得用戶所有團隊的想法。 這讓我獲得了用戶所屬的所有團隊的 ID。 然后我請求每個團隊的當前私人頻道的成員:我預計所有團隊都會出錯,但一個 - 頻道真正所屬的團隊。 但是,我為每個請求都有成員! 這很令人困惑。

  1. /me/joinedTeams
  2. /teams/{id}/channels/{channel_id}/members用於在 1. 中收到的每個團隊以及從上下文中收到的channelId
  3. 每次調用都會返回一些成員,這是我沒想到的......

更新 2 16.11:

這種冗長的方式最終讓我獲得了頻道成員:

  1. /me/joinedTeams
  2. /teams/{id}/channels為每個團隊收到的 1。
  3. 在 2 中收到的頻道中,從我的上下文中找到idchannelId匹配的頻道。
  4. /teams/{id}/channels/{channel_id}/members用於在 3 中找到的頻道。

對於這么簡單的事情,看起來需要很多努力。 🙄

這種冗長的方式最終讓我得到了頻道成員列表。 僅適用於私人團隊頻道,因為我們在那里的上下文中沒有組 ID/團隊 ID。 根據@Prasad-MSFT 對原始帖子的評論,在撰寫本文時沒有其他方法。

  1. 獲取/me/joinedTeams
  2. 為 #1 中收到的每個團隊獲取/teams/{id}/channels
  3. 在#2 中接收到的通道中,找到 id 與Context中的channelId匹配的通道。
  4. 獲取在 #3 中找到的頻道的/teams/{id}/channels/{channel_id}/members

這里有一個警告:如果您創建一個私人團隊頻道並立即將您的選項卡添加到其中,則 API 可能不會返回您的新頻道。 如果上述過程列表中的 #3 失敗,我會要求用戶在幾分鍾后重試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM