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

Webhook无法连接Dialogflow与PHP脚本,咨询意图配置技术问题

Hey there! Let's work through your Dialogflow Webhook + PHP connection issue step by step. First, let me recap your current setup to make sure we're aligned:

Your Current Dialogflow Configuration

  • You've created an intent named Name that triggers on queries like Who is [name]?
  • The intent's default response is [name] is a great person
  • When a query like Who is John is sent, Dialogflow returns a JSON response structured like this (abbreviated):
{ 
  "id": "...", 
  "timestamp": "2018-03-20T12:38:27.972Z", 
  "lang": "en", 
  "result": { 
    "source": "agent", 
    "resolvedQuery": "Who is John", 
    "action": "", 
    "actionIncomplete": false, 
    "parameters": { "given-name": "John" }, 
    "contexts": [], 
    "metadata": {...}
  }
}

Now let's fix that Webhook connection problem. Here's what you need to do:

1. Build a PHP Script That Meets Dialogflow's Requirements

Dialogflow expects your Webhook endpoint to follow specific rules:

  • It must use HTTPS (Dialogflow rejects HTTP by default; you can enable HTTP for testing, but HTTPS is mandatory for production)
  • It needs to accept POST requests and parse the JSON payload sent by Dialogflow
  • It must return a valid JSON response in Dialogflow's required format

Here's a minimal, working PHP example you can start with:

<?php
// Allow cross-origin requests (useful for local testing; adjust for production)
header("Access-Control-Allow-Origin: *");
// Set content type to JSON
header("Content-Type: application/json; charset=UTF-8");

// Read the incoming JSON payload from Dialogflow
$inputData = json_decode(file_get_contents('php://input'), true);

// Extract the "given-name" parameter from the payload
$userName = $inputData['result']['parameters']['given-name'] ?? 'someone';

// Construct the response Dialogflow expects
$webhookResponse = [
    "speech" => "$userName is a fantastic person (powered by Webhook!)",
    "displayText" => "$userName is a fantastic person (powered by Webhook!)",
    "source" => "php-webhook"
];

// Send the JSON response back to Dialogflow
echo json_encode($webhookResponse);
?>

2. Configure Dialogflow to Use Your Webhook

  • Open your Dialogflow agent, go to the Fulfillment tab in the left menu
  • Toggle the Webhook switch to "Enabled"
  • Paste your PHP script's HTTPS URL into the URL field (e.g., https://your-domain.com/dialogflow-webhook.php)
  • Save the Fulfillment settings
  • Navigate back to your Name intent, scroll down to the Fulfillment section, and check the box for Enable webhook call for this intent
  • Save the intent

3. Troubleshoot Common Issues

If you're still having trouble connecting, check these common pain points:

  • HTTPS Missing: If you're testing locally, use a tool like ngrok to create a temporary HTTPS tunnel (run ngrok http 80 and use the generated HTTPS URL as your Webhook endpoint)
  • POST Requests Blocked: Verify your server's firewall or security plugins aren't blocking incoming POST requests to your PHP script
  • JSON Syntax Errors: Use json_last_error() in your PHP script to debug encoding issues (add var_dump(json_last_error_msg()); after json_encode() to see errors)
  • Incorrect Parameter Path: Double-check that you're accessing the right keys in the Dialogflow payload—based on your sample JSON, the name parameter lives at $inputData['result']['parameters']['given-name']

4. Test the Webhook

Go to Dialogflow's Console tab, send a test query like Who is Sarah, then switch to the Fulfillment tab to view the request/response logs. This will help you confirm if data is being sent correctly and if your PHP script is returning a valid response.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:03:07