VoiceReview: Voxeo Community

Review: Voxeo Community

Developer.com content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

Introduction

Similar to other service providers such as Tellme, BeVocal, the Voxeo Community focus is on providing VoiceXML developers with a hosted telephony environment which integrates a VoiceXML Interpreter, Speech Recognition, Text-to-Speech engine, speech verification, etc. Unlike most other service providers, however, Voxeo hasn’t developed its own interpreter. It usesNuance Voice Web Server, which has a built-in VoiceXML 1.0 interpreter. Voxeo Community supports VoiceXML 1.0 and a number of VoiceXML 2.0 features. Currently the only grammar format is Nuance GSL (Grammar Specification Language). Apart from VoiceXML, Voxeo also supports CallXML, Voxeo’s own XML-based markup language for creating user interfaces for the phone. Also a key highlight of Voxeo Community is its recently added support for CCXML (Call Control eXtensible Markup Language).

Version Changes

The currently released community site is located here:http://community.voxeo.com, however, a new version of the community is available here:http://techpreview.voxeo.com. The newer version supports a lot of new features such as call reporting, etc., and includes a tool called "Application Insight." The later version (techpreview) has been used as the basis of this review.

First looks – Voxeo Account Manager

An essential aspect of a hosted VoiceXML development platform is the ability to provide a basic tool for managing the VoiceXML applications themselves. Voxeo supports VoiceXML applications based on a remote URL. One of the features missing here is an area where VoiceXML documents can be temporarily stored. Since Voxeo supports multiple markup languages, the tool allows the user to select a particular markup language for the application (currently supported markup languages include Voice Web Server (VWS), CallXML and CCXML). This feature is also used by Voxeo to roll-out support for newer versions of the specifications. One of the features which I found particularly useful is that the tool features failover capability and allows the developer to specify up-to three "start URLs." As a last resort the tool also allows developers to provide a redirect phone number which will be used in case all of the start URLs fail.

"Calling your Application"

After you have linked your remote VoiceXML applications through the account manager, you then map a phone number which can be used to call that number. A US phone number is assigned which can be used to test and execute your VoiceXML Application.

Outbound Calling

In our of previous reviews we discussed the benefits of outbound calling. Outbound calling means that the VoiceXML application initiates a call to a specified telephone number and starts a VoiceXML session. I expect outbound calling to be a big success in automating a number of alert-based systems, which can be used in multiple kinds of applications including stock trading (alert me when a stock in my portfolio goes up by 5%), inventory management (alert a manager when a key raw material has low inventory), etc. Voxeo community allows an alert to be created with a regular VoiceXML application. Basically, you configure a application using the account manager and then add an outbound calling token (as shown below).

This token can be then used to initiate an outbound call using an HTTP-based service,http://session.voxeo.net/VoiceXML.start?numbertodial={DP}{NUMBER}&tokenid={TOKEN} where

  • DP is a dialing prefix used by the Voxeo Network
  • NUMBER is the number to be called
  • TOKEN is the token which is mapped to a particular application.

Outbound Calling requires that your account has the appropriate permissions. You can call Voxeo customer support or post a message in the newsgroups to find the appropriate access for development purposes.

Logging

Detailed execution of the VoiceXML application is supported through a web-based utility called "Voxeo Network Logger." The Logger is activated when you call phone numbers which have been assigned to your applications. The Logger shows different events in different colors to ease the user experience. At the end of a call, the log can be emailed to a particular email-address for further analysis. One of the features which I think should be added is that the community should allow storage of these logs so that the user can come back and check these archived logs as well.

Reporting

One of the new features of the tech preview version of the community is Call Reporting. Call Reporting creates an Excel-based report for the various calls that have been made to your applications. The reporting function allows you to customize the reports by application, date, phone numbers, etc. The Excel report provides a graphical and tabular view of the calls as well as a summary view of various parameters, such as average calls/minutes per day, max calls/minutes in a day and min call/minutes in a day. This information can be very useful in understanding what your pilot or production application should support.

Resources

Apart from some of the tools that make up the Cafe, it contains a comprehensive set of resources including a large collection of pre-developed, complete open source VoiceXML applications. These applications include a Zip Code Look Up, City Locator, VoiceXML and <transfer>-based dialer. Perl, Java and ASP programmers would be happy, as Voxeo provides a module which contains library of functions which abstract the VoiceXML syntax. Voxeo Community also contains an open source prompt library which contains a large number of pre-developed prompts for major airports, alphabet, currencies, dates and times, greetings, etc. These prompts are in 8000 Hz, 8bit, MuLaw .wav format. Developers would also find the community to be a single source for VoiceXML documentation and tutorials. From a support perspective, Voxeo Community provides 24×7 technical support and NNTP based newsgroups for collaboration.

