ZVON > References > VoiceXML Reference
Element:grammar
Attributes: | caching | fetchhint | fetchtimeout | scope | src | type |
Parents: | choice | field | form | link | record | transfer |
Description:

Go to Standard

Examples:


<link expr="’#’ + document.helpstate">
     <grammar type="application/x-jsgf">help </grammar>
</link>


<link event="help">
     <grammar type="application/x-jsgf"> arrgh | alas all is lost | fie ye froward machine | I don’t get it </grammar>
</link>


<link next="http://www.voicexml.org/books/main.vxml">
     <grammar type="application/x-jsgf"> books | Voice XML books </grammar>
     <dtmf> 2 </dtmf>
</link>


<form scope="document">
     <grammar> … </grammar>
     <grammar scope="dialog"> … </grammar>
</form>


<field name="flavor">
     <prompt>What is your favorite ice cream?</prompt>
     <grammar src="../grammars/ice_cream.gram" type="application/x-jsgf"/>
</field>


<vxml version="1.0">
     <var name="bye" expr="'Ciao'"/>
     <link next="operator_xfer.vxml">
          <grammar> operator </grammar>
     </link>
</vxml>


<link event="help">
     <grammar type="application/x-jsgf"> [please] help [me] [please] | [please] I (need|want) help [please] </grammar>
</link>
<field name="sandwich">
     <grammar type="application/x-jsgf"> hamburger | burger {hamburger} | (chicken [sandwich]) {chicken} </grammar>
</field>


<link event="help">
     <grammar type="application/x-jsgf"> [please] help [me] [please] | [please] I (need|want) help [please] </grammar>
</link>
<field name="sandwich">
     <grammar type="application/x-jsgf"> hamburger | burger {hamburger} | (chicken [sandwich]) {chicken} </grammar>
</field>


<field name="flavor">
     <prompt>What is your favorite flavor?</prompt>
     <help>Say one of vanilla, chocolate, or strawberry.</help>
     <grammar type="application/x-jsgf"> vanilla {van} | chocolate {choc} | strawberry {straw} </grammar>
     <dtmf type="application/x-jsgf"> 1 {van} | 2 {choc} | 3 {straw} </dtmf>
</field>


<field name="state">
     <prompt> Please say the name of a state. </prompt>
     <grammar src="http://mygrammars.example/states.gram"/>
     <filled>
          <if cond="state$.confidence &lt; 0.4">
               <throw event="nomatch"/>
          </if>
     </filled>
</field>


<vxml version="1.0">
     <form>
          <field name="drink">
               <prompt>Would you like coffee, tea, milk, or nothing?</prompt>
               <grammar src="drink.gram" type="application/x-jsgf"/>
          </field>
          <block>
               <submit next="http://www.drink.example/drink2.asp"/>
          </block>
     </form>
</vxml>


<form id="get_city">
     <field name="city">
          <grammar src="http://www.ship-it.example/grammars/served_cities.gram"/>
          <prompt>What is the city?</prompt>
          <filled>
               <if cond="city == 'Novosibirsk'">
                    <prompt> Note, Novosibirsk service ends next year. </prompt>
               </if>
          </filled>
     </field>
</form>


<form id="tapered">
     <block>
          <prompt bargein="false"> Welcome to the ice cream survey. </prompt>
     </block>
     <field name="flavor">
          <grammar>vanilla|chocolate|strawberry</grammar>
          <prompt count="1">What is your favorite flavor?</prompt>
          <prompt count="3">Say chocolate, vanilla, or strawberry.</prompt>
          <help>Sorry, no help is available.</help>
     </field>
</form>


<form id="getssn">
     <field name="ssn">
          <grammar src="http://grammarlib/ssn.gram" type="application/x-jsgf"/>
          <prompt> Please say social security number.</prompt>
          <nomatch count="3">
               <return event="nomatch"/>
          </nomatch>
          <filled>
               <return namelist="ssn"/>
          </filled>
     </field>
</form>


<form id="launch_missiles">
     <field name="password">
          <prompt>What is the code word?</prompt>
          <grammar>rutabaga</grammar>
          <help>It is the name of an obscure vegetable.</help>
          <catch event="nomatch noinput" count="3">
               <prompt>Security violation!</prompt>
               <submit next="apprehend_felon" namelist="user_id"/>
          </catch>
     </field>
     <block>
          <goto next="#get_city"/>
     </block>
</form>


<form id="get_starting_and_ending_cities">
     <field name="start_city">
          <grammar src="http://www.grammars.example/voicexml/city.gram"/>
          <prompt>What is the starting city?</prompt>
     </field>
     <field name="end_city">
          <grammar src="http://www.grammars.example/voicexml/city.gram"/>
          <prompt>What is the ending city?</prompt>
     </field>
     <filled mode="any" namelist="start_city end_city">
          <if cond="start_city == end_city">
               <prompt> You can't fly from and to the same city. </prompt>
               <clear/>
          </if>
     </filled>
</form>


