16
TADHack 2014 APIdaze API What is it ? Who can use it ? How does it work ?

APIdaze presentation at TADHack 2014

Embed Size (px)

DESCRIPTION

Slides presented at TADHack 2014 6 / 7 June in Teatro Goya Madrid - TADHack is the only global meeting place for developers who want to learn, share, code and create across the breath of telecom tools and technologies.

Citation preview

TADHack 2014

APIdaze API

What is it ? Who can use it ? How does it work ?

TADHack 2014

What is it ?

● Components to manage things VoIP related– calls to DID numbers and from SIP accounts or the

Web (WebRTC/Flash UDP)● SIP domains

– vm.yourappkey.apidaze.voip● DID numbers

TADHack 2014

From cloud PBX to API managed telephony

● A web interface to manage you PBX is fine● Now VoIP engineers can build their own cloud

PBX using an API● And web developers can easily integrate telco

applications

TADHack 2014

API components

● HTTP/REST● HTTP/XML● JavaScript● … and developer programs

TADHack 2014

Who can use it ?

● VoIP engineers– call transfer, line supervision, voicemails, fax to

email, etc.● Web Developers

– Who want to bring PSTN to WebRTC apps– Who want to stay away from SIP– And even more from :

● E1/T1, PRI, BRI, codecs

TADHack 2014

HTTP/REST

● A set of commands to– Place calls, send SMS and faxes

● And list and Create/Read/Update/Delete (CRUD)– DID numbers– SIP accounts– Voicemails boxes– Billing accounts

TADHack 2014

HTTP/REST examplecurl -v -X GET "https://api.apidaze.io/4561sd03/sipaccounts?api_secret=99f140425ed7ert4clgt19d9c0105283"

[ { "id": "8", "name": "testsipaccount", "sip": { "username": "testsipaccount", "password": "FEtg5qZuyx0hoLYx" }, "callerid": { "internal_name": "testsipaccount", "internal_number": "", "external_name": "testsipaccount", "external_number": "" }, "created_at": "2012-07-24 22:38:25", "updated_at": "2012-10-05 17:08:36" }]

TADHack 2014

HTTP/XML scripting

● XML documents written by the developer● Stored in an web server controlled by the

developer● Downloaded via HTTP and executed when

– A DID is called– A call is placed from a SIP account, or from the

WebRTC/Flash UDP JavaScript API– Each call has his own context defined by the parameters

sent within the HTTP request

TADHack 2014

HTTP/XML script example

<document>

<work>

<speak lang='en-US'>Please wait while we're connecting your call</speak>

<dial>

<number>0033123456789</number>

<sipaccount>bob</sipaccount>

</dial>

<hangup/>

</work>

</document>

TADHack 2014

Call example from the PSTN to a DID

1. Call comes in to a DID

2. URL of the External Script is fetched• URL : http://yourdomain.com/yourscript.php • Parameters include : Caller ID and Called number (DID),

channel identifier

3. XML instructions from the previous URL are run• e.g. : <dial><sipaccount>bob</sipaccount></dial>

4. Call ends, URL of the External Script is fetched again• Parameters include : channel identifier, exiting=true

TADHack 2014

Call from a SIP account

1. Call comes in from a SIP account [email protected]

2. URL of the External Script is fetched• URL : http://yourdomain.com/yourscript.php • Parameters include : SIP from URI

sip:[email protected], desitnation, channel identifier

3. XML instructions from the previous URL are run• e.g. : <dial><number>0033123456789</number></dial>

4. Call ends, URL of the External Script is fetched again• Parameters include : channel identifier, exiting=true

TADHack 2014

JavaScript

● What web developers love– jQuery, Prototype/Scriptaculous– Now even on the server side with Node.js

● Being extended to realtime voice/video with WebRTC– getUserMedia function– PeerConnection object

TADHack 2014

JavaScript parameters

● Context : a call is placed from a web page– WebRTC or Flash UDP

● The developer adds JavaScript parameters– User identifier, number to call, etc.

● Those parameters are sent over HTTP to get the XML instructions– The call is processed by the developer's script

TADHack 2014

Call example from JavaScript

1. Call comes in from an HTML/JavaScript page

2. URL of the External Script is fetched• From the apiKey parameter• Parameters include : anything from the web page

3. XML instructions from the previous URL are run• e.g. : <dial><sipaccount>bob</sipaccount></dial>

4. Call ends, URL of the External Script is fetched again• Parameters include : channel identifier, exiting=true

TADHack 2014

JavaScript Events

● Often called « event driven programming »● Events retrieved from the telco side

– Call management events : Call Ringing, Call Answered, Call Hangup

– In-call events : Text message, Who is talking (in a conference room)

TADHack 2014

Conferencing

● Text/audio/video bridge provided to PSTN, WebRTC and Flash endpoints– Text/audio available to WebRTC/Flash endpoints– Video for WebRTC endpoints (Chrome/Opera)

● AudioBridge is Asterisk based● VideoBridge is Jitsi based● Both without SIP or XMPP

– Raw JSON text exchanged over WebSockets