Voice as a User Interface - IBM Redbooks

7 downloads 306 Views 2MB Size Report
Dec 12, 2004 - 3.2.1 Importing the HTML portlet application . ... 3.4.6 Modifying the Add Expense portlet code . ... 4.3
Front cover

Voice as a User Interface face Case Study and Lessons Learned

Learn the basis for designing the voice user interface and voice portlets Access secure backend enterprise applications and Web services Customize WebSphere Voice Application Access

Juan R. Rodriguez Phillip Dermody Brian Hainey Callum Jackson Rajesh Kalyanaraman

ibm.com/redbooks

Redpaper

International Technical Support Organization Voice as a User Interface: Case Study and Lessons Learned December 2004

Note: Before using this information and the product it supports, read the information in “Notices” on page vii.

First Edition (December 2004) This edition applies to Version 5, Release 0 of WebSphere Voice Toolkit and WebSphere Voice Application Access. This document created or updated on December 12, 2004. © Copyright International Business Machines Corporation 2004. All rights reserved. Note to U.S. Government Users Restricted Rights -- Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

Contents Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix The team that wrote this Redpaper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix Become a published author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .x Comments welcome. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi Chapter 1. Voice user interfaces and speech applications . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 DTMF versus voice user interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Sample scenario for voice user interface development . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 WebSphere products used to develop the scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.1 WebSphere Voice Toolkit Version 5.02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.2 WebSphere Voice Server Version 4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.3 WebSphere Voice Application Access Version 5.0. . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.4 Overall configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4.1 General dialog types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.2 Reusable dialog components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Dialog components for handling errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.2 No Match for input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5.3 No Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5.4 User generated request for Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.5.5 User-generated Repeat, Go Back, Main Menu options . . . . . . . . . . . . . . . . . . . . 13 1.5.6 Help structures: Batch or Event based . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.6 Developing a dialog for the scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7 Using audio files and TTS in dialogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.8 Supporting programming standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.9 Developing and deploying a speech application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.9.1 Designing for usability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.10 Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Chapter 2. Voice application design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Sample scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 E-mail Inbox application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Employee expense management application . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Stock Query application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Designing a voice interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Designing a call flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 The basics of Call Flow Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Call flow of the B2E portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Employee logon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.2 Confirmations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.3 Main Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.4 E-mail Inbox service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.5 Expense Management service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.6 Stock query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . © Copyright IBM Corp. 2004. All rights reserved.

21 22 23 23 24 24 25 25 26 27 28 29 32 33 34 37 iii

iv

2.5.7 Handling exception cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5.8 Call flow simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Generating code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.1 Generating VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6.2 Running as VoiceXML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Completing the application as voice portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39 40 41 41 46 47

Chapter 3. Voice portlet messaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 A sample portlet application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Importing the HTML version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Importing the HTML portlet application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Starting the Portal server in a test environment . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Overview of the Expense Portal application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Planning the VXML interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Creating the voice interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Importing the call builder output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Modifying ExpenseClaimOverviewView.jsv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.3 Creating SubmitView.jsv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.4 Modifying AddExpenseView.jsv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.5 Creating AddExpenseViewJump.jsv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.6 Modifying the Add Expense portlet code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49 50 50 51 53 54 56 57 57 58 61 62 64 64

Chapter 4. Accessing secure back-end applications . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 The credential vault . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 The E-mail Inbox portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Importing the portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 The portlet HTML interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 E-mail Inbox back-end classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 Using the credential vault by the portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Generating a starter VoiceXML-based JSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 The Read Email call flow JSV file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Initial editing of the E-mail Inbox view JSV file . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Initial Inbox call flow decision logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Inbox Available decision point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.2 Inbox has messages decision point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Stating the current inbox message count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1 Email Inbox Count Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6 Listening to the most recent e-mail message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1 An ECMAScript function to provide e-mail messages. . . . . . . . . . . . . . . . . . . . . . 4.6.2 Using the ECMAScript function. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7 Listening to all e-mail messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.1 Message index variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.2 Reading the message at a specific index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.3 Moving to the next message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.8 Testing the portlet voice interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67 68 68 68 68 70 70 72 72 72 74 75 76 77 77 78 79 80 80 81 81 81 82

Chapter 5. Internationalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 Internationalization implementation options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.1 Resource bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.2 Translating whole resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1.3 Recommendation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Implementing resource bundles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Example of NLS in voice applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Importing the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

83 84 84 85 85 86 88 88

Voice as a User Interface: Case Study and Lessons Learned

5.3.2 A closer look at the NLS files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 5.3.3 Testing an NLS application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Chapter 6. DTMF voice application support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Implementing DTMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.1 DTMF default global commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1.2 Enabling DTMF in a voice application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Example of the voice and DTMF interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93 94 94 94 96

Chapter 7. Accessing Web services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7.1 Web services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 7.1.1 Web services technology and standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 7.1.2 Java Web service libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7.1.3 Support for Web services development in WebSphere Studio . . . . . . . . . . . . . . 101 7.2 The Share Lookup Web service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 7.2.1 Web service classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 7.2.2 The WSDL file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.2.3 Importing the Web service WAR file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.3 The Share Lookup portlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 7.3.1 The portlet HTML interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 7.3.2 Share Lookup portlet classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.3.3 Importing the Share Lookup portlet WAR file . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 7.4 Converting the Share Lookup portlet Input.JSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 7.5 Converting the Share Lookup portlet result JSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 7.6 Testing the voice interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Chapter 8. Deploying the voice portal application. . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1 Voice portal architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2 Administering the Portal Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Installing portlets and creating a page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.1 Installing the portlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.2 Creating a page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.3 Adding portlets to the new page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4 Users, groups, and permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.1 Adding users and groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4.2 Configuring permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5 The Share Lookup Web service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.6 Testing the Employee Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.7 Accessing the portal using the voice interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

115 116 117 118 118 120 121 124 124 126 127 127 128

Chapter 9. Voice Aggregator customization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1 Basic modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1.1 Prompt modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1.2 Built-in grammars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.1.3 Portlet title customization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 WebSphere Voice Application Access architecture . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.1 VXML aggregator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.2 Numeric alias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3 Modifications to property files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.1 Enabling the TTS prompts and not the audio files . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 Modifying the property files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4 Dynamic portlet titles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4.1 Modifications to allow portlet titles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4.2 Looking at the files more closely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

129 130 130 130 131 131 132 135 135 136 136 138 138 138

Contents

v

9.5 Implementing confirmation based on confidence level . . . . . . . . . . . . . . . . . . . . . . . . 141

vi

Appendix A. Additional material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locating the Web material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Using the Web material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . System requirements for downloading the Web material . . . . . . . . . . . . . . . . . . . . . . . How to use the Web material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

143 143 143 143 144

Related publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Other publications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Online resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . How to get IBM Redbooks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Help from IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

145 145 145 146 146 146

Voice as a User Interface: Case Study and Lessons Learned

Notices This information was developed for products and services offered in the U.S.A. IBM may not offer the products, services, or features discussed in this document in other countries. Consult your local IBM representative for information on the products and services currently available in your area. Any reference to an IBM product, program, or service is not intended to state or imply that only that IBM product, program, or service may be used. Any functionally equivalent product, program, or service that does not infringe any IBM intellectual property right may be used instead. However, it is the user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service. IBM may have patents or pending patent applications covering subject matter described in this document. The furnishing of this document does not give you any license to these patents. You can send license inquiries, in writing, to: IBM Director of Licensing, IBM Corporation, North Castle Drive Armonk, NY 10504-1785 U.S.A. The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express or implied warranties in certain transactions, therefore, this statement may not apply to you. This information could include technical inaccuracies or typographical errors. Changes are periodically made to the information herein; these changes will be incorporated in new editions of the publication. IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this publication at any time without notice. Any references in this information to non-IBM Web sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk. IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you. Information concerning non-IBM products was obtained from the suppliers of those products, their published announcements or other publicly available sources. IBM has not tested those products and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products. This information contains examples of > To Add Expense

