Saturday, May 26, 2007

What can the VoipCenter SIP App Server be used to deliver?

CCXML has been used by Voxeo's customers to create any call control application imaginable, including: Back to Back SIP User Agents (B2BUA), SIP redirect servers, SIP load balancers, Virtual or "hosted" IP-PBX and call-center / ACD solutions, click-to-dial SIP call launchers, follow-me-find me applications, and more.

When combined with our VoipCenter SIP Mediaserver, our customers have also used CCXML to deliver speech driven conferencing, call recording platforms, emegency notification / audio broadcast services, auto-attendant applications, telephone surveys, unified messaging platforms, bill payment solutions, voice broadcasting services, emergency notification services, and general speech or touch-tone driven IVR.

What is CCXML?

CCXML is the call control application standard from the World Wide Web Consortium (W3C), the same standards body that delivered HTTP and HTML -- arguably the two most successful applicaton development standards ever created. CCXML gives VOIP developers total control over how phone calls are placed, answered, transfered, conferenced, routed, and more. CCXML works hand-in-hand with any web application server or platform to enable dynamic, intelligent control over all VOIP calls.

VoipCenter SIP Application Server Software

The VoipCenter SIP Application Server software is built on Voxeos proven Call Control XML (CCXML) engine and has routed over one billion calls since its first production deployment in early 2002. CCXML lets any company create intelligent, dynamic SIP applications that can screen, route, transfer, and initiate SIP VOIP calls - including SIP redirect, proxy, and Back-to-Back User Agent (B2BUA) applications. The VoipCenter SIP Application Server also supports least-cost and multi-network call routing with the ENUM route directory standard.

Performance Evaluation of an XML-Based Conference Control Protocol for Centralized VoIP Conference

For communication between heterogeneous conference systems, it is important to build a conference control protocol independent from signaling protocols. We simulate an XML-based conference control that is under consideration as a standard mechanism. We describe the framework and operations for easy implementation in heterogeneous conference systems. The simulation results show that the proposed control protocol provides a consistent service for an increasing number of conferences and participants in small to mid-size centralized conferencing

Microsoft partners with VoIP suppliers

15 phone suppliers support Microsoft software
Nancy Gohring

Microsoft is launching a qualification programme for phones that are compatible with its unified communications products.

On Monday, Microsoft will show off 15 phones made by a variety of vendors including Samsung, LG-Nortel, NEC, Plantronics, Asus, GN, Polycon, Tatung and Vitelix that will carry a sticker alerting customers that they are certified for use with Microsoft Office Communications Server 2007 and Microsoft Office Communicator 2007.

The Microsoft communications software is available to users that are part of a public beta programme. Combined with other Microsoft programmes, they unify email, instant messaging and video conferencing functions so that users can do things like click on an email message to make a VoIP (voice over IP) call to its sender. The software also supports standard desk phone features.

Microsoft designed the software to be compatible with phones already on the market. The new qualification programme is meant to assure buyers that devices will work out of the box with Microsoft's unified communications products.

In order to qualify for the certification, handsets must include wideband audio support, comply with a wide range of VoIP codecs and include specific user interface elements, said Eric Swift, senior director of unified communications product management for Microsoft.

Some of the new phones connect directly to a USB (Universal Serial Bus) port so that mobile workers can bring the phone with them and use it along with their laptop to access features typically only support on desk phones, like call forwarding and conferencing.

Other new phones include Bluetooth and video capabilities.

"We're looking to ignite partner innovation to bring software economics to what has been proprietary," said Swift. Microsoft hopes that the communications software and the qualification program will make it easier for hardware developers to create innovative new phone products in a phone industry that he describes as remaining stagnant for many years.

Microsoft's Office Communications Server competes with VoIP products from networking giants like Cisco and Avaya. Microsoft hopes to establish an edge against them by integrating its server with widely used products such as Exchange 2007 and enabling unified services.

Microsoft planned to make the announcement about the new phones and the qualification programme today at WinHEC (Windows Hardware Engineering Conference).

Monday, May 21, 2007

VIDEO CONFERENCING

Video conferencing is a powerful communications tool in the modern business world. The ability to share important business discussions with body language and facial expressions delivers enormous benefits compared to any other conferencing media. In many ways, video conferencing has truly become “the next-best thing to being there.”

