Home arrow XML arrow Page 4 - Sample Chapter: Early Adopter VoiceXML
XML

Sample Chapter: Early Adopter VoiceXML


Ever wondered what VoiceXML is? In this sample chapter from Wrox we will learn a bit more about it and see a working example of VoiceXML in action.

Author Info:
By: Tim Pabst
Rating: 5 stars5 stars5 stars5 stars5 stars / 3
September 04, 2002
TABLE OF CONTENTS:
  1. · Sample Chapter: Early Adopter VoiceXML
  2. · VoiceXML With XSLT (HTML and WML)
  3. · System Architecture
  4. · System Architecture (contd.)
  5. · Generating MyRubberbandsML
  6. · Generating MyRubberbandsML (contd.)
  7. · Generating MyRubberbandsML (contd.)
  8. · Running the Stylesheet
  9. · Summary

print this article
SEARCH DEVARTICLES

Sample Chapter: Early Adopter VoiceXML - System Architecture (contd.)
(Page 4 of 9 )

In this case, the database schema allows the customer_address table to store real physical addresses like billing and shipping addresses, or e-mail address for alternate methods of customer contact. Hence, the <customer_address> element can contain the optional <email> element.

<customer_address address_type="Ship To Address"
customer_id="1">
<address1>4321 La Place Ct</address1>
<address2>Ste 306</address2>
<city>Carlsbad</city>
<state_or_prov>CA</state_or_prov>
<postalcode>92008</postalcode>
<email></email>
<phone>7605551212</phone>
</customer_address>


Since the main objective of the voice application is to allow the user access to their order history and status information, it makes sense to include the history inside the <customer_record> scope. In this case, because we will need to enunciate the order time, and because we'd rather not use XSL's limited text processing capabilities, we'll add the attribute sayas to the <order_date> element. This provides a pronunciation that can be used with the VoiceXML <sayas> tag for TTS. However, the desired pronunciation of the date and time cannot be derived from the database alone, as addressed in the section Generating MyRubberbandsML.

<order_history
customer_id="1">
<order id="1">

<customer_address address_type="Ship To Address"
customer_id="1"/>
<order_date
sayas="May 18, 2001 at 16 17 hours">

2001-05-18T16:17:16
</order_date>
<order_status>Processing</order_status>

<tax>0.09</tax>

<shipping_charge>0.4</shipping_charge>

<total_charge>2.48</total_charge>
<product
id="1" quantity="3"/>
<product
id="3" quantity="1"/>
</order>
</order_history>


Finally, to provide the user with detailed order information, the full product name and description must be available. This will also allow the user to ask for a product list, and eventually we can perhaps extend the interface to enable products to be ordered by voice. Note that the <product_list> is not associated with any particular <customer_record>.

Also note that, ideally, the <product_list> wouldn't actually be in the same document as the customer data. However, we'll keep everything in one file here to avoid the issue of linking between documents. It might amuse us to picture the harried developers reaching the same conclusion to save time and give themselves some chance of meeting their beloved boss's deadline. Later on, they will no doubt want to refine the process and generate smaller XML documents that can be processed more quickly.

</customer_record>
<product_list>
<product id="1" name="MIXED1000"
price="1.99">
Mixed Bag of 1000 Rubber Bands</product>
<product id="2"
name="MIXED5000" price="4.09">
Mixed Bag of 5000 Rubber Bands</product>
<product id="3"
name="RED1000" price="2.19">
Bag of 1000 Red Rubber Bands</product>
<product id="4"
name="RED10000" price="17.49">
Bag of 10000 Red Rubber Bands</product>
<product id="5"
name="BLUE1000" price="0.99">
Bag of 1000 Blue Rubber Bands</product>
<product id="6"
name="BLUE10000" price="8.99">
Bag of 10000 Blue Rubber Bands</product>
</product_list>
</myrubberbands>


This example is formatted to fit the space above, and for readability, adds quite a bit of whitespace between <product></product> tags that would probably not occur in a real document.
blog comments powered by Disqus
XML ARTICLES

- Open XML Finally Supported by MS Office
- XML Features Added to Two Systems
- Using Regions with XSL Formatting Objects
- Using XSL Formatting Objects
- More Schematron Features
- Schematron Patterns and Validation
- Using Schematron
- Datatypes and More in RELAX NG
- Providing Options in RELAX NG
- An Introduction to RELAX NG
- Path, Predicates, and XQuery
- Using Predicates with XQuery
- Navigating Input Documents Using Paths
- XML Basics
- Introduction to XPath

Watch our Tech Videos 
Dev Articles Forums 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
Contact Us 
Site Map 
Privacy Policy 
Support 

Developer Shed Affiliates

 




© 2003-2017 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap
Popular Web Development Topics
All Web Development Tutorials