21
DevCon5 (July 2014): Acision SDK Peter Dunkley, Technical Director, Acision 06/27/2022 Title Version No: 0.1/ Status: DRAFT 1 Email: [email protected] Twitter: @pdunkley

DevCon5 (July 2014) - Acision SDK

Embed Size (px)

DESCRIPTION

A presentation by Peter Dunkley (Technical Director, Acision). Presentation date 10-Jul-2014.

Citation preview

Page 1: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 1

DevCon5 (July 2014): Acision SDKPeter Dunkley, Technical Director, Acision

Email: [email protected]: @pdunkley

Page 2: DevCon5 (July 2014) - Acision SDK

Acision at-a-glance

Heritage & history

20 year history

270 customers globally

2 trillion messages/ year

Global presence & reach

35+ offices across 6 continents

850+ employees

100+ support team

1st to launch commercial SMSC

Cloud & virtualized services

Multi-Channel messaging + WebRTC

Innovation

Data and insights

Carrier grade security

Operational Excellence

24/7 Support© Acision 2014

Page 3: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 3

Evolution on the Web

1990 1996 1998 2004 2011

Sir Tim Berners-Leecreates HTML. Web-pages are static

Microsoft and Netscapeintroduce differentmechanisms for DHTML

W3C produces theDOM1 specification

Google uses Ajaxin Gmail (W3Creleases 1st draft in2006) – the dawnof web-apps

WebSocket andWebRTCimplementationsbecome available

Page 4: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 4

Revolution in Telecoms

1792 1837 1876 1919 1960s > 1990s > 2011WebSocket andWebRTCimplementationsbecomeavailable

The revolution

Before today the operators (big and small) had full control over real-time communications because it was hard to do and substantial infrastructure investment was required.Claude Chappe

invented the opticaltelegraph

First commercialelectrical telegraphcreated byCooke andWheatstone

AlexanderGrahamBell patentsthe telephone

Rotary dialentersservice

From the 1960sonwards digitalexchanges start toappear

1963: DTMFenters service

From the 1990s onwardsvoice started to be carriedon technologies developedfor data networks such asATM and IP

Page 5: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 5

RTCWeb

There are a number of proprietary implementations that provide direct interactive rich communication using audio, video, collaboration, games, etc. between two peers' web-browsers. These are not interoperable, as they require non-standard extensions or plugins to work. There is a desire to standardize the basis for such communication so that interoperable communication can be established between any compatible browsers.

Real-Time Communication in WEB-Browsers (rtcweb) 2013-03-13 charter

Page 6: DevCon5 (July 2014) - Acision SDK

04/13/2023 6

Real-time communication is hard

Title Version No: 0.1/ Status: DRAFT

• VoIP has always suffered from a lack of standard profile– What QoS/feedback mechanisms should be supported– What codecs should be supported– What security mechanisms should be supported

• This means that VoIP end-point vendors can all follow the specifications to the letter and still produce devices that do not interoperate

• This makes the job of developing a VoIP end-point far harder than it should be

• This makes large scale consumer use of VoIP difficult– You can’t just add real-time communications to your service - you have

to really, really, need it for it to be worth doing

RTCWeb provides this standard profile

Page 7: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 7

WebRTC

The mission of the Web Real-Time Communications Working Group, part of the Ubiquitous Web Applications Activity, is to define client-side APIs to enable Real-Time Communications in Web browsers.

These APIs should enable building applications that can be run inside a browser, requiring no extra downloads or plugins, that allow communication between parties using audio, video and supplementary real-time communication, without having to use intervening servers (unless needed for firewall traversal, or for providing intermediary services).

Web Real-Time Communications Working Group Charter

Page 8: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 8

RTCWeb

RTCWeb/WebRTC Architecture

G.711/OPUS Codec

NetEQ for Voice

Echo Canceller /Noise Reduction

Voice Engine

H.264/VP8 Codec

Video Jitter Buffer

Image enhancements

Video Engine

SRTP

Multiplexing

P2PSTUN + TURN + ICE

Transport

Audio Capture/Render Video Capture Network I/O

Session management / Abstract signalling (Session)

WebRTC C++ API (PeerConnection)

WebRTC API

Your w

ebapp #1

Your w

ebapp #2

Your w

ebapp #3. . .

The web

Your browser

Based on the diagram from http://www.webrtc.org/reference/architecture

Page 9: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 9

The signalling triangle (non-interoperable)

UA UA

ServerSig

nallin

g Signalling

Media

Page 10: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 10

The signalling trapezoid (interoperable)

UA UA

ServerSig

nallin

g Signalling

Media

ServerSignalling

The fact that something can interoperate doesnot mean it must, or will, interoperate

Page 11: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 11

Interoperability could be bad for business

• Good for consumers doesn’t always mean good for business– Why would, for example, Microsoft want Office 365