Many Fortune 500 companies are frequent users of video conferencing solutions based on Video MCU (Multimedia Conferencing Unit) technology along with ISDN-based networks and video terminals. However, the expense of these systems often limits the deployment of conferencing technology to room-based systems in each corporate location. Video MCU products are typically tight, proprietary integrations of a conferencing application and video processing hardware. Video MCU solutions limit third-party feature enhancements, and also limit the reuse of the video processing resources with other applications. The result is a relatively expensive single-service solution with limited flexibility and scalability.

RadiSys Convedia Media Servers are bringing video application development into the Internet era. Convedia Media Servers are purpose-built to economically deliver the DSP-intensive video media processing capabilities essential in next-generation IP video conferencing solutions. Service providers and application developers, using familiar Internet technologies such as SIP and XML scripts, can now develop video conferencing applications to control Convedia’s advanced video bridging, streaming, and transcoding features, including multi-image display options and continuous presence. This “best-of-breed” approach not only reduces the overall costs for a video conferencing solution, but also facilitates the reuse of Convedia’s media processing capabilities across any IP-based audio or video telephony application.
Video codecs supported: H.263, MPEG-4*
Video bridging, switching, and mixing
Video conference recording and playback
Video transcoding and rate matching*
Advanced continuous presence*
External video media storage
Open standards-based control interface based on SIP and MSML/MOML facilitates integration with videomail application servers
Software-only upgrade to existing RadiSys Convedia Media Server platforms
Interoperability with existing ISDN-based terminals or emerging 3G-H324M mobile video terminals can be achieved through appropriate video gateway devices. When deployed with any QoS-enabled IP network (such as an IP VPN or an MPLS backbone network), video conferencing quality is comparable to existing ISDN-based solutions, at a fraction of the initial capital and ongoing operational expense. The result is an improved ROI, which will drive the economic migration and service benefits of video conferencing solutions out of the conference rooms and towards desktops and 3G mobile phones.

New XML Interface for Web Conferencing Development

WiredRed Software says that they are now offering an XML-based web services software interface for its e/pop Web Conferencing software. e/pop Web Conferencing offers features that include multi-party audio and synchronous video conferencing, remote control, plus desktop, application/document sharing and dynamic PowerPoint presentation sharing.

The interface will allow developers to build web conferencing solutions and integrate this functionality into a variety of applications such as workflow, document and content management, customer-facing CRM solutions, web portals, and ASP offerings.

The ability to integrate web conferencing and communications into traditional business applications and ASP offerings built on the .NET, XML and web services architecture enable organizations to eliminate the cost of expensive service-based web conferencing offerings while leveraging existing network investments.

NetSalon Software Development Corporation, a provider of software applications for the direct sales industry, chose WiredRed's e/pop Web Conferencing SDK to add web conferencing, desktop sharing with remote control, and multi-party video conferencing to its contact management and sales automation services.

The e/pop Web Conferencing SDK allows developers to build a scalable enterprise product with industry standard security. The resulting conferencing app will let users control video and audio settings and includes full-screen video with 640 x 480 resolution. In addition, conference hosts can change all of the video properties, including screen size and quality either conference-wide or on an individual viewing basis.

e/pop Web Conferencing is based on the XML standard to provide RPC remote procedure calls from virtually any development environment or platform. Its WSDL-compatible interface supports most development platforms, including C++, C#, Java, and also many platforms, such as Windows, Linux, Solaris and Unix.

e/pop Web Conferencing is compatible with standard audio-visual peripherals including microphones, headsets and USB web cameras. It also supports industry standard algorithms for both audio and video codecs. This ensures that the web conferencing platform is both cost-effective and reliable.

Supported video standards include H263, H264+ and MPEG4 and audio codes G7.x, PCM, ADPCM, VCELP and LPC. The e/pop Web Conferencing API provides support for the highest security standards for encryption and authentication. Security options include: SSL/TLS, RC4, DES, 3DES, AES and RSA.

XML Integration in ADO.NET

The objective of this session is to introduce developers to leveraging the XML features and support in ADO.NET.