<form id="get_starting_and_ending_cities">
     <field name="start_city">
          <grammar src="http://www.grammars.example/voicexml/city.gram"/>
          <prompt>What is the starting city?</prompt>
     </field>
     <field name="end_city">
          <grammar src="http://www.grammars.example/voicexml/city.gram"/>
          <prompt>What is the ending city?</prompt>
     </field>
     <filled mode="any" namelist="start_city end_city">
          <if cond="start_city == end_city">
               <prompt> You can't fly from and to the same city. </prompt>
               <clear/>
          </if>
     </filled>
</form>


<form id="weather_info">
     <block>Welcome to the weather information service.</block>
     <field name="state">
          <prompt>What state?</prompt>
          <grammar src="state.gram" type="application/x-jsgf"/>
          <catch event="help"> Please speak the state for which you want the weather. </catch>
     </field>
     <field name="city">
          <prompt>What city?</prompt>
          <grammar src="city.gram" type="application/x-jsgf"/>
          <catch event="help"> Please speak the city for which you want the weather. </catch>
     </field>
     <block>
          <submit next="/servlet/weather" namelist="city state"/>
     </block>
</form>


<form id="weather_info">
     <block>Welcome to the weather information service.</block>
     <field name="state">
          <prompt>What state?</prompt>
          <grammar src="state.gram" type="application/x-jsgf"/>
          <catch event="help"> Please speak the state for which you want the weather. </catch>
     </field>
     <field name="city">
          <prompt>What city?</prompt>
          <grammar src="city.gram" type="application/x-jsgf"/>
          <catch event="help"> Please speak the city for which you want the weather. </catch>
     </field>
     <block>
          <submit next="/servlet/weather" namelist="city state"/>
     </block>
</form>


<form id="get_from_and_to_cities">
     <grammar src="http://www.directions.example/grammars/from_to.gram"/>
     <block> Welcome to the Driving Directions By Phone. </block>
     <initial name="bypass_init">
          <prompt> Where do you want to drive from and to? </prompt>
          <nomatch count="1"> Please say something like "from Atlanta Georgia to Toledo Ohio". </nomatch>
          <nomatch count="2"> I’m sorry, I still don’t understand. I’ll ask you for information one piece at a time.
               <assign name="bypass_init" expr="true"/>
               <reprompt/>
          </nomatch>
     </initial>
     <field name="from_city">
          <grammar src="http://www.directions.example/grammars/city.gram"/>
          <prompt>From which city are you leaving?</prompt> … etc. …
     </field> … etc. …
</form>


<form id="get_from_and_to_cities">
     <grammar src="http://www.directions.example/grammars/from_to.gram"/>
     <block> Welcome to the Driving Directions By Phone. </block>
     <initial name="bypass_init">
          <prompt> Where do you want to drive from and to? </prompt>
          <nomatch count="1"> Please say something like "from Atlanta Georgia to Toledo Ohio". </nomatch>
          <nomatch count="2"> I’m sorry, I still don’t understand. I’ll ask you for information one piece at a time.
               <assign name="bypass_init" expr="true"/>
               <reprompt/>
          </nomatch>
     </initial>
     <field name="from_city">
          <grammar src="http://www.directions.example/grammars/city.gram"/>
          <prompt>From which city are you leaving?</prompt> … etc. …
     </field> … etc. …
</form>


<vxml version="1.0">
     <form id="getdriverlicense">
          <var name="birthday" expr="'1980-02-10'"/>
          <field name="drivelicense">
               <grammar src="http://grammarlib/drivegrammar.gram" type="application/x-jsgf"/>
               <prompt> Please say your driver’s license number. </prompt>
               <filled>
                    <if cond="validdrivelicense(drivelicense,birthday)">
                         <var name="status" expr="true"/>
                         <else/>
                         <var name="status" expr="false"/>
                    </if>
                    <return namelist="drivelicense status"/>
               </filled>
          </field>
     </form>
</vxml>


<form id="getssn">
     <var name="firstname"/>
     <var name="lastname"/>
     <field name="ssn">
          <grammar src="http://grammarlib/ssn.gram" type="application/x-jsgf"/>
          <prompt> Please say social security number. </prompt>
          <filled>
               <if cond="validssn(firstname,lastname,ssn)">
                    <assign name="status" expr="true"/>
                    <return namelist="status ssn"/>
                    <else/>
                    <assign name="status" expr="false"/>
                    <return namelist="status"/>
               </if>
          </filled>
     </field>
</form>


<form>
     <subdialog name="result" src="#getdriverslicense">
          <param name="birthday" expr="'2000-02-10'"/>
          <filled>
               <submit next="http://myservice.example/cgi-bin/process"/>
          </filled>
     </subdialog>
</form>
<form id="getdriverslicense">
     <var name="birthday"/>
     <field name="drivelicense">
          <grammar src="http://grammarlib/drivegrammar.gram" type="application/x-jsgf"/>
          <prompt> Please say your driver's license. </prompt>
          <filled>
               <if cond="validdrivelicense(drivelicense,birthday)">
                    <var name="status" expr="true"/>
                    <else/>
                    <var name="status" expr="false"/>
               </if>
               <return namelist="drivelicense status"/>
          </filled>
     </field>
