|
In this monthly column, an industry expert will answer common questions about VoiceXML and related technologies. Readers are encouraged to submit questions about VoiceXML, including development, voice-user interface design, and speech technology in general, or how VoiceXML is being used commercially in the marketplace. If you have a question about VoiceXML, e-mail it to and be sure to read future issues of VoiceXML Review for the answer.
Q: How do I use data from a Microsoft Access database in a VoiceXML application?
A: To use data from any DBMS in a VoiceXML application, you'll need to extract the data and format it in a syntax and place it in a location that a VoiceXML interpreter can fetch, parse, and execute. You have a number of options including the following:
- Periodically export the data from the DBMS into VoiceXML or JavaScript or some intermediary format that can be further transformed, and place the exported data on a Web server accessible to the VoiceXML interpreter.
- Use an API to extract and format the data directly from the DBMS on demand. The VoiceXML interpreter makes an HTTP request to a server-side script
that in turn fetches the data and formats it for use in your voice application.
When deciding between these two options, consider the following:
- How frequently does the data used by your voice application change?
- Is it vital that users of your voice application have access to the most up to date information?
- Does your DBMS scale to handle the additional demand from users of your voice application?
- Are you prepared to secure the data in your DBMS from hackers?
If your answers to these questions are "Infrequently", "No", "No", and "No", then the first option is probably good enough.
For the purposes of this article, I'll assume that's the case. In a future column, I'll tackle the second option.
Some sample data
To help put the solution into perspective, let's define two schemas. The first describes a simple employee table;
Field Name |
Type |
Description |
emp_id |
AutoNumber |
The employee's unique id (primary key) |
ssn |
Text (9) |
Social Security Number (also unique) |
fname |
Text (50) |
first name |
lname |
Text (50) |
last name |
phone |
Text (15) |
telephone number |
dept_id |
Integer |
foreign key into the department table |
Field Name |
Type |
Description |
dept_id |
AutoNumber |
Department's unique identifier. (primary key) |
name |
Text (50) |
Name of the department. |
phone |
Text(15) |
Telephone number to the department's administrative assistant. |
Here are a few sample records from the employee table:
emp_id |
ssn |
fname |
lname |
phone |
dept_id |
1 |
022456789 |
"Warren" |
"Peace" |
"2121234567" |
1 |
2 |
012459999 |
"Jane" |
"Doe" |
"4251234567" |
1 |
3 |
046128877 |
"Jack" |
"Frost" |
"2061234567" |
2 |
4 |
032576632 |
"Sally" |
"Toledo" |
"6501234567" |
3 |
Here are a few sample records from the department table:
dept_id |
name |
phone |
1 |
"Sales" |
"6509111001" |
2 |
"Accounting" |
"6509111002" |
3 |
"Product Support" |
"6509111003" |
Exporting the data as XML
We'll use some of the data in these tables to build a simple company "voice dialer" application.
To do this, we'll need to extract the data to build two key components of our application: the voice user interface and the grammar.
Let's start by manually exporting the employee table to an XML file. Microsoft Access 10 makes this trivial:
- Open your database (.mdb).
- Select the table you want to export.
- Choose the "Export..." item under the "File" menu.
- In the Export Table dialog, type a name in the "file name" textbox, navigate your file system to an appropriate location, choose "XML documents" from the "Save as type" dropdown, and click "Export".
MS Access saves the entire contents of the table to an XML document. Let's take a look at how the employee table above looks:
1
022456789
Warren
Peace
2121234567
1
2
012459999
Jane
Doe
4251234567
1
3
046128877
Jack
Frost
2061234567
2
4
032576632
Sally
Toledo
6501234567
3
5
044567722
Melvin
Blank
6509001234
3
|
The basic structure of the generated XML document is fairly easy to decipher.
- The root document element's name is "dataroot".
- Each employee record is contained within an "employee" element.
- Each field in the employee table maps directly to an element by the same name.
Follow the steps above to export the department table to an XML file.
Transforming the data using XSLT
Given the data in XML format, the next step is to get this data into a format that a VoiceXML browser can interpret.
We could easily manipulate the data directly using any XML parser via a SAX or DOM interface.
Given that we want to transform the data from one schema to another, there's a better solution: XSL Transformations (XSLT).
If you're not familiar with XSLT, the XML community has made sure that you have numerous resources at your disposal. Of course, the definitive resource is the specification (http://www.w3.org/TR/1999/REC-xslt-19991116). If you find the spec intimidating, however, check out the following:
http://www.xml.com/pub/a/2000/08/holman/index.html
The best thing about XSLT, in addition to its ease of use, is the number of free XSLT processors available. Here are a few examples:
libxslt (http://www.xmlsoft.org)
Sablotron (http://www.gingerall.org)
javax.xml.transform (http://javasoft.sun.com)
MSXML (http://msdn.microsoft.com/xml)
Since MSXML comes pre-installed with Windows, we'll use that processor.
Continued...
back to the top
Copyright © 2001-2002 VoiceXML Forum. All rights reserved.
The VoiceXML Forum is a program of the
IEEE Industry Standards and Technology Organization (IEEE-ISTO).
|