Prompts A prompt is converted into a form with the text captured in the prompt tag with the appropriate modes. The list of valid utterances are generated inside option tags. The tags are filled to describe the action to take for each option. The help, noinput, and no match tags are created with the appropriate text entered in the properties window. The tag appears for each of filled-in properties. It is necessary to manually delete them to avoid the prompt being played again after a particular help message. See the example in Figure 2-15.

Figure 2-15 Example prompt from Expense Add call flow

The code for the “Please say expense category” prompt in the Expense Add call flow (Figure 2-15) is shown in Example 2-2 along with the help messages. Example 2-2 Expense category call flow form id="P00210">

2.6.2 Running as VoiceXML The generated VoiceXML is the skeleton of the code and can be used as a prototype for initial testing. To hear the application prompts, select Run As →Voice XML application. This functionality permits usability testing to help in pruning the statements and tuning the prompts. The processing and decision block do not work here. To test the prompts and the flow, it is necessary to remove the processing and decision making logic from the generated VXML, because the prompts following a processing logic may not be reached. The alternate way is to enter dummy code to avoid the logic. These techniques are used only to test parts of the application. Full processing logic is required to implement the application. Note: The names provided by the user are used for the goto identification. They are not used in the VoiceXML tags. This indicates the difference between the property ID and the name. In addition, there are several changes that a developer must make to customize the code in the scripting language.

Recorded prompts and audio files The speaker icon on top of the prompts and statements show the recorded audio files to be played for these prompts. For the sake of simplicity of development, we removed all the recorded prompts for our application and deployed only TTS. However for actual applications, we recommend that you use a natural human voice. We also encourage the use of professional voice talent for recording these prompts. You can change the file names or remove them be selecting Property Object →Audio File. You can use a different file name for DTMF and speech interfaces. An easier way to remove the file name is to remove the speaker icon over the prompt or statement icon.

46

Voice as a User Interface: Case Study and Lessons Learned

2.7 Completing the application as voice portlets After the prompts, etc. are tested, you can generate a JSV file for the call flow. This is the JSP for the voice view. To view it, selecting Generate Code, right-click, and select Voice Portlet. After you change the design notations, as discussed in the previous sections, enable the file for a portlet by adding the following tags:

After you define the tag library, the portlet application programming interface (API) can be used. There are several places where variables are embedded in the prompts and statements. All variables that are visible, such as __X__ or __N__, must be replaced with appropriate JSV variables. These need to be included inside JSP tags such as, for example: You have messages

You can alter the processing logic inside the processing blocks. For example, the block shown in Example 2-7, before the goto tag, can be replaced with Java code to locate messages and store them in local variables before reading them in the next statement S00130. Example 2-7 Sample form

Chapter 2. Voice application design

47

48

Voice as a User Interface: Case Study and Lessons Learned

3

Chapter 3.

Voice portlet messaging This chapter introduces portlet messaging. It begins starts with a simple graphical user interface (GUI) example that is comprised of two portlets within the same application. These portlets communicate via portlet messaging to exchange %> To Add Expense ........

Chapter 3. Voice portlet messaging

57

3.4.2 Modifying ExpenseClaimOverviewView.jsv Follow these steps to modify ExpenseClaimOverviewView.jsv: 1. Open the equivalent HTML view (ExpenseClaimOverviewView.jsp). 2. Copy the import statement on the first line into the JSV file: import="java.util.*, com.ibm.redbook.*"

3. Return to the HTML view and copy lines 6 through 9 into the JSV. These lines include the declaration of the session and view beans. The top of the JSV should be the same as shown in Example 3-4. Example 3-4 Header information for ExpenseClaimOverviewView.jsv The items on the expense list is a of cost

8. Enable the submitting of expenses. Modify form R00020 as specified in Example 3-8. Example 3-8 Submitting the expense items All items were cancelled, Returning to Expense Add menu

Chapter 3. Voice portlet messaging

59

9. Enable the cancel command for the expense items. Modify form id S00160 as specified in Example 3-9. Example 3-9 Implementing the cancel operation

Moving focus to another portlet The ExpenseClainOverviewView.jsp must be able to notify the aggregator to change which portlet it is executing. 1. Expand ExpenseClaim →WebContent →WEB-INF →tld. Right-click and select Import. 2. In the new window that opens, select Filesystem. 3. As shown in Figure 3-12, in the From directory field, type WSAD_INSTALLATION\runtimes\ portal_v50\shared\app\VoiceAggregator\WEB-INF\tld. Then select the voicePortlet.tld check box and click Finish.

Figure 3-12 Importing the voice portlet tag library

4. Add the relevant library file to the project path. Select the project, right-click, and select Properties. 5. In the Properties for ExpenseClaim window (Figure 3-13), in the left pane, select Java Build Path. In the right pane, select the Libraries tab and click the Add External JARs... button.

Figure 3-13 Modifying the Java Build Path

6. Locate WSAD_INSTALLATION\wsad51\runtimes\portal_v50\shared\app\ VoiceAggregator\voiceAggregation.jar and select Open. Click OK to complete the import.

60

Voice as a User Interface: Case Study and Lessons Learned

7. At the top of ExpenseClaimOverviewView.jsp, add to define the tag library. 8. Add code to move focus to the Add Expense portlet. Find form id S00170 and complete it as shown in Example 3-10. Example 3-10 Code to move focus to the Add Expense portlet

2. The variable names of the Web and voice interface must be equivalent. The current call flow buider VXML does not have the correct values specified. Example 3-13 shows the manual modifications to make for ExpenseType and ExpenseCost to be implemented. Example 3-13 Renaming the field names to be consistent with the Web interface Your inbox contains X messages

Chapter 4. Accessing secure back-end applications

77

2. During the creation of the call flow, a value of X was used in the voice content statement. When the voice interface is used, this value must reflect the actual number of messages present in the inbox. A call to the getInboxSize method of the viewBean JavaBean can provide the count. The insertion of a JSP expression in the form ensures that the user is informed through the voice interface. Make the necessary modifications to the form. Example 4-11 shows the form after modification. Example 4-11 Email Inbox Count Statement after modification

The addition of this script to the JSV file makes the getEmailMessage ECMAScript function available in the VoiceXML provided to the client. Example 4-12 The ECMAscript function

4.6.2 Using the ECMAScript function When a user chooses to listen to their most recent e-mail message, the statement with ID S00100 defines what they will hear. You must modify S00100 so that it provides the most recent e-mail message using the ECMAScript function. Locate the form with ID S000100 and modify the form the same as the code shown in Example 4-13. Example 4-13 The form which states the most recent e-mail message Message

4.7 Listening to all e-mail messages The final modifications required for the JSV make it possible to read all the available e-mail messages. The ECMAScript function used previously is also used here. The user has the ability perform limited navigation through their messages. Refer to the complete call flow diagram, in Chapter 2, “Voice application design” on page 21, to locate the call flow elements that are discussed here and must be modified.

80

Voice as a User Interface: Case Study and Lessons Learned

4.7.1 Message index variable To read each available message in turn, an index variable is required to keep track of the current message. Processing point R00010 deals with the selection of the first message. It is an appropriate position in the JSV file for the declaration of the message index variable and the initialization of that variable to the index value of the first message. Locate the form with ID R00010 and modify the code as shown in Example 4-14. Example 4-14 Modified version of processing point R00010

4.7.2 Reading the message at a specific index Statement S00130 indicates that the e-mail message at the current index. You must modify the form with ID D00130 so that the message index variable is used in a call to the ECMAScript function to obtain the message. Locate form S00130 and modify it as shown in Example 4-15. Example 4-15 The modified version of S00130 ......

Portlet.xml needs to include a portlet title entry for each supported language. Example 5-6 shows this for English and German. Example 5-6 Portlet.xml for ShareLookUp ShareLookUp ShareLookUp en ShareLookUp Aktien

5.3.3 Testing an NLS application In the development environment, to test with different locales, we recommend that you adjust the LocalizerService.properties file. This file is part of the portal toolkit installation, and is located in c:\WSAD install path\runtimes\portal_v50\shared\app\config\services.

