Hey man, can I get a clue?

76
Cluecon 2009 RJ Auburn CTO [email protected] Hey man, can I get a clue?

description

 

Transcript of Hey man, can I get a clue?

Page 1: Hey man, can I get a clue?

Cluecon 2009

RJ [email protected]

Hey man, can I get a clue?

Page 2: Hey man, can I get a clue?
Page 3: Hey man, can I get a clue?

WHY ARE YOU HERE?

Page 4: Hey man, can I get a clue?

To Watch Boring Presentations?

Page 5: Hey man, can I get a clue?

To Browse The Web?

Page 6: Hey man, can I get a clue?
Page 7: Hey man, can I get a clue?

Or To Change The World?

Page 8: Hey man, can I get a clue?

Get Passionate OR Get Out!

Page 9: Hey man, can I get a clue?

So lets talk about...

Page 10: Hey man, can I get a clue?

Innovation

Page 11: Hey man, can I get a clue?

Telephony

Page 12: Hey man, can I get a clue?

Locked Out

Page 13: Hey man, can I get a clue?

This is not how it has to be...

Page 14: Hey man, can I get a clue?

Web 2.0

Page 15: Hey man, can I get a clue?

Simplicity

Page 16: Hey man, can I get a clue?

Open

Page 17: Hey man, can I get a clue?

So how can we find simplicity and salvation?

Page 18: Hey man, can I get a clue?

Religion

Page 19: Hey man, can I get a clue?

But What Religion?

Page 20: Hey man, can I get a clue?

XML

Page 21: Hey man, can I get a clue?

VoiceXML and CCXML

Page 22: Hey man, can I get a clue?

Like Tribbles...

Page 23: Hey man, can I get a clue?

It has taken over the Enterprise...

Page 24: Hey man, can I get a clue?

But it’s kind of like working for “the man”

Page 25: Hey man, can I get a clue?

So... How about API’s...

Page 26: Hey man, can I get a clue?

A Favorite of Carriers

Page 27: Hey man, can I get a clue?

Java

Page 28: Hey man, can I get a clue?

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.

Page 29: Hey man, can I get a clue?

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

Page 30: Hey man, can I get a clue?

Many Others...

Page 31: Hey man, can I get a clue?

But are they Simple?

Page 32: Hey man, can I get a clue?

Are they cool?

Page 33: Hey man, can I get a clue?

Frack No!

Page 34: Hey man, can I get a clue?

So...

Page 35: Hey man, can I get a clue?

Tropo.com

Page 36: Hey man, can I get a clue?

answer();say("Hello, world!");

hangup();

Tropo is Simple

Page 37: Hey man, can I get a clue?

Ruby

Telephony in YOUR Language

Page 38: Hey man, can I get a clue?

Simple to Learn

•! answer

•! redirect

•! reject

•! call

•! transfer

•! hangup

•! ask

•! say

•! record

•! log

•! wait

•! default

Page 39: Hey man, can I get a clue?

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

Page 40: Hey man, can I get a clue?

What are the Ingredients?

Page 41: Hey man, can I get a clue?

SIP Servlets(JSR289)

SIPMethod

Page 42: Hey man, can I get a clue?

SIP Servlets(JSR289)

Media Control(JSR309)

SIPMethod Prophecy

Page 43: Hey man, can I get a clue?

SIP Servlets(JSR289)

Media Control(JSR309)

SIPMethod Prophecy

Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...

Page 44: Hey man, can I get a clue?

SIP Servlets(JSR289)

Media Control(JSR309)

SIPMethod Prophecy

Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...

Java

Page 45: Hey man, can I get a clue?

SIP Servlets(JSR289)

Media Control(JSR309)

SIPMethod Prophecy

Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...

Java

Page 46: Hey man, can I get a clue?

SIP Servlets(JSR289)

Media Control(JSR309)

SIPMethod Prophecy

Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...

Java

Page 47: Hey man, can I get a clue?

SIP Servlets(JSR289)

Media Control(JSR309)

SIPMethod Prophecy

Scripting(JSR223)Rhino, Jython, Jruby,Groovy, Quercus etc...

Applications

Java

Page 48: Hey man, can I get a clue?

How about some code?

Page 49: Hey man, can I get a clue?

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()

Page 50: Hey man, can I get a clue?

// -----------// 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

Page 51: Hey man, can I get a clue?

# 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

Page 52: Hey man, can I get a clue?

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

Page 53: Hey man, can I get a clue?

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

Page 54: Hey man, can I get a clue?

Easy as Pie!

Page 55: Hey man, can I get a clue?

But wait, there’s more!

Page 56: Hey man, can I get a clue?
Page 58: Hey man, can I get a clue?
Page 59: Hey man, can I get a clue?

So...

Page 60: Hey man, can I get a clue?

Wrapping Up

Page 61: Hey man, can I get a clue?

So why is this important?

Page 62: Hey man, can I get a clue?

Quick Poll: Are you a phone developer?

Page 63: Hey man, can I get a clue?

The Depressing Facts of Life

Phone Developers Web Developers

Page 64: Hey man, can I get a clue?

The Phone Developer is DEAD!

Page 65: Hey man, can I get a clue?

THAT MEANS YOU

Page 66: Hey man, can I get a clue?

Don’t create phone applications...

Page 67: Hey man, can I get a clue?

Instead create applications that use the phone...

Page 68: Hey man, can I get a clue?
Page 69: Hey man, can I get a clue?

Create Communication Applications

Page 70: Hey man, can I get a clue?

Why?

Page 71: Hey man, can I get a clue?

Kids don’t talk on the phonehttp://www.flickr.com/photos/tavallai/2084954580/

Page 72: Hey man, can I get a clue?

Communication World is Changing

Page 73: Hey man, can I get a clue?

http://www.flickr.com/photos/tavallai/2084954580/

Are you going to change with it?

http://www.flickr.com/photos/eleaf/2536358399/

Page 74: Hey man, can I get a clue?
Page 75: Hey man, can I get a clue?

Love me? Hate me? Say what you want about me...

Page 76: Hey man, can I get a clue?

Tropo.com Script Based Communcation Apps

XML Telephony

RJ [email protected]