私は音声文法とDTMF文法を持つVoiceXMLアプリケーションを作成しています。発信者が特に騒がしい環境から発信している場合は、音声文法を無効にする必要があります。フォーム全体を別のフォームにコピーしたり、音声文法を削除したりしないでこれを行う方法はありますか?
3 に答える
あなたが探しているのは、おそらく次のinputmodes
プロパティです。
<property name="inputmodes" value="dtmf"/>
これにより、音声文法が無効になっている間、DTMF 文法が有効になります。
使用しているプラットフォームについては言及していませんが、これはプラットフォーム間でバリエーションがある分野の 1 つであるため重要です。
VoiceXMl 2.0 仕様のセクション [3.1.4][1] によると、inputmodes="dtmf" は音声文法を非アクティブ化するのではなく、単にそれらの照合を不可能にするだけです。したがって、音声認識文法をオフにすると、エンド ポインターで音声バーゲンが許可されないことを期待できますが、必ずしも仕様で禁止されているわけではありません。
使用できるプラットフォーム固有の拡張機能を除いて、感度プロパティも考慮する必要があります。これを 0 に設定すると、ASR は音声のリッスンを停止します。
プラットフォームがサポートしている場合は、bargeintype プロパティを「hotword」に設定することもできます。これにより、音声文法が無効になることはありませんが、アプリケーションを動作させるのに十分な場合があるノイズ関連のバージインが原因で、ユーザーがプロンプトを聞くことができなくなる可能性が低くなります。
入力モードを使用することもできますが、それでも 2 つのフォームが必要です。ただし、voicexml 2.1 を使用していて、文法タグに入力 mod を指定せず、それが文法自体で指定されていることを確認してから、srcexpr を使用して音声を「オフにする」ことができる場合は回避策があります。文法。
次のように文法を指定するとします。
<grammar type="application/srgs+xml" src="/grammars/menu.grxml" />
<grammar type="application/srgs+xml" src="/grammars/menu-dtmf.grxml" />
dtmf バージョンの使用を繰り返すことで、音声文法を無効にすることができます。
<grammar type="application/srgs+xml" srcexpr="'/grammars/menu' + (dtmfMode?'-dtmf':'') + '.grxml'" />
<grammar type="application/srgs+xml" src="/grammars/menu-dtmf.grxml" />
したがって、必要なのは、DTMF のみが必要な場合に true になる dtmfMode というブール変数を設定することだけです。