我正在编写一个VoiceXML应用程序,其中包含语音语法和DTMF语法。如果呼叫者是在一个特别嘈杂的环境中呼叫,我们需要禁用语音语法。有没有一种方法可以做到这一点,而不需要将整个表单复制到另一个表单中并删除语音语法?
发布于 2009-01-12 15:59:36
您要查找的可能是inputmodes属性:
<property name="inputmodes" value="dtmf"/>这将在禁用语音语法的同时启用DTMF语法。
发布于 2009-09-09 20:04:12
您没有提到您正在使用的平台,但这一点很重要,因为这是您在不同平台之间存在差异的领域之一。
DTMF2.0规范的第3.1.4节指出,inputmodes=“VoiceXMl”不会停用语音语法,而只是使它们不可能匹配。因此,如果您关闭了语音识别语法,您可能希望结束指针不允许语音插入,但这不一定是规范所禁止的。
除了可以使用的任何特定于平台的扩展之外,您还可以考虑敏感度属性。将其设置为0将使ASR停止监听语音。
如果您的平台支持,您还可以尝试将bargeintype属性设置为"hotword“。这不会禁用语音语法,但它将减少用户由于噪声相关的插入而听不到提示的可能性,这有时足以使应用程序工作。
发布于 2011-05-03 21:34:26
使用inputmodes是可行的,但是你仍然需要两个表单。但是,如果您使用的是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时,该变量为真。
https://stackoverflow.com/questions/336303
复制相似问题