These are some of the key topics that will be covered in this presentation:
Accessing the output of executing ADO.NET commands as XML streams
Persisting ADO.NET datasets as XML
Using XML data to populate ADO.NET datasets
Using the Microsoft .NET Framework XmlDataDocument class to
manipulate the data in an ADO.NET dataset using XML
DOM properties and methods
Synchronizing an XmlDataDocument object with an ADO.NET dataset
Practical applications of XML features implemented in ADO.NET
The code samples presented in the slides of this presentation will be written using Microsoft Visual Basic .NET.

Presentation to be given by:
Karthik Ravindran: Karthik has been with Microsoft for more than two years. He is a Developer Support Professional in the XML Web Database team, and is the PSS MSXML Beta Product Lead. He holds a master's degree in Information Technology, and the MCSD & MCP+SB (Site Builder) certifications.
Karthikeyan Ponnusamy: Karthi has been with Microsoft for two years. He is a Developer Support Professional in the XML Web database team, and is currently the PSS Web Database Content Lead. He holds a master's degree in Engineering, and MCSD certification.

Friday, May 18, 2007

Data, text and structure mine XML and relational data with XML Miner

XML Miner is a system and class library for mining data and text expressed in XML, extracting knowledge and re-using that knowledge in products and applications in the form of fuzzy logic expert system rules. XML Miner can also be used as a full featured, low cost Business Rules system.
  • Use it to predict numeric values, categorise and classify data, infer the relevance and topics in text, and to mine the structure of XML documents.
  • XML data is everywhere, can be easily generated from any data source, but can be unstructured and sparse. XML miner is the first data mining tool to mine any data that can be expressed in XML.
  • XML Miner is configured via XML, reads XML, and creates results in XML using our Metarule schema.
  • XML Miner performs both Supervised learning of numeric, categorical, structural or textual values to a given numeric or categorical output and Association learning, where a data set is searched for all useful relationships between data or structural values.
  • You can convert Metarule to easily understood English language if...then rules using an XSL transform we supply, so you can see what's been discovered.
  • You can apply Metarule rules to new data, either supplied directly or embedded in an XML document and have the results available for use in your programs or embedded into a copy of the source XML.
  • XML Miner is standards-based and compatible with other standards-based tools.
  • XML Miner comes with development tools easily used with Visual Studio .NetTM or any JavaTM development environment
  • XML Miner integrates text mining seamlessly so that blocks of embedded text can be handled at the same time as numeric and categorical data.
  • XML Miner is implemented as .Net and Java class libraries. You can create products for any platform

XML Miner is a completely new development in data mining systems. Although it can perform the same kind of processing as other data mining systems, it is the first and only product that can also mine semi-structured data sources such as XML. It unifies into a single system a variety of different functions:

First of all, it data, text and structure mines semi-structured data expressed in XML, all at the same time.

You can specify nodes in a document for text mining, nodes for conventional numeric data mining, and structural elements - and then mine them all at once so that the resulting model combines knowledge found in all those diferent ways.
Secondly, XML Miner describes the result of the data mining, the model of what it has found, as fuzzy logic if..then rules using our language Metarule.
Using our editor or a simple transform we supply these can be displayed and edited as English language rules - so that the relationships discovered can be clearly understood.
Thirdly, we supply a run-time processor as part of Xml Miner that you can use to evaluate new data, whether supplied in XML, or programmatically, and which you can build in to your applications.
The metarule language, as well as supporting the output of the data and text mining algorithms, has full support for fuzzy logic inference, fuzzy arithmetic, algebraic functions and text handling functions. With the editor and the runtime processor it makes a fully functioning, emeddable business rules system.
Fourthly, the rule sets, whether created by the user or by Xml Miner, can be tested for coverage by our consistency checker called Lacuna.

A report is generated detailing any lacunae, i.e. any combinations of input values that result in the rule set not generating an output value, so that the users can be sure that the rule set covers all the circumstances that can arise.
Finally, we supply an integrated development environment that permits you to do all the above via a simple user interface. You can display source XML, locate via XPath expressions the data nodes you want to mine, train the sytem to create rule sets, test the rule sets on your own data, create your own rule sets, and load and store rule sets and data files.

The same IDE can be used to run demo examples, process data remotely on our web service, or process data locally. You can choose the level of performance you want and purchase the appropriate license.

XML-RPC For C and C++

