Proxy経由でWatson Assistantに接続する方法(JavaScript)


はじめに

アプリケーションからProxy経由でWatson Assistantに繋ぎたい。

本来はAssistantサービスのインスタンス化時にProxyの設定を入れれば可能らしいが、うまくいかない。

どうもSDKのバグのようで、現在fix申請中だが、SDKを修正することで解決したのでその方法について記載する。


環境

Watson Assistant V1 2019-02-28

Node.js 12.5.0


tunnelのinstall

npm install tunnel


SDKの修正

npm install ibm-watsonするとインストールされるnode_modules/ibm-cloud-sdk-core/lib/requestwrapper.jsに以下のコードを追加する。

先頭に


requestwrapper.js

var tunnel = require("tunnel");


axios_1.default.createに


requestwrapper.js

var agent = tunnel.httpsOverHttp({

proxy: {
host: 'XXX.XXX.XXX.XXX',
port: YYYY,
},
});

axiosConfig.httpsAgent = agent;
axiosConfig.proxy = false;

this.axiosInstance = axios_1.default.create(axiosConfig);



参考情報

createSession from Assistant V2 is not working behind http proxy

IBM Cloud API Docs Watson Assistant v1