You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Teams机器人自适应卡片跳转至个人Tab并打开指定URL

实现方案

在原有跳转Tab的Deep Link基础上,追加context参数,将你需要加载的指定URL放到自定义上下文字段中。
首先构造context的JSON结构:

{
  "customContext": {
    "targetUrl": "a.example.com/b/c?d=f"
  }
}

将上述JSON做URL编码后,拼接到原有Deep Link后,最终的openUrl按钮链接格式如下:
https://teams.microsoft.com/l/entity/<appId>/<entityId>?context=%7B%22customContext%22%3A%7B%22targetUrl%22%3A%22a.example.com%2Fb%2Fc%3Fd%3Df%22%7D%7D
请将链接中的<appId>替换为你的应用ID,<entityId>替换为TT Tab对应的实体ID。

2. 修改TT Tab的前端加载逻辑

你的Tab默认加载的是a.example.com/g,需要在页面初始化阶段读取Teams透传的上下文参数,拿到目标URL后跳转加载对应内容:

  • 引入Teams JS SDK,在页面初始化完成后调用getContext接口读取传入的自定义上下文
  • 解析出targetUrl参数后,直接跳转对应路径即可,单页应用也可以调用前端路由跳转
    示例代码:
import * as microsoftTeams from "@microsoft/teams-js";

// 初始化Teams SDK
microsoftTeams.app.initialize().then(() => {
  // 获取上下文参数
  microsoftTeams.getContext((context) => {
    const targetUrl = context?.customContext?.targetUrl;
    // 校验URL合法性,仅允许同域跳转
    if (targetUrl && targetUrl.startsWith('a.example.com')) {
      window.location.href = targetUrl;
      // 单页应用路由跳转示例
      // router.push(targetUrl.replace(/^a\.example\.com/, ''))
    }
  });
});

提示:请务必对传入的targetUrl做域名校验,避免恶意跳转引发安全问题。

内容的提问来源于stack exchange,提问作者Vishwam Chepuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:54:08