XML-RPC is a quick-and-easy way to make procedure calls over the Internet. It converts the procedure call into XML document, sends it to a remote server using HTTP, and gets back the response as XML.

This library provides a modular implementation of XML-RPC for C and C++.

XML-RPC For C and C++ is designed for Unix and is most tested on unix. As far as we know, it works on any reasonably standard unix.

There is also lots of code to make it work on Windows, but the fact is that it probably won't work out-of-the-box on your Windows system. Here is the Windows story.

[XML-RPC protocol ]

There is a Perl module to interface to XML-RPC for C and C++. Look in CPAN for RPC::Xmlrpc_c.

For information on using XML-RPC with other languages, see the XML-RPC Web site and the Linux XML-RPC Howto.

XML in C

XML is a base-language for expressing arbitrary structured data in text form. It consists of several modules: core syntax, meta-syntax, linking, style-bindings, and maybe more. Of these only the core syntax is common to all XML applications. Applications can choose to omit the other modules if they don't need them.

This text describes one possible core syntax, using flex/bison specifications. The most important additions relative to the XML-lang draft of 30 June 1997 include: automatically ignored newlines, attribute defaults, and boolean attributes.

Mining association rules from XML data using XQuery

In recent years XML has became very popular for representing semistructured data and a standard for data exchange over the web. Mining XML data from the web is becoming increasingly important. Several encouraging attempts at developing methods for mining XML data have been proposed. However, efficiency and simplicity are still a barrier for further development. Normally, pre-processing or post-processing are required for mining XML data, such as transforming the data from XML format to relational format. In this paper, we show that extracting association rules from XML documents without any pre-processing or post-processing using XQuery is possible and analyze the XQuery implementation of the well-known Apriori algorithm. In addition, we suggest features that need to be added into XQuery in order to make the implementation of the Apriori algorithm more efficient.



http://portal.acm.org/citation.cfm?id=976466

XML: Designing XML Internet Applications

Designing XML Internet ApplicationsAuthors: Michael Leventhal, David Lewis, and Matthew Fuchs
--------------------------------------------------------------------------------
Designing XML Internet Applications. By Michael Leventhal, David Lewis, and Matthew Fuchs; with contributions from Stuart Culshaw and Gene Kan. The Charles F. Goldfarb Series on Open Information Management. [Subseries:] The Definitive XML Series from Charles F. Goldfarb. Upper Saddle River, NJ: Prentice Hall PTR, [May] 1998. Extent: xxxii + 582 pages, CD-ROM. ISBN: 0-13-616822-1. Price: $44.95 U.S./$63.00 Canada. See also: the main bibliography entry and the Prentice Hall SGML Series Page.
--------------------------------------------------------------------------------
Volume Description[Provided by the authors.]
Designing XML Internet Applications is divided into five parts.
In the first part we will introduce you to the XML universe. Here you will find a discussion of the role of XML in the internet and a quick-start on the XML recommendation and XML tools. We don't assume prior knowledge of either XML or SGML but our task here is not to provide an extended tutorial or reference on the language syntax. What we do do is develop the perspective of the XML internet application designer and provide any background that is needed to comprehend the subsequent chapters.
The next three parts consist of a series of projects using XML in actual internet applications. Working through the projects the reader will gain concrete experience in the design of XML applications, DTDs, and programming. We also delve into standards related to XML and the internet wherever relevant.
The first project spans five chapters as the construction of several types of components is involved including a bulletin board, forms processing tools, a search engine, and transformation filters.
Most of the work is done in Perl and the approach is less rigorous than that used in subsequent projects. Our intention here is to introduce XML programming in the most simple and "exposed" form possible.
We have chosen to use Perl in this first part for various reasons. It is the closest thing we know of to a lingua franca for internet programmers, it is extremely compact allowing us to construct complete examples in relatively few lines of code, and, most significantly, Perl is the most versatile XML scripting language.
The second project implements SGML/XML email and digs into the topics of entity management, catalogs, MIME, and full- scale SGML/XML parsing. Code is presented in Perl and C++.
Lest the reader think we are Perl bigots the third project plunges us into Java and XML, building an application based on the Document Object Model and making use of a Java XML parser API. Java is the language in which most of the new XML internet infrastructure is being built.
The fifth and final section of the book takes a rigorous, formal look at the role of XML in software architectures and agents based on the paradigm of negotiation.
Full source code for all the projects has been included on the CD-OM as have all the public domain tools used in the book.

