如何从CCXML发送182排队的SIP消息?

时间:2011-04-05 14:02:45

标签: sip ccxml

我正在构建一个语音应用程序,当我的应用程序尝试设置出站呼叫时需要长时间振铃。在此期间,电话必须保持无人接听。

我正在使用连接到媒体网关的基于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跟踪如下所示:

Wireshark

您可以看到第二个180秒响铃在24秒没有被传递到媒体网关。

如何让GVP / CCXML发送182排队的SIP消息?

2 个答案:

答案 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翻转算法时阻止任何故障转移。