</form>


<vxml version="1.0">
     <form id="getcredit">
          <var name="status" expr="'no_result'"/>
          <var name="username"/>
          <field name="creditcardnum">
               <prompt> What is your credit card number? </prompt>
               <help> I am trying to collect your credit card information.
                    <reprompt/>
               </help>
               <nomatch>
                    <return namelist="status"/>
               </nomatch>
               <grammar/>
          </field>
          <field name="expirydate" type="date">
               <prompt> What is the expiry date of this card? </prompt>
               <help> I am trying to collect the expiry date of the credit card number you provided.
                    <reprompt/>
               </help>
               <nomatch>
                    <return namelist="status"/>
               </nomatch>
          </field>
          <block>
               <assign name="status" expr="'result'"/>
               <return namelist="status creditcardnum expirydate"/>
          </block>
     </form>
</vxml>


<vxml version="1.0">
     <var name="username"/>
     <form id="buysoftware">
          <var name="ccn"/>
          <var name="exp"/>
          <grammar/>
          <initial name="start">
               <prompt> Please tell us the software product you wish to buy and the operating system on which it must run. </prompt>
               <noinput>
                    <assign name="start" expr="true"/>
               </noinput>
          </initial>
          <field name="product">
               <prompt> Which software product would you like to buy? </prompt>
          </field>
          <field mname="operatingsystem">
               <prompt> Which operating system does this software need to run on? </prompt>
          </field>
          <subdialog name="cc_results" src="http://somedomain.example/ccn.vxml">
               <filled>
                    <if cond="cc_results.status=='no_result'"> Sorry, your credit card information could not be Obtained. This order is cancelled.
                         <exit/>
                         <else/>
                         <assign name="ccn" expr="cc_results.creditcardnum"/>
                         <asssign name="exp" expr="cc_results.expirydate"/>
                    </if>
               </filled>
          </subdialog>
          <block> We will now process your order. Please hold.
               <submit namelist="username product operatingsystem ccn exp"/>
          </block>
     </form>
</vxml>


<vxml version="1.0">
     <property name="caching" value="safe"/>
     <property name="audiofetchhint" value="safe"/>
     <property name="confidence" value="0.75"/>
     <form>
          <property name="confidence" value="0.5"/>
          <property name="bargein" value="false"/>
          <grammar src="address_book.gram" type="application/x-jsgf"/>
          <block>
               <prompt> Welcome to the Voice Address Book </prompt>
          </block>
          <initial name="start">
               <property name="timeout" value="5s"/>
               <prompt> Who would you like to call? </prompt>
          </initial>
          <field name="person">
               <prompt> Say the name of the person you would like to call. </prompt>
          </field>
          <field name="location">
               <prompt> Say the location of the person you would like to call. </prompt>
          </field>
          <field name="confirm" type="boolean">
               <prompt> You said to call
                    <value expr="person$.utterance"/> at
                    <value expr="location$.utterance"/>. Is this correct?
               </prompt>
               <filled>
                    <if cond="confirm">
                         <submit next="http://www.messagecentral.example/voice/make_call" namelist="person location"/>
                    </if>
                    <clear/>
               </filled>
          </field>
     </form>
</vxml>


<form id="weather_info">
     <grammar src="cityandstate.gram" type="application/x-jsgf"/>
     <block>
          <prompt bargein="false"> Welcome to the weather information service.
               <audio src="http://www.online-ads.example/wis.wav"/>
          </prompt>
     </block>
     <initial name="start">
          <prompt> For what city and state would you like the weather? </prompt>
          <help> Please say the name of the city and state for which you you would like a weather report.</help>
          <noinput count="1">
               <reprompt/>
          </noinput>
          <noinput count="2">
               <reprompt/>
               <assign name="start" expr="true"/>
          </noinput>
     </initial>
     <field name="state">
          <prompt>What state?</prompt>
          <help>Please speak the state for which you want the weather.</help>
     </field>
     <field name="city">
          <prompt>Please say the city in
               <value expr="state"/> for which you want the weather.
          </prompt>
          <help>Please speak the city for which you want the weather.</help>
          <filled>
               <if cond="city == 'Los Angeles' && state == undefined">
                    <assign name="state" expr="'California'"/>
               </if>
          </filled>
     </field>
     <field name="go_ahead" type="boolean" modal="true">
          <prompt>Do you want to hear the weather for
               <value expr="city"/>,
               <value expr="state"/>?
          </prompt>
          <filled>
               <if cond="go_ahead">
                    <prompt bargein="false">
                         <audio src="http://www.online-ads.example/wis2.wav"/>
                    </prompt>
                    <submit next="/servlet/weather" namelist="city state"/>
               </if>
               <clear namelist="start city state go_ahead"/>
          </filled>
     </field>
</form>