90

Voice as a User Interface: Case Study and Lessons Learned

Example 5-7 illustrates the LocalizerService.properties file, with the locale configuration parameters. Example 5-7 LocalizerService.properties file # @copyright properties # ----------------------------------- # # Properties of the Localizer Service # # ----------------------------------- # # Language, country, and variant settings for the default locale # # Default: [ = Locale.getDefault() ] locale.default.language=de locale.default.country = locale.default.variant = # # List of BiDirectional languages separated by ',' or ';' # Add ar,ur,yi,... when there are resources for those languages. # locales.bidi = he, ar

Note that in Example 5-7, the default language is set to de (German), causing the development environment to act in the German locale. Run the application as normal, and notice that all prompts change to German. To revert back to English, modify the file back to en, and restart the WVAA server for the changes to take effect.

Chapter 5. Internationalization

91

92

Voice as a User Interface: Case Study and Lessons Learned

6

Chapter 6.

DTMF voice application support Most installed interactive voice response (IVR) systems today accept input from the telephone keypad only. In contrast, VoiceXML is designed predominantly to accept spoken input, but it can also accept dual-tone multifrequency (DTMF) input, if desired. Using VoiceXML, application developers can create Web-based voice applications that users can access by telephone or other pervasive devices. The user responds using spoken commands or DTMF input. This chapter presents the options that are available to add DTMF support to voice applications. These options enable callers to change from one input mode to another depending on their situation.

© Copyright IBM Corp. 2004. All rights reserved.

93

6.1 Implementing DTMF The Voice Aggregator, by default, gives the caller the option to change the input mode to DTMF or voice. As such, it is possible to create portlet applications that support both VXML and DTMF. Until this stage, all the examples in this book have been focused on voice only. The Share Lookup portlet has been modified to accept DTMF as well as voice. Restriction: Within the VXML specification, it is possible to change input modes whenever required. However since WebSphere Voice Application Access (WVAA) generates the main menu automatically, this limits where input modes can be modified. Consider the example where the JavaServer Page (JSP) for Voice (JSV) logic allows the caller to change the input mode to DTMF from voice, and the caller returns to the main menu. In this example, the caller would expect a DTMF menu. However since the JSV developer implemented the change and no notification was sent to the aggregator, it has no knowledge of the change and renders the main menu in voice mode. This situation can be improved to allow greater flexibility to the JSV developer. But it would require advanced modifications to the internal WVAA code, which is not within the scope of this book. If this functionality is required, contact IBM Services for assistance.

6.1.1 DTMF default global commands WVAA is shipped with default global commands, such as to return to the main menu. These commands are listed in Table 6-1. It is important to realize that you can customize these commands, which is discussed in Chapter 9, “Voice Aggregator customization” on page 129. Table 6-1 Global commands for DTMF Description

Key command

Start the login process in unauthenticated mode

*8

Toggle between the voice and DTMF modes

*0

Provide context-sensitive help

0

Repeat the current selected option

*1

Goes back to the next higher available level

**

Exits and goes back to the Portal home

*#

Allows the caller to move to the next portlet (available only within autoplay mode)

*9

Allows the caller to move to the previous portlet (available only within autoplay mode)

*7

6.1.2 Enabling DTMF in a voice application This section describes a sample procedure to enable the DTMF user interface in your voice application.

Importing the tag library To determine what input mode the WVAA aggregator is set to, import the voicePortlet tag library. The following steps assume that the voice only portlet application is already imported into WebSphere Studio Application Developer (WSAD) and simply requires DTMF support.

94

Voice as a User Interface: Case Study and Lessons Learned

1. Expand project name →Web Content →WEB INF. Select tld, right-click, and select Import. 2. In the new window that opens, select Filesystem. 3. In next window (Figure 6-1), complete these tasks: a. In the From directory field, type WSAD_INSTALLATION\runtimes\portal_v50\shared\ app\VoiceAggregator\WEB-INF\tld. b. Select the voicePortlet.tld check box. c. Click Finish.

Figure 6-1 Importing the voice Portlet tag library

4. Add the relevant library file to the project path. Select the project, right-click, and select Properties. 5. In the left pane of the Properties for ExpenseClaim window (Figure 6-2), select Java Build Path. In the right pane, click the Libraries tab and then click the Add External JARs button.

Figure 6-2 Modifying the Java Build Path

6. Locate the WSAD_INSTALLATION\wsad51\runtimes\portal_v50\shared\app \VoiceAggregator\voiceAggregation.jar file and select Open. Click OK to complete the import. 7. At the top of the ExpenseClaimOverviewView.jsp file, add the following line to define the tag library:

Chapter 6. DTMF voice application support

95

Implementing the DTMF interface To implement the DTMF interface, follow these steps: 1. Within the VXML document, set the input mode. This is managed by setting a standard VXML variable called inputmode. Add the following line to all VXML documents:

2. Within the application, use the cond attribute to determine if DTMF or voice is being used. Example 6-1 shows the implementation. Example 6-1 DTMF implementation

6.2 Example of the voice and DTMF interface For this example, follow these steps: 1. Import and set up the ShareLookup_DTMF.war file using the same procedure specified in 5.3.1, “Importing the project” on page 88. 2. Start the voice portlet tag library as specified in “Importing the tag library” on page 94. Example 6-2 shows an extract from the Input.jsv file. It demonstrates the implementation for a voice and DTMF application. It shows the tag library declaration, the inputmodes property setting, and several uses of the cond attribute. Example 6-2 Input.jsv extract

96

Voice as a User Interface: Case Study and Lessons Learned



2. Modify the form so that the implementation of the second call flow, Share Lookup Result, is started when this position is reached in the call flow. To achieve this, add a VoiceXML submit element.

Chapter 7. Accessing Web services

109

3. Modify the form so that it is the same as that shown in Example 7-5. Example 7-5 Form R00010 after modification

Example 7-15 shows the form after modification. Example 7-15 R00010 after modification

This completes the work required on the JSV file.

Chapter 7. Accessing Web services

113

7.6 Testing the voice interface To test the voice interface, you must start the Web service, Portal Server, and the voice browser. 1. Start the Share Lookup Web service as explained in 7.2.3, “Importing the Web service WAR file” on page 104, to ensure that it is operational. 2. Choose Voice Portlet Perspective. 3. To start the Portal Server, select the ShareLookup project in the navigator, right-click, and select Run on Server.... 4. When your server is open for on demand business, you see the portlet in the browser. Check that the portlet is operational. Supply a company name, such as IBM, and click Invoke. A share price should be supplied by the portlet which is hopefully not too disappointing. 5. Start the voice browser. Select Run →Run from. 6. Select VoiceXML JavaServer Page. 7. Choose an appropriate configuration to start the voice browser. If a suitable configuration does not exist, click New and create one using the following URL: http://localhost:9081/wps/portal/!ut/p/.cmd/LoginUserNoAuth?userid=wpsadmin&password=wps admin

You should hear the voice interface and be able to look up a share price by speaking the company name.

114

Voice as a User Interface: Case Study and Lessons Learned

8

Chapter 8.

Deploying the voice portal application This chapter explains how to deploy the complete employee voice portal application to WebSphere Portal Server V5.0.2. Chapter 2, “Voice application design” on page 21, discusses the design of the voice interface for the portal. In addition, the architecture of each portlet and the development steps taken from call flow to operational portlet are discussed in Chapter 2, “Voice application design” on page 21, through Chapter 6, “DTMF voice application support” on page 93. This chapter takes you through the typical steps to configure Portal Server when deploying a voice application and, in particular, the employee voice portal application developed in this Redpaper.

© Copyright IBM Corp. 2004. All rights reserved.

115

8.1 Voice portal architecture In this chapter, we deploy the Employee Portal to WebSphere Portal Server. This chapter assumes that WebSphere Portal Server is already installed and capable of hosting voice enabled portal applications. Refer to Chapter 6 in Adding Voice to Your Portlet Applications, REDP-3878, for details about how to install WebSphere Portal. When a portal provides a voice interface, Figure 8-1 shows the architecture on which the portal is hosted.