users to easily collaborate with Google Docs users?

• In other situations…

It’s the API, stupid…

Page 12: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 12

Picking the right API is the most important thing

Personally, I’ve come around (the hard way) to a fairly pragmatic stance on this point, and I hesitate from declaring “it has to be” one approach for signaling protocol, or another. Let me explain: Initially, I must admit I used to obsess about what protocol the library was doing under the hood. In fact, full disclosure: when I first started looking into JavaScript WebRTC signaling, I thought SIP over WebSockets was a bad idea…

However, after I did a few projects… I started to have a change of heart. I found that in using the library, I was able to accomplish the goals of my projects, and the JavaScript interface to the library could be just as simple and powerful as all the others. I couldn’t find the fatal flaw I was expecting, and it just worked. In all this I started to care less and less about what was happening on the wire between the library and the service, and more about what features of the service I could access through the API.

… Most importantly, the best one for you is flexible enough to meet your security, architecture, and functional requirements (no matter what protocol it uses).

webrtcH4cKS: What’s in a WebRTC JavaScript Library,Reid Stidolph

Page 13: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 13

Acision SDK v1.0 for Android, iOS, and JavaScript

Amazon AWS

Auth/Bootstrap

Library

Messaging Library

PresenceLibrary

Contact Management

Library

WebRTCLibrary

SuperNode

TURN server

3rd PartyIdentity Provider

SD

K W

rapp

er

SIP trunk(s)

HTTP Proxy and

Load Balancer

Single point-of-access: sdk.acision.com:443

Note: different identity providers work in different ways, some may require specific handling in the app itself (for example, show a Facebook login screen)

Audio/video calls

SIP over Secure WebSockets (port 443)

REST over HTTPS (port 443)Secure WebSockets (port 443)

REST over HTTPS (port 443)Secure WebSockets (port 443)

REST over HTTPS (port 443)

REST over HTTPS (port 443)

TURN over TCP/UDP (port 3478) and TLS (port 5349)Acision SDK

SMS In/Out through Acision Forge

Application Servers

Page 14: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 14

AcisionSDK Example: Android

AcisionSdkConfiguration config = new AcisionSdkConfiguration("MYAPIKEY ", "user", "password");config.setApplicationActivity(this); AcisionSdk acisionSdk = new AcisionSdk(config, new AcisionSdkCallbacks() {    @Override    public void onConnected(AcisionSdk acisionSdk) {      session = acisionSdk.getWebrtc().connectTo("+441632960000", new WebrtcSessionCallbacks() {          @Override          public void onConnected() {            session.setLocalView(localVideoView);            session.setRemoteView(remoteVideoView);          }        }, new WebrtcOptions());    }});

Page 15: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 15

AcisionSDK Example: iOS

ACSAcisionSDKConfiguration *config = [ACSAcisionSDKConfiguration acisionSDKConfigurationWithAPIKey:@"MYAPIKEY” username:@"user" password:@"password"]; self.acisionSDK = [ACSAcisionSDK acisionSDKWithConfig:config delegate:self]; - (void)onConnected:(ACSAcisionSDK *)acisionSDK {  ACSAcisionSDKWebRTCOptions* options = [[ACSAcisionSDKWebRTCOptions alloc] init];  self.currentSession = [self.acisionSDK.webrtc connectTo: @"+441632960000”, delegate:self options:options];} -(void)onConnected {  self.currentSession.localView = self.localView;  self.currentSession.remoteView = self.remoteView;}

Page 16: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 16

AcisionSDK Example: JavaScript

var lib = new AcisionSDK("MYAPIKEY", {    onConnected: function() {      var session = lib.webrtc.connect("+441632960000");      session.remoteVideoElement = document.getElementById("vidRemote");      session.remoteAudioElement = document.getElementById("audRemote");    }  }, {    username: "user",    password: "password"  });

Page 17: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 17

OAuth2 Authentication

Acision SDK

OAuth2Provider

SDK Authenticate (APIKey)

Authentication URL

Load Authentication Page

Authentication Code

Authentication Code

Aut

he

ntic

atio

n C

od

e

Acc

ess

To

ken

Req

ue

st Id

en

tity

Ide

ntity

Identity

1

2

3

4

6

7

8

5

9

10

Page 18: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 18

Acision SDK Contact Centre Demo

Page 19: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 19

Acision SDK Contact Centre Demo

Page 20: DevCon5 (July 2014) - Acision SDK

Some stats…

© Acision 2014 20

Measurable Benefits:

Faster call resolution

Personalised service

Improved customer

satisfaction

• 60%+ of communication is non-verbal..• Satisfied online customers are 70% more

likely to purchase again. Human interactions matter!!

Page 21: DevCon5 (July 2014) - Acision SDK

04/13/2023 Title Version No: 0.1/ Status: DRAFT 21

Thank you

Email: [email protected]: @pdunkley