google 上的操作如何通过 php 做出响应?
Actions on google how to make response via php?
这是我的 php 代码响应,但我收到“来自 webhook 的错误响应无效:无法将 JSON 转换为 ExecuteHttpResponse”。
这是生成 JSON 响应的 webhook 代码,但是 google 抛出此 return 的无效错误 json:
$method = $_SERVER['REQUEST_METHOD'];
if($method == 'POST')
{
$requestBody = file_get_contents('php://input');
$json = json_decode($requestBody, true, 512, JSON_BIGINT_AS_STRING);
$customer_name = $json["requestJson"]["intent"]["params"]["customer_name"]["original"];
$returnText="Customer name is $customer_name"
$response = new \stdClass();
$response->speech = $returnText;
$response->displayText = $returnText;
$response->source = "webhook";
echo json_encode($response);
}
带有无效错误的 webhook 响应 来自 webhook 的无效响应:无法将 JSON 转换为 ExecuteHttpResponse
"responseJson": {
"session": {
"id": "1234"
},
"textToSpeech": "bala",
"displayText": "bala",
"source": "webhook"
}
我做错了什么?
问题是您的响应 JSON 与 Actions on Google 预期的 response body format 不匹配。
你需要一个 JSON 更像
的结构
{
"prompt": {
"firstSimple": {
"speech": "bala",
"text": "bala"
}
}
}
你可以用 PHP 做这样的事情(未经测试):
$response = array (
'prompt' => array (
'firstSimple' => array (
'speech' => $returnText,
'text' => $returnText
)
)
);
echo json_encode( $response );
这是我的 php 代码响应,但我收到“来自 webhook 的错误响应无效:无法将 JSON 转换为 ExecuteHttpResponse”。
这是生成 JSON 响应的 webhook 代码,但是 google 抛出此 return 的无效错误 json:
$method = $_SERVER['REQUEST_METHOD'];
if($method == 'POST')
{
$requestBody = file_get_contents('php://input');
$json = json_decode($requestBody, true, 512, JSON_BIGINT_AS_STRING);
$customer_name = $json["requestJson"]["intent"]["params"]["customer_name"]["original"];
$returnText="Customer name is $customer_name"
$response = new \stdClass();
$response->speech = $returnText;
$response->displayText = $returnText;
$response->source = "webhook";
echo json_encode($response);
}
带有无效错误的 webhook 响应 来自 webhook 的无效响应:无法将 JSON 转换为 ExecuteHttpResponse
"responseJson": {
"session": {
"id": "1234"
},
"textToSpeech": "bala",
"displayText": "bala",
"source": "webhook"
}
我做错了什么?
问题是您的响应 JSON 与 Actions on Google 预期的 response body format 不匹配。
你需要一个 JSON 更像
的结构{
"prompt": {
"firstSimple": {
"speech": "bala",
"text": "bala"
}
}
}
你可以用 PHP 做这样的事情(未经测试):
$response = array (
'prompt' => array (
'firstSimple' => array (
'speech' => $returnText,
'text' => $returnText
)
)
);
echo json_encode( $response );