Tellme More - Mother of Perl | 2

Tellme More

VoiceXML Basics

XML Rules

Since VoiceXML is XML, we must adhere to the basic XML rules.
Without going into excruciating detail, you should adhere to the following
basic XML guidelines:

Must encode default entities. Default entities are reserved
characters that can't be put into XML directly, but are entered using special
codes. These reserved characters are <,
>, &, ', and
". They are encoded respectively like so:
&lt;, &gt;,
&amp;, &apos;, and
&quot;.

Must have a root element. In this case, the root element is
vxml.

Elements must be properly nested. Nesting requires that you
close tags in the same order you opened them or else you will get an error. Web
browsers are forgiving with HTML, but XML parsers are not.

Hello World

There are 47 elements (or tags) in the VoiceXML format compared to
91 for HTML. VoiceXML is capable of something as simple as delivering content
over the phone or as complex as a full-fledged E-Commerce application. No
introduction is complete without a Hello World example.

The example above will synthesize "Hello World!" and then exit. Go
ahead and try it right now by calling 1-800-555-tell and then 1-73759. Then
select 1 from the menu options.

Fortunately, not all VoiceXML dialogs have to be synthesized. We
could have also played a recording of someone saying "Hello World" by including
an audio element with a src attribute
containing the url to the audio file.

Dialogs

Each VoiceXML document contains one or more dialogs. There are two
types of dialogs, forms and menus. A
form collects a user's inputs from fields, just like an HTML form. Menus
present a list of choices that the user can select from, similar to a list of
links that a user would select from on a Web site. More advanced applications
will contain multiple dialogs and possibly even sub-dialogs.

For example, when you dial the number on the back of a credit card,
it might ask you to enter your credit card number and your social security
number or zip code. This is an example of a form, because the application is
gathering information from you via your touch-tone phone. This information is
submitted to the application, which then might give you a list of options.
That's an example of a menu dialog.

By default on Tellme.com, if you create a VoiceXML document that
contains multiple forms, it will execute each form in the order in which they
occur. For example, let's add a second form to our Hello World example and see
what happens.

Goto

Sometimes you may want to skip from one form to another in a
document, but not sequentially. This is possible via the
goto element. With it, you can skip to another location in
the current document, or even in a separate document. As a simple example,
we'll add a third form to our Hello World example that skips from the first to
the third form within the document.

Prompts

At some point, you're probably going to want to get input from the
user. This is where the prompt element comes in. The
prompt element synthesizes the text contained in the element and waits for the
user to provide input.

The code above will attempt to play the pin.wav file.
You're probably wondering why there's text in addition to the audio file . In
the case that Tellme cannot retrieve the audio file, it will synthesize the
text as a last resort, therefore, it's a good idea to include the text even
when you're linking to an audio file.

The code above is not a demo on the Mother of Perl Tellme
extension. That's because the code isn't ready to run yet. If you tried to run
it as is, it would prompt for your name and then report that an error had
occurred. This is because we have to add additional logic to handle user input
and error conditions. We'll cover these issues in the next three
sections.