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.
Telefono SIP WebRTC nel tuo browser: da sipML5 a Janus
1. da sipML5 a Janus
Telefono WebRTC nel tuo browser
@ale_polidori
@alepolidori
medium.com/@ale_polidori
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. 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)
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’..
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. 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
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