Web applications SIP中继返回“;SIP2/0 513发送给big“的消息;。sipjs和oversip

Web applications SIP中继返回“;SIP2/0 513发送给big“的消息;。sipjs和oversip,web-applications,webrtc,sip,trunk,Web Applications,Webrtc,Sip,Trunk,我正在构建一个网络应用程序,用户可以直接拨打手机(GSM) 我在浏览器中使用,通过连接作为sip代理。我使用的是挪威一家GSM服务提供商提供的sip中继 我在注册时没有问题。我尝试了两种不同的打电话方式(发送邀请) 发送不带SDP的邀请。使用此选项时,通话将通过。我的电话响了,我可以接电话了。不过我没有音频。接受呼叫后的错误I为: sip.inviteclientcontext |无效的SDP sip.inviteclientcontext |无法设置远程提供sdp:使用没有DTLS指纹的sdp

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

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

我在注册时没有问题。我尝试了两种不同的打电话方式(发送邀请)

  • 发送不带SDP的邀请。使用此选项时,通话将通过。我的电话响了,我可以接电话了。不过我没有音频。接受呼叫后的错误I为:

    sip.inviteclientcontext |无效的SDP

    sip.inviteclientcontext |无法设置远程提供sdp:使用没有DTLS指纹的sdp调用

  • 另一种方法是使用SDP发送邀请。现在,在发送邀请后,我收到了“SIP/2.0 513发送给Big的消息”。电话根本没有接通


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

    真正的问题是发送到SIP中继的INVITE消息太大。似乎oversip并没有将其转换到足够的程度,无法通过UDP使用,在消息中留下大量WebRTC特定的内容

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

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

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