portlet application 1

WebSphere Portal

Portlet API

WEA

WVAA

Figure 8-1 Architecture for voice-enabled portals

116

Voice as a User Interface: Case Study and Lessons Learned

portlet application 2 portlet application 3

Web Applications

Web Services

Other Enterprise Applications

8.2 Administering the Portal Server Attention: To carry out the deployment steps in this chapter, you must log on to the server as administrator. Follow these steps: 1. Access the server and log in as administrator. Open your Web browser and enter the URL of the server, which in this example is: http://wvaa.demo.ibm.com:9081/wps/portal

Replace wvaa.demo.ibm.com with the proper value for your specific server. 2. Figure 8-2 shows the page that you see before you log in. Click Log in located in the top right corner of the page.

Figure 8-2 Portal Server before log in

3. Supply your administrator user ID and password when prompted. Then click the Log in button. Provided that you supplied the appropriate credentials, you should find that you have logged into the server. 4. To administer the server, click Administrator located in the top right side of the page.

Chapter 8. Deploying the voice portal application

117

Now you see the Portal administration page (Figure 8-3). From this page, you initiate all of the steps required to configure the server and deploy the voice portal application.

Figure 8-3 Portal Server administration page

8.3 Installing portlets and creating a page This section explains how to install the portlets that constitute the voice portal application into the Portal Server. All the portlets must be loaded into the server before they can be used. The portlets are presented to the user using a portlet user interface page. They can be added to an existing page, or as in our case, a new page can be created. You can load as many portlets as required and create as many pages as required.

8.3.1 Installing the portlets To install portlets, follow these steps: 1. In the left navigation menu, click Portlets and then click Install. Figure 8-4 shows the panel used to install portlets.

Figure 8-4 The Install Portlets panel

118

Voice as a User Interface: Case Study and Lessons Learned

Our application features four portlets in total. Each must be installed on the server. Our portlets are packaged into Java Web Archive (WAR) files. Two of our portlets are packaged alone in their own WAR file, and the other two share the same WAR file. 2. Install the E-mail Inbox portlet. a. Click the Browse button to browse to the WAR file for this portlet, which is called EmailInBox_SOLUTION.war. It’s provided as part of the additional material that accompanies this paper. (See Appendix A, “Additional material” on page 143.) Select the file and then click Next. b. You are informed that a portlet called EmailInbox is going to be installed. Click the Install button to initiate the installation process. It may take a while for the portlet to be installed. If all goes well, then you should see the message Portlets were successfully installed. Repeat the process for adding portlets until all of the portlets are installed. 3. Add the Share Lookup portlet. a. Browse to the WAR file ShareLookup_SOLUTION.war. Select the file and click Next. b. You are informed that the ShareLookUp portlet is about to be installed. Click the Install button to initiate the installation. Again, you should see the message Portlets were successfully installed. Continue on with installing the remaining portlets. 4. Add the last WAR file, ExpenseClaim_SOLUTION.war, which contains two portlets. The portlets are package together since they communicate using portlet messaging. a. Browse to the ExpenseClaim_SOLUTION.war file, select it, and then click Next. b. The list of portlets that are about to be installed should include Expense Claim Overview and Add Expense. If they appear in the list, click Install to initiate the installation. c. When you see the message Portlets were successfully installed, the installation of our portlets is complete.

Chapter 8. Deploying the voice portal application

119

8.3.2 Creating a page With the portlets installed on the server, now create a portal user interface page on which the portlets are presented when they are in use. 1. From the menu on the left, select Portal User Interface →Manage Pages. 2. You see a list of pages as shown in the Manage Pages panel (Figure 8-5). Verify that the voice portlets are placed under My Portal. Next to each list item, you should see a set of icons. Click the page icon. If you are unsure about which icon this is, move the mouse pointer over the icons to access help information about each one. 3. Click the icon to edit Page Properties.

Figure 8-5 Manage Pages panel

4. On the next panel, click Advanced Options. Select only the vxml and html check boxes. Ensure that the wml and cHtml check boxes are deselected. Click OK. 5. Click OK again to return to Manage Pages. 6. In the Title column, click My Portal. Click the New Page button to add a new page. Call the new page Employee Portal.

120

Voice as a User Interface: Case Study and Lessons Learned

7. In the Properties panel (Figure 8-6), click Advanced Options. Ensure that both the vxml and html check boxes are selected. Click OK.

Figure 8-6 The New Page page

8. You should see a message indicating that the page was added successfully. Click OK. You return to the page list again. You now see the new Employee Portal page in the list.

8.3.3 Adding portlets to the new page The portlets are not usable until they are added to a page. We add them now to the Employee Portal page that we created. 1. Click the pencil icon next to the Employee Portal page in the page list to edit the page layout. If you are unsure about the purpose of any of the icons, move your mouse pointer over each icon. 2. You see the Edit Layout pane (Figure 8-7) to allow the addition of portlets. We can choose a layout from the set provided. The default layout selected arranges the portlets side by side. It’s the second one from the left. The last layout on the right is suitable for our portal. It divides the panel into four areas. We place one of our portlets in each of the four areas.

Chapter 8. Deploying the voice portal application

121

Figure 8-7 Edit Layout pane

Select the last layout on the right. The Edit Layout pane appears with the chosen layout selected (see Figure 8-8).

Figure 8-8 Edit Layout pane with our chosen portlet layout selected

122

Voice as a User Interface: Case Study and Lessons Learned

3. Add the E-mail Inbox portlet to the page. Place the E-mail Inbox in the area at the top of the page and place the ShareLookup in the area at the bottom of the page. Add the Add Expense and the Expense Claim Overview portlets, side by side, to the central area of the page. Add the Add Expense portlet on the left and the Expense Claim Overview portlet on the right. a. To place the E-mail Inbox portlet in the top area of the page, follow these steps: i. Click the Add Portlets button in this area. ii. In the Search For box, type Email Inbox. Click Search to locate the Email Inbox portlet that we added previously. It’s possible to browse through the set of portlets to locate the one you want, but if many portlets are added, its easier to search. iii. In the Select column, select the check box next to the portlet to add the portlet to the page. Click OK to complete the process. The portal user interface page should appear again, but now the e-mail inbox is present in the top area of the page. b. Repeat this process until all portlets are added to the page. Now add the Share Lookup portlet to the page. i. Click the Add Portlets button in the area along the bottom of the page. ii. In the Search For box, type ShareLookup and click Search. iii. In the Select column, select the check box. Click the OK button. The page should appear again, this time with the ShareLookup portlet present. c. Add the Add Expense portlet. This is placed in the area on the left side of the page. i. Click the Add Portlets button in this area. ii. In the Search For field, type Add Expense. Click Search. iii. In the Select column, click the check box to add the portlet. Click OK. d. Add one more portlet to the remaining unused area of the page, on the right side. i. Click the Add Portlets button as before for this area of the page. ii. In the Search For field, type Expense Claim Overview. Click Search. iii. In the Select column, click the check box. Then click OK to add the portlet. The process to add portlets is complete. All portlets are present on the page and are positioned where we want them.

Chapter 8. Deploying the voice portal application

123

4. Verify that all the portlets are positioned as required on the page and click Done. Figure 8-9 shows the layout with all the portlets added.

Figure 8-9 Layout with all the portlets added

8.4 Users, groups, and permissions This section explains how to add users and groups for this portal application. It also explains how to allow access to the user interface page and the portlets that the application contains. Unless a user has permission to access our application, they cannot use it. Two of our portlets can be operated in edit mode. We must ensure that users are given the correct permissions to use these portlets in edit mode. If a portlet has an edit mode, this does not mean that a user can access edit mode. We must configure the server to allow access.

8.4.1 Adding users and groups To add users and groups, we add a single group and two users who belong to that group. Later we modify the permission settings so that these users have access to the employee portal. We can give existing users or groups access to the page, but we do not cover this here because it entails using the same process for the users that we create. To manage users and groups, follow these steps: 1. In the left menu, click Access →Users and Groups. 2. Choose All portal user groups to see the list of existing groups.

