2

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

4

3 回答 3

6

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

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

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

于 2009-01-12T15:59:35.703 回答
2

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

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

除非您可以使用任何特定于平台的扩展,否则您还可以考虑敏感性属性。将其设置为 0 应该会使 ASR 停止收听语音。

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

于 2009-09-09T20:04:11.537 回答
0

使用输入模式可以工作,但您仍然需要两种形式。但是,如果您使用 voicexml 2.1 并确保您没有在语法标签中提供输入模块并确保它在语法本身中指定,那么您可以使用 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 时该变量为真。

于 2011-05-03T13:34:25.633 回答