Google 操作构建器 - 如何从 webhook 请求中读取并避免空响应

问题描述

当我使用 PHP 调用 webhook 时,我在测试时收到此消息。抱歉,我没有收到任何回复 附上我的 webhook 请求 json 和 和PHP代码

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"]["resolved"];
 $response = array ('prompt' => array ('firstSimple' => array ( 'speech' => $customer_name,'text' => 
 $customer_name)));
 echo json_encode( $response );
}

测试时也有 webhook 响应 json

{
"responseJson": {
"prompt": {
  "firstSimple": {}
}
 }
} 

enter image description here

Webhook 请求 json

enter image description here

解决方法

尽管它显示在测试控制台中,但“requestJson”属性并不是发送给您的正文的一部分。正文将只包含该属性下的对象。

所以得到 $customerName 的行应该更像

 $customer_name=$json["intent"]["params"]["customer_name"]["resolved"];

您收到有关未获得响应的错误的具体原因是因为在响应的“simpleResponse”属性中没有设置任何属性。我假设这是因为 $customer_name 最终没有被设置,所以 php 或 Assistant 正在删除空属性值。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...