PHP Dialogflow SDK иногда вызывает устаревшую ошибку класса при обнаружении намерения - PullRequest
0 голосов
/ 11 марта 2020

Предположим, у меня есть агент с двумя пользовательскими намерениями:

  • 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...