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

Dialogflow中Google Assistant轮播卡片语音选择打开URL方案咨询

关于Dialogflow中Google Assistant Carousel卡片语音选择并打开URL的解决方案

嗨,我来帮你解决这个问题!其实Google Assistant的Carousel卡片是支持语音选择跳转的,只是需要一些特定的配置,我给你详细说下步骤,还有如果遇到问题的替代方案:

一、可行的实现方案

要让用户能通过语音选择Carousel卡片并打开对应URL,关键是做好卡片语义配置和Dialogflow意图匹配:

  1. 完善Carousel卡片的基础信息
    给每张卡片设置独特且易发音的标题(比如“智能手表详情页”“运动耳机官网”),同时确保每个条目都关联了对应的URL。如果你用Actions Builder(或Dialogflow的Actions on Google集成),可以给每个卡片添加semanticLabel,帮助Assistant更好地识别用户的语音指令。

  2. 创建专门的卡片选择意图
    在Dialogflow里新建一个意图(比如命名为「选择Carousel卡片」),添加用户可能的语音表达式,比如:

    • 打开{卡片标题}
    • 选择{卡片标题}
    • 选第{数字}个卡片
    • 查看第二个选项

    然后给这个意图添加对应的实体:

    • 自定义实体「卡片标题」:把你Carousel里所有卡片的标题都加进去作为实体值;
    • 系统实体@sys.number:用来匹配用户说的“第1个”“第二个”这类位置指令。
  3. 通过Webhook处理跳转逻辑
    当这个意图被触发时,用Webhook来处理:

    • 如果用户说的是卡片标题,就从预先存储的标题-URL映射里找到对应链接;
    • 如果用户说的是位置数字,就根据Carousel的顺序取出对应URL;
    • 最后返回actions.intent.OPEN_URI类型的响应,把URL传进去,Google Assistant就会自动打开对应的网页了。

    举个简单的Webhook返回示例(Node.js):

    function handleCardSelection(agent) {
      const cardTitle = agent.parameters.cardTitle;
      const cardIndex = agent.parameters.number;
      // 预先定义的卡片数据列表
      const cards = [
        {title: "智能手表详情页", url: "https://example.com/watch"},
        {title: "运动耳机官网", url: "https://example.com/earphone"}
      ];
      let targetUrl;
      if (cardTitle) {
        targetUrl = cards.find(c => c.title === cardTitle).url;
      } else if (cardIndex) {
        targetUrl = cards[cardIndex - 1].url; // 注意数组索引从0开始
      }
      // 返回提示并触发URL跳转
      agent.add(new Suggestion(`正在打开${cardTitle || `第${cardIndex}个卡片`}`));
      agent.setFollowupEvent({
        name: 'actions_intent_OPEN_URI',
        parameters: {
          uri: targetUrl
        }
      });
    }
    

二、等效替代方案

如果上面的配置遇到障碍(比如某些地区的Assistant功能限制,或Dialogflow版本兼容问题),可以试试这些替代方式:

  • 改用List卡片:List卡片和Carousel展示逻辑类似,但结构更线性,用户更容易用“第一个”“第三个”这类语音指令选择,配置方法和Carousel完全一致,同样支持Webhook处理跳转。
  • 语音引导+实体匹配:在展示Carousel卡片的同时,主动给用户语音提示:“你可以说‘打开智能手表’或者‘选第二个’来查看详情”,这样用户更清楚操作方式,同时通过实体匹配用户输入触发URL跳转。
  • 会话上下文存储卡片信息:在展示Carousel的意图里,把所有卡片的标题和URL存入Dialogflow的会话上下文(比如carousel_cards),当用户说出选择指令时,Webhook从上下文里取出对应数据,再返回打开URL的响应。

注意事项

  • 要打开的URL必须是HTTPS协议,如果用Actions on Google集成,需要在Actions Console的「部署」-「域名白名单」里添加对应的域名,否则Assistant会拒绝打开。
  • 如果是Dialogflow ES版本,必须用Fulfillment(Webhook)处理跳转,原生响应无法直接触发URL打开,需通过Webhook返回特定指令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:57:39