124

Voice as a User Interface: Case Study and Lessons Learned

3. Add a new group that contains users that can access the employee portal page. Click the New group button, supply an ID of employeeportal and click OK. The new group should appear in the group list. 4. Add two users who belong to this specific group. Select the employeeportal group. a. Click the New user button. b. You see the Manage Users and Groups panel as shown in Figure 8-10. Call the user anything you choose. In this example, we call the first user itso1. i. For both the User ID and Password for our first user, use itso1. ii. Since the portal is voice enabled, provide the user with a Numeric User ID and Numeric Password. Specify the value 12345 for both. iii. For the First Name, use IBM. For Last Name, type itso1. iv. For Preferred language, choose English. v. Click OK to create the user. The new user should appear in the list of users for our new group.

Figure 8-10 The Manage Users and Groups: Provide user information page

c. Create the second user, who we call itso2. Click the New User button. i. ii. iii. iv. v.

For User ID and Password, use itso2 for our second new user. For the user’s Numeric User ID and Numeric Password, use 12346. For the First Name, use IBM. For the Last Name, type itso2. For Preferred Language, select English. Click OK to create the user. You should now see the two new users in the list.

This completes the creation of groups and users.

Chapter 8. Deploying the voice portal application

125

8.4.2 Configuring permissions Now that we have some users for our portal application, we can configured the permissions so that the users can access and use the application correctly. 1. In the left menu, click User and Group Permissions. 2. In the right pane, select User Groups. You should see the group we created previously, employeeportal, in the list. 3. In the Select Resource Type column, click the pencil icon next to the employeeportal group. 4. You see a list of Resource Types (Figure 8-11). We are only concerned here with the page and portlet resources. We must ensure that our users can access the page that we created previously and that they can also access and use the portlets on that page. In the Resource Types list, click Pages.

Figure 8-11 The Resource Types List

5. Click Context Root and then click My Portal. 6. The Employee Portal page should appear in the list. In the Assign Access column, click the key icon next to the Employee Portal entry. 7. A list of Roles appears with check boxes next to them. In the Explicitly Assigned column, select the check box next to the Editor role. Ensure that none of the other roles is selected. This allows the portlets on this page to be used in Edit Mode if they support it and the portlet permissions allow it. 8. Click OK. 9. On the next page, click Done. Note: If the user role is selected only, even if access to each portlet allows the edit mode to be used, then edit mode is unavailable.

126

Voice as a User Interface: Case Study and Lessons Learned

The Resource Types list should appear again. Although we allowed users in the group employeeportal to access the page, they do not have access to the portlets on the page unless we configure the permissions for the portlets to allow them access. We have four portlets in our application and must configure the permissions for each. 1. From the Resource Types list, select Portlets. 2. Since so many portlets exists, it’s easier to search for the desired portlet than to scroll through the list. In the Search For box, type E-mail Inbox and click Search to locate the E-mail Inbox portlet. 3. When it appears, in the Assign Access column next to the portlet, click the Key icon. 4. In the Explicitly Assigned column next to the Editor role entry, click the check box. 5. Click OK. We could have clicked the check box next to the User role but this does not allow us to access the portlet using both the view mode and the edit mode. 6. Repeat this process for each of the three remaining portlets. Here are the names to search for in each case: – ShareLookup – Add Expense – Expense Claim Overview In the case of ShareLookup, click the Editor role check box since this portlet can be used in both view and edit modes. In the case of Add Expense and Expense Claim Overview, click the User role check box. 7. After you configure all the portlets processed, click Done. This completes the configuration of permissions for our portlets.

8.5 The Share Lookup Web service The Share Lookup portlet is unable to provide any share values unless the Share Lookup Web service is available. Deployment of the Web service is not discussed here. See 7.2.3, “Importing the Web service WAR file” on page 104, for information about how to host the Web service in the WebSphere Studio Test Environment Server. Using the test environment server allows the Web service to be used by the portlet application.

8.6 Testing the Employee Portal Before testing the voice interface of the Employee Portal, test the portal through its HTML interface. When you know that the portal is operational, you can move onto looking at voice access. 1. Open a new instance of your Web browser and access the portal server as explained in 8.2, “Administering the Portal Server” on page 117. 2. Log in to the server using one of our new users, for example, itso1. The password is itso1. 3. After you log into the portal, from the menu, click Employee Portal. 4. You should see all four portlets on the display. Try the portlets to see if they operate as expected.

Chapter 8. Deploying the voice portal application

127

Note: The Share Lookup portlet does not operate correctly unless you have made the Share Lookup Web service available. Figure 8-12 shows the Employee Portal in action.

Figure 8-12 Employee Portal in action

8.7 Accessing the portal using the voice interface Now that you know the Portal is available, check to see that you can use the voice interface. The simplest way to test the voice interface is to use the Voice Toolkit Voice Browser. 1. Start WebSphere Studio Application Developer and choose the Voice Portlet Perspective. 2. Select Run →Run.... 3. In the Configurations tree, select the VoiceXML JavaServer Page node. 4. Click New to create a new configuration. Call the configuration Portal Server Voice Interface and use the URL: http://wvaa.demo.ibm.com:9081/wps/portal/.scr/Login

Here replace wvaa.demo.ibm.com with the correct value in your case. 5. Click Apply to store the new configuration. 6. Click Run to start the voice browser. When the voice browser starts, you should be able to interact with the portal using voice. Test the portal and check that it operates as expected through its voice interface.

128

Voice as a User Interface: Case Study and Lessons Learned

9

Chapter 9.

Voice Aggregator customization This chapter discusses the Voice Aggregator customization. It demonstrates what is possible to customize. The chapter starts with the basic customization techniques, and then progresses to a more advanced look at the architecture and possible modifications. It concludes with the modifications required to create the desired interface as detailed in Chapter 2, “Voice application design” on page 21.

© Copyright IBM Corp. 2004. All rights reserved.

129

9.1 Basic modifications This section discusses the usual modifications required in a normal installation of WebSphere Voice Application Access (WVAA). It is divided into the following sections: 򐂰 Prompt modification 򐂰 Built-in grammars 򐂰 Portlet title customization The property files mentioned are contained in \shared\apps\ VoiceAggregator\nls.

9.1.1 Prompt modification WVAA contains almost 150 voice segments for each language. Each voice segment also has an entry in a properties file that allows text-to-speech (TTS) to substitute for the audio file if required. When WVAA is integrated into a company, you may want to modify both the audio and TTS property files since the company may have a corporate voice that they want to use, or text that is not appropriate. For example, the first prompt states clearly, “Welcome to the IBM WebSphere Voice Portal.” For most applications, this would not be appropriate. Important: If modifications are made to either the property or audio files, then you must restart WVAA for the changes to take effect. Consider these tips when changing audio prompts: 򐂰 Use voice segments whenever possible and eliminate the need for TTS, because this increases end-user satisfaction. 򐂰 If one audio file is modified, and a different voice talent used, we recommend that you re-record the remaining audio segments to maintain a consistent voice throughout the application. 򐂰 If TTS and audio segments are used, tailor the TTS that is generated to be similar to the voice talent, minimizing the change in voice for the end caller.

TTS property files The property file used to generate the TTS is voiceAggregation.properties. This file contains the default prompts for the aggregator, which happen to be American English. Three additional files of the format voiceAggregator_.properties contain the prompts for the other supported languages.

Audio files Audio files can be found in \installedApps\\wps.ear\wps.war\ vxml\sound. Within the directory are four subdirectories that represent the supported languages. Users can simply modify these files to make the modifications. However, we recommend that you make a backup of the current files before you make any modifications.

9.1.2 Built-in grammars WVAA contains several global grammars that allow the caller to move execution, for example to the main menu or exit. During the design and usability studies, it may be determined that certain terminology is more appropriate than the default supplied.

130

Voice as a User Interface: Case Study and Lessons Learned

