Docker での Voice Gateway のデプロイ
以下の説明は、オンプレミスのインストール済み環境用の独自の Docker エンジンに IBM® Voice Gateway をセットアップするためのものです。 クラウドのデプロイメントについては、IBM Cloud Kubernetes Service 内の Kubernetes への Voice Gateway のデプロイを参照してください。
始めに
-
ゲートウェイを実行する予定のホストに Docker をインストールします。 Docker Engine は、Voice Gateway を構成するコンテナー (SIP Orchestrator および Media Relay) 用の軽量のランタイムを提供します。 Docker Community Edition および Enterprise Edition バージョン 1.13 以降がサポートされます。
Windows システム: Docker for Windows では 64 ビットの Windows 10 Pro が必要であることに注意してください。 以前のバージョンの Windows では、Docker Machine を Docker Toolbox の一部としてインストールする必要があります。 以下のデプロイメント手順で示しているように、Docker Machine にデプロイする場合は、若干手順が異なります。
-
sample.voice.gateway GitHub リポジトリーを複製またはダウンロードします。これには、サンプル Watson Assistant ダイアログ、構成ファイル、および開始に役立つその他のアイテムが含まれています。
-
IBMid および IBM Cloud アカウントに登録し、以下の Watson サービスを作成します。
- Speech to Text
- Text to Speech (セルフサービスのみ)
- Watson Assistant (セルフサービスのみ)
作成した各サービスの資格情報をメモしておきます。 Voice Gateway の構成でこの資格情報の指定が必要になります。
重要: Watson Assistant の場合、ダイアログ付きのワークスペースを追加する必要があります。 複製された sample.voice.gateway GitHub リポジトリーから conversation/sample-conversation-en.json ファイルをインポートすると、迅速に開始できます。 JSON ファイルのインポートについて詳しくは、Watson Assistant 資料の Creating workspaces を参照してください。 サンプルを使用せずに独自のダイアログを作成する場合、ダイアログには必ず
conversation_start条件を含むノードとデフォルト応答を含むノードを組み込んでください。 -
Voice Gateway をファイアウォールの内側にデプロイする予定で、ファイアウォールの外部にある SIP トランクまたは SIP クライアントを介してそのゲートウェイに接続する場合は、必要なポートがすべてオープンしていることを確認してください。 詳しくは、『ファイアウォールのポート設定』を参照してください。
Voice Gateway のデプロイ
-
Docker Machine のみ: Docker にログインするには、その前に、コマンド・ラインから以下のコマンドを実行して、Docker Engine を指すようにシェルを設定します。
Windows:
@FOR /f "tokens=*" %i IN ('docker-machine env default --shell cmd') DO @%iUNIX および Mac OS X:
eval "$(docker-machine env default)" -
以下のように、SIP Orchestrator (
voice-gateway-so) と Media Relay (voice-gateway-mr) の最新の Docker イメージをプルします。docker pull ibmcom/voice-gateway-so:latest docker pull ibmcom/voice-gateway-mr:latest -
ご使用のマシン上の sample.voice.gateway リポジトリーを複製したディレクトリーに移動し、
dockerディレクトリーを開きます。このディレクトリーには、以下のサンプル構成ファイルが入っています。docker-compose-self-service.yml-
docker-compose-agent-assist.ymlこれらのサンプル・ファイルは、各実装用の最小構成を指定して事前構成されており、Voice Gateway の最新のイメージを指しています。 ご使用の実装タイプ用のファイルを変更して、Watson サービス資格情報を含める必要があります。 エージェント・アシスタントの場合は、書き起こしレポート・イベントも構成します。
-
ご使用の実装タイプに関連したファイルを
docker-compose.ymlという名前の新規ファイルにコピーします。 同じディレクトリー内にファイルを保管します。 -
新規ファイル
docker-compose.ymlで、Watson サービスの資格情報など、ブランクの環境変数がある場合は、その環境変数に入力してください。... # Creds for IBM Cloud STT Example #If you have a username and password specified in your service use - WATSON_STT_USERNAME=9h7f54cb-5epb-80d6-45c3-da41d2bf7a71 - WATSON_STT_PASSWORD=asxNzDLpIJ6F - WATSON_STT_URL=https://stream.watsonplatform.net/speech-to-text/api #Otherwise if you have an apikey associated with your service use - WATSON_STT_APIKEY=MssmPWlXKeXkOeeZ1o93va5kSAzlqMSligZkso_FSopY - WATSON_STT_TOKEN_SERVICE_PROVIDER_URL=https://iam.cloud.ibm.com/identity/token - WATSON_STT_URL=https://stream.watsonplatform.net/speech-to-text/api ...すべての変数の完全なリストについては、『構成環境変数』を参照してください。
ヒント: Watson Assistant ワークスペース ID を見つけるには、Watson Assistant ツール内の「ワークスペース」ビューに移動します。 統合したいスキル上で「アクション」アイコン (⋮) をクリックし、「詳細の表示」を選択します。
注:
docker-compose.ymlファイルのWATSON_CONVERSATION_URL構成パラメーターでは、apiレベルまで (このレベルを含む) の URI の部分のみを使用します。 例えば、次のとおりです。- WATSON_CONVERSATION_URL=https://gateway.watsonplatform.net/conversation/api重要: パブリック・クラウドにデプロイする場合は、サービス妨害 (DoS) 攻撃や、外部ソースからの望まないセッションを防止するために、ホワイトリスト変数も必ず定義してください。これらが発生すると、Watson サービスの不要な課金を招き、Voice Gateway のパフォーマンスに影響するおそれがあります。 デフォルトでは、該当する変数は、Compose ファイルでコメント化されています。
- WHITELIST_TO_URI=2345556789詳しくは、『発信者および着信者のホワイトリスト登録』を参照してください。
-
docker-compose.ymlファイルを変更したディレクトリー内に.envファイルを作成し、EXTERNAL_IP変数を設定します。 以下のコマンドでは編集にviを使用することを想定していますが、任意のエディターを使用できます。ほとんどの Docker インストール済み環境では、設定する IP アドレスはローカル・システムの IP です。 仮想マシンでコンテナーを実行する Docker Machine の場合、
docker-machine ipコマンドを実行することによって、VM の IP アドレスを判別してください。-
以下のコマンドを入力して、
.envファイルを作成し、編集するために開きます。touch .env vi .env -
iを入力して編集モードに切り替えます。.envファイルの先頭に以下の行を追加します。EXTERNAL_IP=<IP address of local system or Docker Machine VM> -
Esc キーを押して編集モードを終了し、
:wqと入力してエディターを終了します。
-
-
以下のコマンドを実行して、コンテナーを作成して開始します。
docker-compose upヒント:
docker-composeコマンドがない場合は、Docker Compose をインストールする必要があります。- コンテナーの開始時に
grpc: the connection is unavailableエラーが表示された場合、Docker デーモンを再始動し、コマンドを再試行します。 - 開始時に以下のエラーが表示された場合、恐らく、別のアプリケーションがポート 5060 を listen しています。 競合しているアプリケーションをすべてシャットダウンし、コマンドを再試行します。
Bind for 0.0.0.0:5060 failed: port is already allocated
次の作業
Docker Engine 上に Voice Gateway をデプロイした後、Voice Gateway の開始で説明しているように、デプロイメントをテストします。
docker-compose.yml ファイルを編集して構成変数を追加または変更した後、コンテナーを再デプロイすることにより、Voice Gateway デプロイメントをさらに構成できます。 USE_OPTIMAL_CONFIGURATION 環境変数を設定することにより、最新のリリースに含まれている最適な構成設定を使用できます。 最適な構成設定の使用 (Using optimal configuration settings) を参照してください。
機密情報の保護: Text to Speech キャッシュおよび音声録音収集の両方がデフォルトで無効化されます。 これらのフィーチャーを有効にする場合は、Voice Gateway をデプロイする際に、機密データを保護および軽減するための適切な手段を講じてください。 Voice Gateway がデプロイされるディスクを暗号化することをお勧めします。 ファイル・システムにキャッシュされた録音または Text to Speech 応答には機密情報が含まれている可能性があるため、ハード・ディスク暗号化によってそれらを保護できます。 ハード・ディスク暗号化によって暗号化されるのは、Voice Gateway に保管されたデータのみです。 Voice Gateway と統合されたサービス内のデータを保護するには、追加ステップを実行する必要があります。