1

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

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

线鲨

您可以看到 24 秒时的第二个 180 Ringing 没有被传递到媒体网关。

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

4

2 回答 2

1

服务器应该转发你的 180,虽然它不是必须的 - 但它应该因为前 180 可能在它和媒体服务器之间丢失(尽管服务器可能会重新发送 INVITE)。

但是,正如 sipwiz 所指出的,可能的问题是媒体服务器为接受呼叫而配置的最大超时。182 不太可能有帮助(尽管不了解媒体服务器很难确定)。

此外,您应该每隔大约 1 分钟重新传输 180(并且 sip 服务器应该通过它)以避免规范允许的可能的 3 分钟超时。如果 3 分钟过去没有 1xx 响应,则某些 SIP 堆栈(如 eXosip)默认会超时 INVITE。

于 2011-04-07T20:43:09.687 回答
1

我同意媒体网关不应该在 34.7 取消。我还认为 SIP 服务器应该在发送 leg2 的出站邀请之前在 leg1 上发送一个 100 尝试。如果媒体网关使用 SRV 翻转算法,这将停止来自 leg1 UAC 的任何重新传输并防止任何故障转移。

于 2011-07-29T20:55:52.310 回答