Azure Teams Bot用户加入时未触发欢迎消息 Web Chat运行正常问题咨询
问题根因
- Teams渠道出于性能和安全考虑默认采用懒加载事件机制:用户未主动和Bot交互前,不会主动推送成员添加事件给Bot,只有用户发送第一条消息时才会把之前积压的成员添加事件一并推送给服务端,所以你会看到两条响应同时返回
- 你编写的
on_teams_members_added逻辑没有触发,本质是事件根本没有被推送至你的Bot服务,和代码逻辑本身无关
解决步骤
1. 开启Azure Bot Teams渠道事件推送
- 进入Azure Portal对应Bot服务的管理页面,选择左侧菜单的「渠道」选项
- 找到已添加的Teams渠道,点击编辑按钮进入设置页
- 勾选用户添加到对话时触发成员添加事件的选项,保存配置并等待生效
2. 完善Teams应用清单配置
你分享给用户的Bot安装包的manifest.json需要补充以下配置,否则事件推送会被Teams权限拦截:
- 确保
validDomains字段已经添加你Bot服务的部署域名 - 补充
webApplicationInfo字段,填入你的Bot对应的Azure AD App ID - 添加应用级权限配置,示例如下:
"permissions": { "user": [], "application": [ "ChatMember.Read.All", "TeamMember.Read.All" ] }
3. 代码逻辑优化
你现有的代码逻辑已经可用,仅建议增加成员名展示提升体验,参考代码:
async def on_teams_members_added( self, teams_members_added: [TeamsChannelAccount], team_info: TeamInfo, turn_context: TurnContext, ): bot_id = turn_context.activity.recipient.id for member in teams_members_added: if member.id != bot_id: await turn_context.send_activity(f"Welcome!! {member.name}")
4. 生效验证
- 配置修改完成后,需要卸载Teams中已安装的旧Bot,重新安装新的应用包才会生效
- 如果是群聊场景,需要确保Bot拥有群内发送消息的权限
- Web Chat和Teams的事件触发规则不一致,不要用Web Chat的测试结果直接对标Teams场景
内容的提问来源于stack exchange,提问作者Nitin Sharma
相关产品推荐
相关产品推荐

