Introduction to CCXML, Part I

Monday Oct 7th 2002 by Jonathan Eisenzopf
Share:

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.

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.

Overview

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.

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 said.
  • 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 attribute.

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 below.

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:

Conclusion

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 services.

Share:
Home
Mobile Site | Full Site
Copyright 2017 © QuinStreet Inc. All Rights Reserved