向会议成员发送Adaptive Card时遇“Invalid user identity in provided tenant”错误
解决Teams机器人向会议成员发送Adaptive Card时的"Invalid user identity in provided tenant"错误
检查应用权限配置
确认机器人的权限包含ChannelMessage.Send.Group和ChatMessage.Send,特别是向非创建者成员发送时,这些权限必须正确配置并完成管理员同意。在Azure AD应用注册的API权限中添加Microsoft Graph的对应权限,确保管理员已授予同意(应用权限需管理员操作)。验证成员租户一致性
即使member对象显示有tenantId,也要确认成员的tenantId和机器人所在租户ID完全匹配。如果会议包含外部租户成员,机器人默认无法跨租户发送消息,需先配置跨租户访问。可以在代码中添加校验跳过异租户成员:const botTenantId = process.env.M365_TENANT_ID; // 从环境变量取机器人租户ID for (const member of members) { if (member.tenantId !== botTenantId) { console.warn(`跳过来自异租户 ${member.tenantId} 的成员 ${member.id}`); continue; } await member.sendAdaptiveCard(<<adaptive card details>>); }改用会议上下文发送
遍历成员发送可能触发身份验证问题,试试直接向会议频道发送卡片并@目标成员:if (target.type === "Group") { const card = { body: [ { type: "TextBlock", text: "请查看此通知 <at>all</at>", wrap: true } ], msteams: { entities: [ { type: "mention", text: "<at>all</at>", mentioned: { type: "team" } } ] } }; await target.sendAdaptiveCard(card); }核对Teams Toolkit环境配置
检查.env文件里的M365_TENANT_ID、BOT_ID、BOT_PASSWORD等参数是否正确,确保租户ID和会议所在租户一致。重新运行Teams Toolkit的「Provision」和「Deploy」步骤,同步配置到Azure资源。备选:用Microsoft Graph API发送
如果以上方法都无效,可尝试通过Graph API的chatMessages端点发送:// 初始化已授权的Graph客户端 const graphClient = getAuthenticatedGraphClient(); const chatId = member.chatId; // 从member对象获取或通过Graph查询 await graphClient.api(`/chats/${chatId}/messages`).post({ body: { contentType: "html", content: "<attachment id='card1'></attachment>" }, attachments: [ { id: "card1", contentType: "application/vnd.microsoft.card.adaptive", content: <<adaptive card details>> } ] });
内容的提问来源于stack exchange,提问作者David Cooksley
相关产品推荐
相关产品推荐