The default grammars are in voiceAggVXML2.properties (voiceAggVXML2_.properties for other supported languages). The files contain standard XML grammars. To modify them, make the required changes and restart the WVAA environment.

9.1.3 Portlet title customization This section describes a procedure to customize the voice portlet title, which includes the portlet audio name and the title grammar.

Title audio name When the WVAA aggregator produces the list of portlets available to the caller, users may complain that the output from the TTS is of unacceptable quality or simply that they want all prompts recorded by their voice talent. It is possible to record the title for the required portlets and copy these into /installedApps//wps.ear/wps.war/ vxml/titles/. The file name must be the title of the portlet. Encode any special characters according to the guidelines in Table 9-1. For example, a portlet title Hello World would have the file name Hello__WS__World.wav. Table 9-1 Portlet title encoding mechanism Name of the character

Character

Encoded character

white space

‘‘

‘__WS__’

ampersand

‘&’

‘__AMP__’

less than

‘’

‘__GT__’

apostrophe

‘’’

‘__APOS__’

quotation mark

‘”’

‘__QUOT__’

Title grammar WVAA by default generates a grammar from the available portlets so the caller can select the functionality. During the usability study, it may be determined that different utterances should be used to trigger the portlet. As such, the voiceCustomGrammar.properties (and voiceCustomGrammar_.properties for the other supported languages) are available. The file is a set of key value pairs. The key should be TitleGrammar.. The should be encoded using Table 9-1. For example a portlet title Hello World would have the key TitleGrammar.Hello__WS__World. The value should be a Speech Recognition Grammar Specification (SRGS) grammar fragment, which fits between the tag.

9.2 WebSphere Voice Application Access architecture WVAA is comprised of two components: 򐂰 VXML aggregator 򐂰 Numeric alias

Chapter 9. Voice Aggregator customization

131

9.2.1 VXML aggregator The VXML aggregator allows access in a user friendly manner to individual portlets for one or more voice enabled portlets, and provide a consistent look and feel while accessing each portlet function. The output of the aggregator is a VXML document that contains the required function. Creating the output follows the portal architecture model. Figure 9-1 shows the standard VXML aggregator template.

Theme Screen App Root doc

Skin

Screen Skin

Figure 9-1 Aggregator template for VXML documents

The VXML aggregator output contains a Theme, Screen, and Skins. Within the Aggregator, there are five different combinations of Theme, Screen, and Skins that build all the VXML outputs. Within the aggregation process, a document’s only requirement is a Theme and Screen. The skin and application root document (App Root doc) are optional. The directories that contain the corresponding resources for the VXML Aggregator are: 򐂰 Theme: \installedApps\host>\wps.ear\wps.war\themes\vxml 򐂰 Screen: \installedApps\host\wps.ear\wps.war\screens\vxml 򐂰 Skin: \installedApps\host\wps.ear\wps.war\skins\vxml Important: All of the files contained within these three directories are internal WVAA files. Incorrect modifications to the files could cripple the system. We recommend that you have IBM Services carry out any modifications. Within the VXML aggregator, only one Theme, called Default (Default.jsp), is available. It is included within all VXML documents created by the aggregator. This page determines if Autoplay (the ability to automatically move the caller to the first available portlet, instead of accessing functionality via the menu structure) should be enabled and sets certain global settings for the VXML document, such as the version number. It is unlikely that this file needs any modifications.

Login The first VXML document generated during a call is normally the Login page. It is comprised of the Default Theme, and, Login.jsp as the skin, as shown in Figure 9-2. The Login.jsp file contains the logic for the caller interaction. If the only modification required is the prompts (TTS or WAV files), then do not make any modifications to this file. All this information is contained in the property files, as explained in 9.1.1, “Prompt modification” on page 130. If modifications are required to the logical flow of the login process (such as implementing username and password confirmation for dual-tone multifrequency (DTMF)), then you must modify this file.

132

Voice as a User Interface: Case Study and Lessons Learned

Default.jsp

Login.jsp

Figure 9-2 VXML Login page components

Portal home When the caller has logged into Portal, in general, they see Portal Home. It provides a root menu structure that details the portlets and pages that are available to the user. This page contains both a skin for PortalHome.jsp and root document called PortalRoot.jsp, as shown in Figure 9-3.

Default.jsp PortalHome.jsp PortalRoot.jsp

Select Skin

skin/vxml/select/LayeredContainer.jsp

Figure 9-3 VXML Portal home page components

The files contain: 򐂰 PortalHome.jsp: Contains the header information for the generated VXML document. There is little reason why this document needs modification. 򐂰 PortalRoot.jsp: Contains the global event catch statements for the Portal Home page. Users may want to customize the behavior of the current event catch statements or define additional ones. 򐂰 LayeredContainer.jsp (within the select subdirectory): Contains the real logic used to present the portlets available to the user. If the only modification required is to the prompts (TTS or WAV files), then do not make any modifications to this file. All of this information is contained in property files, as explained in 9.1.1, “Prompt modification” on page 130. If modifications are required to the logical flow, then modify this file as well.

Select If the Portal page structure means that users first select a page and then see additional options before accessing a portlet, the Select Page is rendered with the available options. It is almost the same as Portal Home, except that the page has one small modification regarding the last accessed page. This allows the page to remember the current location in the Page tree structure. Similar to PortalHome.jsp, the Select.jsp does not contain any real logical flow. Therefore, there is little reason why this file ever needs modification. For information about the purpose Chapter 9. Voice Aggregator customization

133

of each file, see “Portal home” on page 133. Modifications that are made to LayeredContainer.jsp affect both Select and Portal Home.

Default.jsp Select.jsp PortalRoot.jsp

Select Skin

skin/vxml/select/LayeredContainer.jsp

Figure 9-4 VXML Select page components

Home The Home page is generated when the caller selects a portlet. This page is used to render the functionality of a single portlet, in a consistent framework. This page is created with the default skin and an Application Root document (PortletRoot.jsp), which contains a separate skin (PortletRoot skin) as shown in Figure 9-5.

Default.jsp Home.jsp PortletRoot.jsp

Default Skin

PortletRoot skin skin/vxml/portletroot/LayeredContainer.jsp

skin/vxml/LayeredContainer.jsp

Figure 9-5 VXML Home page components

Here is a summary of the files and their contents: 򐂰 Home.jsp: Contains the VXML tags and limited logic (contained within the portlet application). As such, it is unlikely to require any modification. 򐂰 PortletRoot.jsp: Contains the global event catch statements when a portlet is active. Users may want to customize the behavior of the current event catch statement or define additional ones. 򐂰 LayeredContainer.jsp (contained within the portletroot sub-directory): Contains the logic that the grammars required to move from one portlet to another, without returning to the main menu. For instance, if the user is executing the Expense portlet, they can simply say “E-mail” to automatically jump to the e-mail portlet. Unless some advanced customization is required, then this file is not modified. 򐂰 LayeredContainer.jsp (default skin): Adds some default behavior in case there is a problem rendering the portlet. It is unlikely that modifications are required for this file, since

134

Voice as a User Interface: Case Study and Lessons Learned

in general the portlet application is rendered. Also the additional material added is not required.

Exit The Exit page is generated when the caller requests to exit the application. It confirms that the caller wants to exit the system. This page also contains an application root document called PortalRoot.jsp, but does not contain a skin. Figure 9-6 shows the components.

Default.jsp Exit.jsp

PortalRoot.jsp

Figure 9-6 VXML Exit page components

This page contains the following files: 򐂰 Exit.jsp: This file contains all the logic to confirm that the caller wants to exit Portal. If the only modification required is the prompts (TTS or WAV files), then do not make any modifications to this file. All of this information is contained in property files as described in 9.1.1, “Prompt modification” on page 130. If modifications are required to the logical flow, then you must also modify this file. 򐂰 PortalRoot.jsp: This is the same file that is used in the Portal Home and Select pages. For more information, see “Portal home” on page 133.

