对话流API:从检测意图响应中检索提取的参数



我正在使用Dialogflow PHP库来使用Dialogflow API。检测意图API请求返回参数的复杂GoogleProtobufStruct对象是否有一种简单的方法可以检索Detect Intent响应中返回的提取参数

这是代码的一部分:

$response = $sessionsClient->detectIntent($session, $queryInput);
$queryResult = $response->getQueryResult();
$parameters = $queryResult->getParameters(); // ==> Returns GoogleProtobufStruct object

这些是对话框流历史选项卡中返回的参数:

"parameters": {
"integer": "",
"number": "",
"currency": "{amount=400000, currency=USD}"
}

我想检索相同格式的参数(或者数组可以(

在Struct对象或任何其他protobuf对象上调用serializeToJsonString()

我尝试了serializeToJsonString((,但没有成功。我提取的参数如下:

...
$fields = $queryResult->getParameters()->getFields();
$parameters = [];
foreach($fields as $key => $field) {
$parameters[$key] = self::get_field_value($field);
}
...
private static function get_field_value($field) 
{
$kind = $field->getKind();
if ($kind == "string_value")
return $field->getStringValue();
else if ($kind == "number_value")
return $field->getNumberValue();
else if ($kind == "bool_value")
return $field->getBoolValue();
else if ($kind == "null_value")
return $field->getNullValue();
else if ($kind == "list_value") {
$list_values = $field->getListValue()->getValues();
$values = [];
foreach($list_values as $list_value)
$values[] = self::get_field_value($list_value);
return $values;    
}
else if ($kind == "struct_value")
return $field->getStructValue();
}
$queryResult = $response->getQueryResult();
$jsonString = $queryResult->serializeToJsonString();

最新更新