3

Google の Dialogflow v2 Node.js SDK から Dialogflow SDK サンプルを動作させようとしています。私は node.jsv8.10.0を、dialogflow node.js SDK version で使用しています0.5.0企業の http/s プロキシの背後から「Detect Intent」サンプルを実行しようとすると、この問題が発生します。

Auth error:Error: write EPROTO 140163148314432:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:../deps/openssl/openssl/ssl/s23_clnt.c:827

ここでこの投稿に出くわしました: https://medium.com/google-cloud/accessing-google-cloud-apis-through-a-proxy-fe46658b5f2a非常にJava指向のように見えましたが、環境変数GRPC_PROXY_EXPを設定することを提案しましたgRPC 呼び出しをプロキシの背後で機能させるため。ノードを実行していたシェルで環境変数を設定export GRPC_PROXY_EXP="$https_proxy"し、同じ問題でサンプルを再度実行しようとしました。$http_proxymy ,$https_proxy変数は同じであることに注意してください。

プロキシなしで wifi ネットワークに接続すると、同じマシンから同じサンプルが動作します。パケット分析は、tcpdump使用中の 2 つの TCP 接続 (個別のポート) があることを示しています。2 番目の接続は、 (最初の TCP 接続と同様に) CLIENT_HELLO最初に認証して HTTPS プロキシにメッセージを送信する必要があるときに、すぐに TLS メッセージを開始します。CONNECT

何か不足していますか、それともダイアログフロー (google-gax / grpc) ノード ライブラリの問題ですか?

4

1 に答える 1

1

いくつかの Google ノード プロジェクトの問題ディスカッション ボードで何度かやり取りした結果、HTTP トンネリングを介した HTTPS が使用されている場合、 API によるnpm パッケージgtokenの直接使用は、 HTTPS を使用するためだけに準備されていた (一貫したaxiosURL のプロトコルを使用します)。

長い話を短くします; には、推移的な依存関係に の代わりにを使用するパッケージDialogflow 0.8.2のバージョンが含まれているという点で、この問題の修正が含まれています。 ライブラリ内の別の場所で使用されるパッケージで、HTTP/S 接続を確立します (これはプロキシを認識し、HTTP ユースケースを介した HTTPS を処理します)。 gtokengaxiosaxiosgaxiosgoogle-gax

于 2019-07-10T19:20:20.800 に答える