Eingehende Anrufe mit SIP und WebRTC

8

Ich bin dabei, eine browserbasierte VOIP-Lösung zu implementieren, die SIP und WebRTC verwendet und sich mit dem PTSN verbindet. Grundsätzlich geben mir die Benutzer ihre SIP-Zugangsdaten und ich benutze WebRTC, um auf ihr Mikrofon und ihre Lautsprecher zuzugreifen. Auf der Seite möchte ich einen SIP-Client ausführen.

Wie implementiere ich die eingehenden Anrufe vom PTSN? Brauche ich eine Art von Listener, der eine Verbindung zum SIP-Server des Benutzers herstellt?

Ich weiß, das ist eine weit gefasste Frage, aber nachdem ich online recherchiert habe, bin ich immer noch etwas verwirrt über die SIP-Implementierung eingehender Anrufe.

    
frenchie 15.12.2012, 21:05
quelle

4 Antworten

4

Sie benötigen einen Server, der ein SIP-WebRTC-Gateway implementiert. Das Gateway kann eingehende Anrufe von einem SIP-Provider (der selbst als SIP-PSTN-Gateway fungiert, indem es ISDN-SIP, SS7-SIP usw. konvertiert) über SIP empfangen und den Anruf dann über WebRTC an Ihre Browser-basierten Clients weiterleiten .

Geben Sie eine andere Möglichkeit an, dass Ihr Server eine Kombination aus einem SIP-Server und einem HTTP-Server sein muss und dass der HTTP-Server Web-Sockets und die WebRTC-API unterstützen muss.

Wenn Sie sich noch nicht das Phono SDK angesehen haben, ist das ein guter Ausgangspunkt.

Aktualisierung:

Seit ich WebRTC zum letzten Mal gesehen habe, sind die Dinge ein wenig vorangeschritten. Es scheint nun einige SIP in JavaScript-Implementierungen zu geben, die die neuen WebRTC-APIs für die Medienseite der Dinge nutzen. Eine Browseranwendung, die einen SIP-Javascript-Stack verwendet, benötigt keine zusätzlichen Server und kann direkt mit einem vorhandenen SIP-Server verbunden werden. Ein Beispiel, das ich gefunden habe, ist sip-js , aber ich glaube, dass es auch andere gibt.

    
sipwiz 15.12.2012, 23:49
quelle
4

Vielleicht ist eine Aktualisierung dafür die Mühe wert.

WebRTC ist jetzt in Firefox und Chrome implementiert (und fehlt in IE, Edge und Safari).

Für Legacy-SIP zu WebRTC sind einige Konvertierungen erforderlich. Mit WebRTC können Sie alles für die Signalisierung in der Regel über WebSocket verwenden. Sie können Ihr proprietäres Protokoll implementieren, wenn Sie jedoch nach SIP-Kompatibilität suchen, ist das WebSocket-to-SIP-Protokoll am besten geeignet .

WebRTC kodiert Medien in DTLS / SRTP, so dass Sie dies auch in clear RTP dekodieren müssen. Dies bedeutet, dass Sie entweder einen Softswitch mit integrierter WebRTC-Unterstützung oder ein WebRTC-zu-SIP-Gateway auf der Serverseite verwenden. Stellen Sie sicher, dass Sie einen Softswitch / Gateway mit vollständiger Unterstützung für die Medienumwandlung auswählen. WebRTC unterstützt derzeit G.711, G.722 und Opus. Für ältere SIP-Netzwerke wählt Ihr Server normalerweise nur G.711 und alles ist perfekt. Unter Umständen müssen Sie die Medien möglicherweise in die anderen gängigen Codecs wie G.729, G.723 oder GSM konvertieren.

Normalerweise haben Sie die folgenden Protokollübersichten:

  • Signalisierung (das ist einfach): SIP über WebSocket in TLS - & gt; Löschen Sie SIP über UDP / TCP
  • Media (das ist komplizierter): DTLS / SRTP-codiertes RTP mit PCMU - & gt; RTP mit PCMU löschen

Softswitch mit WebRTC-Unterstützung:

WebRTC zu SIP-Gateways:

SIP (RFC 7118) fähige WebRTC Clients:

Sie sollten auch Ihre eigenen STUN- und TURN-Server bereitstellen und verwenden (einige der Server / Gateways haben diese eingebaut, ansonsten verwenden Sie ctrurn rfc5766-turn-server ).

Sobald die Serverseite eingerichtet ist, können Sie auf einfache Weise Ihre benutzerdefinierte clientseitige Lösung basierend auf den oben genannten webrtc-Clients erstellen, da jede von ihnen über eine einfach zu verwendende JavaScript-API verfügt.

    
Istvan 13.03.2016 19:57
quelle
2

Theoretisch können Sie einen SIP-Server mit einem Open-Source-Softswitch-Projekt (FreeSWITCH, Asterisk) bereitstellen und den SIP-Trunking-Dienst erwerben, um Telefonnummern zu erhalten und Anrufe zum / vom PSTN weiterzuleiten. Anschließend können Sie einen WebRTC-SIP-Client für die Verwendung Ihres Servers konfigurieren. Es gibt Open-Source-JavaScript-Bibliotheken (SIP.js, JsSIP, sipML5).

Das ist vielleicht Ihre beste Wahl, wenn Sie in kleinem Umfang arbeiten und ziemlich an die Telekommunikationsinfrastruktur gewöhnt sind & amp; Trunking. In der Praxis kann das Ausführen von PSTN-zu-WebRTC-Anrufen sehr schwierig sein. Ich weiß auch nicht, in welchem ​​Umfang Sie Ihre App erstellen möchten, sondern über 100 gleichzeitige Verbindungen zu Ihrem SIP-Server, und Sie müssen sich mit der Skalierung befassen. Wenn Sie möchten, dass eine gehostete Lösung den Telekommunikationsaufwand verringert, können Sie SIP.js verwenden und sich für OnSIP anmelden (Unternehmen, das SIP.js unterstützt), Das ist ein Pay-as-you-go-Service, mit dem Sie Telefonnummern kaufen und Ihren Client einfach programmieren können. Die Konstruktion von SIP.js User Agent sieht folgendermaßen aus:

%Vor%

Wenn Sie OnSIP (gehostet) ausgewählt haben, werden diese Anmeldeinformationen vom Dienst bereitgestellt und bei OnSIP registriert. Wenn Sie Ihre eigenen SIP-Server bereitstellen möchten, würden Sie dies entsprechend ändern.

    
HelloNicole 24.06.2014 20:53
quelle
0

Lösung für Ihr Problem ist:

  • Webrtc seine Arbeit selbst als rtpengine.so mit SIP-Anmeldeinformationen können Sie sich selbst mit wss oder ws zu sip server.then Sie können Anruf an andere SIP-Benutzer oder ausgehende.
  • call wird den sip-server von dort treffen sip server entscheiden wetter sein eingehender anruf oder outbound
suren 14.03.2016 12:29
quelle

Tags und Links