针对Google履行回复的行动

时间:2017-07-21 09:14:36

标签: php actions-on-google

当您收到请求时,您的履行必须返回回复

我有一个HTTPS端点,它接收通过google助手发送的命令(My Fulfillment URL)。但是我希望每发出一个请求就向用户返回一个文本

例如:           用户请求:“告诉,'应用名称'做等等等等”            助理回应:“好的,确定”   

如本文所述 - > https://developers.google.com/actions/components/fulfillment(响应格式),我已根据上面链接中所述的格式编写了json文件 但它表示您的履行必须返回回复

RESPONSE.JSON

"finalResponse": {
     "richResponse": {
          "items": [
               {
                 "simpleResponse": {
                 "textToSpeech": "sure thing",
                 "displayText": "Sure, thing!"
                  }
           ]
     }
}

在我的Fulfillment终点,我做了上述。

fulfilment.php

$file = [
 "expectUserResponse" => false,
 "finalResponse" => [
 "richResponse" => [
  "items" => [
    [
      "simpleResponse" => [
        "textToSpeech" => "Sure thing!",
        "displayText" => "Sure, thing?"
        ]
      ]
     ]
    ]
  ]
];

echo json_encode($file);    
header('Content-Type: application/json');

如何将这个文件在php中返回给谷歌助手? 我正在使用PHP:)

1 个答案:

答案 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。

(你确定每次都要结束对话吗?)

相关问题