2016-03-15 45 views
0

我正在构建一个web应用程序,用户可以直接拨打手机(GSM)。SIP中继返回“SIP2/0 513消息大”。 sipjs and oversip

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

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

  1. 发送没有SDP的邀请。使用此选项时,通话将通过。我的电话响了,我可以接听电话。不过,我没有听到任何声音。接受电话后的错误是:

    sip.inviteclientcontext |无效SDP

    sip.inviteclientcontext |无法设置远程报价sdp:使用不带DTLS指纹的SDP调用。

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

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

回答

0

真正的问题是发送给SIP中继的INVITE消息太大。看起来像oversip不能转换它足以在UDP上使用,而在消息中留下很多WebRTC特定的东西。

明显的解决方案是让oversip通过TCP连接到SIP干线。 从SIP RFC:

如果请求是在200个字节的路径MTU的,或者如果它是大于1300个字节,并且路径MTU是未知的较大 ,请求必须使用RFC 2914被发送 [43]拥塞控制传输协议,如 如TCP

如果TCP不是由您的SIP中继接受,那么你应该尝试调整由oversip发送的信息或使用其他的WebRTC与SIP网关可以处理这些情况正确/自动。