9.2.2 Numeric alias When portal security is enabled, callers need to validate themselves before services are available. On the telephone, is alphanumeric recognition is known to be poor, it is not sensible to use standard user names and passwords. There are two options: 򐂰 Enable only numeric user names and passwords across the entire portal. 򐂰 Install a numeric alias that allows normal portal passwords (for a non-voice interface) and a corresponding numeric user name and password for the voice interface. If a numeric alias is installed, then several additional portal features need to be installed, such as DB2® and IBM Directory Service (as shipped with Portal Enable).

9.3 Modifications to property files In Chapter 2, “Voice application design” on page 21, a call flow was created for the login and Main Menu sections of the voice application. The general logical flow of the aggregator is retained, but the prompts and grammars are modified. This section looks at the modifications required for the property files to enable these changes.

Chapter 9. Voice Aggregator customization

135

9.3.1 Enabling the TTS prompts and not the audio files Since no voice talent was available during this project, all prompts were established as TTS. The following steps detail a simple process to enable TTS prompts generically for all WVAA created menus and forms. 1. Open Microsoft® Windows® Explorer and change to the \installedApps\wvaa\wps.ear\wps.war\vxml\sounds directory. 2. Rename all directories to old.original name. 3. Create new empty directories with the original names. The directory structure should be the same as shown in Figure 9-7.

Figure 9-7 Directory structure for the sound directories

9.3.2 Modifying the property files Follow these steps: 1. Change directories to \shared\app\VoiceAggregator\nls. 2. Back up the following files: – voiceAggregation.properties – voiceAggVXML2.properties – voiceCustomGrammar.properties 3. Copy the new files (supplied with this Redpaper; see Appendix A, “Additional material” on page 143) from the WVAA Customization directory, replacing the existing files. 4. The changes incorporated in voiceAggregation.properties are shown in Table 9-2. These changes were made based on a design from earlier in this paper. Unfortunately due to the current implementation of WVAA, separate HELP, NOMATCH, or NOINPUT fields were not allowed. Therefore the design had to be modified to allow HELP, NOMATCH, and NOINPUT to be the same. Note: Further modifications can be made to the underlying WVAA code to allow this modification. However this is not within the scope of this document. Contact IBM Services if this is required. Table 9-2 Modification to voiceAggregation.properties

136

Section

Identifier

New message

Login

login.greeting

Welcome to Employee Portal

Login

login.userid_i2

Please enter your user I D

Login

login.verify_id_i

Is your user I D {0}?

Login

login.pin_i2

Please enter your password?

Voice as a User Interface: Case Study and Lessons Learned

Section

Identifier

New message

Login

login.verify_pin_i

Is this your password {0}?

Portal Home/Selection

home.greeting

What service do you want

Portal Home/Selection

home.select.i

Please say

Portal Home/Selection

exit.goodby

Thank you for using the employee portal. Goodbye

Portal Home/Selection

app.select.h1

You can choose from Reading your E-mail, Managing your Expenses, or Checking company share price

Portal Home/Selection

app.select.apps

Please say

Portal Home/Selection

page.select.h2

You can choose from Reading your E-mail, Managing your Expenses, or Checking company share price

Portal Home/Selection

root.select.cont

Portal Home/Selection

page.select.i

Please say

Portal Home/Selection

page.select.h3

To have your e-mail read say, “E-mail.” To manage your expenses, say “Expenses.” To check shares say, “Shares.”

Portal Home/Selection

page.select.h3_1

Portal Home/Selection

home.select.h1e

5. The changes incorporated in voiceAggVXML2.properties are shown in Example 9-1. These modifications are required to customize WVAA, so the caller can use different utterances for global commands. For example, if the caller wants to return to the main menu, these changes allow main menu to be used instead of Portal Home. Again, these modifications were made based on the design developed earlier in this paper. Example 9-1 Modifications to voiceAggVXML2.properties ...... nav_startover_gram = please start over please go to portal home main menu ....... nav_hangup_gram = hang upGoodbyeexit ....... nav_repeat_gramn = "7" ....... nav_help_gramn = "0" ......

Chapter 9. Voice Aggregator customization

137

6. The changes incorporated in voiceCustomGrammar.properties are shown in Example 9-2. These modifications change the default utterances that the caller can use to trigger the execution of the portlet. Example 9-2 Modifications to voiceCustomGrammar.properties ....... TitleGrammar.EmailInbox = Email TitleGrammar.ShareLookUp = Shares TitleGrammar.Add__WS__Expense = Expenses

7. Restart Portal for the changes to take effect. These modifications changed the Prompts during the main menu and the grammars that are available throughout WVAA. However the portlet title was not modified, so the caller will still believe that the utterances used to access a portlet are the default. To modify the portlet title, you can either record an audio segment or use the more advanced option to enable WVAA to accept a properties file containing TTS strings. We discuss the second option in the following section.

9.4 Dynamic portlet titles By default, WVAA does not allow users to modify the TTS string used for the portlet titles. However to demonstrate the flexibility of WVAA, modifications to / installedApps/host/wps.ear//wps.war/skin/vxml/select/LayeredContainer.jsp were made to implement this solution. Normally these modifications are completed only by IBM Services.

9.4.1 Modifications to allow portlet titles To allow portlet titles, make these modifications: 1. Make a backup copy of \installedApps\wvaa\wps.ear\wps.war\skins\vxml \select\LayeredContainer.jsp 2. Copy LayeredContainer.jsp.TTS.ENABLED into \installedApps\wvaa\ wps.ear\wps.war\skins\vxml\select. Rename the file to LayeredContainer.jsp, replacing the existing file. 3. Copy TTSTitles.properties into \shared\app\VoiceAggregator\nls. 4. Restart the Portal environment. The prompts announce the menu options correctly, and not with the default behavior of the standard portlet title. The most important change is that the Expense Overview portlet is no longer announced as an option. This was required in Chapter 2, “Voice application design” on page 21, where we decided that the caller should have direct access only to the add expense portlet.

9.4.2 Looking at the files more closely This section provides a closer look to the files involved such as LayeredContainer.jsp and TTSTitle.properties.

LayeredContainer.jsp The changes include a script to create the TTS string for the available portlets, as shown in Example 9-3. Within the script, it determines if a TTS string exists within the

138

Voice as a User Interface: Case Study and Lessons Learned

TTSTitles.properties file. If it does, it adds this to the main TTS string, checking to see if it is the second last portlet with a TTS string for the portlet title. The TTS portlet title is retrieved from the TTSTitles.properties file using the standard WebSphere Portal Server (WPS) engine tag library (wps:text). All this infrastructure is set up as the existing code uses this functionality. This script is not production ready. If any such implementation is required, contact IBM Services. A large limitation of the script is the no checking for an audio file. Therefore, the TTS string is the only option. Example 9-3 Script from LayeredContainer.jsp

The script is referenced later in the JSP, where the caller is notified of the available functions, as shown in Example 9-4. Example 9-4 Reference to Script in LayeredContainer.jsp

TTSTitles.properties TTSTitles.properties is a simple flat file that contains key value pairs, as shown in Example 9-5. Each portlet title needs to be specified in this file. The method for removing a portlet title from the main menu is to leave the value empty (as shown with Expense__WS__Claim__WS__Overview). The standard WVAA encoding for white spaces within portlet titles has been implemented. However other encoding, such as __AMP__, has not been implemented. Example 9-5 TTSTitles.properties # # # # # #

Licensed Materials - Property of IBM 5724-I12 (C) Copyright IBM Corp. 2001, 2002, 2003, 2004 All Rights reserved.

# ===== Login ==================================================== #-- greeting Email__WS__Inbox = Email ShareLookUp = Shares Add__WS__Expense = Expenses Expense__WS__Claim__WS__Overview =

140

Voice as a User Interface: Case Study and Lessons Learned

9.5 Implementing confirmation based on confidence level This section describes the modifications that are required for implementing confirmation, depending on the confidence level of the Recognition Engine. 1. Start WebSphere Studio, and change to the Voice perspective. 2. Create a new Voice Project by selecting File →New →Voice Project. 3. For the Project name, type Login Modifications and click Finish. 4. From the Navigator Panel, select the project, right-click, and select Import. 5. From the Import window, select File system and click Next. 6. Click the Brower button to import the /AppServer/installedApps/ /wps.ear/wps.war/screens/vxml/Login.jsp file (see Figure 9-8).

