1 / 55

Creating Communication 2.0 Applications

March 12th, 2008. eComm 2008. Creating Communication 2.0 Applications. RJ Auburn CTO rj@voxeo.com. Why Voxeo?. Telephony Sucks. There are a number of problems with Telephony today. Complex. Arcane. Proprietary. This is not how it should be. Simple. Ubiquitous. Open. What to do?.

Download Presentation

Creating Communication 2.0 Applications

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. March 12th, 2008 eComm 2008 Creating Communication 2.0 Applications RJ Auburn CTO rj@voxeo.com

  2. Why Voxeo?

  3. Telephony Sucks

  4. There are a number of problems with Telephony today...

  5. Complex

  6. Arcane

  7. Proprietary

  8. This is not how it should be...

  9. Simple

  10. Ubiquitous

  11. Open

  12. What to do?

  13. Leverage The Web Model

  14. Disaggregate The Components

  15. Utilize Standards

  16. What Does It Look Like?

  17. Application XML+HTTP Platform SIP Network

  18. Application XML+HTTP Platform SIP Network

  19. Application Creation

  20. VoiceXML • W3C standard to define speech dialogs • Defines prompts and grammars that together create a phone application • Thousands of developers • 30+ Open source projects

  21. CCXML • CCXML is the W3C standard for call control using XML • Sister standard to VoiceXML • Integrates with VoiceXML for dialog control • Provides a framework for issuing call control commands and handling call control events

  22. Voxeo’sSolution

  23. Evolution

  24. Prophecy

  25. Example Application

  26. Sample Application Overview • Caller dials in to the application • Caller is bridged to the subscriber • Results of the call attempt are posted to Twitter via their REST API

  27. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  28. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  29. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <?xml version="1.0" encoding="UTF-8"?> <ccxml version="1.0" xmlns="http://www.w3.org/2002/09/ccxml"> </ccxml>

  30. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  31. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <var name="state" expr="'init'"/><var name="incomingcall"/><var name="tURL" expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> <eventprocessor statevariable="state"></eventprocessor>

  32. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  33. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <transition event="connection.alerting" state="init"> <accept/></transition>

  34. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  35. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <transition event="connection.connected" state="init"> <assign name="state" expr="'calling'"/> <assign name="incomingcall" expr="event$.connectionid"/> <createcall dest="'tel:+18312392883'"/></transition>

  36. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  37. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <transition event="connection.connected" state="calling"> <assign name="state" expr="'connected'"/> <join id1="event$.connectionid" id2="incomingcall"/> <var name="status" expr="'RJ is on the phone'"/> <send targettype="'basichttp'" name="'update'" target="tURL" namelist="status"/></transition>

  38. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  39. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <transition event="connection.failed" state="calling"> <assign name="state" expr="'done'"/> <var name="status" expr="'RJ is not answering his phone'"/> <send targettype="'basichttp'" name="'update'" target="tURL" namelist="status"/></transition>

  40. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  41. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <transition event="connection.disconnected" state="connected"> <assign name="state" expr="'done'"/> <var name="status" expr="'RJ is off the phone'"/> <send targettype="'basichttp'" name="'update'" target="tURL" namelist="status"/></transition>

  42. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  43. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml> <transition event="send.successful" state="done"> <exit/></transition>

  44. Follow Me/Find Me + Twitter • <?xml version="1.0" encoding="UTF-8"?> • <ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0"> • <var name="state" expr="'init'"/> • <var name="incomingcall"/> • <var name="tURL" • expr="'http://zscgeek:password@twitter.com/statuses/update.xml'"/> • <eventprocessor statevariable="state"> • <transition event="connection.alerting" state="init"> • <accept/> • </transition> • <transition event="connection.connected" state="init"> • <assign name="state" expr="'calling'"/> • <assign name="incomingcall" expr="event$.connectionid"/> • <createcall dest="'tel:+18312392883'"/> • </transition> • <transition event="connection.connected" state="calling"> • <assign name="state" expr="'connected'"/> • <join id1="event$.connectionid" id2="incomingcall"/> • <var name="status" expr="'RJ is on the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.failed" state="calling"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is not answering his phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="connection.disconnected" state="connected"> • <assign name="state" expr="'done'"/> • <var name="status" expr="'RJ is off the phone'"/> • <send targettype="'basichttp'" name="'update'" • target="tURL" namelist="status"/> • </transition> • <transition event="send.successful" state="done"> • <exit/> • </transition> • </eventprocessor> • </ccxml>

  45. Who Cares?

  46. I Can Do That In Asterisk!

  47. Here is Why

  48. Web Developers

  49. They Understand XML

  50. Ideas We have Never Thought Of

More Related