SMS Gateway 用の API

アクションおよび状態変数を IBM Watson™ Assistant サービスと交換することで、SMS Gateway の動作および SMS セッションのフローを制御できます。 アクション・タグは、会話セッション中に SMS Gateway が実行するアクションを開始します。状態変数は、セッションの特性を示すために SMS Gateway によって送信されます。

アクション・タグ

SMS Gateway でアクションを開始するには、JSON フォーマットで Watson Assistant ダイアログ・ノードの output プロパティーにアクション・タグを定義します。 各アクションでは、smsAction プロパティーを定義します。このプロパティーには、command プロパティーとオプションの parameter プロパティーという 2 つの部分が含まれます。後者では、必要とされるコマンドの属性を定義できます。

例えば、以下のアクションが含まれたノードがトリガーされると、セッション・タイムアウトが 200 秒に設定されます。

{
  "output": {
    "smsAction": {
      "command": "setSessionTimeoutCount",
      "parameters":{
            "count": 200
       }
    }
  }
}

smsActSendMedia が含まれたノードがトリガーされると、MMS メッセージングが有効にされます。

{
  "output": {
    "smsAction": {
          "command": "smsActSendMedia",
          "parameters":{
            "mediaURL": [
              "https://exampleonly.com/media/l4JyRqcDU93S334KQ/first.gif",
              "https://exampleonly.com/media/tK9wGsGc72LcznCSeU/second.gif"
            ]
         }  
      }
   }   
}

以下の表は、Watson Assistant ダイアログで指定できるアクションと、各アクションに定義可能な属性をリストしています。

表 1. Watson Assistant から開始できるアクション
アクションのコマンド 説明 属性
setSessionTimeoutCount セッション・タイムアウトを更新 count: 時間 (秒)
smsActForceNoInputTurn ユーザーからの入力を待たずに、会話の新しいターンを強制します。 SMS Gateway はテキスト・フィールドに smsNoInputTurn を指定してメッセージ要求を送信し、この要求をダイアログ内のインテントにマップできるようにします。 なし
smsActSetConversationConfig Watson Assistant ワークスペースまたはサービス・オーケストレーション・エンジンを構成するための一連のパラメーターを適用。 Watson Assistant サービスまたはサービス・オーケストレーション・エンジンの動的構成で詳細を確認してください。 以下のすべてのパラメーターがサポートされます。 詳しくは、『SMS Gateway の拡張 JSON 構成プロパティー』を参照してください。
  • url
  • workspaceID
  • username
  • password
  • convApiVersion
  • apikey
  • tokenAuthEnabled
  • tokenServiceProviderURL
  • conversationFailedReplyMessage
  • convConnectTimeout
  • convReadTimeout
  • convMaxRetryNo
  • convRetryInterval
terminateSession 関連付けられたセッションを終了 N/A
smsActSendMedia MMS メッセージを有効化 mediaURL: ユーザーに送信されるパブリックにアクセス可能なメディア URL の JSON 配列を指定。

SMS Gateway によって送信される状態変数

SMS セッションの状態の変更を示すために、SMS Gateway は、Watson Assistant にメッセージ要求ごとにコンテキスト変数を送信します。 Watson Assistant ダイアログはステートレスであるため、Watson Assistant との交換のすべての状態は SMS Gateway 側で保持されます。 したがって、チャット・セッション内の Watson Assistant ターンごとに、context セクションが Watson Assistant に渡され、ダイアログによって処理または更新され、Watson Assistant から戻されます。

例えば、必須の値のみを使用する SMS セッションにおける基本的なターンでは、SMS Gateway は以下の context オブジェクトを送信します。

{
  "context": {
    "smsTenantPhoneNumber": "+12345556789",
    "smsUserPhoneNumber": "+18765554321",
    "smsSessionID": "a23de67h-e527-40d5-a867-5c0ce9e72d0d"
  }
}

以下の状態変数が SMS Gateway からメッセージ要求で送信されます。 smsTenantPhoneNumbersmsUserPhoneNumbersmsUserData、および smsSessionTimeoutCount の値は、セッション REST API から直接プルされます。

表 2. SMS Gateway によって送信されるコンテキスト変数
状態変数 説明
smsTenantPhoneNumber ユーザーがメッセージングしている SMS Gateway テナント電話番号。
smsUserPhoneNumber メッセージを SMS Gateway と交換しているユーザーの電話番号。
smsUserData サービス・オーケストレーション・エンジンまたは Watson Assistant サービスにそのまま渡される JSON フォーマットのデータ。 この変数が送信されるのは、セッションが SMS Gateway テナントから開始され、データが REST API を介して送信された場合のみです。
smsSessionTimeoutCount セッション・タイムアウト値。 この変数が送信されるのは、タイムアウト値が REST API を介して定義された場合のみです。
smsError SMS Gateway が SMS メッセージの送信に失敗した場合、この変数に、発生したエラーに関する詳細が含まれます。
smsSessionID 関連する SMS Gateway セッションの GUID。
smsMedia mediaURL および対応する mediaContentTypearraylist。 このコンテキスト変数は、各会話ターンの終了時にクリアされます。

テキスト・キーワード

特定のイベントは、SMS Gateway が Watson Assistant にメッセージ要求でテキスト・キーワードを送信するようにトリガーします。 このようなテキスト・キーワードを使用して、さらにサービス・オーケストレーション・エンジンで処理を行ったり、分析したりすることができます。

以下の表では、SMS Gateway から送信されるそのテキスト値と、それをトリガーするイベントをリストします。

表 3. SMS Gateway によって送信されるテキスト値
テキスト値 イベント
smsError SMS プロバイダーへのアウトバウンド SMS メッセージの送信中にエラーが発生した場合に送信されます。
smsResponseTimeout smsSessionTimeoutCount で設定されている時間内にユーザーが応答しなかったためにセッション・タイムアウトが発生した場合に送信されます。

Watson Assistant ダイアログで設定される変数

SMS Gateway の動作を変更するために、Watson Assistant ダイアログ内で以下の状態変数を設定できます。 関連する構成環境変数を持つ変数が設定されていない場合、その関連する環境変数の値が使用されます。

表 4. Watson Assistant ダイアログで設定される変数
状態変数名 予期される値 説明 関連する環境変数
smsConversationResponseTimeout ミリ秒単位の時間 SMS Gateway が Watson Assistant サービスからの応答を受け取るために待機する時間 (ミリ秒)。 この時間を超過すると、SMS Gateway は Watson Assistant サービスへの接続を再試行します。 まだサービスに到達できない場合は、SMS 応答は失敗します。 バージョン 1.0.0.5a 以降。 WATSON_CONVERSATION_READ_TIMEOUT