The W3C Voice Browser Working Group has released an updated working draft specification for Voice Browser Call Control: CCXML Version 1.0. The CCXML specification defines declarative markup designed "to provide telephony call control support for VoiceXML or other dialog systems. CCXML is an adjunct language intended to complement and integrate with a VoiceXML system. The document contains references to VoiceXML's capabilities and limitations, and provides details on how VoiceXML and CCXML can be integrated. However, the two languages are separate and neither is required for an implementation of the other. CCXML can be integrated with a traditional IVR system, and VoiceXML can interface with other call control systems." The changes in this third working draft are substantial, as identified in the separate changed marked 'diff' version and summarized in Appendix G. The 2003-06-12 release "includes major revisions to the call control and media models to better specify the behavior and includes full details on all call control objects and events; a number of attribute names were updated to make the specification more consistent."
Voice Browser Call Control: CCXML Version 1.0. Edited by RJ Auburn (Voxeo). W3C Working Draft 12-June-2003. Produced by members of the Voice Browser Working Group as part of the W3C Voice Browser Activity. Appendix C: CCXML DTD. Appendix D: CCXML Schema. Appendix E: VoiceXML Integration. Version URL: http://www.w3.org/TR/2003/WD-ccxml-20030612/. Latest version URL: http://www.w3.org/TR/ccxml/. Previous version URL: http://www.w3.org/TR/2002/WD-ccxml-20021011/. Also available as a non-normative changed marked version.
"CCXML originated from the desire to handle call control requirements that were beyond the scope of the original VoiceXML specification. It was generally agreed that an advanced dialog manager would provide:
- Support for multi-party conferencing, with advanced conference and audio control. A conferencing application is a multi-dialog manager and is dependent upon call control.
- The ability to give each active call leg its own dedicated VoiceXML interpreter. For example, in VoiceXML, the second leg of a transferred call lacks a VoiceXML interpreter of its own, limiting the scope of possible applications.
- Sophisticated multiple-call handling and control, including the ability to place outgoing calls.
- Handling for a richer class of asynchronous events. Advanced telephony operations involve substantial amounts of signals, status events, and message-passing. VoiceXML does not integrate asynchronous "external" events into its event-processing model.
- The ability to receive events and messages from external computational entities. Interacting with an outside call queue, or placing calls on behalf of a document server, means that VoiceXML must have additional external interfaces.
Initial work was directed at the addition of new tags to VoiceXML to support the capabilities implied by these requirements. However, repeated conflicts were encountered between the design goals for VoiceXML and the requirements.
Most of these conflicts came from trying to reconcile two different event models. Event generation and handling in VoiceXML are focused on specific user interface transactions. For example, within a given field, the filled, noinput, nomatch, and help events can be thrown and handled. However, events from telephony networks or external networked entities are not transactional in nature; they can occur at any time, regardless of the current state of VoiceXML interpretation. These events require immediate attention. VoiceXML's admirably simple single-threaded programming model would have to be abandoned, or event-servicing would have to be delayed until the VoiceXML document explicitly enabled it. Instead of making either of these poor design choices, a third alternative was selected. All call control functions were moved out of VoiceXML into an accompanying call control (CCXML) document. VoiceXML could then then focus on effective voice dialog management, while CCXML tackled the very different problems of call control described above.
CCXML and VoiceXML are not mutually dependent. An implementation of VoiceXML is not required to support CCXML. VoiceXML implementations may choose to support proprietary methods of call control, and can still be deemed compliant with the W3C VoiceXML Recommendation.
An implementation of CCXML is not required to support VoiceXML. CCXML implementations may choose not to support interactive dialogs at all, or may support dialog managers other than VoiceXML, and still be deemed compliant with the W3C CCXML Recommendation.
CCXML can provide a complete telephony service application, comprised of web server CGI-compliant application logic, one or more CCXML documents to declare and perform call control actions, and to control one or more dialog applications that perform user media interactions.
Since platforms implementing CCXML may choose to use one of many telephony call control definitions (JAIN Call Control, ECMA CSTA, S.100, etc.), the call control model in CCXML has been designed to be sufficiently abstract so that it can accommodate all major definitions. For relatively simple types of call control, this abstraction is straightforward. The philosophy in this regard has been to "make simple things simple to do.". Outdial, transfer (redirect), two-party bridging, and many forms of multi-party conferences fall within this classification..." [adapted from Section 2 of the third WD]
From the Voxeo Corporation CCXML FAQ Document
"The 'Call Control eXtensible Markup Language' is an XML based language that can control the setup, monitoring, and tear down of phone calls. CCXML allows the industry to leverage the strength of Web platforms and technologies to intelligently control calls on and off the telephone network. Additionally, CCXML will create a high-level industry standard for Call Control that can run over any telephony platform."
"CCXML adds robust Call Control support to VoiceXML. However CCXML could also be used with other dialog systems such as a traditional IVR (Interactive Voice Response) platforms created before VoiceXML was available."
"One critical thing to understand is that CCXML is not a media/dialog language like VoiceXML. It only provides support to move calls around and connect them to dialog resources. CCXML does not provide any dialog resources on its own. (Note: A dialog resource is anything that interacts with a caller via voice, such as a VoiceXML platform or even a second caller at another location.)"
[See the complete source document for context.]
- Voice Browser Call Control: CCXML Version 1.0. W3C Working Draft 12-June-2003.
- Diff marked version for CCXML Working Draft 3.
- CCXML FAQ Document and Executive Briefing. Provided by Voxeo Corporation.
- W3C Voice Browser Activity
- Mailing list archives for W3C list 'www-voice'
- See also: Voice Extensible Markup Language (VoiceXML) Version 2.0. W3C Candidate Recommendation 20-February-2003.
- "Voice Browser Call Control (CCXML)" - Main reference page.