如何禁用VoiceXML语法?

时间:2008-12-03 05:36:18

标签: voicexml

我正在编写一个VoiceXML应用程序,我们有一个语音语法和一个DTMF语法。如果呼叫者在特别嘈杂的环境中呼叫,我们需要禁用语音语法。有没有办法做到这一点,不涉及将整个表格复制到另一种形式并删除语音语法?

3 个答案:

答案 0 :(得分:6)

您正在寻找的可能是inputmodes属性:

<property name="inputmodes" value="dtmf"/>

这将在语音语法被禁用时启用DTMF语法。

答案 1 :(得分:2)

您没有提到您正在使用哪个平台,但这很重要,因为这是平台之间存在差异的区域之一。

VoiceXMl 2.0规范的[3.1.4] [1]节说,inputmodes =“dtmf”不会取消激活语音语法,但只是使它们无法匹配。因此,如果你关闭语音识别语法,你会希望结束指针不允许语音bargein,但它不一定被规范禁止。

除了可以使用的任何特定于平台的扩展外,您还可以考虑灵敏度属性。将其设置为0应该使ASR停止侦听语音。

如果您的平台支持,您还可以尝试将bargeintype属性设置为“hotword”。这不会禁用语音语法,但它会降低用户不会听到提示的可能性,因为有时候噪音相关的bargein足以使应用程序正常工作。

答案 2 :(得分:0)

使用输入模式可以工作,但您仍然需要两种形式。但是,如果您正在使用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" />

所以你需要做的就是设置一个名为dtmfMode的布尔变量,当你只想要DTMF时这是真的。