当您收到请求时,您的履行必须返回回复
我有一个HTTPS端点,它接收通过google助手发送的命令(My Fulfillment URL)。但是我希望每发出一个请求就向用户返回一个文本
例如:
用户请求:“告诉,'应用名称'做等等等等”
助理回应:“好的,确定”
如本文所述 - > https://developers.google.com/actions/components/fulfillment(响应格式),我已根据上面链接中所述的格式编写了json文件
但它表示您的履行必须返回回复
"finalResponse": {
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "sure thing",
"displayText": "Sure, thing!"
}
]
}
}
在我的Fulfillment终点,我做了上述。
$file = [
"expectUserResponse" => false,
"finalResponse" => [
"richResponse" => [
"items" => [
[
"simpleResponse" => [
"textToSpeech" => "Sure thing!",
"displayText" => "Sure, thing?"
]
]
]
]
]
];
echo json_encode($file);
header('Content-Type: application/json');
如何将这个文件在php中返回给谷歌助手? 我正在使用PHP:)
答案 0 :(得分:1)
对于初学者来说 - 这不是有效的JSON。有效的JSON看起来像这样:
{
"finalResponse": {
"richResponse": {
"items": [{
"simpleResponse": {
"textToSpeech": "sure thing",
"displayText": "Sure, thing!"
}
}]
}
}
}
注意开始和结束括号以指定这是一个JSON对象。您发送的是一个已编码为JSON字符串的字符串。使用PHP,创建有效JSON的最简单方法是使用json_encode并将其传递给嵌套的关联数组。所以这样的事情会产生它。
<?php
header('Content-Type: application/json');
$a = [
"finalResponse" => [
"richResponse" => [
"items" => [
[
"simpleResponse" => [
"textToSpeech" => "Sure thing!",
"displayText" => "Sure, thing?"
]
]
]
]
]
];
echo json_encode($a);
请注意,header()
必须在任何之前,即使是空白行也已发送。
但是......这可能不是你唯一的问题。
看起来它没有你应该回复的所有字段。如果您只发送finalResponse
,那么您可能还需要将expectUserResponse
设置为false。
(你确定每次都要结束对话吗?)