Hey man, can I get a clue? - Presentation Transcript
Cluecon 2009
Hey man, can I get a clue?
RJ Auburn
CTO
rj@voxeo.com
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
•! answer
•! redirect •! ask
•! reject •! say •! log
•! record •! wait •! call
•! default •! transfer
•! hangup
Simple to Learn
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 Media Control
(JSR289) (JSR309)
SIPMethod Prophecy
SIP Servlets Media Control Scripting
(JSR289) (JSR309) (JSR223)
Rhino, Jython,
SIPMethod Prophecy Jruby,Groovy,
Quercus etc...
Java
SIP Servlets Media Control Scripting
(JSR289) (JSR309) (JSR223)
Rhino, Jython,
SIPMethod Prophecy Jruby,Groovy,
Quercus etc...
Java
SIP Servlets Media Control Scripting
(JSR289) (JSR309) (JSR223)
Rhino, Jython,
SIPMethod Prophecy Jruby,Groovy,
Quercus etc...
Java
SIP Servlets Media Control Scripting
(JSR289) (JSR309) (JSR223)
Rhino, Jython,
SIPMethod Prophecy Jruby,Groovy,
Quercus etc...
Applications
Java
SIP Servlets Media Control Scripting
(JSR289) (JSR309) (JSR223)
Rhino, Jython,
SIPMethod Prophecy Jruby,Groovy,
Quercus etc...
How about some code?
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()
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();
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()
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");
}
}
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")
}
Easy as Pie!
But wait, there’s more!
So...
Wrapping Up
So why is this important?
Quick Poll: Are you a phone
developer?
Phone Developers Web Developers
The Depressing Facts of Life
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 phone
http://www.flickr.com/photos/tavallai/2084954580/
Communication World is Changing
Are you going to change with it?
http://www.flickr.com/photos/tavallai/2084954580/
http://www.flickr.com/photos/eleaf/2536358399/
Love me? Hate me?
Say what you want about me...
RJ Auburn
rj@voxeo.com
Tropo.com Script Based Communcation Apps
XML Telephony
0 comments
Post a comment