SIP 中继返回"SIP2/0 513 Message to big" 。SIPJS 和 Oversip



我正在构建一个网络应用程序,用户可以在其中直接拨打手机(GSM)。

我在浏览器中使用 sipjs,通过 Oversip 作为 sip 代理连接。我使用的是挪威 GSM 服务提供商提供的 sip 中继。

我在注册过程中没有问题。我尝试了两种不同的通话方式(发送邀请)。

  1. 在没有 SDP 的情况下发送邀请。使用此选项时,呼叫会通过。我的手机响了,我可以接听电话。不过,我没有音频。接听电话后的错误是:

    sip.inviteclientcontext | 无效的 SDP

    SIP.邀请客户端上下文 |无法设置远程产品/服务 SDP:使用没有 DTLS 指纹的 SDP 调用。

  2. 另一种方式是向SDP发送邀请。现在,我在发送邀请后收到"SIP/2.0 513 消息给大"。电话根本没有通过。

是否可以在发送邀请之前操纵 SDP?我认为我的服务提供商只接受音频,但webRTC也发送了大量的元数据。我也尝试过JSSIP和Sipml5,但得到相同的结果。

真正的问题是发送到 SIP 中继的邀请消息太大。似乎过度啜饮并没有将它转换为足够的UDP可用,从而在消息中留下了很多WebRTC特定的东西。

显而易见的解决方案是让 oversip 通过 TCP 连接到 SIP 中继。来自 SIP RFC:

如果请求在路径 MTU 的 200 字节范围内,或者请求更大 大于 1300 字节且路径 MTU 未知,必须发送请求 使用 RFC 2914 [43] 拥塞控制传输协议,例如 作为 TCP

如果您的SIP

中继不接受TCP,那么您应该尝试调整oversip发送的消息,或使用另一个WebRTC到SIP网关,它可以正确/自动地处理这些情况。

最新更新