Teams应用机器人能否读取应用清单信息解决静态标签部署冲突
解决方案
方案1:调用Graph API判断用户安装的应用版本(完全匹配你要的tabExists逻辑)
你可以通过Graph API直接查询当前触发命令的用户安装的你的应用的版本号,判断是否支持静态tab:
- 首先给你的bot申请
TeamsAppInstallation.ReadForUser应用权限,在Azure门户的应用注册页面完成权限授予 - 当用户触发
Test命令时,调用如下Graph接口:
GET /users/{用户AAD ID}/teamwork/installedApps?$expand=teamsApp&$filter=teamsApp/externalId eq '23232322-7676-4848-5555-44444444444'
- 解析返回结果中的
teamsApp.teamsAppDefinition.version字段,若版本号≥2.1.0则返回带跳转按钮的自适应卡片,否则返回旧版文本提示
方案2:分阶段灰度发布(无额外开发量,风险最低)
不需要修改现有业务逻辑,按如下顺序发布即可完全规避冲突:
- 先将新增了static tab的v2.1.0版本manifest提交到Teams应用商店,发布时选择分阶段发布,先仅推送给内部测试用户
- 确认所有测试用户已收到v2.1.0版本应用后,将应用商店的发布范围调整为全量推送
- 等待72小时(Teams应用商店的全量覆盖周期)后,再升级生产服务器的代码,返回带跳转按钮的自适应卡片
方案3:中转页兼容兜底(兼容所有用户版本,体验最优)
不需要做版本判断,直接返回带跳转按钮的自适应卡片,将按钮的跳转地址替换为你自己的服务中转页地址:
- 中转页引入Teams JS SDK,初始化完成后调用
microsoftTeams.app.navigateToApp()方法尝试跳转至目标static tab - 若跳转失败(即用户应用版本不支持该tab),则在中转页直接展示「该功能需要升级应用到最新版本后使用」的提示即可
- 注意要将中转页的域名添加到manifest的
validDomains列表中
内容的提问来源于stack exchange,提问作者Ari Unikoski
相关产品推荐
相关产品推荐

