Hey man, can I get a clue?

1,856
-1

Published on

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

No Downloads
Views
Total Views
1,856
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
50
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Hey man, can I get a clue?

  1. 1. Cluecon 2009 Hey man, can I get a clue? RJ Auburn CTO rj@voxeo.com
  2. 2. WHY ARE YOU HERE?
  3. 3. To Watch Boring Presentations?
  4. 4. To Browse The Web?
  5. 5. Or To Change The World?
  6. 6. Get Passionate OR Get Out!
  7. 7. So lets talk about...
  8. 8. Innovation
  9. 9. Telephony
  10. 10. Locked Out
  11. 11. This is not how it has to be...
  12. 12. Web 2.0
  13. 13. Simplicity
  14. 14. Open
  15. 15. So how can we find simplicity and salvation?
  16. 16. Religion
  17. 17. But What Religion?
  18. 18. XML
  19. 19. VoiceXML and CCXML
  20. 20. Like Tribbles...
  21. 21. It has taken over the Enterprise...
  22. 22. But it’s kind of like working for “the man”
  23. 23. So... How about API’s...
  24. 24. A Favorite of Carriers
  25. 25. Java
  26. 26. SIP Servlets - Standard Java based API for writing SIP applications. - 1.0 standardized as JSR-116. - 1.1 just released as JSR-289 - Extends the HTTP Servlet model to support SIP and telephony applications - http://www.sipservlet.com/ - Supported by a large number of application servers including Oracle (BEA), IBM, Sun, Voxeo.
  27. 27. JSR-309 - Java Media Server API - Based on the CCXML media model - Still in draft stage - Provides dialog resources, conferencing, media routing to Java applications
  28. 28. Many Others...
  29. 29. But are they Simple?
  30. 30. Are they cool?
  31. 31. Frack No!
  32. 32. So...
  33. 33. Tropo.com
  34. 34. answer(); say("Hello, world!"); hangup(); Tropo is Simple
  35. 35. Ruby Telephony in YOUR Language
  36. 36. •! answer •! redirect •! ask •! reject •! say •! log •! record •! wait •! call •! default •! transfer •! hangup Simple to Learn
  37. 37. Simple to Deploy •Hosted service or OPEN SOURCE •Accessible via Phone, SIP, Skype etc •Inbound and Outbound calling •Free for developers •No setup costs •Five minutes from sign-up to live deployment + = GO
  38. 38. What are the Ingredients?
  39. 39. SIP Servlets (JSR289) SIPMethod
  40. 40. SIP Servlets Media Control (JSR289) (JSR309) SIPMethod Prophecy
  41. 41. SIP Servlets Media Control Scripting (JSR289) (JSR309) (JSR223) Rhino, Jython, SIPMethod Prophecy Jruby,Groovy, Quercus etc...
  42. 42. Java SIP Servlets Media Control Scripting (JSR289) (JSR309) (JSR223) Rhino, Jython, SIPMethod Prophecy Jruby,Groovy, Quercus etc...
  43. 43. Java SIP Servlets Media Control Scripting (JSR289) (JSR309) (JSR223) Rhino, Jython, SIPMethod Prophecy Jruby,Groovy, Quercus etc...
  44. 44. Java SIP Servlets Media Control Scripting (JSR289) (JSR309) (JSR223) Rhino, Jython, SIPMethod Prophecy Jruby,Groovy, Quercus etc...
  45. 45. Applications Java SIP Servlets Media Control Scripting (JSR289) (JSR309) (JSR223) Rhino, Jython, SIPMethod Prophecy Jruby,Groovy, Quercus etc...
  46. 46. How about some code?
  47. 47. T.1: Hello World JavaScript and PHP Ruby answer(); answer say("Hello, world!"); say "Hello, world!” hangup(); hangup Python Groovy answer() answer() say("Hello, world !") say 'Hello, world!' hangup() hangup()
  48. 48. Asking for Input - JavaScript // ----------- // asking for input // ----------- answer(); result=ask( "Hi. For sales, press 1. For support, press 2.", {choices:"1, 2"} ); if (result.name=='choice') { if (result.value=="1") { say( "sales is not available right now.") } if (result.value=="2") { say( "support is currently on the other line." ) } } hangup();
  49. 49. Using ASR - Python # Using speech input instead of touch-tone answer() result = ask("Hi. For sales, say sales. For support, say support", {'choices':"sales, support", 'repeat':3}) if (result.name == 'choice'): if (result.value == "sales"): say("Sales is not available right now") if (result.value == "support"): say("Support is currently on the other line.") hangup()
  50. 50. Using ASR and DTMF - JavaScript answer(); result=ask( "For sales, just say sales or press 1. For support, say support or press 2.", { choices:"sales( 1, sales), support( 2, support)", repeat:3, onBadChoice: function() { say("I'm sorry, I didn't understand what you said.") } } ); if (result.name=='choice') { if (result.value=="sales") { say( "Ok, let me transfer you to sales." ); transfer( "14075551111"); } if (result.value=="support") { say( "Sure, let me get support. Please hold." ); transfer( "14085552222"); } }
  51. 51. Twitter Example - Groovy answer() if (currentCall.callerID == "8315551234") { def event = ask("Welcome RJ. Please enter the phone number you wish", [choices:"[10 DIGITS]",timeout:10]) if (event.name=="choice") { transfer(event.value) } else { say ("too slow bro.") hangup(); } } else { say("Thank you for calling RJ. We will connect you now.") say("His twitter status is") String xml = "http://twitter.com/statuses/user_timeline.xml?screen_name=zscgeek".toURL().text def strXML = new XmlParser().parseText(xml) say(strXML.statuses.status[0].text.text()) transfer("tel:+18315551234") }
  52. 52. Easy as Pie!
  53. 53. But wait, there’s more!
  54. 54. So...
  55. 55. Wrapping Up
  56. 56. So why is this important?
  57. 57. Quick Poll: Are you a phone developer?
  58. 58. Phone Developers Web Developers The Depressing Facts of Life
  59. 59. The Phone Developer is DEAD!
  60. 60. THAT MEANS YOU
  61. 61. Don’t create phone applications...
  62. 62. Instead create applications that use the phone...
  63. 63. Create Communication Applications
  64. 64. Why?
  65. 65. Kids don’t talk on the phone http://www.flickr.com/photos/tavallai/2084954580/
  66. 66. Communication World is Changing
  67. 67. Are you going to change with it? http://www.flickr.com/photos/tavallai/2084954580/ http://www.flickr.com/photos/eleaf/2536358399/
  68. 68. Love me? Hate me? Say what you want about me...
  69. 69. RJ Auburn rj@voxeo.com Tropo.com Script Based Communcation Apps XML Telephony

×