[英]Microsoft Graph API: Teams App - Problem with "List members of a channel" using "team id"
[英]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.groupId
和Context.channelId
)。
但是,我嘗試的任何內容似乎都不適用於私人團隊頻道。
為私有團隊頻道返回的上下文對象包含teamId
和channelId
,但它們是相等的,並且對兩個 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。 然后我請求每個團隊的當前私人頻道的成員:我預計所有團隊都會出錯,但一個 - 頻道真正所屬的團隊。 但是,我為每個請求都有成員! 這很令人困惑。
/me/joinedTeams
/teams/{id}/channels/{channel_id}/members
用於在 1. 中收到的每個團隊以及從上下文中收到的channelId
。更新 2 16.11:
這種冗長的方式最終讓我獲得了頻道成員:
/me/joinedTeams
/teams/{id}/channels
為每個團隊收到的 1。id
與channelId
匹配的頻道。/teams/{id}/channels/{channel_id}/members
用於在 3 中找到的頻道。對於這么簡單的事情,看起來需要很多努力。 🙄
這種冗長的方式最終讓我得到了頻道成員列表。 僅適用於私人團隊頻道,因為我們在那里的上下文中沒有組 ID/團隊 ID。 根據@Prasad-MSFT 對原始帖子的評論,在撰寫本文時沒有其他方法。
/me/joinedTeams
/teams/{id}/channels
。Context
中的channelId
匹配的通道。/teams/{id}/channels/{channel_id}/members
。這里有一個警告:如果您創建一個私人團隊頻道並立即將您的選項卡添加到其中,則 API 可能不會返回您的新頻道。 如果上述過程列表中的 #3 失敗,我會要求用戶在幾分鍾后重試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.