Teams用户加入Azure Communication Services聊天遇权限问题求助
是否支持将Teams用户添加至ACS聊天?
是的,Azure Communication Services(ACS)完全支持将Teams用户添加到ACS创建的聊天线程中,这是官方支持的跨身份聊天场景。
解决403权限错误的检查项
针对你遇到的Permissions check failed错误,需要从以下几个方面排查:
验证AAD应用的权限配置
用于兑换Teams令牌为ACS身份令牌的AAD应用,必须配置应用权限CommunicationIdentityServer.ManageTeamsIdentity,并且需要Azure AD管理员完成权限同意。注意这个是应用权限,不是委托权限,因为兑换操作通常由后端服务执行。确认ACS客户端令牌的权限范围
调用chat_client_thread.add_participants时使用的ACS令牌,需要包含chat相关的权限范围。如果是后端服务使用应用身份获取的令牌,权限范围应为https://communication.azure.com/.default;如果是用户委托身份,需要包含chat.threadmember.add等具体权限。可以通过解码令牌查看scp或roles声明,确认权限是否正确。确保MicrosoftTeamsUserIdentifier的正确性
创建MicrosoftTeamsUserIdentifier时,必须正确传入Teams用户的AAD OID作为user_id,并指定正确的云环境(比如全球版Teams用PublicCloud)。示例代码(C#):var teamsUser = new MicrosoftTeamsUserIdentifier( userOid: "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", cloud: MicrosoftTeamsUserCloud.PublicCloud );检查聊天线程创建者的权限
如果聊天线程是由ACS用户身份创建的,该身份默认拥有管理线程参与者的权限;如果线程是通过其他方式创建的(比如Teams侧发起),需要确保当前执行add_participants的身份具备修改线程参与者的权限。
额外提示
如果兑换令牌后得到的ACS身份已正确关联到Teams用户,那么添加参与者时ACS会自动映射Teams身份到ACS身份,无需额外创建CommunicationUserIdentifier(这也是你用AAD OID创建该类型报错的原因——Teams用户必须用MicrosoftTeamsUserIdentifier)。
内容的提问来源于stack exchange,提问作者David Just

