如何将Teams hero card的openUrl动作URL在协作视图打开而非新浏览器窗口?
可行性结论
该效果完全可以实现,不存在权限或能力层面的阻碍,其底层逻辑和你在聊天中看到的文档共享同屏打开的机制完全一致,不需要开发自定义的深度Teams扩展。
推荐实现路径
- 零代码改造成本的配置方案:
直接调整原有Hero卡片上的按钮动作参数,替换默认openUrl动作的全局打开逻辑。在Action.OpenUrl的配置中添加Teams专属的扩展属性,将打开模式指定为内联渲染,系统就会自动把目标URL加载到与聊天会话并列的协作视图区域,不再弹出独立的浏览器窗口。
对应卡片按钮的配置示例:{ "type": "Action.OpenUrl", "title": "打开协作视图页面", "url": "https://your-target-domain.com/your-page", "teamsExtensions": { "displayMode": "inline" } }前置要求:必须将目标URL所属的域名,添加到你的Teams应用清单(manifest)的
validDomains白名单中,否则Teams会触发安全拦截,强制将链接降级为新窗口打开。
这种方案不需要对目标URL本身做任何代码改造,只要链接对应的页面可以在普通浏览器正常访问,就可以在Teams的内联WebView容器中正常渲染。 - 高可控性的定制方案:
如果需要在打开URL时携带当前聊天的上下文信息(比如传递会话ID、当前用户标识,或者做打开后的状态回调),可以将按钮动作替换为Action.Execute类型,由后端Bot服务接收用户的点击事件,再通过Bot Framework接口触发右侧协作区的URL打开动作。这种方案可以根据当前会话的动态信息调整打开的链接参数,实现和会话深度绑定的协作体验。
常见注意事项
- 内联打开的协作视图默认是Teams原生的无地址栏WebView,不需要额外开发适配层,和共享文档的预览容器是同一套渲染逻辑。
- 不要尝试通过自定义UI模拟该效果,Teams本身对窗口布局有严格的管控,原生API实现的体验才会和系统自带的共享文档表现一致。
- 如果配置完成后点击按钮还是触发新窗口打开,优先检查目标域名是否已加入应用清单的
validDomains白名单,这是最常见的配置踩坑点。
内容的提问来源于stack exchange,提问作者rightsaidfred
相关产品推荐
相关产品推荐

