Voice Agent with WatsonからTwilio経由でオペレータに架電する


はじめに

本記事は、以下の後編となります。すでにVoice Agent with Watsonが実装されていることを前提にかかれていますので、予めご了承ください。
TwilioとVoice Agent with Watsonを使って会話ボットを作成する

Twilio側の実装

Voice Agent with Watson側から発信をする場合は、Elastic SIP Trunkingのターミネーションという機能を利用します。
ここではそちらの設定を行っていきます。

  • 管理コンソールにログインします。
  • Elastic SIP Trunkingメニューの認証IPアクセス制御リストを選択します。

  • 新しいIPアクセスコントロールリストを作成するボタンを押します。
  • プロパティのわかりやすい名前欄には、「Watson Voice Agent」と入力します(名前は何でも良いです)。
  • IPアドレス欄には、米国南部で構築している場合は「169.60.154.134」、米国東部で構築している場合は「169.61.86.179」と入力します。
  • その下の名前欄にはそれぞれの地域がわかるような名前を入れておきます。

  • Createボタンを押します。
  • 続けて、Elastic SIP Trunkingメニューからトランクを選択します。

  • すでに作成済みのトランクをクリックします。
  • トランクメニューからターミネーションをクリックします。
  • TERMINATION SIP URI欄に、「watson-voiceagent-XXXXXXXX」(XXXXXXXの部分は他の人と被らないような文字列)と入力します。Availableと表示されればOKです。この文字列は後ほど使うので、忘れないようにしてください。
  • IP ACCERSS CONTROL LISTS欄をクリックすると、先ほど作成したWatson Voice AgentというIPアドレス制御リストが表示されるので、そちらを選択します。

  • SAVEボタンを押して、設定を保存します。

以上でTwilio側の設定は一旦終了です。

Watson側の設定

Watson側では、以下の設定が必要になります。

  • Watson Assistantで、転送をするためのインテント(発話条件)を追加します。
  • 同じくAssistantのダイアログで、作成したインテントに関するノードを追加します。

では、早速始めましょう。

  • IBMクラウドにログインし、ダッシュボードからWatson Assistantを選択します。

  • ツールの起動ボタンを押します。

  • Workspacesタブに移動し、今回利用しているWorkspaceを選択します。
  • Intentsタブにいることを確認し、Add intentボタンを押します。
  • Intent name欄に、「#SwitchToOperator」と入力し、Description欄には、「オペレータに転送」と入力します。
  • Create intentボタンを押します。
  • Add user examples欄に、「オペレーターをお願いします」と入力して、Add exampleボタンを押します。
  • 同様にサンプルとして「オペレーター」「オペレーターにつないで」「オペレーターと話したいです」などを登録していきます。

  • 画面上部の左矢印を押してから、今度はDialogタブに移動します。
  • Add nodeボタンを押します。

  • フローの名前は、「SwitchToOperator」にします。
  • If bot recognizes:欄には、先ほど作成したインテント「#SwitchToOperator」と入力します。
  • さらに、Then respond with:の右側にあるメニューボタンを押してOpen JSON editorを選択します。

  • JSONエディタが開いたら。すでに記述されているJSONをすべて削除し、以下の内容を上書きます。
{
  "output": {
    "text": {
      "values": [
        "オペレータに接続しています。このままお待ちください。"
      ],
      "selection_policy": "sequential"
    },
    "vgwAction": {
      "command": "vgwActTransfer",
      "parameters": {
        "transferTarget": "sip:+819012345678\\@watson-voiceagent-XXXXXXX.pstn.jp1.twilio.com"
      }
    }
  }
}
  • 12行目を以下のように修正します。
  • sip:+819012345678の部分を、どなたか別の方の携帯電話番号に変更します。このとき、先頭の0を+81に変換してください。
  • @watson-voiceagent-XXXXXXX.pstn.jp1.twilio.comXXXXXXXの部分を先程ターミネーションの設定時に指定したものに変更します。

以上で設定は完了です。

テスト

Voice Agent with Watsonに電話をして、会話の途中で「オペレーターにつないで」と発話すると、「オペレータに接続しています。このままお待ち下さい。」とガイダンスが流れて、指定した携帯電話が鳴ります。

補足

今回の設定ではオペレーターが携帯電話になっているので、発信者番号が表示されません。これは、日本国内においてPSTN経由での発信では、Twilioの番号を通知しなくてはならないためです。
Twilio番号を通知させるためには、JSON内で新しい050番号宛に発信させるようにし、その番号からオペレーターに転送させるようにします。