Thursday, May 3, 2007

Accessing VoIP Destinations

Accessing VoIP Destinations

As the proliferation of VoIP phones has skyrocketed, there is ample reason to consider the market for outbound and inbound VoIP access when designing IVR applications. From the start, Voxeo has been ready. Herein, we will walk you through the process for dialing to and from a VoIP phone to access your XML applications, and detail the offerings that have been tested to work with the Voxeo platform.

Bear in mind, there are some rather important caveats to using the Voxeo SIP services that you should be aware of before you begin.

  • All Voxeo platforms, (Motorola Voicexml2.1, CCXML, Callxml), support the SIP protocol for bridged transfers
  • Token-triggered outbound calls via HTTP are enabled for SIP calls.
  • Any 'true' SIP phone can dial the Voxeo network.
  • The Voxeo outbound dialing feature is not enabled for all SIP phones/providers.


Softphones

Voxeo has found that the easiest to use softphone on the market is the Pulver Communicator. The Communicator's setup and configuration is much less cantankerous than other free softphones, and its integration with instant messenging clients, along with a full arsenal of other features, (video, multiparty conferencing, and phone number blacklisting, to name a few) makes the Pulver Communicator a natural choice. Voxeo has partnered with Free World Dialup, the network residing beneath the Pulver Communicator, allowing for easy application access from anywhere on the globe


Inbound VoIP Dialing

Each application provisioned through the Evolution Site site can be SIP-enabled, by clicking on the application detail screen, and selecting "Add 800+PIN/VoIP Number". This will bring up a new subsection to the application detail titled "calling from VoIP", where a new number will be added that looks something like this:

**00001111222222


As easy as that, you can plug this destination number into yourPulver Communicator softphone to ring the voxeo application. This start sequence is specific to the Pulver Communicator/FWD. However, any SIP softphone can call Voxeo development applications by dialing:


(application PIN)@sip.voxeo.net


Obviously, you will want to ensurethat the proper firewall rules are in place for these calls to function correctly.


Outbound VoIP Dialing

When making an outbound PSTN call, either HTTP token based, or via a 'transfer' or 'call' element, the default syntax assumes a PSTN bridged transfer.However, when placing a SIP call, we need to change our syntax appropriately, and add a 'sip' prefix to the string:

CallXML

PSTN:
SIP: sip:
**00001111222222@fwd.voxeo.net"/>

VoiceXML

PSTN:
SIP: sip:
**00001111222222@fwd.voxeo.net">

CCXML

PSTN:
SIP: sip:
**00001111222222@fwd.voxeo.net'" name="line_1"/>


Predictably enough, this applies to token-based calls as well, regardless of the platform:

http://session.voxeo.net/VoiceXML.start?
numbertodial=sip:**00001111222222@fwd.voxeo.net&
tokenid=yourTokenIDhere




As this offering is still relatively new, Voxeo has not tested all services and providers with our VoIP offering. As such, results may vary upon your initial efforts to place an outbound call to your SIP phone from a Voxeo application. However, if you do encounter problems with a particular service, just let us know! If we can, we will help out where possible.

We can say for certain that most of the services that work with Free World Dialup, (X-10 softphone,and the Pulver Communicator), work smashingly with the Voxeo platforms, and shouldn't encounter any errors. If you are calling a non-Pulver softphone/network, then you will likely need to change the prefix::

Using the "sip:any-fwd-number@fwd.voxeo.net" works just dandy to connect to the FWD network. Furthermore, FWD has a Vonage interconnect, as well as many more using a ** nomenclature. Just as **869 will get you from FWD to Voxeo, **2431+any-vonage-number will get you to Vonage, **8981+any-packet8-number will get you to Packet8, etc. If you are using another provider, you would do well to check out the listing of these interconnects to see what prefix you will need.


Local International Numbers

In addition to providing free softphone access for our developers, voxeo has recently unvelied a new offering that is bound to prove useful to our Community Members. Thats right, voxeo now offers local access numbers to a broader spectrum of players in the worldwide market. This means that instead of dialing an 800+PIN code to access your applications, you can dial a free *local* number to access our application PIN system!

