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

DialogFlow ES Webhook返回的fulfillmentMessages被忽略问题求助

排查思路与解决方案

排查思路

  • 检查API调用的Webhook启用参数:确认Twilio PHP应用调用DialogFlow detectIntent接口时,是否明确设置了强制启用Webhook的参数,未设置该参数可能导致DialogFlow优先使用控制台配置的默认文本。
  • 对比控制台与API的请求参数差异:提取DialogFlow控制台测试时的请求参数(可在意图历史记录中查看),与PHP应用发送的API请求做逐项对比,重点关注languageCode、session格式、queryParams配置等是否一致。
  • 验证Webhook返回的Payload合规性:检查Laravel端点返回的JSON结构是否完全符合DialogFlow ES规范,包括fulfillmentMessages的层级、字段名称,同时确认HTTP响应头的Content-Type为application/json,状态码为200。
  • 确认意图的Webhook触发配置:检查目标意图的“启用Webhook调用用于意图输出”选项是否已勾选,同时查看DialogFlow会话历史,确认API调用时确实匹配到了目标意图且Webhook被触发。

解决方案

  • 修正API调用参数:在Twilio的PHP代码中,调用detectIntent时添加queryParams配置,强制启用Webhook:
use Google\Cloud\Dialogflow\V2\QueryParams;
use Google\Cloud\Dialogflow\V2\WebhookState;

// 构建查询参数
$queryParams = new QueryParams();
$queryParams->setWebhookState(WebhookState::WEBHOOK_STATE_ENABLED);

// 组装DetectIntent请求
$request = new DetectIntentRequest();
$request->setSession($session);
$request->setQueryInput($queryInput);
$request->setQueryParams($queryParams);
  • 对齐请求参数:确保API调用的languageCode与控制台测试时一致,session格式符合projects/[项目ID]/agent/sessions/[会话ID]的规范,避免参数不匹配导致处理逻辑差异。
  • 规范Webhook返回结构:确保Laravel端点返回的JSON严格遵循DialogFlow要求,示例结构如下:
{
  "fulfillmentMessages": [
    {
      "text": {
        "text": ["Webhook返回的自定义响应文本"]
      }
    }
  ]
}

同时在Laravel控制器中明确设置响应头:

return response()->json($payload)->header('Content-Type', 'application/json');
  • 校验意图匹配与Webhook触发:查看DialogFlow的会话历史记录,确认API调用触发的是目标意图,且Webhook请求已被正常处理;若存在意图匹配偏差,需调整目标意图的训练短语或实体配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:35:11