Home > Articles > Web Services > XML

  • Print
  • + Share This
This chapter is from the book

This chapter is from the book

3.6 choice

Element type

choice

Attributes

accept (2.0) | caching (1.0) | dtmf | event | expr | fetchaudio | fetchhint | fetchtimeout | maxage (2.0) | maxstale (2.0) | next

Parents

menu

Children

PCDATA | audio | break | emphasis | enumerate | grammar | mark | paragraph | phoneme | prosody | say-as | sentence | value | voice

Description

Declares one of the choices in a menu. A choice element can have an associated speech grammar fragment and/or DTMF grammar fragment. It can also be used to reference an URI to go to when selected. The contents of a choice are used to form the enumerate prompt string.

Language model


03mod06.gif


DTD

<!ELEMENT choice (%audio; | grammar | %tts;)* >
<!ATTLIST choice
  %cache.attrs;
  %accept.attrs;
  dtmf           CDATA        #IMPLIED
  event          %event.name; #IMPLIED
  fetchaudio     %uri;        #IMPLIED
  %next.attrs; >

Attributes

accept : (exact | approximate)

Text of the choice element with the value exact must match the exact phrase, while with the value approximate it can match a subset of the phrase.

caching : (fast | safe)

Offers the same functionality as fetchhint.

dtmf : CDATA

The dtmf sequence for this choice.

event : event.name

Specifies an event to be thrown instead of going to a next.

expr : expression

Specifies an expression to evaluate instead of going to a next.

fetchaudio : uri

The URI of the audio to play while fetching a document.

fetchhint : (prefetch | safe)

Indicates whether the interpreter may prefetch the destination document specified by this element's next attribute. A value of prefetch indicates the resource may be retrieved at the time the containing VoiceXML document is retrieved. A value of safe indicates that the resource specified by this element should not be prefetched, but should instead be retrieved at the time that the interpreter executes this element.

fetchtimeout : duration

The interval to wait for the content to be returned before throwing an error.badfetch event. If this attribute is not specified, the interpreter derives a value from the most locally scoped fetchtimeout property.

maxage : integer

Indicates the maximum allowable age of the fetched document in seconds. If the cached copy is older than the specified maxage, a new copy will be fetched when the interpreter executes this element. If this attribute is not specified, the interpreter derives a value from the most locally scoped maxage property. If no maxstale attribute is defined and it is impossible to fetch a new copy on the content the interpreter will throw an error.badfetch instead of using stale content.

maxstale : integer

Indicates that the interpreter may use stale content for this element as long as its age is no older than maxage plus the value of maxstale in seconds. If this attribute is not specified, the interpreter derives a value from the most locally scoped maxstale property.

next : uri

The URI of the next dialog or document to visit if this choice is selected.

Children

audible and tts elements

Represent the audio rendition of this choice element to be used by enumerate, and used to specify a recognition grammar for this choice when an explicit grammar is not provided.

grammar

Describes the user response that would select this choice.

CDATA

Is used by the interpreter to both produce an audio rendition of this choice and to automatically create a grammar for this choice.

Examples

Example 3-8 A menu with four choices

<?xml version="1.0" encoding="iso-8859-1"?>
<vxml version="1.0">
  <menu>
    <prompt>
      Press 1 or say balance to check your account balance.
      Press 2 or say address change to change your billing address.
      Press 0 or say operator to speak to a customer service 
        representative.
      Press * or say quit to exit.
    </prompt>
    <choice dtmf="1" next="http://www.e-bank.com/balance.vxml">
      Balance
    </choice>
    <choice dtmf="2" next="http://www.e-bank.com/address.vxml" 
            fetchaudio="http://www.e-bank.com/filler.au">
      Address Change
    </choice>
    <choice dtmf="0" next="http://www.e-bank.com/operator.vxml">
      Operator
    </choice>
    <choice dtmf="*" event="telephone.disconnect.hangup" 
            caching="safe" fetchtimeout="5s">
      Quit
    </choice>
  </menu>
</vxml>

In Example 3-8, the corresponding choice element will become active based on the DTMF value pressed (1, 2, 0, or *). A DTMF 1, 2, or 0 will cause the interpreter to retrieve the document URL given by the next attribute. The fetchaudio attribute for choice corresponding to DTMF 2 will play the audio file while the document is being downloaded. The choice for DTMF * does not fetch another document, but instead throws an event, telephone.disconnect.hangup, that will cause the interpreter to terminate the call.

  • + Share This
  • 🔖 Save To Your Account