Voxeo currently has local access numbers deployed on a trial basis for the following markets for our 800+PIN system:


Local Access Number Locale
+44-20-7043 7144 London, UK
+34-93-2395107 Barcelona, Spain
+39-06-43408608 Roma, Italy
+972-2-649 9751 Jerusalem, Israel
+372-6-976953 Tallinn, Estonia
+55-21-3523 4238 Rio de Janeiro, Brazil
+1-617-507 7122 Boston, USA


Throughout the rest of the year, we will be adding additional direct-dial numbers for different locales available on the system, so remember: whichever locales receive the most requests will be first in line; make your voice heard!


VOIP: What is CCXML?

What is CCXML?

CCXML - or Call Control XML - is the W3C standard markup language for controlling how phone calls are placed, answered, transfered, conferenced, and more. CCXML works hand-in-hand with VoiceXML to provide a 100% standards and XML based solution for any telephony application.

Voxeo supports CCXML in all of our VoiceCenter and VoipCenter products. Voxeo also sells an OEM C++ source code CCXML engine. Our CCXML products have routed over 1 billion calls since commercial introduction in 2002.

Below you will find a great introduction to CCXML by RJ Auburn, Voxeo's CTO - who is also the editor and chair of the CCXML standard. In addition, you'll find a CCXML executive briefing that details the benefits of CCXML. Finally, you can review Voxeo's complete CCXML reference guide and tutorials here.



Introduction to CCXML

RJ Auburn
Chief Technology Officer, Voxeo Corporation
Editor and Chair, W3C CCXML working group

As editor of the new CCXML specification I am proud to report that the W3C has just released the first working draft of CCXML, a language to provide Call Control support for telephone applications.


What is Call Control?

Newton's Telecom Dictionary, 16th edition, defines Call Control as "the term used by the telephone industry to describe setting up, monitoring, and tearing down telephone calls". Fundamentally, Call Control is session control for telephone calls.


What is CCXML?

Traditionally, Call Control has required interaction with and understanding of telephony API's which often change from one platform to another.

CCXML is the "Call Control eXtensible Markup Language". It 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.


Why not build Call Control into VoiceXML?

VoiceXML was never designed to support advanced Call Control features - it was designed to be a dialog control language and it does that quite well. While VoiceXML does support basic Call Control features via the tag, those features are in fact too basic for many telephony applications. Because of this limitation, vendors looked at adding Call Control to VoiceXML using several different approaches. Some companies added robust Call Control support by extending VoiceXML while others created their own Call Control languages such as CallXML from Voxeo. While these solutions provided enhanced Call Control support they were incompatible with each other and did not address all of the Call Control scenarios reviewed by the W3C.

VoiceXML controls the presentation of media inside of calls. It uses a model based on forms and transactions that occur in a linear fashion - a model that works very well for user driven voice interfaces. Call Control uses a model based on events and commands that can occur at any time. The fundamental differences in these models made it very difficult - if not impossible - to deliver robust Call Control inside of VoiceXML itself.

Additionally, many W3C members and telephone industry leaders wanted a language that could be used outside of VoiceXML itself. While only some phone calls require automated voice interaction, every phone call requires Call Control. As a result, CCXML could end up being used and supported by everything from PBX's to the telephone switches that run the phone network itself. Many of these telephony platforms have no need or support for the things VoiceXML itself can do.


What does CCXML allow you to do?

There are a number of features that VoiceXML currently can't supply that CCXML will:

  • Support for multi-party conferencing, plus more advanced conference and audio control. Any telephone conferencing application requires such features.

  • The ability to give each active line in a voice application its own dedicated VoiceXML interpreter. Currently, many VoiceXML platforms initiate a second call or "call leg" to transfer a call from an automated VoiceXML platform to another telephone user. The second leg of a transferred call on these platforms lacks a VoiceXML interpreter of its own, limiting the scope of possible applications that can occur on that second leg.

  • Sophisticated multiple-call handling and control, including the ability to place outgoing calls at any time, initiated outside of the VoiceXML platform.

  • Handling for richer and more asynchronous events. Advanced telephony operations involve substantial signaling, status events, and message-passing. VoiceXML does not currently have a way to integrate these asynchronous "external" events into its event-processing model.

  • An ability to receive events and messages from systems outside of the CCXML or VoiceXML platform. Interaction with an outside call center platform, calls started asynchronously from the VoiceXML platform, and communication between multiple "clustered" VoiceXML or CCXML platforms all require event interaction from one platform to another.
