• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
 

"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk

on

  • 11,238 views

Call control is being reinvented in several exciting new ways. In this talk, we explore existing models for building voice applications using the Asterisk Dialplan, Asterisk AGI/AMI, and how new ...

Call control is being reinvented in several exciting new ways. In this talk, we explore existing models for building voice applications using the Asterisk Dialplan, Asterisk AGI/AMI, and how new in-cloud voice APIs are reinventing the way that build, host, and scale voice applications.


such as in-cloud dialplan API with Twilio. Taking a programmer's perspective, we highlight desirable dialplan properties such as simplicity, automatic scalability, integration with existing databases and servers, and separation of business logic from telephony logic. We also explore the tradeoffs that Twilio has made to simplify the experience of building voice applications, including the concept of encapsulating the state of a voice call in a URL. We conclude with thoughts about how Asterisk could be streamlined for in-cloud dialplan APIs and the services that support them.

Statistics

Views

Total Views
11,238
Views on SlideShare
11,097
Embed Views
141

Actions

Likes
5
Downloads
110
Comments
0

4 Embeds 141

http://blog.twilio.com 92
http://www.slideshare.net 21
http://www.twilio.com 21
http://www.meetup.com 7

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    "Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk "Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk Presentation Transcript

    • Reinventing the Dialplan Astricon Oct 14, 2009 Copyright 2009 Twilio
    • -Call ing c n to X re P B Click- fe n y on R pa C IV m Co Voice Applications Asterisk
    • ci - n to X re P B Click- fe n y n a o p R C IV m Co Voice Applications The Cloud Asterisk
    • Voice Applications Voice Guru
    • Maintained by your Voice Guru Asterisk Native scripting language Dialplan written by your Voice Guru Application Asterisk Dialplan Language: Native Scripting Where: Local on call router
    • IP Asterisk AGI/AMI Java/C/Ruby... Application Asterisk AGI/AMI Language: AGI/AMI API + Where: Remote via IP Java/C/Ruby/Python/Etc
    • Maintained by your Voice Guru IP Asterisk AGI/AMI Java/C/Ruby... Application Asterisk AGI/AMI Language: AGI/AMI API + Where: Remote via IP Java/C/Ruby/Python/Etc
    • Maintained by your Programmer IP Asterisk AGI/AMI Java/C/Ruby... Application Asterisk AGI/AMI Language: AGI/AMI API + Where: Remote via IP Java/C/Ruby/Python/Etc
    • Enter the Programmer • Commodity skillset • Easy to hire • Cheap Programmer
    • Better but... IP Asterisk Large API with "lite" documentation. AGI/AMI The distinction between AGI/AMI can be confusing. Tight integration between call router and voice app: direct socket Java/C/Ruby... connections Application SCALING=HARD Asterisk AGI/AMI Language: AGI/AMI API + Where: Remote via IP Java/C/Ruby/Python/Etc
    • IP Asterisk AGI/AMI Lets mull this over...
    • IP Asterisk AGI/AMI Why do I need a Voice Guru?
    • IP Asterisk AGI/AMI Expert What if I outsourced my voice guru?
    • IP AGI/AMI Asterisk in the Cloud
    • IP ????? Asterisk in the Cloud What is the ideal voice app API?
    • Web developers are (one of) the largest engineering workforces on the planet • HTTP • Request/Response • XML/JSON • WAV/MP3
    • Magic Ruby Java Asterisk in PHP the Cloud Python . . . Create new messaging protocol and new API for each language?
    • HTTP/XML Ruby REST Java Asterisk in PHP the Cloud Python . . . Normal Web Server HTTP/XML/REST
    • HTTP/XML Ruby REST Java PHP Python Twilio . . . Normal Web Server HTTP/XML/REST
    • HTTP/XML REST Google App Engine Microsoft Azure Twilio Heroku Leverage existing cloud hosting Scale: 1-10,000’s of simultaneous calls
    • Request/Response 1 Procedural programming digits = GetKeypadPresses(); switch(digits) { case 1: blah(); break; }
    • Request/Response 1 Procedural programming digits = GetKeypadPresses(); switch(digits) { case 1: blah(); break; } Not how HTML works!
    • Request/Response 2 Web programming <form action=”digits.php”> <input type=”text” name=”digits” /> <input type="submit" value="Go"/> </form>
    • Request/Response 2 Web programming <form action=”digits.php”> <input type=”text” name=”digits” /> <input type="submit" value="Go"/> </form> Submit back to digits.php on input
    • Request/Response 3 Web-like voice programming <Gather numDigits=”5” action=”digits.php”/> Apply the same model for voice applications
    • Request/Response 3 Web-like voice programming <Gather numDigits=”5” action=”digits.php”/> Submit back to digits.php on input
    • Request/Response 4 Language-specific libraries $r = new Response(); $r->append(new Say("Hello World"); PHP $r->Respond(); r = twilio.Response() r.append(twilio.Say("Hello World")) Python print r @r = Twilio::Response.new @r.append(Twilio::Say.new "Hello World") Ruby puts @r.respond TwiMLResponse response = new TwiMLResponse(); Say say = new Say("Hello World"); Java System.out.println(response.toXML());
    • ⤸ ⤸ ⤸ HTTP 307 HTTP 307 u.com b.com c.com PBX Application Authorization CRM Service Integration Response Chaining
    • Stateless ‘Twimlet’ URLs + REST
    • curl -fSs -u "$ACCOUNTSID: $AUTHTOKEN" -d "Caller=$CALLERID" -d "Called=$PHONE" -d "Url=http:// twimlets.com/message?Message=$MSG" "https://api.twilio.com/2008-08-01/ Accounts/$ACCOUNTSID/Calls Stateless ‘Twimlet’ URLs + REST
    • Put the Voice Guru in the Cloud 1 Asterisk in the cloud Adopt a standards-based web API 2 HTTP/XML/REST Leverage existing web infrastructure 3 Apache/Tomcat/AWS/AppEngine/Azure/Heroku Let the cloud handling scaling 4 1-10,000’s simultaneous calls Don’t break request/response model 5 Build libraries for PHP/Python/Java/C#/Ruby etc.
    • ci - n to X re P B Click- fe n y n a o p R C IV m Co Voice Applications The Cloud Asterisk
    • Simplifying Telecom Simple • Powerful • Pay-As-You-Go Evan Cooke Co-Founder & CTO twitter: @twilio phy@twilio.com http://www.twilio.com