Stuff we noticed while building "Asterisk in the cloud"

1,456 views

Published on

Stuff we noticed while building "Asterisk in the cloud." As delivered to Atlanta Asterisk Users Group in 2010.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,456
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • I'm happy to announce the Cloudvox open phone number lookup API, digits.cloudvox.com.  Take any phone number you care about
  • append it to digits.cloudvox.com
  • and if you want a machine-readable answer, append .json
  • I want whatever I can get, but i'm not willing to pay for every query and I'm okay with it not being exact.   Like 1970s Bell vs modern VoIP, this is cheap (free), good enough, and light years better than nothing.   I think this is the mainstream need for phone number data
  • Stuff we noticed while building "Asterisk in the cloud"

    1. 1. stuff we noticed while building Asterisk in the cloud Atlanta Asterisk Users Group Troy Davis [email_address] twitter.com/troyd cloudvox.com @cloudvox @ifbyphone
    2. 2. Every cloud is special in its own way
    3. 3. Automated Phone Calls <ul><ul><li>Riding on 10 years </li></ul></ul><ul><ul><li>Have framework(s), need appS </li></ul></ul><ul><ul><li>What can we build, quickly? </li></ul></ul>
    4. 4. AGI <ul><ul><li>Java (Asterisk-Java) </li></ul></ul><ul><ul><li>Ruby (Adhearsion, Telegraph, RAGI) </li></ul></ul><ul><ul><li>Perl (Asterisk::FastAGI) </li></ul></ul><ul><ul><li>PHP (PHP-AGI) </li></ul></ul><ul><ul><li>Python (Twisted/StarPy) </li></ul></ul><ul><ul><li>C# (monotone, Asterisk.NET) </li></ul></ul><ul><ul><li>C (CAGI) </li></ul></ul>
    5. 5. Adhearsion <ul><ul><li>Server </li></ul></ul><ul><li>ahn start daemon voiceapp/ </li></ul>
    6. 6. Adhearsion <ul><ul><li>Server </li></ul></ul><ul><li>ahn start daemon voiceapp/ </li></ul><ul><li>  </li></ul><ul><ul><li>Entry points </li></ul></ul><ul><li>server hits:  </li></ul><ul><li>  agi://any.where.org/acontext?b=c </li></ul><ul><li>client runs: </li></ul><ul><li>   acontext {  Ruby-as-dialplan  } </li></ul>
    7. 7. Dialplan Representations <ul><li>Bindings match Asterisk </li></ul><ul><ul><li>Exposes native Asterisk calls </li></ul></ul><ul><ul><li>Different languages (mostly) look the same </li></ul></ul><ul><ul><li>PHP-AGI, Asterisk::AGI, basic Asterisk-Java, RAGI </li></ul></ul>
    8. 8. Dialplan Representations <ul><li>Bindings match Asterisk </li></ul><ul><ul><li>Exposes native Asterisk calls </li></ul></ul><ul><ul><li>Different languages (mostly) look the same </li></ul></ul><ul><ul><li>PHP-AGI, Asterisk::AGI, basic Asterisk-Java, RAGI </li></ul></ul><ul><li>Bindings match language model </li></ul><ul><ul><li>Wrap head around abstraction </li></ul></ul><ul><ul><li>Easier to maintain, harder to replace </li></ul></ul><ul><ul><li>Adhearsion, full Asterisk-Java, Telegraph </li></ul></ul>
    9. 9. Dialplan Representations <ul><li>Bindings match Asterisk </li></ul><ul><ul><li>Exposes native Asterisk calls </li></ul></ul><ul><ul><li>Different languages (mostly) look the same </li></ul></ul><ul><ul><li>PHP-AGI, Asterisk::AGI, basic Asterisk-Java, RAGI </li></ul></ul><ul><li>Bindings match language model </li></ul><ul><ul><li>Wrap head around abstraction </li></ul></ul><ul><ul><li>Easier to maintain, harder to replace </li></ul></ul><ul><ul><li>Adhearsion, full Asterisk-Java, Telegraph </li></ul></ul><ul><li>Think like Asterisk or think like the language? </li></ul>
    10. 10. PHP-AGI <ul><ul><li>Server </li></ul></ul><ul><li>xinetd </li></ul><ul><li>  </li></ul><ul><ul><li>Entry points </li></ul></ul><ul><li>server hits:  </li></ul><ul><li>  agi://any.where.org/?b=c </li></ul><ul><li>xinetd executes: </li></ul><ul><li>   myapp.php #  very dialplan-ish PHP </li></ul>
    11. 11. gist.github.com/4670 - Adhearsion
    12. 12. gist.github.com/4670 - get phone #
    13. 13. Phone + HTTP service (Telegraph)
    14. 14. <ul><ul><li>Don't transfer burden to user </li></ul></ul><ul><ul><li>Where does phone-specific code sit? </li></ul></ul><ul><ul><li>Latency </li></ul></ul>IVR forms (Telegraph)
    15. 15. tinyurl.com/marsphoenix - Poll  
    16. 16. tinyurl.com/marsphoenix - Call <ul><ul><li>App-initiated </li></ul></ul><ul><ul><li>Channels </li></ul></ul><ul><ul><li>Sync/async </li></ul></ul>
    17. 17. Testing <ul><ul><li>“ Can you here me now?” is barely testing </li></ul></ul>
    18. 18. Process <ul><ul><li>“ Can you here me now?” is barely testing </li></ul></ul><ul><ul><li>Paper first </li></ul></ul><ul><ul><li>Small first </li></ul></ul><ul><ul><li>Placeholders first </li></ul></ul><ul><ul><li>Debugging tools </li></ul></ul>
    19. 19. Deployment AGI(agi://else.where.com/agi.pl|arg1|arg2|...) or AGI(agi.pl|arg1|arg2|...)
    20. 20. Harder than it could be <ul><ul><li>ASR & good TTS </li></ul></ul><ul><ul><li>SMS </li></ul></ul><ul><ul><li>Video </li></ul></ul>
    21. 21. DTMF Anywhere Event: DTMF Privilege: dtmf,all Channel: IAX2/instance-X-YYY Uniqueid: cloudvox.com-12345 Digit: 5 Direction: Received Begin: No End: Yes
    22. 22. Conference Pipes <ul><ul><li>fake conference call participant </li></ul></ul><ul><ul><li>creative use of Originate  </li></ul></ul><ul><ul><li>Channel + Context  </li></ul></ul><ul><li>= magic Music on Hold, Playback, Speak, <anything> into </li></ul><ul><li>a conference room </li></ul>
    23. 23. Bring your own carrier, or don't <ul><ul><li>carriers are specialized </li></ul></ul><ul><ul><li>Cloudvox isn't everywhere </li></ul></ul><ul><ul><li>we're a hosting service </li></ul></ul><ul><li>sip:<any number or exten>@<x>.cloudvox.com </li></ul>
    24. 24. Bring your own carrier, or don't <ul><ul><li>carriers are specialized </li></ul></ul><ul><ul><li>Cloudvox isn't everywhere </li></ul></ul><ul><ul><li>we're a hosting service </li></ul></ul><ul><li>sip:<any number or exten>@<x>.cloudvox.com </li></ul><ul><ul><li>priced for use: remote SIP == 1 cent per minute </li></ul></ul>
    25. 25. Number metadata API (free) http://digits.cloudvox.com/4252101234.json
    26. 26. Number metadata API (free) http://digits.cloudvox.com/2124561111.json   ( White House )
    27. 27. Number metadata API (free) http://digits.cloudvox.com/6506929100.json
    28. 28. <phone number you care about>
    29. 29. <phone number you care about> http://digits.cloudvox.com/
    30. 30. <phone number you care about> <.json> http://digits.cloudvox.com/
    31. 31. DNS API host -t TXT 2065460420.na.digits.cloudvox.com
    32. 32. <ul><li>What can I do? </li></ul><ul><ul><li>Get realtime number info from existing tools </li></ul></ul><ul><ul><li>Augment phone number displays </li></ul></ul><ul><ul><li>Analyze a group of numbers </li></ul></ul><ul><ul><li>Customize call logic </li></ul></ul>
    33. 33. <ul><li>Be lazy in what you send, </li></ul><ul><li>and  liberal in what we accept . </li></ul><ul><ul><li>10, 7, 6, 3 digits </li></ul></ul><ul><ul><li>Already parsed, or best guess </li></ul></ul><ul><ul><li>Same reply format for all queries </li></ul></ul><ul><ul><li>REST, DNS, browser </li></ul></ul>
    34. 34. AGI + SMS to same numbers <ul><ul><li>&quot;Call or SMS 206-555-1234&quot; </li></ul></ul><ul><ul><li>No short code or shared code </li></ul></ul><ul><ul><li>Not integrated with Asterisk (HTTP is simpler) </li></ul></ul><ul><ul><li>Maybe down the road? </li></ul></ul>
    35. 35. Asterisk scaling: call-as-unit
    36. 36. Asterisk scaling: data store routing
    37. 37. Asterisk scaling: standard components
    38. 38. Asterisk scaling: escape valve(s)
    39. 39. Questions? Troy Davis [email_address] twitter.com/troyd cloudvox.com @cloudvox @ifbyphone

    ×