asterisk webrtc frontier make client sip phone with
play

Asterisk WebRTC frontier: make client SIP Phone with sipML5 - Janus - PowerPoint PPT Presentation

Asterisk WebRTC frontier: make client SIP Phone with sipML5 - Janus Gateway Alessandro Polidori Fosdem 2019 - Brussels @ale_polidori Realtime DevRoom Alessandro Polidori Software Engineer @Nethesis #Node.js #WebRTC #OpenSource alepolidori


  1. Asterisk WebRTC frontier: make client SIP Phone with sipML5 - Janus Gateway Alessandro Polidori Fosdem 2019 - Brussels @ale_polidori Realtime DevRoom

  2. Alessandro Polidori Software Engineer @Nethesis #Node.js #WebRTC #OpenSource alepolidori @ale_polidori https://medium.com/@ale_polidori

  3. WebRTC: Web Real Time Communication ● 2011 Google project ● Javascript API for audio/video communications ● 3 Components ○ getUserMedia: camera, microphone, screen access ○ RTCPeerConnection: negotiation, encoding, decoding, nat traversal ○ RTCDataChannel: exchange data between browsers ● Other APIs: getStats, MediaRecorder ale_polidori

  4. Protocols ● 2 groups ○ RTP → transport ○ SIP → signaling ● SRTP ○ secure real-time transport protocol ○ encryption ○ message authentication ● SDP - audio & video description ● STUN, TURN, ICE ale_polidori

  5. Architecture VoIP Provider Internet PSTN NethVoice PBX (Asterisk) router VoIP Gateway Company network Web App

  6. CoDec ● Reduction / Compression / Decompression of data flow ● Bandwidth / Quality (MOS) / Latency ● Audio ○ G.711 (64 kbps) ○ Opus (6-510 kbps - dynamic bitrate) ● Video ○ VP8, VP9, AV1 ○ H.264 ale_polidori

  7. sipML5

  8. sipML5 ● First Open Source HTML5 SIP Client (Doubango Telecom) ● 100% Javascript: NO PLUGIN !!! ● Media stack on WebRTC ● SIP over WebSocket (UDP, TCP, TLS) ● Audio / Video Calls / Instant Messaging / Screen share ● Desktop & Mobile ● Google I/O 2012 ale_polidori

  9. sipML5 Architecture NethVoice PBX (Asterisk) websocket PSTN HTML5 Client UDP/TCP/TLS Sip Net Javascript SIP Javascript SDP SRTP/SRTCP/ICE WebRTC ale_polidori

  10. sipML5: how to use 1. Engine initialization 2. Start SIP Stack 3. Extension registration 4. Start Audio/Video call ale_polidori

  11. sipML5: how to use 1. Engine initialization 2. Start SIP Stack 3. Extension registration 4. Start Audio/Video call ale_polidori

  12. sipML5: how to use 1. Engine initialization 2. Start SIP Stack 3. Extension registration 4. Start Audio/Video call ale_polidori

  13. sipML5: how to use 1. Engine initialization 2. Start SIP Stack 3. Extension registration 4. Start Audio/Video call ale_polidori

  14. ...more code...

  15. sipML5: the library ale_polidori

  16. 1. sipML5: engine initialization ale_polidori

  17. 2. sipML5: start SIP stack ale_polidori

  18. 2. sipML5: start SIP stack ale_polidori

  19. 2. sipML5: start SIP stack ale_polidori

  20. 2. sipML5: start SIP stack ale_polidori

  21. 2. sipML5: start SIP stack ale_polidori

  22. 2. sipML5: start SIP stack ale_polidori

  23. 3. sipML5: extension registration ale_polidori

  24. 4. sipML5: call ale_polidori

  25. Janus Gateway

  26. Janus ● Gateway general purpose by Meetecho ● WebRTC audio/video ● JSON messages ● Plugin Architecture → SIP Plugin ● Monitoring ● Interfaces HTTP, WebSocket, RabbitMQ ale_polidori

  27. Janus Architecture HTML5 Client PSTN janus.js UDP/TCP/TLS Sip Net HTTPS server Apache ProxyPass PBX (Asterisk) ale_polidori

  28. Janus: how to use 1. Engine initialization 2. Create a session 3. Link SIP plugin 4. Start Audio/Video call ale_polidori

  29. Janus: how to use 1. Engine initialization 2. Create a session 3. Link SIP plugin 4. Start Audio/Video call ale_polidori

  30. Janus: how to use 1. Engine initialization 2. Create a session 3. Link SIP plugin 4. Start Audio/Video call ale_polidori

  31. Janus: how to use 1. Engine initialization 2. Create a session 3. Link SIP plugin 4. Start Audio/Video call ale_polidori

  32. ...more code...

  33. Library ● Janus Client lib meetecho/janus-gateway ● WebRTC adapter webrtc/adapter ale_polidori

  34. 1. Janus: engine initialization ale_polidori

  35. 2. Janus: create a session ale_polidori

  36. 3. Janus: link SIP plugin Handle to interact with plugin ale_polidori

  37. 4. Janus: audio/video call Call destination ale_polidori

  38. VoIP PBX

  39. NethServer VoIP PBX ● NethServer Linux distro ● Asterisk & FreePBX based ● Open Source - community.nethserver.org ● NethVoice Enterprise version ● NethCTI WebApp ale_polidori

  40. Demo

  41. Start your NethServer VoIP PBX 1 ale_polidori

  42. go to: 2 https://alepolidori.github.io/janus-webrtc-phone ale_polidori

  43. References https://github.com/alepolidori/fosdem-2019 https://bloggeek.me

  44. Thank you ! alepolidori @ale_polidori https://medium.com/@ale_polidori

Recommend


More recommend