Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Dialogflow API:从检测意图响应中检索提取的参数_Php_Google Cloud Platform_Protocol Buffers_Dialogflow Es - Fatal编程技术网

Php Dialogflow API:从检测意图响应中检索提取的参数

Php Dialogflow API:从检测意图响应中检索提取的参数,php,google-cloud-platform,protocol-buffers,dialogflow-es,Php,Google Cloud Platform,Protocol Buffers,Dialogflow Es,我正在使用来处理Dialogflow API。detect intent API请求为参数返回一个复杂的Google\Protobuf\Struct对象是否有一种简单的方法来检索在Detect Intent响应中返回的提取参数? 以下是代码的一部分: $response = $sessionsClient->detectIntent($session, $queryInput); $queryResult = $response->getQueryResult(); $paramet

我正在使用来处理Dialogflow API。detect intent API请求为参数返回一个复杂的
Google\Protobuf\Struct
对象是否有一种简单的方法来检索在Detect Intent响应中返回的提取参数?

以下是代码的一部分:

$response = $sessionsClient->detectIntent($session, $queryInput);
$queryResult = $response->getQueryResult();
$parameters = $queryResult->getParameters(); // ==> Returns Google\Protobuf\Struct object
这些是返回的参数,如Dialogflow history选项卡中所示:

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

我希望以相同的格式检索参数(或者可以使用数组)。在Struct对象或任何其他protobuf对象上调用
serializeToJsonString()

我尝试序列化JSONString(),但没有成功。我提取如下参数:

...

$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();
}

yoo是否尝试将其输入dictionary或arrayHi@sid8491?我该怎么做?
$queryResult = $response->getQueryResult();
$jsonString = $queryResult->serializeToJsonString();