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

使用OAuthPromptSettings时如何在MS Teams机器人Sign in按钮上方添加图片

解决方案

实现思路

默认OAuthPromptSettings生成的登录卡片仅包含基础登录按钮,要新增上方图片,需要自定义承载OAuth登录触发逻辑的卡片,而非直接使用默认生成的卡片结构。Teams环境对自适应卡片兼容性最优,推荐用自适应卡片实现需求。

具体实现步骤

  • 第一步:构造包含图片+登录按钮的自适应卡片结构
    示例卡片JSON如下,可调整图片尺寸、地址、按钮文本匹配业务需求:
{
  "type": "AdaptiveCard",
  "version": "1.4",
  "body": [
    {
      "type": "Image",
      "url": "你的图片存储地址,需要为公网可访问的HTTPS地址",
      "size": "Large",
      "horizontalAlignment": "Center"
    }
  ],
  "actions": [
    {
      "type": "Action.Submit",
      "title": "Sign in",
      "data": {
        "msteams": {
          "type": "signin",
          "value": "你的OAuth授权跳转地址"
        }
      }
    }
  ]
}
  • 第二步:替换默认OAuthPrompt的提示卡片
    不需要修改原有OAuthPrompt的验证逻辑,仅需要在触发OAuth流程的步骤中,主动发送上述自定义卡片,替代默认OAuthPromptSettings生成的卡片即可,原有token验证、授权回调逻辑完全可以复用。
    如果用Bot Framework C# SDK,可以按以下逻辑调用:
// 构造自定义卡片
var card = AdaptiveCard.FromJson(自定义卡片JSON).Card;
var attachment = new Attachment { ContentType = AdaptiveCard.ContentType, Content = card };
var activity = MessageFactory.Attachment(attachment);
// 发送自定义卡片
await turnContext.SendActivityAsync(activity, cancellationToken);
// 后续继续走原有OAuthPrompt的验证逻辑即可
var oauthPromptSettings = new OAuthPromptSettings
{
    ConnectionName = "你的OAuth连接名称",
    Title = "Sign in",
    Text = string.Empty, // 这里留空即可,提示内容已经在自定义卡片里展示
    Timeout = 300000
};
var oauthPrompt = new OAuthPrompt(nameof(OAuthPrompt), oauthPromptSettings);
await oauthPrompt.BeginDialogAsync(dialogContext, cancellationToken);
  • 第三步:Teams环境适配注意事项
    • 图片地址必须是HTTPS协议,且不能有访问权限限制,否则Teams会无法加载图片
    • 登录按钮的type必须指定为signin才能触发Teams原生的OAuth授权弹窗,避免跨域问题
    • 原有OAuth的连接配置、回调地址不需要做任何修改

备选方案:扩展OAuthPrompt默认卡片

如果不想修改现有触发逻辑,可以继承OAuthPrompt类,重写OnPromptAsync方法,在默认生成的卡片body最前面插入图片元素后再发送,逻辑和上述方案一致,仅实现入口不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:18:03