DTMF (Dual-Tone Multi-Frequency) 桁の収集

IBM® Voice Gateway は、RFC 4733 (RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals) をサポートしています。 DTMF (Dual-Tone Multi-Frequency) シグナルは、構成されている Watson API に送信される一桁のテキスト発話に変換されます。

以下のような方法で DTMF の桁を収集するように Voice Gateway を構成できます。

DTMF 収集セッションをカスタマイズするには、Watson Assistant ダイアログでアクション・シーケンスを指定し、Voice Gateway 構成を調整します。

DTMF 収集アクションについて

Watson Assistant で、vgwActCollectDTMF アクション・タグから始まるアクション・シーケンスがトリガーされると、Voice Gateway の DTMF セッションが開始します。

以下のアクションは、Voice Gateway に対し、定義されたテキストを発信者に対して再生してから DTMF セッションを開始するように指示します。 セッションは、発信者が # を押すか、応答後タイムアウトが発生すると終了します。

{
  "output": {
    "text": {
      "values": [
        "Please enter the extension you are trying to reach and then press #."
      ]
    },
    "vgwAction": {
      "command": "vgwActCollectDTMF",
        "parameters": {
        "dtmfTermKey": "#",

      }
    }
  }
}

DTMF 収集の属性

vgwActCollectDTMF アクション・タグを構成すると、DTMF (Dual-Tone Multi-Frequency) シグナル入力を収集するようにとの指示が Voice Gateway に出されます。

表 1. vgwActCollectDTMF アクション・タグの属性。
属性 説明
dtmfTermKey DTMF 入力の終わりをシグナル通知する DTMF 終了キー。 例えば、「#」などです。
dtmfCount 収集する DTMF 桁数。
dtmfMinCount 一定範囲の入力を受け入れるように DTMF 収集を構成する場合の、収集する最小 DTMF 桁数。
dtmfMaxCount 一定範囲の入力を受け入れるように DTMF 収集を構成する場合の、収集する最大 DTMF 桁数。 この桁数が収集されると、会話ターンが開始されます。
dtmfInterDigitTimeoutCount DTMF を 1 桁受け取った後、新しい DTMF の桁を受け取るまで待機する時間 (ミリ秒)。 アクティブな DTMF 収集期間において、このタイムアウトは、最初の DTMF 収集を受け取ったときにカウントが起動されます。 桁間のタイムアウトがアクティブな場合は、これによって vgwPostResponseTimeout タイマーが非アクティブ化されます。 dtmfInterDigitTimeoutCount が指定されない場合、応答後タイマーは、DTMF の桁を受け取るたびにリセットされ、vgwPostResponseTimeout に達するか、収集が完了するまでアクティブなままになります。
dtmfIgnoreSpeech true に設定すると、DTMF 桁の受信時に音声が自動的に使用不可になり、その状態は収集が完了するか、またはタイムアウトが発生するまで続きます。 この属性のデフォルトは false です。
dtmfPauseAfterCollection DTMF 収集の完了時に DTMF 入力を無効にするかどうかを示します。 vgwActUnPauseDTMF アクションによって再び有効にされるまで、すべての DTMF 入力が無視されます。 この属性のデフォルトは false です。

DTMF 収集結果の判別

vgwDTMFCollectionSucceeded 状態変数によって、DTMF 収集が成功したか失敗したかが示されます。 これは、各 DTMF 収集ターンの後に、セッション期間中に収集された桁と一緒に SOE または Watson Assistant ワークスペースに渡されます。

Yes の場合、以下のいずれかの理由で DTMF 収集は成功しました。

No の場合、以下のいずれかの理由で DTMF 収集は失敗しました。

vgwDTMFCollectionSucceededNo の場合でも、収集されたすべての桁数がターン要求の入力ストリング内で SOE または Watson Assistant ワークスペースに渡されます。

DTMF 構成オプション

DTMF 桁を収集する方法をプログラミングすることに加えて、以下の動作を制御することもできます。

DTMF 収集中の音声認識の無効化

DTMF セッションの中では、DTMF から入力される情報のみを収集する必要がある場合があります。 Voice Gateway によって音声として認識される可能性があるノイズを無視するために、vgwActCollectDTMF アクション・タグの dtmfIgnoreSpeech パラメーターを使用できます。

次の例では、音声または DTMF のいずれかを使用して電話の内線番号を入力するようユーザーに要求します。 DTMF 桁を最初に受信すると、このアクションは、DTMF 収集が完了するまで発信者からの音声をすべて無視します。

