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

如何在Microsoft Bot Framework中无需用户干预打开URL?

在Microsoft Bot Framework中实现URL相关需求

一、无需用户干预自动打开URL的说明

首先得明确:Bot Framework原生的聊天客户端(如Teams、Web Chat)出于安全限制,不支持无需用户交互就自动打开外部URL——这是为了防范恶意跳转,保护用户安全。

但如果是你自己开发的自定义Web Chat集成,倒是可以通过以下方式实现:

  • 在前端监听Web Chat的message事件
  • 当Bot发送包含特定标识(比如自定义的openUrl元数据)的消息时,触发JavaScript的window.open()方法打开目标URL

举个简单的前端监听示例:

window.WebChat.renderWebChat({
  directLine: window.WebChat.createDirectLine({ token: 'YOUR_DIRECT_LINE_TOKEN' }),
  onReceive: (message) => {
    // 检查消息是否带有自动打开URL的标识
    if (message.channelData?.autoOpenUrl) {
      window.open(message.channelData.targetUrl, '_blank');
    }
  }
}, document.getElementById('webchat'));

然后在Bot端发送消息时添加对应的channelData:

// Node.js Bot Builder v4示例
await turnContext.sendActivity({
  text: '即将为您打开指定页面...',
  channelData: {
    autoOpenUrl: true,
    targetUrl: 'https://your-target-url.com'
  }
});

二、Hero Card/Thumbnail Card带打开URL按钮的完整示例

你提供的缩略卡代码没写完,我补全完整的实现(基于Bot Builder v3,因为你用了builder.ThumbnailCard):

// Bot Builder v3 缩略卡示例
msg.attachments([
    new builder.ThumbnailCard(session)
        .title('Brian Mathew')
        .subtitle('CIO, Logistics')
        .text('San Francisco Bay Area - 30 Mutual Connections')
        .images([
            builder.CardImage.create(session, 'https://media.licdn.com/dms/image/C5103AQHt4Rp2MT0quA/profile-displayphoto-shrink_800_800/0?e=1527022800&v=alpha&t=gQbe7EXQX1S3wYr8QpCjXqeWyKzM0vQWE0M51WGL8n4')
        ])
        .buttons([
            // 添加OpenUrl类型的按钮,点击后打开指定URL
            builder.CardAction.openUrl(session, 'https://link-to-profile.com', '查看完整资料')
        ])
]);
await session.send(msg);

如果是Hero Card,写法类似,只是把builder.ThumbnailCard换成builder.HeroCard即可,两者的按钮配置逻辑完全一致——用户点击按钮后,客户端会自动打开对应的URL(这是聊天客户端原生支持的交互,不需要额外开发)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:38:22