Web Developer's Virtual Library: Encyclopedia of Web Design Tutorials, Articles and Discussions


WDVL Newsletter

Active Server Pages
JSP/Java Servlets
Microsoft SQL Server
Daily Backup
Dedicated Servers
Streaming Audio/Video
24-hour Support    

jobs.webdeveloper.com

Hiermenus


e-commerce
Partner With Us















Developer Channel
FlashKit.com
JavaScript.com
JavaScriptSource
Developer Jobs
ScriptSearch
StreamingMediaWorld
Web Developer's Journal
Web Developer's Virtual Library
WebDeveloper.com
Webreference
Web Hosts
XMLfiles.com

internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers


VoiceXML Stylesheet - Page 5

November 29, 2001

Note that the stylesheet is designed to produce a single VoiceXML document containing just one user's data. So, its top-level template only matches documents where the top-level attribute export_type is set to single. The indent attribute on the <xsl:output> tag will produce a well-formatted result document that will be easier for a human brain to examine.

<?xml version = "1.0"?>
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="ISO-8859-1" indent="yes"/>
<xsl:template match="myrubberbands[@export_type='single']/customer_record">
<vxml version="1.0">
<meta name="author" content="Underpaid Myrubberbands Engineer"/>
<meta name="copyright" content="Copyright (C) 2001 Myrubberbands.com"/>

[The colored lines above are one line. They have been split for formatting purposes.]

The next block illustrates one way XSL can generate elements with an attribute having dynamic content: the <xsl:element> construct.

<xsl:element name="meta">
  <xsl:attribute name="name">description</xsl:attribute>
  <xsl:attribute name="content">Voice Interface for #<xsl:value-of
 select="customer/@id"/>
  </xsl:attribute>
</xsl:element>

We will need to set up some variables for use in the VoiceXML document. First off, we grab the user's Automatic Number Identification (ANI) and Dialed Number Identification Service (DNIS) for later use. These correspond to the phone number that originated the call (analogous, but not identical to, the consumer caller ID service) and the number that the user dialed. The implementation of these is system dependent, and the data may not be available for all calls in any case. They are included here mainly for illustration. In a real application, the ANI can be used for auto-identification of the user. The form_pointer variable will be used for navigation later.

<var name="customer_ani" expr="session.telephone.ani"/>
<var name="customer_dnis" expr="session.telephone.dnis"/>
<var name="session_error_count" expr="0"/>
<var name="form_pointer" expr="'mainMenu'"/>
<var name="user_command" expr="''"/>

Next come the form level help dialogs, which here attempt to mimic typical responses likely from a real life call center, contrary to the advice of Chapter 6:

<help count="1">
   What seems to be the trouble?
   <reprompt/>
</help>
<help count="2">
   Come on - isn't this easy enough to understand?
   <reprompt/>
</help>
<help count="3">
   Hey <xsl:value-of select="customer/firstname"/>,
     are you stupid or something?
   <reprompt/>
</help>

[The colored lines above are one line. They have been split for formatting purposes.]

The design specifies that the main menu command is always available. We can implement that with a global VoiceXML <link> element:

<link next="#mainMenu">
   <grammar type="application/x-jsgf"> main menu </grammar>
</link>

Again, we use the information from the XML file to customize the prompts for the user. This form welcomeMessage corresponds to the "welcome message" box in the interface design diagram earlier.

<form id="welcomeMessage">
  <block>
     <prompt bargein="false" timeout="0.1s">
     Hello, <xsl:value-of select="customer/firstname"/>.
     Welcome to the my rubber bands dot com voice order status system.
     </prompt>
    <goto next="#mainMenu"/>
  </block>
</form>

Creating a Markup Language (Con't) - Page 4
Early Adopter VoiceXML
VoiceXML Stylesheet (con't) - Page 6


Up to => Home / Authoring / Languages / XML / Adopter




Jupiter Online Media: internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and Jupiter Online Media

Jupitermedia Corporate Info


Legal Notices, Licensing, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers