ne obstacle that's impeded the development of voice applications is the availability of a dedicated, standard or well-known development architecture. To create robust voice applications, voice developers have had to be familiar with many languages, techniques, architectures, and processes. Compounding this problem, voice applications are often built using proprietary markup languages. The emergence of the standard for VoiceXML 2.1 (and soon to come 3.0) eliminates some of this complexity, allowing voice developers to better focus their skills. VoiceXML allows you to adopt Web programming models for your voice applications, and implement them using a server-side frameworklike Strutsin the same way you'd implement a Web applications. Using this kind of framework, you can make the transition from Web application to voice application much more easily.
Although speech recognition has improved in recent years, it is still more error-prone than collecting data from a form in a Web page, since background noise and other factors can interfere with the recognition. Therefore, unlike Web applications, voice applications require dialogs between the computer and user to confirm the input, re-prompt the user when there's no input, etc. The Reusable Dialog Component (RDC) Open Source project intends to help J2EE, JSP, and Struts developers transition into voice application development by using already familiar technology. RDCs are implemented as JSP 2.0 tags and support the Struts framework. Using RDCs to handle the interactions for common dialogs frees you up to deal with more complex areas of your application.
What are RDCs?
A Reusable Dialog Component (RDC) is basically a JSP 2.0 tag, which generates VoiceXML at runtime. RDCs are part of the RDC Tag Library open source Jakarta project. Version 1.0 of the RDC Taglib was released in July 2005. The RDC Taglib projects implifies the development of server-side code in order to generate Voice XML. The RDC Taglib project includes a set of RDCs, which are a collection of JSP 2.0 tags that assist in the development of Voice applications. The RDC tags generate VoiceXML at runtime, which can execute on any VoiceXML 2.0 compliant platform. The RDC Taglib also provides a framework for implementing additional RDCs. The framework helps in orchestrating each individual RDC making sure the user data is collected, verified, and canonicalized. The collection of RDCs included in the Taglib project is made up of both, atomic and composite RDCs. Atomic RDCs collect a single piece of information from the user. For example, date, time, or zipCode are atomic RDCs. Composite RDCs collect multiple pieces of information from a user. These are usually done by using atomic RDCs or aggregating a composite with other atomic RDCs. The RDC project currently includes two such composite RDCs: mortgage and creditcardInfo.
While setting up a development environment that uses RDCs isn't complicated, it can be a time consuming depending on how much of the necessary software you need to download:
- JSP 2.0 Support: You can get this from either Tomcat 5.0 and IBM WebSphere Application Server 22.214.171.124. If you do not have WebSphere, download Tomcat 5.0 from Apache and follow its instructions to install (you will need a JDK 1.4.2 to run Tomcat).
- The JSTL 1.1, jsp-api.jar, and commons-el.jar libraries: These libraries are prerequisites for the RDC tag library. Find them under <Tomcat Install>/common/lib.
- Struts 1.2x
- The RDC Tag Library: Download this from Apache and add it to the classpath.
Using your favorite IDE for developing Web applications, add all these libraries to your classpath or project and you should be all set to develop and run a voice application using RDCs. This article was written using IBM Rational Application Developer 6.0 with the Voice Toolkit 6.0. The Voice Toolkit includes a nice simulator, which you can use to test the voice application.