Application Insight

Most of the capabilities of the Voxeo Community that we have explored in the last column are related to actually linking a VoiceXML URL-based application to a live phone or using its callback functionality. One of the key challenges faced by the VoiceXML development community is to be able to seamlessly debug the application, whether using a live phone or a desktop-based simulator. This capability has been incorporated in part by a number of hosted VoiceXML platforms into their web-based application. Application Insight, a new tool introduced by Voxeo Community as part of the "Technology Preview" release fills that gap.

First Looks

A nice feature of the Application Insight is that it uses the same repository as is used by the online community site. Using a loosely coupled cutting-edge web service-based architecture, (Application Insight communicates with the hosted community site using a set of web services), Application Insight provides a better and richer user interface for the VoiceXML developer. As shown below, the user logs on to his/her area of the community and then selects any of the applications that he/she wants to work on. Alternatively, a developer can also create a VoiceXML, CCXML or CallXML application directly within the tool’s environment.

First Looks (click image to enlarge)
Select an Application (click image to enlarge)
Create an Application (click image to enlarge)

Application Management

Once a particular application has been selected or created, the application settings (including the main and failover URLs, redirect number; inbound telephone number and any outbound calling tokens) can be created and modified.

Application Overview – Session Summary & Chart

The Application Overview section is divided into two sections: session summary & chart. The former gives a list of the various calls/duration/caller-id etc. for the calls that have been made. For any recent call in progress, the "Last Message" field shows the progress of the application. This summary information is then linked with the actual debug log which drills into the complete or current execution log of the particular session. Session Chart gives a time-based call visualization of the various calls that have been made for the application, and can be used to infer the usage pattern of the application.

Application Monitoring & Debugging

Probably the most important aspect of the "Application Insight" tool is the Monitor/Debug page. By default, it shows the currently executing log and debugging statements for the current call, if the call has been made into the mapped phone number. Alternatively, the virtual phone provided by the tool allows the developer to simulate a call (which uses the SIP protocol underneath) and then the user can type in the responses for the speech recognition interface in the "interpret" window. One remarkably different aspect of the tool is that it doesn’t matter whether you are testing the application from a real phone or from a SIP based phone–you get the same logging & debugging interface. The tool also provides a neat step-by-step debugging interface which allows the developer to review the variable stack trace and review the application accordingly. To be able to utilize the soft-phone features you definitely would need to be outside the firewall. Even though the tool is in beta stage, I found it to be pretty stable, however, one of the issues that Voxeo needs work on is to add context sensitive help to the application.

Voxeo Designer

Voxeo Designer is a visual application design tool which allows VoiceXML developers to use a flowchart-based visual tool to develop VoiceXML applications. Designer (shown below) is a “Pure Java”-based IDE, however, the current installer is only available for Microsoft Windows. Voxeo newsgroups do include a workaround for installing it on Unix platforms. Designer includes features such as round-trip development (i.e. you can open an existing VoiceXML file or create a VoiceXML file), validation and support for FTP/HTTP for reading and writing documents. The current version (2.0 beta) supports Voxeo’s CallXML Tags and has beta support for VoiceXML 1.0. Voxeo Designer can be used for creating VoiceXML-based mockup applications, using the generated VoiceXML code as a template for a dynamic JSP/ASP/ASP.NET/PHP/Perl etc. serverside-based application. The visual layout and flow modeling aspect and the context-sensitive VoiceXML palette were particularly useful. It would really be helpful if the Designer could support the latest standards; for instance VoiceXML 1.0 beta support has been there for quite some time. Also, the tool should have “wizard-based” basic grammar development as well. One of the other issues I had with the tool is that it seemed to generate a couple of designer specific processing instructions directly within the template. These processing instructions are used to store the coordinates of the actual visual elements that are used to represent those particular elements. This information shouldn’t be stored in the VoiceXML file itself, but should rather be stored either in a properties file or some kind of project specification file. The ability to group a bunch of VoiceXML documents within the Designer would also be a feature that would be useful.

Introduction to CCXML

