1

我的 VXML/GRXML IVR 应用程序的一部分播放 2-3 分钟的音频,然后通过 a 运行 customcontext Nuance OSDM <subdialog>,然后作为菜单。

这会导致识别器出现超时错误,因为 OSDM 正在侦听 2-3 分钟的提示,而不是在提示结束后才开始侦听。

我记得很久以前修复了一个类似的问题,但不记得我是如何修复它的。

是否有用于获取或超时的 VXML 或 OSDM 属性,我可以使用它来“强制”识别器等到 OSDM 提示自己开始播放?

4

2 回答 2

1

在 VoiceXML 中,提示元素执行时并没有真正播放提示,它们是排队的。

仅播放队列中的提示

  1. 当口译员进入等待状态(例如识别)时,或
  2. 当解释器在相应的 fetch 元素上设置了 fetchaudio 属性时获取资源。

VoiceXML 2.0 规范中的更多详细信息,4.1.8 Prompt Queuing and Input Collection

如您所见,没有可用于显式刷新提示队列的 VoiceXML 指令。诀窍是在某处指定一个 fetchaudio 以满足#2。

所以我建议你通过在元素上指定一个fetchaudio属性来强制播放提示队列。subdialog由于您真的不想听到 fetchaudio,它可以是一个 10 毫秒的静音音频文件。

<block>
   <prompt>
     <audio src="audio/very_long_message.wav">
   </prompt>
</block>

<subdialog src="osdm/custom" fetchaudio="audio/10ms_silence.wav"/>
   ...
</subdialog>

请注意,用户将无法在长前缀提示期间进行强插,但可以在 OSDM 子对话框中这样做。

于 2013-04-05T02:03:34.737 回答
0

鉴于您已声明您正在使用 Nuance 和 OSDM,我将回答 Nuance Recognizer 9 和 Nuance Speech Server。

这通常会发生,因为当识别器在一段时间内没有收到任何请求时,它认为呼叫结束并删除会话。

NSSserver.cfg 中有配置(Nuance Speech Server 配置):

server.mrcp1.rtsp.sessionTimeout VXIInteger 60000

server.mrcp2.rtsp.sessionTimeout VXIInteger 60000

我相信会有一个权衡。虽然您可以将此值加倍或三倍,但这可能意味着您的语音许可证在通话结束后将被占用更长的时间。我猜你选择的值取决于你的负载、提示的长度以及你看到这个的频率。

虽然我们仍然偶尔会遇到这种情况,但通常当调用者使用 DTMF 时,我们已经显着减少了这些实例。

于 2013-06-10T21:21:40.127 回答