Hey man, can I get a clue?
-
Upload
voxeo-corp -
Category
Technology
-
view
3.460 -
download
4
description
Transcript of Hey man, can I get a clue?
Cluecon 2009
Hey man, can I get a clue?
WHY ARE YOU HERE?
To Watch Boring Presentations?
To Browse The Web?
Or To Change The World?
Get Passionate OR Get Out!
So lets talk about...
Innovation
Telephony
Locked Out
This is not how it has to be...
Web 2.0
Simplicity
Open
So how can we find simplicity and salvation?
Religion
But What Religion?
XML
VoiceXML and CCXML
Like Tribbles...
It has taken over the Enterprise...
But it’s kind of like working for “the man”
So... How about API’s...
A Favorite of Carriers
Java
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.
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
Many Others...
But are they Simple?
Are they cool?
Frack No!
So...
Tropo.com
answer();say("Hello, world!");
hangup();
Tropo is Simple
Ruby
Telephony in YOUR Language
Simple to Learn
•! answer
•! redirect
•! reject
•! call
•! transfer
•! hangup
•! ask
•! say
•! record
•! log
•! wait
•! default
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
What are the Ingredients?
SIP Servlets(JSR289)
SIPMethod
SIP Servlets(JSR289)
Media Control(JSR309)
SIPMethod Prophecy
SIP Servlets(JSR289)
Media Control(JSR309)
SIPMethod Prophecy
Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...
SIP Servlets(JSR289)
Media Control(JSR309)
SIPMethod Prophecy
Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...
Java
SIP Servlets(JSR289)
Media Control(JSR309)
SIPMethod Prophecy
Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...
Java
SIP Servlets(JSR289)
Media Control(JSR309)
SIPMethod Prophecy
Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...
Java
SIP Servlets(JSR289)
Media Control(JSR309)
SIPMethod Prophecy
Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...
Applications
Java
How about some code?
T.1: Hello World
JavaScript and PHP
answer();
say("Hello, world!");
hangup();
Ruby
answer
say "Hello, world!”
hangup
Groovy
answer()
say 'Hello, world!'
hangup()
Python
answer()
say("Hello, world !")
hangup()
// -----------// 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();
Asking for Input - JavaScript
# 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()
Using ASR - Python
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"); }}
Using ASR and DTMF - JavaScript
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")}
Twitter Example - Groovy
Easy as Pie!
But wait, there’s more!
So...
Wrapping Up
So why is this important?
Quick Poll: Are you a phone developer?
The Depressing Facts of Life
Phone Developers Web Developers
The Phone Developer is DEAD!
THAT MEANS YOU
Don’t create phone applications...
Instead create applications that use the phone...
Create Communication Applications
Why?
Kids don’t talk on the phonehttp://www.flickr.com/photos/tavallai/2084954580/
Communication World is Changing
http://www.flickr.com/photos/tavallai/2084954580/
Are you going to change with it?
http://www.flickr.com/photos/eleaf/2536358399/
Love me? Hate me? Say what you want about me...
Tropo.com Script Based Communcation Apps
XML Telephony