VoiceIntroduction to CCXML, Part I

Introduction to CCXML, Part I

Developer.com content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

The Call Control eXtensible Markup Language provides the call
management, event processing and conferencing capabilities that
VoiceXML lacks. The first installment in this series will
provide an overview of the purpose, features and concepts of the
CCXML language.


VoiceXML is a language for creating and managing speech dialogs.
VoiceXML does not, however, provide call control functions such as
multi-party conferencing and outbound calling. This functionality
has been filled by vendors who provide proprietary extensions that
are not usually portable from one platform to another. The CCXML
specification was developed to add the call control features that
VoiceXML lacks and to standardize this functionality. It also
provides one of the critical “missing pieces” that skeptics have
cited as a barrier for VoiceXML to be more widely adopted by the
telephony marketplace. The Voice Browser working group decided to
develop a separate specification instead of adding new elements to
VoiceXML because of the fact that call control functions required a
different programming model.

Voxeo and Telera were two companies that were instrumental in the
development of the specification because of their experience in
creating XML-based call control languages. Voxeo developed the
CallXML language, and Telera developed the TXML language, both of which
provide call control features.


The following list represents the features that CCXML provides
(and that VoiceXML lacks):

  • Routing: Routes calls to the next available line
    in a group; or find me/follow me capability to track a person
    down at multiple possible locations.
  • Bridging: Connects a call between two call legs.
  • Outbound Calling: Initiates a call and starts one
    or more VoiceXML dialogs once a connection is established.
  • Selective Call Answering: Decides whether or not to
    answer a call based upon caller information.
  • Conferencing: Allows multiple participants to join
    a phone conference.
  • Coaching: Allows a third party to connect to a
    call, but only have one of the participants hear what is
  • Dialog Execution: New instances of VoiceXML
    interpreters can be created and destroyed at will.

The CCXML Event Model

CCXML is an event based model. If you’ve ever programmed a finite
state engine, a GUI application, or a multi-threaded program that
responds to multiple asynchronous events, you will be able to
understand the CCXML program model. If you haven’t, a discussion of
the event model is in order. In either case, it’s good to understand
how CCXML works.

A CCXML interpreter is initiated by a call through a phone number
that has been associated to a specific CCXML document. CCXML
applications can also be executed directly by a CCXML interpreter
for batch execution for the purpose of placing outbound calls.

CCXML documents contain one or more event handlers (<eventhandler>).
Each event handler defines one or more triggers (<transition>
elements) that will execute when an event matches the event

CCXML Actions

Event triggers, or <transition> elements can perform
the following actions:

  • Accept or reject a call
  • Create a new call
  • Create or destroy a conference
  • Connect or disconnect two call legs
  • Disconnect calls
  • Start a VoiceXML Interpreter

Built-in Event Classes

You can create and handle your own events in addition to using
the built-in classes that define common telephony events.

The CCXML specification defines three classes of built-in events
in its object model:

  • Call Class
  • Connection Class
  • Provider Class
  • Standard Class

Each class event defines the state that becomes active when the
event is triggered. These state events are listed in the tables

The CCXML built-in classes are based on the Java Telephony API
event models. You might want to refer to the following JTAPI
classes for more information:


As this introduction shows, CCXML provides a wealth of powerful
call control capabilities that VoiceXML has been lacking. This concludes our introduction to CCXML. In Part II, we will learn more about the specifics of the CCXML language. 

About Jonathan Eisenzopf

Jonathan is a member of the Ferrum Group, LLC  which specializes in Voice Web consulting and training. He
has also written articles for other online and print publications
including WebReference.com
and WDVL.com. Feel free to send an
email to eisen@ferrumgroup.com
regarding questions or comments about the VoiceXML Strategy series,
or for more information about training and consulting

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Latest Posts

Related Stories