Web API リファレンス|Tropo Web API

{"ask":} オブジェクト

askによって、IVR機能をスクリプト上で作成することができます。

音声案内/ガイダンスを用いることでユーザーに対してDTMF等による入力を求めます。
音声案内では、TTS(合成音声)およびmp3やwavといった音声ファイルがご利用になれます。

DTMFと音声認識がご利用になれますが、音声認識は日本語未対応のため、動作を保証できません。

音声にTTSを利用する場合、文字コードは必ずUTF-8を指定してください。

フィールド

choices
データの種類:Object型 デフォルト:なし 必須
このパラメータはユーザーに対して、入力の処理方法を指定することができます。 具体的には、DTMFの桁数などを指定することができます。 以下はchoicesのプロパティです。
  • value - これは、データのタイプを決定するグラマです。 詳細については以下の例をご覧ください。
  • mode - 音声チャンネルのみに適用され、'SPEECH', 'DTMF', あるいは 'ANY' にできます。
  • terminator - これは、DTMFの入力の終了を伝えるタッチトーンキーです。通常、電話で一般的に使用されているのは、 #キーです。
DTMFを利用したシンプルグラマ  
"choices": { "value": "[5 DIGITS]", "mode": "dtmf" }
  このオブジェクトはGRXMLJSGFのような、高度なグラマもサポートします。
allowSignals
データの種類:String型またはArray型 デフォルト:*(任意の信号) 任意
このパラメータを使用すると、この関数にシグナルを割り当てることができます。一致するシグナル名を持つTropo REST APIからのイベントは、この関数を中断します。 すでにこの関数が実行され完了していた場合、中断の要求は無視されます。 この関数がまだ実行されていない場合、中断の要求は実行されるまでジョブキューに並びます。 デフォルトでは、allowSignalsはどんなシグナルも有効なものとして認識します。 allowSignalsを定めなかった場合、その関数は「中断なし」として定義されます。 配列を使うこともできます。配列にある名前のいずれかに一致するシグナルを受信した際に、この関数を中断します。
attempts
データの種類:Integer型 デフォルト:1 任意
IVRに対して未入力やエラーが発生した際の試行回数を定義します。
bargein
データの種類:Boolean型 デフォルト:true 任意
IVRの音声を最後まで聞かせるかどうかを定義します。 trueであればガイダンスの途中でもDTMF入力を受け付け、falseであれば、ガイダンスを最後まで聞かせます。
interdigitTimeout
データの種類:Integer型 デフォルト:なし 任意
Tropoが新たなキー入力を認識するまでに、ユーザが必要とする待機時間を秒単位で定めます。 基本的には、ユーザが間違ったキーを押してセッションを終了してしまった場合 (#を押そうとして *を押した場合など)に、キーを押し直すまでにTropoにどれくらいの待機させるかを意味します。
minConfidence
データの種類:Integer型 デフォルト:30 任意
これは応答と選択を照合する前に、「recognizer」が持たなくてはならない信頼度の最低値です。 たとえば、IVRの選択肢をred、blue、greenと定義し、誰かが「rud」と言った場合、この信頼度によって、 発音のブレの閾値を定めます。 これは、0と1の間の比率である小数点で表されます。
name
データの種類:String型 デフォルト:なし 必須
これが、作業の結果を識別するのに使われるキーです。こうして、複数の結果を区別できます。 例えば、あなたがユーザに好みの色を質問するとします。ネーム値を 'color(色)'と設定しても、戻ってくる値が 'blue(青)'かもしれません。 1つの結果しか戻ってこない場合には、それほど役立たないかもしれませんが、結果が複数ある場合には、 これが、どの結果がどの作業に属するかを決定する助けとなります。
required
データの種類:Boolean型 デフォルト:true 任意
これにより、Tropoが次の動詞に移動すべきかどうかを決めます。もし、要求が「true」と設定されて、 現在の作業が完全に成功していれば、Tropoは次の動詞に移動します。
say
データの種類:Object型 デフォルト:なし 任意
IVRガイダンスの内容を定義します。単一または配列型のオブジェクトにできます。 sayが質問の一部である場合に、これはイベントのキーとなります。 これによって、ガイダンスが特定のイベントに基づいて再生されるかどうかを決定します。利用可能なイベントは:  
  • nomatch - ユーザが有効な応答をしなかった場合に発生。
  • timeout - ユーザが割り当てられた時間内に入力しなかった場合に発生。
これらの各イベントのデスクリプターは、入力要求数に基づいて、試行値を取ることもできます。 例えば、企画ごとによって、異なる言い回しの定義をしたい場合は、ある言い方をイベント 'nomatch:1' として、別の言い方をイベント 'nomatch:2'と指定することができます。
sensitivity
データの種類:Float型 デフォルト:0.5 任意
これは質問への回答を検出する前に必要な音声の大きさを定義します。これは0.01から1までで指定し、値が大きいほど、アプリケーションは敏感に音声を検出します。
speechCompleteTimeout
データの種類:Float型 デフォルト:0.5 任意
このフィールドは入力の後、それが一致する前に何秒ウェイトを置くかを定義します。 これは特に数値の入力で役に立つオプションです。たとえば、発信者に4桁か5桁の暗証番号を尋ね、 [4-5 DIGITS] グラマを使用する場合、たとえterminatorを定めていても、ユーザは4桁で返信し、その後に取りやめられます。 このフィールドによって、アプリケーションが発信者が応答を終了し、もう入力がないと判断する前に、 アプリケーションにどれくらいの時間待たせるかを定義できます。
speechIncompleteTimeout
データの種類:Float型 デフォルト:0.5 任意
このフィールドは入力の後、それが一致しない場合に何秒ウェイトを置くかを定義します。 たとえば、オプションのリストから3つの選択肢を選ぶように発信者を促し、 発信者が1つだけ応答したあと通話をやめた場合、これによってアプリケーションが、 発信者は入力を終えたものとみなし、該当無しに戻るまでの時間を定めます。
timeout
データの種類:Float型 デフォルト:30.0 任意
指示メッセージを送信または再生した後に、Tropoがユーザーによる応答を待つ時間のことで、 秒単位で設定します。
 

サンプル

 

音声を定義した場合の例

{
    "tropo": [
        {
            "ask": {
                "say": [
                    {
                        "value": "アカウント番号を入力してください。"
  
                    }
                ],
                "required": true,
                "bargein": true,
                "timeout": 30,
                "name": "foo",
                "choices": {
                    "value": "[5 DIGITS]"
                } 
            } 
        }
    ] 
}
 

イベント、複数のsayとinterdigitTimeoutを含む例

{
   "tropo":[
      {
         "ask":{
            "attempts":3,
            "say":[
               {
                  "value":"すみません、聞こえませんでした。",
                  "event":"timeout"
               },
               {
                  "value":"西暦ではないですね。 ",
                  "event":"nomatch:1"
               },
               {
                  "value":"やはり西暦ではないようです。",
                  "event":"nomatch:2"
               },
               {
                  "value":"誕生日は西暦何年ですか?"
               }
            ],
            "choices":{
               "value":"[4 DIGITS]"
            },
            "bargein":true,
            "timeout":60,
            "interdigitTimeout": 1,
            "name":"year",
            "required":true
         }
      },
      {
         "on":{
            "next":"/your_age.json",
            "event":"continue"
         }
      },
      {
         "on":{
            "next":"/age_fail.json",
            "event":"incomplete"
         }
      }
   ]
}