この収集は、最大桁数が収集されるか、発信者から音声も DTMF も発信されないか、または桁間のタイムアウトである 1 秒の一時停止が経過すると終了します。 収集が終了すると、turn イベントが開始されます。

注意: dtmfIgnoreSpeech は、最初の DTMF 桁の受信後から収集が完了するまで音声を無視します。 また、dtmfInterDigitTimeoutCount は、Voice Gateway が収集の最初の DTMF 桁を受信した後で有効になります。

{
  "output": {
    "text": {
      "values": [
        "Please enter the extension you are trying to reach."
      ]
    },
    "vgwAction": {
      "command": "vgwActCollectDTMF",
        "parameters": {
        "dtmfMinCount": "4",
        "dtmfMaxCount": "6",
        "dtmfIgnoreSpeech": "true",
        "dtmfInterDigitTimeoutCount":"1000"

      }
    }
  }
}

DTMF バージインの無効化

ユーザーが DTMF バージインによって再生を中断することを防ぎたい場合は、JSON ノード定義に vgwActDisableDTMFBargeIn アクション・タグを設定することで、DTMF バージインを無効にすることができます。 vgwActDisableDTMFBargeIn が開始されると、Voice Gateway は通話の残りの期間中その状態を維持し、音声再生がアクティブな間は DTMF を収集しません。

バージインを再び有効にするには、ダイアログ内で vgwActEnableDTMFBargeIn のアクション・タグを設定します。

次の例では、DTMF バージインと音声認識を無効にし、発信者に内線番号の入力を要求し、再生トランザクションの完了後に DTMF 収集セッションを開始します。

{
  "output": {
    "text": {
      "values": [
        "Please enter the extension you are trying to reach."
      ]
    },
    "vgwActionSequence": [
      {
        "command": "vgwActDisableDTMFBargeIn"
      },
      {
        "command": "vgwActPlayText"
      },
      {
        "command": "vgwActCollectDTMF",
        "parameters": {
          "dtmfMinCount": "3",
          "dtmfIgnoreSpeech": true,
          "dtmfinterDigitTimeoutCount": "1000"
        }
      }
    ]
  }
}

アクションを使用して、指定された数の DTMF 桁を収集する

DTMF 収集には、予期する入力桁の正確な数または範囲のいずれかを使用できます。 特定の桁数を収集する場合は、dtmfCount 属性を構成します。

アクションを使用して、指定された範囲の DTMF 桁を収集する

一定範囲の桁数 (PIN など) を受け入れるように DTMF 収集を構成するには、dtmfMinCount 属性と dtmfMaxCount 属性を使用します。 これらの属性は、DTMF 収集セッション中に入力できる許容桁数の下限と上限を定義します。

次の例では、発信者にそれぞれの PIN の入力が要求され、発信者は 4 桁から 8 桁の長さの数字で応答できます。 以下のいずれかのイベントが発生すると、会話ターンが開始されます。

{
  "output": {
    "text": {
      "values": [
        "Please enter your PIN."
      ]
    },
    "vgwAction": {
      "command": "vgwActCollectDTMF",
        "parameters": {
        "dtmfMinCount": "4",
        "dtmfMaxCount": "8",
        "dtmfInterDigitTimeoutCount": "1000"

      }
    }
  }
}

アクションを使用して、可変の桁数を収集し、終了キーで収集を終了する

発信者が終了キーを押したとき、または発信者が DTMF 入力を終了した後に DTMF 収集を終了するように設定できます。

DTMF 収集の桁間タイムアウトを構成するアクション・タグ・パラメーターを使用しない場合、デフォルトで Voice Gateway は vgwPostResponseTimeout の値を使用します。

トラブルの回避: 最初の DTMF 桁を受信して、dtmfInterDigitTimeoutCount初めて有効になり、vgwPostResponseTimeout は無効になります。

各会話ターンで単一 DTMF 桁を収集する

vgwActPauseDTMF アクション・タグと vgwActUnPauseDTMF アクション・タグを使用することで、DTMF 収集セッションを一時停止および一時停止解除するように Voice Gateway を構成できます。 DTMF 収集を一時停止しないと、Voice Gateway は、受信した DTMF 桁ごとに会話ターンを開始します。 また、Voice Gateway は、会話ターンがアクティブである間に受信したすべての DTMF 桁をキューに入れ、DTMF 桁を失わないようにします。 DTMF が一時停止されない場合は、DTMF を使用して、通話中のいつの時点でも DTMF キーの 0 を受信したら音声ボットが即時にオプトアウトするようにできます。

DTMF が一時停止されると、収集は DTMF を受け取りません。