Предположим, у меня есть агент с двумя пользовательскими намерениями:
SelectGameIntent
, который имеет несколько высказываний со слотом GameType
сущности YesOrNoIntent
, который ловит да / no и их варианты.
Значение GameType
может быть либо pick
, либо guess
.
Я использую "google/cloud-dialogflow": "^0.13.0"
, то есть на время написания последней версии.
Также предположим, что SessionsClient
правильно инициализирован
class SomeClass {
/* initialization and what not */
public function analyzeText($text)
{
/** @var \Google\Cloud\Dialogflow\V2\SessionsClient $client */
$client = $this->_clients['sessions'];
$session_name = $client->sessionName($this->_projectId, uniqid());
$text_input = new TextInput();
$text_input
->setText($text)
->setLanguageCode('en-US');
$query_input = new QueryInput();
$query_input->setText($text_input);
try {
$result = $client->detectIntent(
$session_name,
$query_input
);
return $result;
} finally {
$client->close();
}
}
}
Приведенный выше код работает правильно для большинства случаев, но для некоторых строк, как ни странно "угадай", возникает следующее исключение:
[<ProjectPath>\index.php (51)] Google\Protobuf\Internal\GPBDecodeException: Error occurred during parsing: Google\Cloud\Dialogflow\V2\Intent_Message is deprecated and will be removed in a future release. Use Google\Cloud\Dialogflow\V2\Intent\Message instead in C:\Users\Uporabnik\Documents\convoworks-proto\ConvoWorksProto\library\vendor\google\protobuf\src\Google\Protobuf\Internal\Message.php:1309
Stack trace:
#0 <ProjectPath>\library\vendor\google\protobuf\src\Google\Protobuf\Internal\Message.php(779): Google\Protobuf\Internal\Message->parseFromJsonStream(Object(Google\Protobuf\Internal\RawInputStream))
#1 <ProjectPath>\library\vendor\google\gax\src\Transport\RestTransport.php(118): Google\Protobuf\Internal\Message->mergeFromJsonString('{\n "responseId...')
#2 <ProjectPath>\library\vendor\guzzlehttp\promises\src\Promise.php(203): Google\ApiCore\Transport\RestTransport->Google\ApiCore\Transport\{closure}(Object(GuzzleHttp\Psr7\Response))
#3 <ProjectPath>\library\vendor\guzzlehttp\promises\src\Promise.php(156): GuzzleHttp\Promise\Promise::callHandler(1, Object(GuzzleHttp\Psr7\Response), Array)
#4 <ProjectPath>\library\vendor\guzzlehttp\promises\src\TaskQueue.php(47): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}()
#5 <ProjectPath>\library\vendor\guzzlehttp\guzzle\src\Handler\CurlMultiHandler.php(118): GuzzleHttp\Promise\TaskQueue->run()
#6 <ProjectPath>\library\vendor\guzzlehttp\guzzle\src\Handler\CurlMultiHandler.php(145): GuzzleHttp\Handler\CurlMultiHandler->tick()
#7 <ProjectPath>\library\vendor\guzzlehttp\promises\src\Promise.php(246): GuzzleHttp\Handler\CurlMultiHandler->execute(true)
#8 <ProjectPath>\library\vendor\guzzlehttp\promises\src\Promise.php(223): GuzzleHttp\Promise\Promise->invokeWaitFn()
#9 <ProjectPath>\library\vendor\guzzlehttp\promises\src\Promise.php(267): GuzzleHttp\Promise\Promise->waitIfPending()
#10 <ProjectPath>\library\vendor\guzzlehttp\promises\src\Promise.php(225): GuzzleHttp\Promise\Promise->invokeWaitList()
#11 <ProjectPath>\library\vendor\guzzlehttp\promises\src\Promise.php(62): GuzzleHttp\Promise\Promise->waitIfPending()
#12 <ProjectPath>\library\vendor\google\cloud-dialogflow\src\V2\Gapic\SessionsGapicClient.php(350): GuzzleHttp\Promise\Promise->wait()