CCXML allows developers to write advanced applications that require these features. Examples of such applications include
  • "Follow me, Find me" applications that find the person you are trying to call by dialing their cell phone, home phone, and office phone in parallel.

  • Call center applications that intelligently gather information from the caller and then pass that information on to the call center agent.

The W3C Voice Browser Working Group decided to tackle Call Control and came up with a set of comprehensive requirements that address the Call Control needs of almost all voice applications. After reviewing those requirements several proposals were submitted. CCXML is the result of those proposals.


What does CCXML bring to VoiceXML?

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


What does CCXML look like?

Let's create a CCXML application. The following example was written on the Voxeo CCXML platform implementation. You can access Voxeo CCXML platform for free by signing up at http://community.voxeo.com.

The First Step

Lets start with the equivalent of a hello world application that conditionally answers the phone based on your caller id, plays a VoiceXML dialog and then hangs up. Being able to conditionally answer a call is one of the new features that CCXML brings to VoiceXML applications.

To start off we create a XML tag and a tag for the document. These are required in all CCXML documents.






Event Handlers

CCXML is based on a state machine model.

In general, a state machine is any program that stores the status of something at a given time and can operate on input (ie: telephony events) to change the state of the "machine" and can optionally cause an action to occur. State machines are used to develop and describe specific device or program interactions.

To summarize, a state machine can be described as:

  • An initial state or record
  • A set of possible input events
  • A set of new states that may result from the input
  • A set of possible actions or output events that result from a new state

In their book Real-time Object-oriented Modeling, Bran Selic & Garth Gullekson view a state machine as:

  • A set of states
  • A description of the initial state
  • A set of input events
  • A set of output events
  • A function that maps states and input to output
  • A function that maps states and inputs to states called a state "transition"

There are a number of ways to represent state machines, from simple tables, to C switch and case statements, to graphical design tools. CCXML uses XML tags to represent the state machine which will control one or more telephone calls.

The CCXML tag contains all the event handlers, or "transitions" for our call-control application. In CCXML you write an event handler for your application and then the handlers transition tags will receive all the matching events that occur during a call.


















We Are Now Connected

Next we add a tag for the call that we just answered. We are looking for the "connection.CONNECTION_CONNECTED" event. This event will only come into the CCXML platform once the call has been connected.






















Running a Dialog

Let's start a VoiceXML dialog script from the connected call event handler on the call we are connected to. We do this with the tag and by specifying the URL source of the VoiceXML document we want to run. Once we do this the CCXML platform will connect the call to a VoiceXML resource and play the script to the caller.
























Here is the content of hello.vxml:


1.0//EN' 'http://voicexml.nuance.com/dtd/nuancevoicexml-1-2.dtd' >



Hello World.






Ending a Dialog

We now add the tag to catch the event that indicates the VoiceXML dialog has ended. We do this by catching the "dialog.exit" event.


























Disconnecting

Next we add the tag to the dialog exit handler to disconnect the caller from the CCXML platform. We will also write to the log using Voxeo's tag.





























Ending the Call

We are almost done with our first CCXML script. We only need to add some clean up code to exit the CCXML interrupter. We do this by adding a tag to catch the "call.CALL_INVALID" event:

                           































The End Is Nigh

Finally we add a handler for the call_invalid event that occurs when a call ends, including an tag to leave the CCXML platform:

































Congratulations, you have now written your very first CCXML application! If you would like to learn more about CCXML there are a number of tutorials that will help get you up to speed on of CCXML that you can access at http://community.voxeo.com



CCXML Executive Briefing

Companies are recognizing the important role that advanced call control functionality plays in effectively communicating with customers, employees and partners. The challenge is finding a cost-effective method that leverages existing Web and data systems investments to delight customers and deliver significant returns. Using a band-aid approach to upgrade older generation, proprietary Interactive Voice Response (IVR) and contact center systems is very expensive and ineffective in the long run. Widely popular, open standards VoiceXML solutions are a big step in the right direction...