Microsoft Bot Framework Teams清单更新触发活动及会话引用获取方案
问题解答
一、更新Manifest重新发布应用后的触发逻辑
仅修改Teams应用Manifest、提升版本号并通过Teams管理中心重新发布应用,不会触发任何Bot Framework的Activity Handler事件,包括你调整了逻辑的OnMembersAddedAsync也不会被触发。
原因是OnMembersAddedAsync的触发条件只有两类:
- 应用首次被安装到个人会话、团队、群组场景时
- 新成员加入已经安装了该机器人的团队/群组时
单纯的应用版本迭代不改变已有的安装关系,所以没有任何事件会推送到你的机器人服务端。
二、存量用户无需重装获取会话引用的替代方案
方案1:调用Microsoft Graph API主动拉取(推荐,无用户感知)
这是最适合企业内部发布场景的方案,全程不需要用户操作:
- 先在Azure Portal中为你的机器人对应的AAD应用申请应用级Graph权限:
TeamsAppInstallation.ReadForUser.All、Chat.Create、Chat.ReadBasic.All,提交后由租户管理员完成权限同意 - 调用Graph接口遍历所有已安装该应用的用户,拉取用户与机器人的1对1会话信息,直接拼装为Bot Framework标准的会话引用结构存储即可,相关的接口示例为
GET /users/{用户ID}/teamwork/installedApps/{你的应用安装ID}/chat
方案2:引导用户主动交互
如果你的用户量级不大,且不想申请额外的Graph权限,可以通过企业内部通知渠道引导存量用户向机器人发送任意触发消息(比如/激活、/start),消息触发OnMessageActivityAsync后即可自动完成会话引用的存储。
方案3:通过配套的扩展功能触发
如果你的应用包含个人Tab、消息扩展等其他Teams扩展能力,可以在用户打开Tab、使用消息扩展的回调逻辑中,调用Bot SDK的CreateConversationAsync方法主动创建/获取对应会话,同步存储会话引用,无需用户主动给机器人发消息。
内容的提问来源于stack exchange,提问作者Siddharth
相关产品推荐
相关产品推荐

