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

使用Dialogflow v2+Actions v2 API报错:MalformedResponse需设置final_response

解决Dialogflow Fulfillment中MalformedResponse 'final_response' must be set错误

嘿,这个MalformedResponse 'final_response' must be set错误我之前也碰到过,大概率是你Webhook返回的响应格式不符合Google Actions的要求,我给你拆解下问题和解决办法:

错误核心原因

这个错误本质是:当对话需要结束时,你的Webhook没有返回标记为“最终响应”的内容。Google Actions v2要求,对话收尾阶段必须明确告诉平台“对话可以结束了”,否则就会抛出这个格式错误。

从你给出的代码片段看,conv.as...应该是没写完的响应调用,另外很可能是误用了响应方法——比如该用conv.close()的时候用了conv.ask():

  • conv.ask():用于需要用户继续输入的场景,平台会等待用户的下一轮对话,不会生成final_response
  • conv.close():用于对话结束的场景,会生成final_response,告诉平台对话到此为止

修正后的示例代码

把你的代码补全并调整响应方法,比如欢迎意图如果是只做问候就结束,应该这么写:

'use strict';
const functions = require('firebase-functions');
const { dialogflow } = require('actions-on-google');

const app = dialogflow();

app.intent('Default Welcome Intent', conv => {
  // 使用conv.close()返回最终响应,结束对话
  conv.close(`欢迎使用我的技能!有需要随时召唤我~`);
  
  // 如果需要引导用户继续交互,才用conv.ask(),但要确保后续有对应的意图处理用户输入
  // conv.ask(`欢迎使用我的技能!请问有什么可以帮你的?`);
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

额外排查要点

  • 检查意图配置:确认你的Default Welcome Intent是否被设置为“结束对话”的触发场景,如果是,必须用conv.close()
  • 避免手动构造响应JSON:尽量使用actions-on-google库提供的conv.close()/conv.ask()方法,不要自己拼JSON结构,很容易出现格式遗漏
  • 查看日志排查:去Dialogflow的Fulfillment页面或者Firebase Functions的日志里,查看Webhook的请求和响应详情,能更精准定位结构缺失的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:10:36