Figure 9-8 Login.jsp

7. Click Finish. 8. In the Navigator window, double-click Login.jsp. 9. You see the Login.jsp in the main pane. After the file is loaded, click the Source tab in the bottom left corner of the main pane. 10.Move down the file to line 260. The code in Example 9-6 determines what input mode is being used. If it is DTMF, the caller is asked for their PIN. If it is Voice, then the user ID entered is read back to the caller and confirmation requested before the PIN is entered. We modify this logic so confirmation is requested only if the confidence level is below 50. If it is above 50, then it takes the DTMF route and asks the caller for their PIN immediately. Example 9-6 Testing input mode dtmf userid has a value of

Chapter 9. Voice Aggregator customization

141

11.Add an if statement to the logic that determines if the confidence level is greater than 50. If so, move execution to collecting the PIN, as shown in Example 9-7. Example 9-7 Testing confidence level dtmf userid has a value of

12.It is also possible to implement the same modification for the PIN confirmation (line 439). Example 9-8 shows these modifications. Example 9-8 PIN confirmation dtmf pin has a value of

13.Save the modifications and back up the existing Login.jsp file. 14.Export the new Login.jsp, overwriting the existing file in WAS_INSTALL/AppServer/ installedApps/HOST_NAME/wps.ear/wps.war/screens/vxml/Login.jsp. a. In the Navigator pane, select the Login.jsp file, right-click, and select Export. b. From the menu, select File System and click Next. c. Click the Browse button and change the directory to WAS_INSTALL/AppServer/ installedApps/HOST_NAME/wps.ear/wps.war/screens/vxml. d. The system may ask you to confirm the export since a file needs to be overwritten. Type Y. Note: You may want to ensure that a backup has already been taken. 15.Restart WebSphere Voice Access Aggregator (WVAA) for the changes to take effect.

142

Voice as a User Interface: Case Study and Lessons Learned

A

Appendix A.

Additional material This Redpaper refers to additional material that can be downloaded from the Internet as described below.

Locating the Web material The Web material associated with this Redpaper is available in softcopy on the Internet from the IBM Redbooks Web server. Point your Web browser to: ftp://www.redbooks.ibm.com/redbooks/REDP3893

Alternatively, you can go to the IBM Redbooks Web site at: ibm.com/redbooks

Select the Additional materials and open the directory that corresponds with the Redpaper form number, REDP3893.

Using the Web material The additional Web material that accompanies this Redpaper includes the following files: File name redp3893.zip

Description Zipped code samples

System requirements for downloading the Web material The following system configuration is recommended: Hard disk space: Operating System: Processor: Memory:

1 MB minimum Windows 1 GB or higher 512MB

© Copyright IBM Corp. 2004. All rights reserved.

143

How to use the Web material Create a subdirectory (folder) on your workstation, and unzip the contents of the Web material zip file into this folder.

144

Voice as a User Interface: Case Study and Lessons Learned

Related publications The publications listed in this section are considered particularly suitable for a more detailed discussion of the topics covered in this Redpaper.

IBM Redbooks For information about ordering these publications, see “How to get IBM Redbooks” on page 146. Note that some of the documents referenced here may be available in softcopy only. 򐂰 Adding Voice to Your Portlet Applications, REDP-3878 򐂰 IBM WebSphere Portal V5: A Guide to Portlet Application Development, SG24-6076 򐂰 IBM WebSphere Portal for Multiplatforms V5 Handbook, SG24-6098 򐂰 IBM WebSphere Voice Systems Solutions, SG24-6884

Other publications These publications are also relevant as further information sources: 򐂰 WebSphere Voice Server V311 SDK VoiceXML Programmer's Guide, G210-1542 򐂰 WebSphere Voice Server for Multiplatforms V4.2 VoiceXML Programmer's Guide, G210-1563 򐂰 Balentine, Bruce. and Morgan, David. How to Build a Speech Recognition Application: Style Guide for Telephony Dialogues. Enterprise Integration Group, Second Edition, December 2001. ISBN 0967127823. 򐂰 Gadepalli, Venkata and Iyengar, Ashok K. WebSphere Portal Primer. IBM Press, September 2003. ISBN 1931182132. 򐂰 Gardner-Bonneau, Daryle. Human Factors and Voice Interactive Systems. Kluwer Academic Publishers (March 1, 1999). ISBN: 0792384679. 򐂰 Schneiderman, Ben. Designing the User Interface. Pearson Addison Wesley, Third Edition, July 1997. ISBN 0201694972. 򐂰 Weinshenck, S. and Barker, D. Designing Effective Speech Interfaces. Wiley, February 2000. ISBN 0471375454. 򐂰 Lewis, J. Prototyping the conversion from a directed dialog speech user interface to a natural commands user interface. TR 29.3636. Boca Raton, Florida: IBM Corporation 2003. http://drjim.0catch.com/vxmlproto2-ral.pdf

򐂰 Lewis, J. Prototyping best-practice speech user interfaces with VoiceXML 2.0 and the IBM VoiceXML Toolkit. TR 29.3732. Boca Raton, Florida: IBM Corporation 2004. http://drjim.0catch.com/vxml20proto-ral.pdf

© Copyright IBM Corp. 2004. All rights reserved.

145

Online resources These Web sites and URLs are also relevant as further information sources: 򐂰 Giving Voice to the Web, presentation by Max Froumentin http://w3c.dstc.edu.au/presentations/2004-05-04-voice-web

򐂰 IBM Everyplace® Toolkit http://www-3.ibm.com/pvc/products/mobile_apps/everyplace_toolkit.shtml

򐂰 IBM HTTP Server http://www-306.ibm.com/software/webservers/httpservers/

򐂰 IBM WebSphere Portal for Multiplatforms http://www-306.ibm.com/software/genservers/portal/

򐂰 IBM Voice Toolkit for WebSphere Studio http://www-3.ibm.com/software/pervasive/products/voice/voice_toolkit.shtml

򐂰 IBM WebSphere Application Server http://www.ibm.com/software/webservers/appserv/

򐂰 WebSphere Voice Application Access InfoCenter at: http://publib.boulder.ibm.com/pvc/wvaa/50/en/InfoCenter/

How to get IBM Redbooks You can search for, view, or download Redbooks, Redpapers, Hints and Tips, draft publications and Additional materials, as well as order hardcopy Redbooks or CD-ROMs, at this Web site: ibm.com/redbooks

Help from IBM IBM Support and downloads ibm.com/support

IBM Global Services ibm.com/services

146

Voice as a User Interface: Case Study and Lessons Learned

Back cover

®

Voice as a User Interface Case Study and Lessons Learned

Redpaper Learn the basis for designing the voice user interface and voice portlets Access secure backend enterprise applications and Web services Customize WebSphere Voice Application Access

This IBM Redpaper targets speech application developers and architects who want to design and develop voice portlet applications. It explores best practices and focuses on general guidance for building good voice-enable user interfaces using IBM WebSphere Studio, Portal Toolkit and the Voice Toolkit.

INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION

The Redpaper includes sample scenarios that describe the advanced functions that are available in voice portlet applications. These advanced functions include messaging for portlet-to-portlet communications, single signon (SSO) to access secure back-end applications, and Web service access.

BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE

In addition, this Redpaper offers useful information to help customize the voice aggregator in WebSphere Voice Application Access. It includes basic customization techniques as well as an advanced look at the architecture and possible modifications to suit your voice portlet applications. Prior to reading this paper, you must have a basic knowledge of VoiceXML, related standards, voice portlet applications, and Java technologies.

IBM Redbooks are developed by the IBM International Technical Support Organization. Experts from IBM, Customers and Partners from around the world create timely technical information based on realistic scenarios. Specific recommendations are provided to help you implement IT solutions more effectively in your environment.

For more information: ibm.com/redbooks