我目前正在开发一个使用带有 GRXML 语法的 Nuance OSDM 的 VXML 2.0 应用程序。
我们的一个提示要求呼叫者输入出生日期,但如果他们手边没有,他们可以说“取消”或按星号。这是一个日期 OSDM,我添加了一个额外的命令语法来分别处理语音和 DTMF 条目的“取消”或星号。
说“取消”有效;绕过了 Date 语法,激活了命令语法,代码按我的预期运行。然而,星号是另一回事。当我运行调试调用并按下电话上的星号键时,它被视为不匹配。梳理 OSDM 手册,Nuance Date OSDM 上的 DTMF 条目似乎是通过内置的 DTMF 数字语法运行的,范围为 2-8 位。
该手册还指出:“如果指定了并行文法,OSDM 将 DTMF 输入与 DTMF 集合文法和并行文法相匹配。如果 DTMF 字符与两种文法都匹配,则返回并行文法匹配。”
所以,我认为数字语法有“*”作为烘焙终止字符,它覆盖了我的明确声明,即只有“#”可以是终止字符:
- 我按下星号。
- DTMF 数字语法被激活。
- DTMF 数字语法导致空白,因为星号是术语字符,并且没有进行其他输入。
- 空白是OOG,因为长度是2-8位。
- 返回不匹配。
我坚持使用 OSDM,因为它的操作对于我们的应用程序执行事件记录的方式至关重要。但是,我可以通过回复星号来获得创意。
是否有另一种方法可以将星号计为有效输入,或者让它达到我的自定义命令语法,或者绕过对 OSDM 的调用并自己处理它?