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

Dialogflow多Agent.add响应问题:Web演示仅显单条回复如何修复?

解决Dialogflow Web演示仅显示第一条响应的问题

我之前也碰到过一模一样的情况——用agent.add()连续添加两条文本消息时,Google Assistant和控制台能正常显示两条,但Web演示和部分嵌入组件只认第一条。这主要是因为不同客户端对Dialogflow响应格式的解析逻辑不一样,简单的文本响应在Web演示里会被合并或只取第一条,得用结构化的响应格式来明确多条消息。

下面是几个有效的解决方法:

方法1:使用Dialogflow Fulfillment的RichResponse类(推荐)

如果你的代码用的是Node.js的dialogflow-fulfillment库,可以直接用RichResponse和SimpleResponse类来构造多条独立响应,这样所有客户端都能正确识别:

// 先导入所需的类
const { RichResponse, SimpleResponse } = require('dialogflow-fulfillment');

// 分别构造每条文本响应
const helloResponse = new SimpleResponse({
  text: 'Hello'
});
const worldResponse = new SimpleResponse({
  text: 'World'
});

// 创建RichResponse实例并添加两条响应
const multiResponse = new RichResponse();
multiResponse.add(helloResponse);
multiResponse.add(worldResponse);

// 将组合后的响应添加给agent
agent.add(multiResponse);

这种方式会明确告诉Dialogflow这是两条独立的消息,不管是Web演示还是Google Assistant都能正确逐条显示。

方法2:手动构造结构化Payload

如果不想依赖库的类,也可以直接构造符合Dialogflow响应规范的JSON payload,手动指定多条消息:

agent.add({
  payload: {
    google: {
      expectUserResponse: true,
      richResponse: {
        items: [
          { 
            simpleResponse: { 
              textToSpeech: 'Hello', 
              displayText: 'Hello' 
            } 
          },
          { 
            simpleResponse: { 
              textToSpeech: 'World', 
              displayText: 'World' 
            } 
          }
        ]
      }
    }
  }
});

这个payload直接遵循Google Assistant的响应格式,Web演示会解析richResponse.items里的每条消息并依次显示。

额外注意事项

  • 有些第三方嵌入组件可能本身对多消息支持有限,如果上面的方法还是不行,可以检查组件的文档,看是否有特定的响应格式要求。
  • 测试时记得同时验证Google Assistant和Web演示的表现,确保修改不会影响其他平台的响应效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:46:00