【发布时间】:2020-08-08 04:29:05
【问题描述】:
我正在尝试将一些机器人逻辑转换为使用委派权限而不是应用程序权限,但我遇到了一个机器人功能问题,该功能可以从 1:1 对话发布到团队频道。用户可以要求机器人发布到频道,这很好,但是当我删除 Group.ReadWrite.All 时,我找不到不需要管理员同意的解决方法。这是当前的流程:
- 获取用户加入的团队(me/joinedTeams-获取用户加入的团队。这需要Team.ReadBasic.All。
- 获取团队中的频道 (/teams/{id}/channels)。这需要 Group.Read.All(管理员同意)
- 发布到需要 ChannelMessage.Send 的频道 (/teams/{id}/channels/{id}/messages)
因此,通过委派的非管理员权限,我可以列出用户的团队,代表他们向频道发布消息,但不能列出他们加入的团队中的频道?文档here 说您需要委托的 Group.Read.All 或 ReadWrite.All,这两者都需要管理员同意。
我是否缺少另一种方法来获取团队/频道列表以供用户交叉发布?我不想将机器人添加到频道中。我想我可以为每个频道创建/存储一个连接器列表,但这是很多额外的用户开销。挑战在于,我想将此机器人部署到拒绝向 3p 应用授予任何应用程序/管理员同意权限的组织。
【问题讨论】:
-
要使用 Graph API 列出频道,您将需要需要上述权限的团队 ID。
-
我可以使用 Team.ReadBasic 获取团队 ID,但即使使用团队 ID,如果没有管理员同意的权限,我也无法找到获取频道列表的方法。
-
您需要为此 API 提供管理员同意
标签: microsoft-teams microsoft-graph-teams