Call Control with CCXML and VoiceObjects

July 17th, 2009 by Tobias Göbel

Can you do outbound dialing with VoiceObjects? Does VoiceObjects support call conferencing? How do I do call whispering using VoiceObjects? Questions of this kind reach us from time to time, and I have recently held a Developer Jam Session on the topic of Integrating Advanced Call Control in VoiceObjects Applications using CCXML to address some of these questions. For those of you who find this topic interesting but prefer reading over listening/watching, this is YOUR post.

It’s in fact interesting to see how W3C recommendations (or working drafts for that matter) slowly make their way into implementations within the industry. As is the case with CCXML; several vendors have recently announced support for this markup language, some have it in their portfolio for quite some time now. Vendors that support it include Avaya, Genesys, HP, Intervoice, Loquendo, and Nortel. Voxeo, with our VoiceXML & CCXML platform Prophecy, is at the forefront of CCXML development. Our CTO RJ Auburn acts as editor and chair of this markup standard that has been around since 2002.

So given that CCXML can be seen as an adopted standard, how does it all work? While I don’t intend to provide a full introduction (check out Voxeo’s CCXML developer guide with lots of tutorials and moderated forums instead, or read http://www.voxeo.com/library/ccxml.jsp to get an overview), here are some basic principles behind the language:

  • CCXML implements a state machine
  • CCXML is based on a flexible asynchronous event processing model, able to handle any kind of telephony and application events and perform actions upon them
  • CCXML extends VoiceXML with advanced call control functionality missing in VoiceXML (which essentially only offers blind or bridged transfers), while being independent of VoiceXML (can work together with any other voice markup)
  • CCXML integrates with VoiceXML by connecting callers with VoiceXML-powered applications as call legs if required

The following architecture picture shows how CCXML integrates with an XML-based telephony environment and how Voxeo products fit into the picture:

CCXML Architecture

CCXML Architecture (based on an image taken from http://www.w3.org/TR/ccxml/)

So basically Voxeo Prophecy acts both as the dialog interpreter (i.e. VoiceXML browser) and call control interpreter (i.e. CCXML browser), whereas Voxeo VoiceObjects takes the role of the dialog application server. CCXML documents are always in the lead in a telephony session and control how the call is being handled and whether/when it is or is not connected to VoiceXML dialogs. Thus, VoiceObjects dialogs are being initiated from within CCXML, via the VoiceXML browser. In fact, depending on the application, there could be several interactions between the CCXML interpreter and VoiceObjects Server within one call, as depicted in the following graph:

CCXML CallFlow Including VoiceObjects

The chain of interactions would look like this:

  1. A call comes into the telephony platform and launches a CCXML document associated with the called number (DNIS)
  2. The CCXML document handles all telephony events (connection.alerting, connection.connected, …) and might decide to launch a VoiceXML dialog
  3. If so, it instructs the VoiceXML browser to request a dialog from VoiceObjects Server
  4. VoiceObjects Server handles the dialog logic and sends VoiceXML pages while the voice browser requests them
  5. When the dialog logic comes to an end, VoiceObjects Server renders tags like <disconnect>, <transfer>, or <exit> to hand back control to the CCXML document which was on standby, listening for any new events coming in
  6. Steps 2-5 could be repeated, until the call session itself is finished (caller hangup, CCXML browser hangup)

Now that we know how it all works (in principle), what kind of applications can you build with this? Well, any that require advanced call control:

  • Outbound Calls: To initiate a call and start VoiceXML dialogs once a connection is established
  • Call Conferencing: To allow multiple participants to join a conference
  • Routing: To route calls to the next available agent
    • Find me/Follow me: To find a person at several possible end points (mobile/work/home)
  • Selective Call Answering: To decide whether or not to take a call based upon available caller information
  • Coaching: To allow a third party to connect to a call, but only have one of the participants hear what is said

Interested in learning more? Also how exactly the integration with VoiceObjects can look like? Well, in that case I would indeed point you again to the Developer Jam Session on that topic. Also, on our Developer Portal you will find a sample implementation of a personal assistant. You can download it and try it out using our free editions of Voxeo Prophecy and Voxeo VoiceObjects!

Oh, and if outbound IVR is of specific interest for you, please check out our website, which also has a link to a white paper on this topic: http://www.voxeo.com/outboundivr/

Please leave comments to this post if you have anything to share publicly on this topic. Thank you!

Tags: ,

2 Responses to “Call Control with CCXML and VoiceObjects”

  1. Barry Bayer Says:

    I’m a lawyer, not a programmer, with 10 days left on the 30 day return policy.
    I want —- need — some sort of voice command to dial the Pre while in a car.
    (I can’t believe that the Palm folks didn’t build in what I take to be well known
    technologoy to do something that dumb phones did 4 years ago, but that’s another
    story.

    I THINK (but am not certain) that your technology can be added to the Pre
    to do exactly what I need. Am I wrong? If so, is SOMEONE going to do
    that in the next few months? (Palm SHOULD do it, but I’d pay a reasonable
    fee to a 3rd party developer.)

    Thanks

    (Oh…some of the bells and whistles you mention in your post sound interesting, but
    I just cannot see being forced to open the Pre and fiddle with the dialer stuff at 60 mph
    if I need to call 911 or my office.

  2. Dan York Says:

    Barry,
    Thank you for leaving your comment. Not having any exposure to the Pre (I’m an iPhone user), I was not aware that it did not have voice-dialing. Yes, that does seem to be something I would have expected to be there.

    We provide technology platforms and development tools for people to create voice applications that are typically deployed in a hosted/cloud setup or within a company’s network. While we do have some partners who are developing embedded mobile apps that interact with our services, the apps themselves are being developed by those partners.

    Now, if your law office is looking for a voice application, anything from an IVR to a conferencing system to a “click-to-call” button on your website, we can definitely help you there.

    Best wishes in finding a voice dialing app for the Pre,
    Dan

Leave a Reply