SMS Gateway との統合
SMS Gateway と統合して、音声通話中のカスタマーと音声エージェントの間での SMS メッセージングを有効にするように、IBM® Voice Gateway を構成できます。
発信者との音声通話中に、Voice Gateway が SMS Gateway と統合されます。 Watson Assistant から smsActSendSMS アクションを受け取った後、Voice Gateway は、SMS Gateway によって提供される REST API を使用して論理チャネルを作成します。 SMS パイプと呼ばれるこのチャネルには、発信者とテナント・エージェントの番号の固有のリファレンスが、SMS 交換に関するコンテキストとともに含まれています。
Voice Gateway は、SMS パイプのリファレンスを使用して、smsActSendSMS 要求に指定されたアウトバウンド・メッセージを SMS Gateway へ送信します。 次に、このメッセージが発信者に転送されて、SMS メッセージング対話が開始されます。 発信者が SMS メッセージで Voice Gateway に応答すると、そのインバウンド・メッセージが SMS Gateway に送信され、そこから Voice Gateway へ転送されます。
音声通話が完了するか、Voice Gateway が REST API を使用してパイプを削除すると、SMS メッセージング対話は終了します。

SMS Gateway REST API 操作のコード例および 説明については、『REST API を使用した SMS セッションの制御』を参照してください。
始めに
-
Voice Gateway インスタンスをデプロイします。 『Voice Gateway の開始』を参照してください。
重要: SMS Gateway 統合には、必要な Watson サービスを Voice Gateway デプロイメントにおいて作成および構成することが必要です。
-
SMS Gateway インスタンスをデプロイします。 『SMS Gateway の開始』を参照してください。
SMS Gateway と Voice Gateway の統合の構成
SMS Gateway との統合を作成するには、以下のステップを実行する必要があります。
- Voice Gateway デプロイメントを構成する
- Watson Assistant ダイアログに
vgwActSendSMSアクションを追加する - Watson Assistant ダイアログにインバウンド・メッセージを処理するための必要なインテントを追加する
- Voice Gateway サーバーおよび SMS Gateway サーバー用のセキュリティー証明書を組み込む
Voice Gateway デプロイメントの構成
SMS Gateway 統合は、シングルテナント・デプロイメントと JSON 構成のマルチテナント Voice Gateway デプロイメントの両方でサポートされます。 どちらのデプロイメントの場合も、デプロイメント構成ファイル内の WEB_HOOK_HOST および HTTP_HOST は必須の構成変数です。
- マルチテナント JSON 構成: 以下の例は、ある特定のテナントに対して Voice Gateway の SMS Gateway への統合を有効にする方法を示しています。 『マルチテナント JSON 構成でのテナントの構成』を参照してください。
{
"smsPipe": {
"url": "https://host:port/sms.gateway/smsPipe",
"username": "U53rnam3",
"password": "pa55c0d3",
"tenantPhoneNumber": "+12345556789",
"readTimeout": 5,
"connectTimeout": 2,
"expirationInterval": 1200,
"enableInboundSMS": true
}
}
- シングルテナント・デプロイメント: 以下の例は、ある特定のテナントに対して Voice Gateway の SMS Gateway への統合を有効にする方法を示しています。 『Voice Gateway の構成環境変数』を参照してください。
- SMS_GW_URL=https://host:port/sms.gateway/smsPipe
- SMS_GW_USERNAME=U53rnam3
- SMS_GW_PASSWORD=pa55c0d3
- TENANT_PHONE_NUMBER=+12345556789
- ENABLE_INBOUND_SMS=`True`
- SMS_GW_READ_TIMEOUT=5
- WEB_HOOK_HOST=vgwHostName
- HTTP_HOST=*
IBM Cloud での SMS Gateway デプロイメントのパブリック IP アドレスの検出
IBM Cloud Kubernetes Service での SMS Gateway デプロイメントの url パラメーターまたは SMS_GW_URL 環境変数を構成するには、ibmcloud cs workers コマンドを使用できます。
-
IBM Cloud にログインします。
ibmcloud login --sso -
クラスターの IP アドレスを見つけます。
ibmcloud cs workers <cluster_name_or_id> -
その IP アドレスを使用して、
http://<public IP>:port/sms.gateway/smsPipeのフォーマットでurlまたはSMS_GW_URLの値を作成します。- SMS_GW_URL=http://100.11.11.11:99999/sms.gateway/smsPipeVoice Gateway デプロイメントと SMS Gateway デプロイメントが同じノードで稼働している場合は、パブリック IP アドレスではなくサービス名を使用できます。
- SMS_GW_URL=http://sms-gateway:9080/sms.gateway/smsPipe
vgwActSendSMS アクションの追加およびインテントの構成
送信する SMS メッセージ・テキストは、Watson Assistant ダイアログまたは SOE のいずれかから vgwActSendSMS コマンドを使用して送信できます。 会話セッション中にダイアログ・ノードがトリガーされると、Voice Gateway は SMS メッセージを発信者に送信します。 メッセージを定義するには、ダイアログ・ノード応答の JSON に以下のアクションを追加します。 Watson Assistant、SMS Gateway、および
Voice Gateway のカスタマイズについての例および情報は、『アクション・タグ』にある vgwActSendSMS、『アクションおよび状態の定義』、および、『SMS Gateway の資料』にあるサンプルを参照してください。
{
"command" : "vgwActSendSMS",
"parameters" : {
"message" : "This is a test message"
}
}
SMS Gateway からの SMS メッセージの受信
SMS メッセージを受け取った後、Voice Gateway は、ターンを開始し、発信者から SMS メッセージを受け取ったことを示すワード「vgwSMSMessage」が入ったテキスト更新を Watson Assistant に送信します。
SMS メッセージを受け取った後に発信者との会話に中断が生じないことを確実にするため、Voice Gateway は、意図しないバージインを回避するために、進行中の音声トランザクションがあるかどうかを検証します。 Voice Gateway は、その時点で発信者からの発話または Dual-Tone Multi-Frequency シグナルを収集中である場合は、現行トランザクションが完了するのを待機します。
収集が完了するか、タイムアウトになると、Voice Gateway は、Watson Assistant サービスへのターンを開始します。
発信者からの入力が検出されない場合、Voice Gateway は、すぐに Watson Assistant サービスへのターンを開始し、「vgwSMSMessage」テキスト更新を送信します。
SMS メッセージを送信できない場合の障害処理
発信者に SMS メッセージを送信できない場合、Voice Gateway は、すぐに Watson Assistant サービスへの turn イベントを開始します。 Watson Assistant サービスは、SMS メッセージを発信者に送信できなかったことを示すワード「vgwSMSFailed」が入ったテキスト更新を受け取ります。 適切な応答で障害メッセージを処理するための、#vgwSMSFailed に対するインテントを作成することによって、Voice
Gateway がどのように応答するのかをカスタマイズできます。 『サービス・オーケストレーション・エンジンを介した接続』を参照してください。
Voice Gateway と SMS メッセージをやり取りするときの Watson Assistant コンテキストの管理
SMS と音声は、発信者と通信するための 2 つの別々のチャネルであるため、チャネルごとに独立したコンテキストを維持することが重要です。 Voice Gateway は、vgwActSendSMS を含んでいる Watson Assistant からの応答で受け取った、現行ワークスペース・コンテキストを保存します。 発信者が SMS メッセージで応答すると、Voice Gateway はこのコンテキストを Watson Assistant または SOE に渡して戻します。
このコンテキストは、vgwSMSContext 状態変数に入って Watson Assistant に渡されます。 そうすると、SOE またはワークスペースは、インバウンド SMS メッセージの関連コンテキストにアクセスして、メッセージの目的を判別できます。
オプション・パラメーター
Watson Assistant ダイアログで、SMS Gateway との統合構成を定義するオプション・パラメーターを指定できます。 vgwActSendSMS アクション内に構成パラメーターを定義すると、Voice Gateway テナント構成はオーバーライドされます。 定義できるパラメーターのリストについては、『Voice Gateway のアクション・タグおよび状態変数』で vgwActSendSMS についての項目を参照してください。
セキュリティー証明書の組み込み
SMS Gateway にインバウンド・メッセージが到着すると、そのメッセージは、Voice Gateway が SMS Gateway への SMS パイプ要求を作成するときに指定する Voice Gateway の URL に送信されます。 Voice Gateway URL は、WEB_HOOK_HOST と HTTP_PORT または HTTPS_PORT の各構成変数で指定される値を使用して生成されます。
URL スキームは、SMS_GW_URL 構成変数の値に基づいています。 例えば、SMS_GW_URL 変数で使用されるスキームが https の場合、Voice Gateway URL も https スキームを使用します。 Watson Assistant API を使用すると SMS Gateway サーバー URL も指定できます。
SMS Gateway にインバウンド・メッセージが到着すると、そのメッセージはこの URL に送信されます。 SMS Gateway サーバー URL をデプロイメント構成内の SMS_GW_URL または url 値で定義することによって、Voice Gateway から SMS Gateway REST API への要求を保護できます。
統合された SMS Gateway インスタンスと Voice Gateway インスタンスの間で受け渡されるデータを暗号化するには、それぞれに対してセキュリティー証明書を構成する必要があります。
- SMS Gateway サーバーおよび Voice Gateway サーバーごとに、署名者証明書を生成します。
- Voice Gateway において、各 SMS Gateway からの署名者証明書を各 Voice Gateway サーバー鍵ファイルに追加します。 『Voice Gateway の保護』を参照してください。
- SMS Gateway において、各 Voice Gateway からの署名者証明書を各 SMS Gateway サーバー鍵ファイルに追加します。 『SMS Gateway 用の SSL および TLS 暗号化の構成』を参照してください。