2011-06-23 8 views
1

現在、GRXML文法でNuance OSDMを使用するVXML 2.0アプリを開発中です。Nuance OSDMで日付入力時に「*を押してキャンセル」しますか?

私たちのプロンプトでは、発信者に生年月日を入力するよう求めていますが、手元にない場合は「キャンセル」とかアスタリスクを押してもかまいません。それは、日付OSDMです。私は、「キャンセル」やスピーチとDTMFエントリのアスタリスクを処理するために、追加のコマンド文法を追加しました。

「キャンセル」と表示されます。日付文法がバイパスされ、コマンド文法が有効になり、期待どおりにコードが実行されます。しかし、アスタリスクは別の話です。デバッグコールを実行して電話機のアスタリスクキーを押すと、ノマッチとして処理されます。 OSDMハンドブックを参照すると、Nuance Date OSDMのDTMFエントリは、組み込みのDTMF数字文法(2〜8桁の範囲)で実行されているようです。 "parallelgrammarが指定されている場合、OSDMはDTMF入力をDTMF収集文法と並列文法の両方に一致させます。DTMF文字が両方の文法に一致する場合、parallelgrammarの一致が返されます。

だから、私は桁の文法が焼き-に終了文字として「*」があることを考えていて、それが唯一の「#」は、終端文字することができ、私の明示的な宣言をオーバーライドだ:私は

  1. をアスタリスクを押します。
  2. DTMF数字文法が有効になります。
  3. アスタリスクが用語文字であり、他の入力が行われなかったため、DTMF数字文法の結果は空白になります。
  4. 空白は、長さが2〜8桁であるため、OOGです。
  5. Nomatchが返されます。

OSDMを使用しているため、私たちのアプリケーションがイベントロギングを行う上で非常に重要です。しかし、私はアスタリスクに応答して創造的になることができます。

アスタリスクを有効な入力としてカウントし、カスタムコマンド文法に達しているか、OSDMへの呼び出しをバイパスして自分で処理する方法がありますか?

答えて

1

解決策は、既存のグローバルコマンド文法とは別のカスタムコマンド文法を使用することでした。

OSDMは「成功」の代わりに「コマンド」と応答しますが、後処理では少し愚かですが、あまりにも醜いわけではありません。

この:この場所で <collection_dtmfcommandgrammar name="Generic_command_dtmf.grxml"/>


<date-osdm name="ClaimDate">
<dmname value="ClaimDate"/>
<collection_commandgrammar name="Generic_command.grxml"/>
(文法の名前は、コード重要ではない、それだけで異なるコンテンツを持っている):
<date-osdm name="ClaimDate">
<dmname value="ClaimDate"/>
<collection_parallelgrammar1 name="Generic_inputs.grxml"/>
<collection_dtmfparallelgrammar1 name="Generic_inputs_dtmf.grxml"/>

そして、ビオラ!できます。

関連する問題