我的VXML/GRXML IVR应用程序的一部分播放2-3分钟的音频,然后通过<subdialog>
运行自定义上下文Nuance OSDM,然后作为菜单运行。
这会在识别器上导致超时错误,因为OSDM正在监听2-3分钟的提示,而不是只有在提示结束后才开始监听。
我记得很久以前我修复了一个类似的问题,但不记得我是如何修复它的。
有没有一个用于抓取或超时的VXML或OSDM属性,我可以用来“强制”识别器等待,直到OSDM提示开始播放?
发布于 2013-04-05 10:03:35
在VoiceXML中,提示并不是在prompt元素执行时真正播放的,而是排队。
将只播放队列中的提示
当解释器达到等待状态(例如,识别)时为
有关更多详细信息,请参阅VoiceXML 2.0 spec, 4.1.8 Prompt Queueing and Input Collection
如您所见,没有VoiceXML指令可用于显式刷新提示符队列。诀窍是在某个地方指定一个fetchaudio,以满足#2。
因此,我建议您通过在subdialog
元素上指定一个fetchaudio
属性来强制播放提示队列。因为你并不是真的想听fetchaudio,所以它可以是一个10ms的静默音频文件。
<block>
<prompt>
<audio src="audio/very_long_message.wav">
</prompt>
</block>
<subdialog src="osdm/custom" fetchaudio="audio/10ms_silence.wav"/>
...
</subdialog>
请注意,在长前缀提示期间,用户不能强行进入,但可以在OSDM子对话框中这样做。
发布于 2013-06-11 05:21:40
既然你已经声明你正在使用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时,我们已经显著地最小化了这些实例。
https://stackoverflow.com/questions/15751821
复制相似问题