[英]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.