有效的JSON输出但仍然出错

时间:2018-03-20 22:09:16

标签: php json webhooks

我正在使用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输出?

0 个答案:

没有答案