If you have been reading the recent articles on this site, then you probably have a good understanding of CCXML. Essentially, CCXML (which standards for Call Control XML) is an XML-based markup language which provides call control support for VoiceXML or any other dialog system. The current VoiceXML standard currently is focused primarily on providing semantics for representing conversational dialogs. The only support for any call control mechanism is available through the transfer tag. CCXML provides the much needed sophisticated event-based asynchronous call-control mechanism to a telephony platform based on VoiceXML. However, by definition CCXML isn’t restricted to VoiceXML. It can be leveraged by other similar markup languagess or even non xml-based traditional IVR platforms.

Voxeo Support for CCXML

Leveraging the experience that Voxeo had around call-control using Voxeo’s own markup language CallXML, Voxeo Community provides an early implementation of the CCXML specification. Support for CCXML is available across the various applications and tools that make up the community. For starters, let’s say we want to test the following simple CCXML document with the hosted community.

We start with the Voxeo Account Manager and using its support for creating a CCXML application, walk through the process of creating one called "My First CCXML Application."

In the final step of the process the tool automatically maps a phone number to the application and also creates a token for outbound calling. After we have set up the basic application, we can test it by calling the mapped phone number or use the outbound calling mechanism to have the Voxeo network call a number. In this case the application doesn’t have a VoiceXML interface. We haven’t yet connected the CCXML application with a VoiceXML document, we are just logging a text, which will be visible only to the backend application.

We can still test the tool using the Application Insight tool (which we had previewed in the last part of this review). We start by selecting the application that we had created earlier using the online Voxeo Account Manager and then clicking on one of the tasks (Overview, Monitor/Debug, Manage, Reports). In this case we select the Monitor/Debug task so that we can debug this application. We can either initiate the call using the included soft-phone or by calling the mapped number. In the message window we can see the "Hello World" message logged.

CallerId based Routing Application using CCXML/VoiceXML

Now that we’ve got a basic application working, let’s get down to work. As you probably understood by now, CCXML as a language doesn’t provide the semantics for dialog control. However, we can integrate VoiceXML and CCXML together to create an application which has dialog interactions as well as utilizes the call-control capability of CCXML. For this app, we would like to only allow certain callers to access a VoiceXML application (even though it can be argued that this functionality can be developed using VoiceXML; the objective of this example is to show the clean separation of dialog semantics and call control provided by a combination of VoiceXML and CCXML).

After creating this CCXML application and the associated VoiceXML application we then use the Voxeo Account Manager or Voxeo Application Insight tool to create a new application and map an associated telephone number with it. After all the basic setup had been done, I called this application from my office number (which was the only number allowed) and was able to connect with the "HelloWorld.vxml" dialog. Using the Voxeo Application Insight tool, I can then analyze the whole event flow for the application.

Conclusion

CCXML provides very useful and interesting capabilities to the simple dialog markup provided by VoiceXML. Even though the specification is in its early draft stages, there has been a lot of activity around CCXML. One thing that I would like to point out here is that programming in CCXML is very different than programming in VoiceXML. Whereas CCXML is all about asynchronous event handling, VoiceXML is all about a serialized dialog flow. Going forward, however, I expect that CCXML application creation will be further simplified by call-control modeling tools and dialog markup developers will be really setting up parameters to the CCXML application templates, (rather than coding the whole control flow).

Overall, I found the various toolsets provided by Voxeo Community to be pretty straightforward and well-integrated. I especially liked the web services-based Voxeo Application Insight tool. My take on what should be added on to the toolset would be a visual CCXML designer and possibly integration of a VoiceXML development tool (could be the Voxeo Designer) with the Application Insight tool. It is an accepted fact that most VoiceXML applications would be generated dynamically through a server-based platform such as J2EE or Microsoft .NET, however, new technologies such as VoiceXML/CCXML developers need an integrated graphical environment for prototyping/building interactive speech applications. Voxeo toolsets have done a good job at integrating the tools that are necessary for the management and testing of VoiceXML/CCXML applications. The next big step would be the integration of the two components.

Resources

About Hitesh Seth

Hitesh Seth is Chief Technology Evangelist for Silverline Technologies, a global eBusiness and mobile solutions consulting and integration services firm. He is a columnist on VoiceXML technology in XML Journal and regularly writes for other technology publications including Java Developers Journal and Web Services Journal on technology topics such as J2EE, Microsoft .NET, XML, Wireless Computing, Speech Applications, Web Services & Integration. Hitesh received his Bachelors Degree from the Indian Institute of Technology Kanpur (IITK), India. Feel free to email any comments or suggestions about the articles featured in this column at hks@hiteshseth.com.

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Latest Posts

Related Stories