我正在构建一个语音应用程序,当我的应用程序尝试设置出站呼叫时需要长时间振铃。在此期间,电话必须保持无人接听。
我正在使用连接到媒体网关的基于SIP的Genesys GVP 8.1 IVR。
我遇到的问题是因为电话无人接听,30秒后超时。我需要向媒体网关发送某种保持活动消息,表示呼叫仍在进行中。
我尝试过使用它:
<send target="inConnectionID" targettype="'x-connection'" data="'connection.progressing'"/>
会生成180响铃...但我已经发送了180响铃消息,我认为SIP服务器不会在网络上传递此消息,因为它已经处理了180消息。
理想情况下,我想尝试发送182 Queued消息,但我无法在CCXML或扩展GVP CCXML文档中找到任何内容来说明如何执行此操作。
我的Wireshark SIP跟踪如下所示:
您可以看到第二个180秒响铃在24秒没有被传递到媒体网关。
如何让GVP / CCXML发送182排队的SIP消息?
答案 0 :(得分:1)
服务器应该转发你的180,虽然它没有 - 但是它应该在它和媒体服务器之间丢失前180(尽管服务器会重新发送可能邀请)。
但是,正如sipwiz所示,可能的问题是媒体服务器配置的最大超时接受呼叫。 182不太可能有所帮助(虽然不了解媒体服务器很难确定)。
此外,你应该每隔大约1分钟重新传输180(并且sip服务器应该通过),以避免规范允许的3分钟超时。像eXosip这样的一些SIP堆栈默认为在3分钟内没有1xx响应的情况下超时INVITE。
答案 1 :(得分:1)
我同意媒体网关不应在34.7取消。我还认为SIP服务器应该在发送leg2的出站邀请之前发送100次尝试重试leg1。这将停止来自leg1 UAC的任何重新传输,并在媒体网关使用SRV翻转算法时阻止任何故障转移。