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

Dialogflow V2如何发送JSON数组?V1 Webhook返回JSON数组方法

在Dialogflow V1 Webhook中返回JSON数组的解决方案

嘿,我来帮你搞定这个问题!你提到的是在Dialogflow V1的Webhook fulfillment里传递JSON数组对吧?其实核心是要吃透V1的Webhook响应格式,我分两种常见场景给你拆解,再附上修正后的代码示例。

首先先纠正你代码里的一个小语法错误:你写的json对象里,"fulfillmentText":"something"后面少了个逗号,这会直接导致JSON解析失败,一定要注意这种细节哦!

场景1:返回多条消息组成的数组(给用户展示用)

Dialogflow V1的fulfillmentMessages字段本身就是一个数组,你可以在里面添加多个不同类型的消息(比如文本、卡片、列表等),Dialogflow会按顺序展示这些内容给用户。

比如你要返回多条文本,或者混合文本和卡片,代码可以这么写:

// 构造包含多消息数组的Webhook响应
const jsonResponse = {
  "fulfillmentText": "这是默认的语音回复文本", // 用于语音播报的文本
  "fulfillmentMessages": [
    // 第一条文本消息
    {
      "text": {
        "text": ["你好,这是第一条回复"]
      }
    },
    // 第二条文本消息
    {
      "text": {
        "text": ["这是第二条带数组的回复"]
      }
    },
    // 还可以加卡片消息,里面的buttons也是数组
    {
      "card": {
        "title": "我的示例卡片",
        "subtitle": "卡片副标题",
        "buttons": [
          {
            "text": "查看详情",
            "postback": "detail_page"
          },
          {
            "text": "返回首页",
            "postback": "home_page"
          }
        ]
      }
    }
  ]
};

// 将响应返回给Dialogflow
res.json(jsonResponse);

场景2:传递自定义业务数组数据(给后续逻辑用)

如果你需要传递的是业务相关的数组(比如从服务器获取的商品列表、用户数据等),这些数据不需要直接展示给用户,而是给你的前端或其他服务做后续处理,那应该放在payload字段里——这是Dialogflow预留的自定义数据载体,完全不会影响用户看到的回复内容。

示例代码:

// 假设从你的服务器获取到的数组数据
const serverFetchedArray = ["商品A", "商品B", "商品C"];

const jsonResponse = {
  "fulfillmentText": "我找到了3个相关商品", // 给用户看的文本
  "fulfillmentMessages": [
    {
      "text": {
        "text": ["商品A、商品B、商品C"]
      }
    }
  ],
  // 把自定义数组放在payload里
  "payload": {
    "productList": serverFetchedArray
  }
};

res.json(jsonResponse);

之后你在客户端或者后续处理逻辑里,就可以从Dialogflow的响应中提取payload.productList来拿到这个数组啦。

另外还要提醒你:你代码里的const speech = res.result.fulfillment.speech;是客户端读取Dialogflow响应的代码,而Webhook的作用是返回响应给Dialogflow,这两个方向要区分开哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:33:34