Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Telefono SIP WebRTC nel tuo browser: da sipML5 a Janus

354 views

Published on

Presentazione del mio talk alla conferenza "Universal JS Day 2018" - Ferrara IT.

Vuoi realizzare un telefono direttamente nella tua web app? Vedremo insieme quali sono state le scelte tecnologiche con le quali si è realizzato un telefono SIP WebRTC direttamente integrato nel browser per fornire una soluzione di Unified Communication tramite WebApp. Considereremo i problemi e vantaggi incontrati con due differenti soluzioni, passando da sipML5 a Janus Gateway.

Published in: Technology
  • Be the first to comment

Telefono SIP WebRTC nel tuo browser: da sipML5 a Janus

  1. 1. da sipML5 a Janus Telefono WebRTC nel tuo browser @ale_polidori @alepolidori medium.com/@ale_polidori
  2. 2. ale_polidori WebRTC: Web Real Time Communication ● Progetto del 2011 promosso da Google ● API Javascript che consentono comunicazioni audio/video ● Supporto nativo del browser ● Comunicazione Real-Time p2p ● 3 Componenti ○ getUserMedia: accesso a camera, microfono e screen ○ RTCPeerConnection: negoziazione, codifica, decodifica, nat traversal ○ DataChannel: invio dati tra browser ● Mercato in espansione
  3. 3. ale_polidori Protocolli ● Richiede 2 tipi di protocolli ○ trasporto - RTP ○ segnalazione - SIP (Session Initiation Protocol) ● RTP - SRTP (Secure Real-time Transport Protocol) ○ secure real-time transport protocol ○ crittografia ○ autenticazione messaggi ○ integrità dei dati ● RTCP - SRTCP (Secure Real-time Transport Control Protocol) ● SDP - descrive flussi audio video ● STUN, TURN, ICE (Interactive Connectivity Establishment: comunicazione p2p)
  4. 4. ale_polidori Schema IP PBX VoIP gateway PSTN router Internet VoIP Provider Rete aziendale
  5. 5. ale_polidori sipML5
  6. 6. ale_polidori sipML5 ● Prima realizzazione di Client SIP HTML5 Open Source (Doubango Telecom 2012) ● 100% Javascript: NO PLUGIN !!! Finalmente … ● Media stack su WebRTC ● Protocollo SIP su WebSocket (UDP, TCP, TLS) ● Chiamate Audio / Video ● Messaggistica istantanea ● Presence / Condivisione screen ● Desktop & Mobile - Chrome, Firefox, Opera, Safari → supporto nativo WebRTC ● Presentato al Google I/O 2012
  7. 7. ale_polidori sipML5: architettura Javascript SIP Javascript SDP WebRTC PBX (Asterisk) HTML5 Client websocket PSTN SIP Net UDP/TCP/TLS SRTP/SRTCP/ICE
  8. 8. ale_polidori sipML5: CoDec ● Riduzione/Compressione/Decompressione di flussi dati ● Banda / Qualità (MOS) / Latenza ● Audio ○ G.711 (64 kbps) ○ Opus (6-510 kbps - costante e variabile) ● Video ○ VP8 ○ H.264
  9. 9. ale_polidori sipML5: un pò di codice 1. Inizializzazione Engine 2. Avvio Stack SIP 3. Registrazione Interno Telefonico 4. Avvio chiamata Audio/Video S I P m l global object SIPml.init new SIPml.Stack newSession(‘register’.. newSession(‘call-audio’..
  10. 10. ale_polidori sipML5: libreria
  11. 11. ale_polidori 1. sipML5: inizializzazione engine
  12. 12. ale_polidori 2. sipML5: avvio stack SIP
  13. 13. ale_polidori 3. sipML5: registrazione interno telefonico
  14. 14. ale_polidori 4. sipML5: chiamata
  15. 15. ale_polidori VoIP PBX
  16. 16. ale_polidori NethServer VoIP PBX ● PBX: software che connette telefoni interni all’azienda e con la rete tradizionale PSTN ● Progetto OpenSource ● Basato su Asterisk e FreePBX ● Community: community.nethserver.org ● github.com/alepolidori/nethserver-voip-pbx-guide (6 steps)
  17. 17. ale_polidori Asterisk ● PBX Open Source (Mark Spencer) ● Rete telefonica aziendale collegata a PSTN/Mobile e VoIP ● Supporta SIP su WebSocket ● Risparmio sul numero di canali in affitto dal provider ● CTI - Computer Telephony Integration PROVIDER AZIENDA ANALOGICO PROVIDER AZIENDA ASTERISK
  18. 18. ale_polidori Janus Gateway
  19. 19. ale_polidori Janus ● Gateway general purpose by Meetecho → WebRTC Gateway ● Comunicazione audio/video WebRTC con il browser ● Scambio messaggi JSON ● Inoltro messaggi RTP/RTCP tra browser e server-side app ● Plugin → SIP Gateway ● Adattabile anche su piccoli device ● Monitoraggio ● Interfacce: HTTP, WebSocket, RabbitMQ, ...
  20. 20. ale_polidori server Janus: architettura janus.js PBX (Asterisk) HTML5 Client HTTPS PSTN SIP Net Apache ProxyPass UDP/TCP/TLS
  21. 21. ale_polidori Janus: un pò di codice 1. Inizializzazione Engine 2. Creazione di una sessione 3. Collegare il plugin SIP 4. Avvio chiamata Audio/Video J a n u s global object Janus.init new Janus({...}); Janus.attach({...}); pluginHandle.createOffer
  22. 22. ale_polidori Janus: libreria ● Adattatore WebRTC webrtc/adapter ● Lib Client Janus meetecho/janus-gateway
  23. 23. ale_polidori 1. Janus: inizializzazione engine
  24. 24. ale_polidori 2. Janus: creazione di una sessione
  25. 25. ale_polidori 3. Janus: collegare il plugin SIP Handle per interagire con il plugin
  26. 26. ale_polidori 4. Janus: chiamata audio/video Destinatario da chiamare
  27. 27. ale_polidori 5. Janus: risposta a chiamata Accettazione della chiamata in arrivo
  28. 28. ale_polidori Motivazioni tecniche ● sipML5 ○ bleeding edge ○ github ○ community ○ nuove funzionalità ● Janus ○ comunicazione col webserver apache ○ supporto tecnico meetecho ○ stessa configurazione interni telefonici ○ indipendenza dal browser e implementazioni varie ○ monitoraggio
  29. 29. ale_polidori Enterprise production - ● ~ 3000 installazioni ● 1000 interni ● centinaia di chiamate contemporanee
  30. 30. ale_polidori https://joind.in/talk/2f4ad
  31. 31. ale_polidori Riferimenti ● demo sipML5: https://github.com/alepolidori/sipml5-webrtc-phone ● demo Janus: https://github.com/alepolidori/janus-webrtc-phone ● setup VoIP PBX: https://github.com/alepolidori/nethserver-voip-pbx-guide ● sipML5 ○ gruppo google: discuss-doubango ○ sito: www.doubango.org/sipml5 ○ github: https://github.com/DoubangoTelecom/sipml5 ● Janus ○ gruppo google: meetecho-janus ○ sito: janus.conf.meetecho.com ○ github: https://github.com/NethServer/janus-gateway ● NethCTI 3 video: https://goo.gl/oZuHhA
  32. 32. @ale_polidori @alepolidori G r a z i e ! medium.com/@ale_polidori

×