CCXML: A Standard for Managing Calls
Automated handling of telephone calls is a critical complement to the sophisticated voice dialogue systems being deployed in today’s call centers. From the caller’s perspective, the voice dialogue is the most visible part of the interaction, but many other important capabilities need to operate behind the scenes to make voice interaction between users and applications possible. For example, applications may need to answer incoming calls, make outbound calls, get data from back-end databases, transfer calls to agents, and end calls.
Traditionally, proprietary, platform-specific, and application-specific programs that interact with the telephony system and enterprise back-end systems have performed these functions. But while proprietary programs meet the requirements for automatically handling calls, they suffer from a number of problems:
- they are complex to write;
- they often require low-level knowledge of specific platforms that leaves the customer dependent on expensive training and support from vendors;
- they aren’t portable to other platforms;
- they don’t promote reuse of common functions across applications; and
- they are difficult to debug.
In addition, none of the existing proprietary approaches has a significant market share, which means that adopting a proprietary approach will essentially lock in an installation to a specific platform.
A Better Way
CCXML (Call Control eXtensible Markup Language) was designed to address these problems by providing an open standard for call control. CCXML makes it easier to develop telephony applications by providing a declarative, platform-independent XML markup language that describes the flow through a call as a sequence of states.
What can CCXML do? CCXML can:
- create outbound calls;
- transfer calls;
- route calls intelligently;
- conditionally accept calls (for example, based on caller ID, the number called, or the time of day);
- keep users on hold, or start an automated voice dialogue until an agent is available;
- manage multiparty conferences; and
- time calls so they don’t exceed a maximum length.
CCXML works by viewing a call as passing through a sequence of states. A CCXML script represents the states that track the progress of a call from beginning to end, moving from state to state depending on incoming information as well as its own logic. Incoming information relevant to a call control script could include an outbound call being answered, caller ID from an incoming call, or a transfer request from a user.
Concepts common to many programming languages, such as conditional branching, variable assignment, and events, are available in CCXML. For example, using caller ID, high-priority customers can be transferred to specific agents, or an outbound application could either play a recorded message or send a call to an agent depending on whether an answering machine was detected. Finally, CCXML promotes reuse with its ability to allow a CCXML session to consist of multiple CCXML documents.
The Voice Browser Working Group of the World Wide Web Consortium, the body that is also responsible for the VoiceXML standard, is currently standardizing CCXML.
VoiceXML and CCXML work closely together; CCXML controls telephony functions, and VoiceXML controls the voice interaction with the user. This is a good separation of functions because, among other reasons, voice interaction and call control functions require very different developer skills. A designer of call control applications has to understand telephony and call progress, while a voice interface designer has to understand callers and their needs. Separating VoiceXML from CCXML allows both types of developers to focus on the specific requirements of their tasks.
Although VoiceXML and CCXML work well together, they are independent in that neither requires the other. CCXML can perform call control functions even when voice dialogue is not involved.
Because CCXML is an XML-based language, CCXML developers can also take advantage of the many tools that are currently available for editing and handling XML documents. Finally, CCXML is very compatible with the Web and works well with server-side Web technologies.
You can find out more about CCXML by reading the specification at www.w3.org/TR/ccxml.
Deborah Dahl, Ph.D., is the principal at speech and language technology consulting firm Conversational Technologies and chair of the World Wide Web Consortium’s Multimodal Interaction Working Group. She can be reached at dahl@conversational-technologies.com.