【发布时间】:2018-03-09 10:49:46
【问题描述】:
我正在使用带有 XAMPP 和 Dialogflow 的 PHP 来创建聊天界面。在 Dialogflow 中的一个简单意图(问题)中,我为 XAMPP 创建了一个关于“谁是 X”的问题(例如 Paul、George)的 webhook。因此,我放置了一个 POST REQUEST,以便在 DIAlogflow 中访问此问题的 json 形式,以便我可以随心所欲地回答它。具体来说,这样做的最终目标是从 phpMyAdmin 中的 MySQL 数据库中检索有关此问题的一些数据,并回答例如“X 是开发人员”或“X 是金融分析师”。这就是为什么写了一个如下的php脚本:
<?php
$method = $_SERVER['REQUEST_METHOD'];
// Process when it is POST method
if ($method == 'POST') {
$requestBody = file_get_contents('php://input');
$json = json_decode($requestBody);
$text = $json->result->parameters;
switch($text) {
case 'given-name':
$name = $text->given-name;
$speech = $name . 'is a developer';
break;
default:
$speech = 'Sorry I did not get this. Can you repeat please?';
}
$response = new \stdClass();
$response->speech = "";
$response->displayText = "";
$respone->source = "webhook";
echo json_encode($response);
}
else
{
echo "Method not allowed";
}
?>
但是,这个程序的输出是:Method not allowed。
自相矛盾的是,$method 的值是 'GET',因此它标识了一个 GET REQUEST,而 Dialogflow 在 webhook 页面上明确声明
您的网络服务将收到来自 Dialogflow 的 POST 请求 对与 webhook 的意图匹配的用户查询的响应形式 已启用。
因此我想知道:为什么我的 php 脚本无法看到和处理来自 Dialogflow 的 POST REQUEST?
附:与我关系密切的问题如下:Form sends GET instead of POST、Why is $_SERVER['REQUEST_METHOD'] always GET?。
【问题讨论】:
-
$method的值是多少? -
感谢您的回复。自相矛盾的是 GET ......这是为什么呢?
-
您最初是如何提出请求的?
-
在 Dialogflow 中它说:“您的 Web 服务将收到来自 Dialogflow 的 POST 请求,其形式是对启用 webhook 的意图匹配的用户查询的响应”...
-
这就是您设置为 Dialogflow 实现的 webhook?您能否更新您的问题以包含 Dialogflow 配置的执行页面的屏幕截图?
标签: php post xampp dialogflow-es