目前我要重写一个简单的代码,从 Python 到 PHP。此代码用于使用 ProtoBuf 和 gRPC 向 Yandex Cloud (Speech Kit) 发出请求。
在 Python (v3) 上一切正常。
然后,我想在 PHP(MacOS 上的 7.1.23)中使用相同的方法。我曾经protoc编译 Protobuf 和 grpc php 插件来获取服务客户端。
我面临的第一个复杂问题是客户端的方法接口SttServiceClient->StreamingRecognize(array metadata[], array options=[])有点令人困惑,因为我认为它应该接受StreamingRecognitionRequest.
第二个是我收到异常 InvalidArgumentException: Bad metadata value given:
PHP Fatal error: Uncaught InvalidArgumentException: Bad metadata value given in /Users/cyberpug/Documents/repos/php/yaskit/vendor/grpc/grpc/src/lib/BidiStreamingCall.php:37
Stack trace:
#0 /Users/cyberpug/Documents/repos/php/yaskit/vendor/grpc/grpc/src/lib/BidiStreamingCall.php(37): Grpc\Call->startBatch(Array)
#1 /Users/cyberpug/Documents/repos/php/yaskit/vendor/grpc/grpc/src/lib/BaseStub.php(384): Grpc\BidiStreamingCall->start(Array)
#2 /Users/cyberpug/Documents/repos/php/yaskit/vendor/grpc/grpc/src/lib/BaseStub.php(595): Grpc\BaseStub->Grpc\{closure}('/yandex.cloud.a...', Array, Array, Array)
#3 /Users/cyberpug/Documents/repos/php/yaskit/STT/proto/Yandex/Cloud/Ai/Stt/V2/SttServiceClient.php(26): Grpc\BaseStub->_bidiRequest('/yandex.cloud.a...', Array, Array, Array)
#4 /Users/cyberpug/Documents/repos/php/yaskit/test.php(83): Yandex\Cloud\Ai\Stt\V2\SttServiceClient->StreamingRecognize(Array, Array)
#5 {main}
thrown …Run Code Online (Sandbox Code Playgroud)