Docker での SMS Gateway のデプロイ
オンプレミス環境の独自の Docker Engine で SMS Gateway をデプロイするには、以下の手順に従います。 クラウドのデプロイメントについては、IBM Cloud Kubernetes Service 内の Kubernetes への SMS Gateway のデプロイを参照してください。
始めに
-
SMS 機能を持つ電話番号を作成し、IBM Watson™ Assistant サービスを作成します (『SMS Gateway の開始』の説明を参照)。
-
ゲートウェイを実行する予定のホストに Docker をインストールします。 Docker Engine は、SMS Gateway コンテナーの軽量のランタイムを提供します。
Windows システム: Docker for Windows では 64 ビットの Windows 10 Pro が必要であることに注意してください。 以前のバージョンの Windows では、Docker Machine を Docker Toolbox の一部としてインストールする必要があります。 以下のデプロイメント手順で示しているように、Docker Machine にデプロイする場合は、若干手順が異なります。
-
sample.voice.gateway GitHub リポジトリーを複製またはダウンロードします。これには、サンプル Watson Assistant ダイアログ、構成ファイル、および開始に役立つその他のアイテムが含まれています。
-
以下のポートのいずれかが SMS プロバイダーへの接続のために開いていることを確認します。
- 保護された接続: ポート 9443
- 無保護の接続: ポート 9080
SMS 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)" -
SMS Gateway のデプロイ元にするディレクトリーに移動し、以下のように最新の Docker イメージをプルします。
docker pull ibmcom/voice-gateway-sms:latest -
マシン上の sample.voice.gateway リポジトリーを複製したディレクトリーに移動し、
sms/dockerディレクトリーを開きます。このディレクトリーには、サンプルdocker-compose.yml構成ファイルが入っています。サンプル・ファイルは、最小限の構成を使用して事前構成されており、最新のイメージが指定されています。 すべての変数の完全なリストについては、『SMS Gateway の構成環境変数』を参照してください。
- Docker イメージをプルしたディレクトリーにサンプル・ファイルをコピーします。
-
ファイルを変更し、Watson Assistant、SMS プロバイダー、およびテナント電話番号を構成します。
-
Watson Assistant について、サービス資格情報およびワークスペース ID を指定します。 サービス資格情報の検索方法については、「Service credentials for Watson services」を参照してください。
ヒント: Watson Assistant ワークスペース ID を見つけるには、Watson Assistant ツール内の「ワークスペース」ビューに移動します。 統合するワークスペース上で、「アクション」アイコン (⋮) をクリックし、「詳細の表示」を選択します。
例:
environment: - WATSON_CONVERSATION_URL=https://gateway.watsonplatform.net/conversation/api/ - WATSON_CONVERSATION_USERNAME=9h7f54cb-d9ed-46b3-8492-e9a9bf555021 - WATSON_CONVERSATION_PASSWORD=InWtiUpYhF1Z - WATSON_CONVERSATION_WORKSPACE_ID=a23de67h-e527-40d5-a867-5c0ce9e72d0d -
SMS プロバイダーについて、API URL およびログイン資格情報を指定します。
ユーザー名はアカウント SID にマップされ、パスワードは認証トークンにマップされます。 これらの値は両方ともご使用の SMS プロバイダー用のコンソールで確認できます。
例:
- SMS_PROVIDER_URL=https://api.twilio.com - SMS_PROVIDER_USERNAME=A23de67h0236e5e7c7f1ead4499h7f54cb - SMS_PROVIDER_PASSWORD=9h7f54cb3b1d3736e19ac64aa23de67h -
テナント電話番号について、SMS プロバイダーからの完全な電話番号を指定します。 SMS プロバイダーで必要とされるとおりの番号フォーマットを使用します。 例えば、Twilio 電話番号を指定する場合、正符号 (+) と国別コードおよび市外局番を含めます。 RestcommONE の場合は、正符号 (+) を入れないでください。
例:
- TENANT_PHONE_NUMBER=+12345556789 -
オプション: ユーザーが SMS メッセージをゲートウェイに送信して SMS セッションを作成できるようにする場合は、
ALLOW_SESSION_CREATE_VIA_SMSをtrueに設定します。 デフォルトでは、SMS セッションは、REST API を使用することでのみ作成できます。例:
- ALLOW_SESSION_CREATE_VIA_SMS=true
-
-
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コンテナーを開始すると、SMS Gateway サーバーのデプロイ中に多数のメッセージが表示されます。
ヒント:
docker-composeコマンドがない場合は、Docker Compose をインストールする必要があります。- コンテナーの開始時に
grpc: the connection is unavailableエラーが表示された場合、Docker デーモンを再始動し、コマンドを再試行します。 - 開始時に以下のエラーが表示された場合、恐らく、別のアプリケーションが指定ポートを listen しています。 競合しているアプリケーションをシャットダウンし、コマンドを再試行します。
Bind for 0.0.0.0:9080 failed: port is already allocated
次の作業
Docker に SMS Gateway をデプロイした後に、Web フックをセットアップし、デプロイメントをテストします (『SMS Gateway の開始』の説明を参照)。
docker-compose.yml ファイルを編集して構成変数を追加または変更した後、コンテナーを再デプロイすることにより、SMS Gateway デプロイメントをさらに構成できます。
SMS Gateway の再デプロイ
-
実行中の SMS Gateway コンテナーを停止します。
docker stop -
コンテナーを削除します。
docker rm vgw-sms-gateway -
構成の更新を行った後に、コンテナーを再度作成して開始します。
docker-compose up