我正在使用DIalogflow(api.ai)来创建聊天界面。我从Dialogflow创建了一个webhook到一个包含部署在Heroku上的php脚本的简单应用程序。我的最终目标是从数据库中获取一些数据(通过php脚本),然后使用它们提供Dialogflow。目前,我只是尝试通过webhook连接Heroku应用程序(php脚本)和Dialogflow。 Heroku应用程序的php脚本如下:
<?php
$method = $_SERVER['REQUEST_METHOD'];
if($method == 'GET'){
$requestBody = file_get_contents('php://input');
$json = json_decode($requestBody);
$text = $json->metadata->intentName->text;
switch ($text) {
case 'Name':
$speech = "This question is too personal";
break;
default:
$speech = "Sorry, I didnt get that.";
break;
}
$response = new \stdClass();
$response->speech = $speech;
$response->displayText = $speech;
$response->source = "webhook";
echo json_encode($response);
}
else
{
echo "Method not allowed";
}
?>
请注意$method
由于某种原因GET
而不是POST
,因为它应该来自Dialogflow。
此外,如果您尝试回显任何变量$requestBody
,$json
或$text
,则不会打印任何内容,但我不确定这与我在此分析的问题相同帖子。我已经测试了if
分支的执行以及default
分支是在switch
执行的。
我的PHP脚本在Heroku上打印以下答案:
{"speech":"Sorry, I didnt get that.","displayText":"Sorry, I didnt get that.","source":"webhook"}
但是,即使这是一个有效的json输出,我在Dialogflow中也会出现以下错误:
"Webhook call failed. Error: Failed to parse webhook JSON response: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $."
为什么我收到此错误,因为我提供了有效的json输出?