CCXML – or Call Control XML – is the W3C standard markup language for controlling CCXML Reference and Tutorial; VoiceGenie’s CCXML Tag Reference. CCXML – or Call Control XML – is the W3C standard markup language for controlling Aspect also provides a complete CCXML reference guide and tutorials. For additional support telephone numbers, see the Avaya Web site: http://support. 2 Avaya CCXML User Guide. August
|Published (Last):||1 September 2004|
|PDF File Size:||6.96 Mb|
|ePub File Size:||9.21 Mb|
|Price:||Free* [*Free Regsitration Required]|
Please refer to the errata for this document, which may include some normative corrections. W3C liabilitytrademark and document use rules apply. Because of this there are many references to VoiceXML’s capabilities and limitations. However, it should be noted that the two languages are separate and are not required in an implementation of either language. This section describes the status of this document at the time of its publication. Tutoriall documents may supersede this document.
A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http: There were no changes since the Proposed Recommendation document.
Call Control eXtensible Markup Language
The W3C Membership and other interested parties are invited to review the document and send comments to the Working Group’s public mailing list www-voice w3. See W3C mailing list and archive usage guidelines. This document has been produced as part of the Voice Browser Activity. The authors of this document are participants in the Voice Browser Working Group.
During the Candidate Recommendation phase, four independently developed implementations were evaluated. The entrance criteria for the Proposed Recommendation phase requires a minimum of two independently developed interoperable implementations for each required feature, two or more implementations of optional features that would impact interoperability, and a minimum of one implementation for each optional feature that has no impact on interoperability.
These requirements were met. Comments received during the Candidate Recommendation period can be found in the Disposition of Comments. This document has been reviewed by W3C Members, by software developers, and by other W3C groups and interested parties, and is endorsed by the Director as a W3C Recommendation.
It is a stable document and may be used as reference material or cited from another document. W3C’s role in making the Recommendation is to draw attention to the specification and to promote its widespread deployment. This enhances the functionality and interoperability of the Web.
W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim s must disclose the information in accordance with section 6 of the W3C Patent Policy.
In this document, the key words “must”, “must not”, “required”, “shall”, “shall not”, “should”, “should not”, “recommended”, “may”, and “optional” are to be interpreted as described in [RFC] and indicate requirement levels for compliant CCXML implementations.
Voice Browser Call Control: CCXML Version
CCXML provides rutorial markup to describe telephony call control. CCXML can provide a complete telephony service application, comprised of Web server CGI compliant application logic, one or fcxml CCXML documents to declare and perform call control actions, and to control one or more dialog applications that perform user media interactions. 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.
Figure 1 shows the architecture of a telephony implementation consisting of four primary components:. The components as shown in the figure below represent logical functions, and are not meant to imply any particular architecture. It also can be used as a third-party call control manager in any telephony system. The following requirements are addressed by this specification:. CCXML may also receive events from Connection and Conference Objectsin the case of line signaling, line-status informational messages, or error and failure scenarios.
It can receive events from Voice Dialogswhich may be standardized events such as dialog.
Any other interaction takes place through the tutorlal mechanism. Telephone applications need to receive and process large numbers of events in real-time. These events arrive from outside the program itself – either the underlying telephony platform, or from other sources of events. References to threads are meant as logical threads and do not imply any specific platform implementation.
CCXML provides a powerful and flexible method of creating multi-party calls based on the following concepts:. While CCXML implementations are not necessarily intended for battery powered embedded devices, it is intended to be used in large, real-time telephony platforms managing thousands of lines. For example, a CCXML implementation, for optimization purposes, could translate and compile frequently used CCXML documents on their way from the document server to the CCXML execution environment in order to avoid multiplying interpretive overhead by the number of lines that execute the same document.
The emphasis xcxml efficiency in CCXML language is also shown by the avoidance of requirements which can only be implemented either by interpretation or by run-time evaluation. The choice of an implementation strategy is cczml to the CCXML implementer and CCXML language is aimed to allow a range of design choices in order to accommodate implementations on a wide variety of platforms.
However on a platform where the actions are optimized into a single ECMAScript execution block something like the following code would actually be executed instead:. Due to how ECMAScript var statements work, declarations are applied before assignments no matter where they are placed in the code. This script is actually allowed and the assignment to x will be completed without error. Due to this difference in behavior between line by line vs batch execution application developers SHOULD NOT depend on the ability to declare variables out of document order and SHOULD write code such that its behavior is the same whether executed line by line or in a batch.
An example of this would be:. If executed line by line ccxkl would end up executing every line in the script and declaring a transition scoped variable named id with a value of 2.
However, if the CCXML implementation were to optimize this into a single ecmascript chunk you may get something like the following scriptlet:. Due to the way ECMAScript treats var declarations the initial ID will evaluate as undefined as ECMAScript adds a implicit var declaration to the top of the script and changes the var to an assignment leaving you with something that is executed as if it was written like this:.
This causes a different flow of execution and could cause unexpected program behavior as id in the if statement will now be undefined instead of being equal to session. Application developers SHOULD consider this bad programing practice and avoid creating scenarios where applications create and depend on ambiguously scoped variables that use assignments inside conditional blocks with variable names that are already in use by parent scopes.
Any such code likely relies on unusual ordering of variable declarations and assignment statements tuyorial the use of confusing variable names and scopes; such code is discouraged due to its potential for producing unintended results.
Several examples titorial left-hand-side expressions are as follows left-hand-side expression in red:. For incoming calls, the selection of the initial URI and fetching parameters is platform-dependent, and MAY be based on information from the incoming call.
When a session is started due to an incoming call it has ownership of the new Connection that caused it to be created. In the case of an external session launch the session will not own any event endpoints. A CCXML application can determine the reason its session was started by evaluating the contents of the session.
When a CCXML session ends, all active connections, conferences and dialogs that are owned by that session are automatically terminated by the platform. The following diagrams illustrate tutprial session life-cycle of several different scenarios. These diagrams do not show all possible scenarios but rather show some of the most common ones that CCXML applications may encounter. In this example, the session is started due to an incoming call.
Voice Browser Call Control: CCXML Version 1.0
A connection is typically shorter than a session. A session does not end when a connection terminates. In addition to having multiple sequential connections, a session can have multiple concurrent connections. Implementations MAYas a platform-specific optimization, choose to deliver more than one inbound call to a single “master” session.
If a platform supports delivery of multiple inbound calls to a single session, the way this is configured is implementation specific. If at anytime a ccxml. This simple CCXML document shows an example of a “hello world” application that is started due to an incoming call where the application simply assigns a value to a variable, prints a message to the platform log and exits:.
This CCXML document shows an example of how to process a incoming call event and answer or reject the call based on the phone number of the calling party:. The application answers an incoming phone call and then connects it to a VoiceXML dialog that returns a value that is then logged to the platform:.
This is called document initialization. This can be achieved by declaring an xmlns attribute or an attribute with an ” xmlns ” prefix. Note that when the xmlns attribute is used alone, it sets the default namespace for the element on which it appears and for any child elements. It is an error to provide both name and http-equiv attributes. The http-equiv attribute has a special significance when documents are retrieved via HTTP.
A recommended set of generally applicable metadata properties e.
The first partition in document order with a cond that evaluates to true is selected. A partition MAY be empty.
Execution returns from the element immediately, and the CCXML application can continue on while the platform works to fetch the identified resource. When the fetch request has been tutorkal, an event is generated against the session that initiated the fetch.
If the requested content was fetched successfully, and in the case of CCXML content, was successfully parsed and validated, a fetch. If the requested content failed to be fetched, an error.
Note that even if content is successfully fetched, errors in processing fetched content for instance, a CCXML document with a syntax error may result in an error. The application may obtain the unique identifier for a fetch request by providing an ECMAScript left-hand-side expression in the fetchid attribute when the fetch is performed. The fetch identifier can also be obtained as a property of the fetch. Fetched content that could be referenced via a fetchid eg, a CCXML or ECMAScript Document that was fetched in processed mode has a lifetime that ttorial limited to that of the document in which it is fetched.
Note that this should not be taken to preclude platform-level optimizations or caching of resources that are fetched multiple times. All other content is only accessible via the content attribute of the fetch. If the application needs access to the content outside of the fetch.
However, it is wasteful of system resources to fetch resources that are not used. Platforms are responsible for clearing out unused fetch resources, and may impose limits on the resources that can be fetched by a single session.
Examples of these cdxml be dom or e4x mappings of raw XML content. If the fetched content referenced by the fetch identifier is not a CCXML document, or the fetch identifier is invalid and does not correspond to any fetch request, this also results in an error. Event sources associated with this session are inherited by the target document.
Execution of the current document terminates. The new CCXML session has no relation to its creator once spawned, and has a wholly separate lifetime and address space.
The exiting document will be identified on the exit event by uttorial session ID. The manner in which the message is displayed or logged is platform-dependent.