簡體   English   中英

SIP和WebRTC的來電[暫停]

[英]Incoming calls with SIP and WebRTC [on hold]

我正在研究實現一個基於瀏覽器的VOIP解決方案,該解決方案使用SIP和WebRTC並連接到PTSN。 基本上,用戶給我他們的SIP憑證,我使用WebRTC來接收他們的麥克風和揚聲器。 在頁面上,我計划運行SIP客戶端。

如何實現來自PTSN的來電? 我是否需要某種連接到用戶SIP服務器的監聽器?

我知道這是一個廣泛的問題,但在網上做了一些研究之后,我仍然對SIP來電的實施感到困惑。

也許刷新這個值得付出努力。

WebRTC現在在Firefox和Chrome中實現(並且缺少IE,Edge和Safari)。

對於傳統SIP到WebRTC,需要進行一些轉換。 使用WebRTC,您可以通過WebSocket使用任何信號。 您可以實現您的專有協議,但是如果您正在尋找SIP兼容性,那么最自然的適合是WebSocket到SIP協議

WebRTC在DTLS / SRTP中對媒體進行編碼,因此您必須在清除RTP中對其進行解碼。 這意味着在服務器端要么使用內置WebRTC支持的軟交換,要么使用WebRTC到SIP網關。 確保選擇具有完全媒體轉碼支持的軟交換/網關。 WebRTC目前支持G.711,G.722和Opus。 對於傳統的SIP網絡,您的服務器通常只選擇G.711,一切都很完美。 在某些情況下,您可能需要將媒體轉換為其他流行的編解碼器,例如G.729,G.723或GSM。

通常您有以下協議覆蓋:

  • 信令(這很簡單):TLS中的SIP over WebSocket - >清除基於UDP / TCP的SIP
  • 媒體(這更復雜):DTLS / SRTP編碼帶有PCMU的RTP - >帶有PCMU的清晰RTP

支持WebRTC的Softswitch:

WebRTC到SIP網關:

支持SIP(RFC 7118)的WebRTC客戶端:

您還應該部署和使用自己的STUN和TURN服務器(某些服務器/網關具有這些內置,否則使用coturn rfc5766-turn-server )。

一旦服務器端啟動並運行,您就可以基於上述webrtc客戶端輕松創建自定義客戶端解決方案,因為每個客戶端都有一個簡單易用的JavaScript API。

您需要一台實現SIP-WebRTC網關的服務器。 網關將能夠通過SIP接收來自SIP提供商(其本身將通過轉換ISDN-SIP,SS7-SIP等充當SIP-PSTN網關)的來電,然后使用WebRTC將呼叫轉發到基於瀏覽器的客戶端。

換句話說,您的服務器需要是SIP服務器和HTTP服務器的組合,HTTP服務器需要支持Web套接字和WebRTC API。

如果您還沒有看過Phono SDK,那么這是一個很好的起點。

更新:

自從我上次關注WebRTC以來,情況有所改變。 現在似乎在javascript實現中有一些SIP利用新的WebRTC API用於媒體方面。 使用SIP-javascript堆棧的瀏覽器應用程序不需要任何其他服務器,可以直接連接到現有的SIP服務器。 我發現的一個例子是sip-js,但我相信還有其他的。

理論上,您可以使用開源軟交換(FreeSWITCH,Asterisk)項目部署SIP服務器,並購買“SIP中繼”服務以獲取電話號碼和路由到/來自PSTN的呼叫。 然后,您可以配置WebRTC SIP客戶端以使用您的服務器。 有開源JavaScript庫(SIP.js,JsSIP,sipML5)。

如果您在小規模工作並且習慣於運行電信基礎設施和購買中繼,那么這可能是您的最佳選擇。 實際上,將PSTN運行到WebRTC調用可能很困難 - 很多質量問題。 我也不知道你想要在多大程度上構建你的應用程序,但是你的SIP服務器有超過100個同時連接,你需要處理擴展。 如果您希望托管解決方案能夠減少電信問題,您可以使用SIP.js並注冊OnSIP(支持SIP.js的公司),這是一種即用即付服務,可讓您購買手機數字,只是為您的客戶編碼。 SIP.js用戶代理構造如下所示:

var userAgent = new SIP.UA({
  uri: 'bob@example.onsip.com',
  wsServers: ['wss://sip-ws.example.com'],
  authorizationUser: sipUsername,
  password: sipPassword
});

如果您選擇OnSIP(托管),則這些憑據由服務提供並向OnSIP注冊。 如果您選擇部署自己的SIP服務器,則會相應地更改。

解決您的問題的方法是:

  • Webrtc自我工作rtpengine.so使用sip憑證你可以用wss或ws注冊你的自己sip server.then你可以打電話給其他sip用戶或出站。
  • 呼叫將從那里sip服務器決定天氣其入站呼叫或出站

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM