2016-03-15 50 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網關可以處理這些情況正確/自動。