In the first part of this review we took a look at Tellme Studio, a hosted VoiceXML development environment. In the second part, we concentrate on some of the advanced features of the Studio, including My Extensions, VoiceXML Terminal and Voice over IP support.
At this point in the development process you should have already created a VoiceXML-based application that is hosted on Tellme (at least the VoiceXML gateway aspect of it, connecting with your own web server using the ubiquitous web protocol HTTP). A typical requirement would be to show it to someone. If the demonstration is local or can be done over a conference call, it is simple--you simply dial-in the main Studio number enter your Developer ID and PIN and you are set. However, if you had to give your number out it isn't really possible for you to give away information such as your developer ID and PIN, as the user will then have complete access to your studio account. For this reason, amongst others, Tellme has a feature called My Extensions through which your extension can be published to your small group of alpha/beta test users. There are some limitations of My Extensions, such as the limitation that a particular call can only last maximum of 5 minutes, the <transfer> element is not supported, etc. Essentially, the purpose of MyExtensions is to allow developers to demonstrate their applications to their users. Shown below is the configuration screen for My Extensions. Specifically shown is the task of configuring the extension "92105" to go to a simple Hello World VoiceXML document. As part of the extension, it is also possible to list it in the Tellme web/phone Directory and additionally a .wav file can be referred to which is used as the recorded description of the application in the phone directory.
Probably one of the most advanced tools in the Tellme Studio, the VoiceXML Terminal emulates a Voice session by using corresponding text interfaces as the user interface. The terminal is especially useful in debugging and initial prototyping where you would like to quickly test your application through your computer without imposing the additional complexity of making repeated calls. VoiceXML Terminal allows allows text based input to be used instead of speech interfaces and real grammar phrases can be constructed and used. The session also keeps a complete session log which is color-coded, depending on whether the prompts are application-generated or user-entered information. I have found the tool useful also to just create a basic script of the demonstration and send it to a colleague so that he/she can get used to my application as well. Since the VoiceXML Terminal is completely web-based (it is actually implemented as a Java applet), you still have the hosted VoiceXML application development platform and don't need any additional development tools to be installed on your desktop. The following screenshot shows the transcript of a VoiceXML session.
The VoiceXML code used in this example is a simple Employee Directory application (source code shown below) which allows users to look up other users based on the name of the employee. A simple extension to this example can turn this application into an Employee Locator by actually transferring the call to an employee based on an input dialog such as "please connect me to Hitesh Seth's cell-phone number." Also, in real world scenario the VoiceXML document would also be dynamically generated through a server-side scripting technology such as ASP/JSP/PHP/Perl, where the data source is aa LDAP Directory or a corporate database.
Voice over IP Support
Voice over IP (popularly termed "VoIP") is a technology which allows users to use the Internet as a medium for making telephone calls. VoIP products (typically a VoIP server and a VoIP client--a software-based client or a hardware-based client) allow users to use their own private networks or the public internet as a medium for telephony access, instead of using the PSTN (Public-switched telephone network) services from local telephony providers. A large number of vendors (including Cisco) have build VoIP solutions. A key component of a VoIP solution is the Session Initiation Protocol (SIP) and RTP (Real-time Transfer Protocol) support. SIP is an application layer control protocol that allows users of VoIP devices/software to establish, modify and terminate calls. A detailed discussion on Voice over IP and its related technologies is beyond the scope of this document, however, in the references section below are links to the associated specifications of the protocols. Using a software-based VoIP client (known as a soft-phone) or a SIP enabled handset, it is possible to connect to Tellme Studio and have conversations with your application. The SIP URL for Tellme Studio is sip:email@example.com (the URL is only valid for SIP enabled handsets or software). The screenshot below shows one of the VoIP soft-phones in action, connected with the Tellme SIP Server.
VoIP access to Tellme Studio is important for developers who don't have toll-free access to Tellme Studio for development and testing, particularly developers in non-North American countries. One tip before you start testing your SIP client with the Tellme Studio is to ensure that you are not behind a firewall, as that would prevent you from using a VoIP client.
In addition to the set of online tools, Tellme Studio also provides a series of technical resources on VoiceXML including VoiceXML Reference, Grammar Reference, FAQ, guidelines for creating phone based applications and Technical Whitepapers on VoiceXML. A number of NNTP-based threaded discussion forums are also available for inter-developer communication and support.
In conclusion, Tellme Studio has created a definitive place in the arena of providing developers anytime/anywhere capability for developing and testing VoiceXML applications. Tools such as the VoiceXML Terminal and the grammar tools discussed above are comprehensive and will definitely give a user a jumpstart. My picks for enhancements would include a wizard-based application generator (including generation of VoiceXML documents and associated grammars) and a richer library of reusable dialog components. Support for multiple dialog component models/variants such as IBM RDC, Nuance SpeechObjects and SpeechWorks OpenSpeech Dialog Modules would also benefit the developer as well.
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 firstname.lastname@example.org.