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