| VoiceXML 2.1 Development Guide | Home | Frameset Home |
| fetchhint | Data Type: (prefetch|safe) | Default: prefetch |
| (Ignored attribute) Fetchhint is used to specify when the resource should be fetched during application execution. This element is currently ignored in the VWS 2.0 voice browser. The possible values and their descriptions are:
Note that the Voxeo platform will always prefetch content, regardless of what this attribute value is set to. As such, specifying a value is somewhat redundant. | ||
| fetchtimeout | Data Type: CDATA | Default: 5s |
| (Ignored attribute) The ‘fetchtimeout’ attribute is used to indicate how long, (in seconds or milliseconds), the interpreter should attempt to fetch the content before throwing an error.badfetch exception. | ||
| mode | Data Type: (dtmf|voice) | Default: voice |
| The mode attribute specifies the mode of the grammar in question. The two values allowed for this attribute are 'voice' and 'dtmf'. | ||
| root | Data Type: IDREF | Default: Optional |
| XML Grammars only The root attribute defines the root rulename of the XML grammar, and is required for any inline XML grammar construct. | ||
| scope | Data Type: (dialog|document) | Default: Optional |
The scope attribute allows the developer to specify whether the grammar will be given dialog scope or document scope. Document scoped grammars must have slotnames and return values explicitly defined in order to function properly. See the grammar documentation for additional information. If a value for this attribute is not specified, then the grammar inherits the scope of its parent element. Note that specifying a grammar 'scope' within a form-item, (such as the <field> element), will cause a fatal error. | ||
| src | Data Type: URI | Default: Optional |
| The src attribute specifies the target URI of the grammar file. External GSL grammars referenced with the src attribute must have a pound sign and rulename appended to the end of the URI: <grammar src=”MyGrammar.gsl#MyRuleName” type="text/gsl"/> Inline grammars are not subject to this syntax, nor do they need an explicit src declared: <grammar type="text/gsl">[chupacabra]</grammar> However, inline GSL subgrammars need not referenece anything at all in the src attribute. However, the top-level rule must be prefixed by a 'period': <grammar type="text/gsl"> <![CDATA[ .FULLNAME [NAME:d {<person_by_full_name $d>}] NAME (FIRSTNAME:a ?MIDDLENAME:b LASTNAME:c) {return(strcat($a strcat($b $c)))} FIRSTNAME [[matthew] {return("matthew ")}] MIDDLENAME [[warren] {return("warren ")}] LASTNAME [[henry] {return("henry ")}] ]]> </grammar> Also note that inline grammars that define slot values must be enclosed within CDATA blocks, else the application will throw a fatal error.badfetch. | ||
| srcexpr | Data Type: CDATA | Default: Optional |
| The srcexpr attribute evaluates to an ECMAScript value that defines the target URI. Either srcexpr or src may be specified for the element, but not both. | ||
| tag-format | Data Type: CDATA | Default: Nuance |
| The tag-format attribute allows the developer to specify the grammar tag format of an inline XML grammar construct. The only valid data type for this optional element is 'Nuance'. | ||
| type | Data Type: (application/grammar-xml|text/gsl) | Default: Required |
| The type attribute specifies the MIME type of the grammar file. Acceptable values for this attribute are 'application/grammar-xml' or 'text/gsl'. Note that unlike other voice browsers, this attribute is required in order to effectively implement a voice grammar. If left unspecified, then an error.badfetch will occur. | ||
| version | Data Type: 1.0 | Default: 1.0 |
| The version attribute of the grammar element, predictably enough, specifies the version of the grammar itself. This should always be set to '1.0'. | ||
| weight | Data Type: CDATA | Default: Optional |
| XML Grammars only The weight attribute specifies the increased or decreased likelihood for a particular grammar match. For instance, specifying the value as 0.8' would increase the chances that an approximate utterance would be considered a valid grammar match, while a value of '0.2' would make it highly unlikely that a match would ever be considered valid. | ||
| xml:base | Data Type: CDATA | Default: Optional |
| The URI value of the xml:base attribute denotes the base URL of the document. All relative URI’s contained in the document are derived from the base attributes value. If unspecified, then the platform assumes that the current URI is the value of the base attribute. | ||
| xml:lang | Data Type: NMTOKEN | Default: Required |
| The xml:lang attribute specifies the language and locale information of the grammar If omitted in GSL grammars, it will inherit this value from the document hierarchy, or ultimately from the platform default, which equates to 'en-US'. Note that this attribute is required when using XML grmmars. | ||
| xmlns | Data Type: http://www.w3.org/2001/06/grammar | Default: Required |
| The xmlns attribute defines the grXML namespace; all tags and attributes belong to this namespace. This attribute is required when using grXML grammars, and should specify the value of "http://www.w3.org/2001/06/grammar" | ||
| <?xml version="1.0" encoding="UTF-8"?> <vxml version = "2.1"> <meta name="author" content="Matthew Henry"/> <meta name="copyright" content="2005 voxeo corporation"/> <meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/> <form id="F1"> <field name="F_1"> <grammar xml:lang="en-US" version="1.0" type="text/gsl" mode="voice"> [(pretty darn good)] </grammar> <prompt> What are the Vegas odds for Michael Jacksons face to completely rot by the end of this year? </prompt> </field> <filled> <prompt> I would have to agree with you, sir! </prompt> </filled> </form> </vxml> |
| <?xml version="1.0" encoding="UTF-8" ?> <vxml version = "2.1"> <meta name="author" content="Matthew Henry"/> <meta name="copyright" content="2005 voxeo corporation"/> <meta name="maintainer" content="YOUR_EMAIL@HERE.COM"/> <form id="F1" scope="document"> <grammar scope="document" type="text/gsl"> <![CDATA[ .MYRULE [ [(david hasselhoff)] {<MySlot "dave">} ] ]]> </grammar> <!-- the utterance of 'david hasselhoff' anywhere in the application will fill this namelist--> <filled namelist="MySlot"> <goto next="#F3"/> </filled> <field name="F_1"> <grammar type="text/gsl">[(moe green)]</grammar> <prompt> Who should get the next crack at playing Hamlet ? His initials are d h . </prompt> </field> <filled namelist="F_1"> <prompt> You said <value expr="F_1"/> Are you insane? </prompt> <goto next="#F2"/> </filled> <!-- this empty field matching the form grammar's slot is required --> <field name="MySlot"/> </form> <form id="F2" scope="dialog"> <field name="F_2"> <grammar type="text/gsl">[(george jones)]</grammar> <prompt> Who is the biggest celebrity in germany? </prompt> <filled> <prompt> now thats just crazy talk. </prompt> </filled> </field> <!-- this empty field matching the form grammar's slot is required --> <field name="MySlot"/> </form> <form id="F3"> <block> <prompt> Our form level grammar has been filled. </prompt> </block> </form> </vxml> |
| ANNOTATIONS: EXISTING POSTS |
moshe
|
|
| In the description of the attribute "expr," the text says:
"The expr attribute evaluates to an ECMAScript value that defines the target URI. Either expr or next may be specified for the element, but not both." There is no attribute "next" -- this is a typo, just ignore it. |
|
MattHenry
|
|
| Moshe,
I got this typo fixed in the recent Build, which will be posted by the end of the week; this should read as: "The expr attribute evaluates to an ECMAScript value that defines the target URI. Either expr or *src* may be specified for the element, but not both". Thanks for the catch! ~Matt |
|
anujsharma
|
|
| Again a little typo!
The word *both* is still missing... |
|
awirtz
|
|
| If you need to track down XML syntax errors in a grXML document, you might try adding the following DOCTYPE element and using an XML validator:
<!DOCTYPE grammar SYSTEM "http://www.w3.org/TR/speech-grammar/grammar.dtd"> This tag should be placed after the <?xml?> tag and before the <grammar> tag in your document. There is a publicly available XML validator here: http://www.stg.brown.edu/service/xmlvalid/ |
|
safarishane
|
|
| It seems that what attributes are *really* required and *really* optional depend on if the grammar is used inline or not. | |
moshe
|
|
| Eloy, would you please post details -- which elements are required, and which elements are optional, if it's used inline or not?
And remember, folks -- as each release of the VoiceXML interpreter comes out, things will change. With any luck, some of our comments about discrepencies will become obsolete. |
|
safarishane
|
|
| Wondering if the option "both" is allowed for the grammar attribute of mode, or if you can actually put both in there.
<grammar mode="voice dtmf"....../> <grammar mode="both"....../> Or, do you *have* to have seperate grammars? |
|
steve.sax
|
|
| Hiya Shane,
Technically, we can use dtmf and voice entries in a SRGS grammar without specifying a 'mode' at all. However, this isn't really considered Compliant behavior. To wit, check out our most execllent code samples at the below link, which illustrates this point in greater detail: http://docs.voxeo.com/voicexml/2.0/grxml_dtmf.htm Steve Sax |
|
Asier
|
|
| Hello there,
is there a way for use a dynamic uri for a grammar?? My platform not support vxml 2.1. Thanks in Advance, Asier |
|
MattHenry
|
|
|
Hello Asier, If you are stating that you are using a VXML platform that does not support the 2.1 specification, and as such, does not support the 'srcexpr' attribute, then you might well have a good reason to switch to Voxeo. The only alternative that I see for specifying a dynamic grammar URI would be to set this on the server side, using ASP/JSP/etc. ~Matt |
|
rnayar
|
|
| Hi,
I have a grammar containing long & complex text. the text is normally 4-5 words longs & words are mix of easy & complex. I am facing lots of difficulty in speech recognition. I am using XMl grammar format. with confidencelevel as low as 30%. Please help, its really urgent.. appreciate ur help thanks u so much!!!! |
|
voxeojeff
|
|
| Hello there,
In order to be of further assistance, we will need you to send us debugger logs illustrating the error you are receiving with your grammar. Also, sending us the XML output of your application, along with the grammar will help in case we need to make a test case. Once you've sent us this information, we can go ahead and create a private account ticket for you. Best regards, Jeff Menkel Voxeo Corporation |
|
Magician
|
|
| Greetings....
Is there support on the Voxeo platform for "built-in" grammars? I'm working through some DTMF field entry requirements. Are there other solutions other than specifying a list of the "dtmf-?" values within a specific grammar? Thanks for your help. Magician |
|
voxeojeff
|
|
| Hello Magician,
I've managed to pull an answer out of a hat for you, so to speak. :-) Voxeo does indeed support certain built-in grammars. http://docs.voxeo.com/voicexml/2.0/gslbuiltins.htm If you're looking for one which supports dtmf input, I would suggest the built-in digits grammar, which is detailed in the link above. Hope this helps! Jeff Menkel Voxeo Corporation |
|
annuvinayak
|
|
| Hi,
I have used grammar tag to specify the appropriate input for a field tag. But when some characters other then the ones specified in the grammar(i.e. *) are used, the application does not indicate any problem and passes the number to the next level as shown: <field name="userTelNo" type="number"> <grammar type="text/gsl"> [dtmf-1 dtmf-2 dtmf-3 dtmf-4 dtmf-5 dtmf-6 dtmf-7 dtmf-8 dtmf-9 dtmf-0] </grammar> <prompt> Please enter your 10 digit telephone number </prompt> <filled> <if cond="userTelNo.length != 10"> <goto next="#invalidLength" /> </if> <var name="telephoneNumber" expr="userTelNo" /> <var name="password" expr="'-1'" /> <submit next="" namelist="telephoneNumber password" /> </filled> </field> What do i do to specify that only certain digits should be entered and if some other digits are entered then an error message is thrown? Regards, Annu |
|
voxeojeremyr
|
|
| Hi Annu,
Yes, you certainly can do that. In the current grammar you gave an example of, all the digits would be valid input. An asterisk should fail and the pound sign, is normally set as a keystroke terminator. (This can be changed with a <property> tag. i.e. http://docs.voxeo.com/voicexml/2.0/w3cprops.htm#start) You can catch out of grammar utterance or keypresses with a <catch event="nomatch"> or the shorthand version <nomatch>. More information on that can be found here: http://docs.voxeo.com/voicexml/2.0/catch.htm http://docs.voxeo.com/voicexml/2.0/nomatch.htm I hope this helps and happy coding. Thanks, Jeremy Richmond Voxeo Support |
|
annuvinayak
|
|
| Thanks for your reply Jeremy. I had used nomatch for this functionality before but somehow it slipped my mind this time. Your post helped me out :)
Also I would like to take this opportunity to say Thanks to the entire support team that you have out there. You guys are doing a great job with your quick and apt responses for all sorts of queries. Thanks again for your help. Regards, Annu |
|
annuvinayak
|
|
| Hi,
I tried using nomatch with the previous post as shown: <field name="userTelNo" type="number"> <grammar type="text/gsl"> [dtmf-1 dtmf-2 dtmf-3 dtmf-4 dtmf-5 dtmf-6 dtmf-7 dtmf-8 dtmf-9 dtmf-0] </grammar> <prompt> Please enter your 10 digit telephone number </prompt> <filled> <nomatch> <prompt> Is that a number? Please try again. </prompt> <reprompt/> </nomatch> <if cond="userTelNo.length != 10"> <goto next="#invalidLength" /> </if> <var name="telephoneNumber" expr="userTelNo" /> <var name="password" expr="'-1'" /> <submit next="" namelist="telephoneNumber password" /> </filled> </field> Now If I enter * as the first digit, the control goes to the nomatch loop, but if I enter some digits and then enter * then the control flows as if all correct digits were entered. Why this discrepancy? Also I tried this <field name="userTelNo" type="digits"> i.e. changed the type of field to digits. Now as soon as i enter * (even after entering other digits) the nomatch block is played. It solved my purpose a bit, but not completely, I want that the 10 digit number should be taken as input and if any of its characters is not a digit(between 0 and 9) then it should play the nomatch block. Would I have to do that explicitly or do we have support for this? Thanks in advance. Cheers! Annu |
|
VoxeoDustin
|
|
| Hey Annu,
The digits built-in should serve your purpose, and you can simplify your application by using the length property of it. This grammar will also except both dtmf and voice input, so you won't need the inline grammar: <field name="userTelNo" type="digits?length=10"> <prompt> Please enter your 10 digit telephone number </prompt> <nomatch> <prompt> Is that a number? Please try again. </prompt> <reprompt/> </nomatch> <filled> <var name="telephoneNumber" expr="userTelNo" /> <var name="password" expr="'-1'" /> <submit next="" namelist="telephoneNumber password" /> </filled> </field> Let me know if you have any further questions. Cheers, Dustin |
|
jefo12
|
|
| To request an appointment this week you can say today,tomorrow ,day after tomorrow or a specific day such as this Friday.you can also request the day next week such as next Friday.
<grammar type="text.gsl"> [today tomorrow dayaftertommorrow Sunday Monday Tuesday Wednesday Thursday Friday Saturday (next Sunday) (next Monday) (next Tuesday) (next Wednesday) (next Thursday) (next Friday) (next Saturday) morning afternoon evening (next appointment)] </grammar THE USER CAN SELECTS ANY ONE OF THE ABOVE OR HE CAN SELECT A SPECIFIC DATE SUCH AS MARCH 2ND... HOW CAN I WRITE GRAMMAR FOR THIS PLZ SUGGEST... PLZ GIVE ME THE VXML CODE... |
|
voxeojohnq
|
|
| Hello,
It appears have already addressed this question in a private account ticket under your account "jefo12". If you have any additional questions, please refer to the existing ticket for all of your additional inquiries relating to this issue. Thanks, John Quinn Voxeo Support |
|
jefo12
|
|
| <grammar type="text.gsl">
[today tomorrow (day after tomorrow) (?next Sunday) (?next Monday) (?next Tuesday) (?next Wednesday) (?next Thursday) (?next Friday) (?next Saturday) ] </grammar> To request an appointment this week you can say today, tomorrow ,day after tomorrow or a specific day such as this Friday.you can also request the day next week such as next Friday.plz make ur request now Such as today,tomorrow,day after tomorrow,this Friday or next Friday. For a specific date, say date. how should i include the grammar for date...user can also say the specific date 2nd march then how can i include that.. can i write two grammar files?. plz give me suuggestion... |
|
jefo12
|
|
|
<field name="abc" type="date"> <grammar type="text.gsl"> [today tomorrow (day after tomorrow) (?next Sunday) (?next Monday) (?next Tuesday) (?next Wednesday) (?next Thursday) (?next Friday) (?next Saturday) ] </grammar> i want to take both date and days can i include both builtin grammar and inline grammar like this.... plz suggest |
|
VoxeoDustin
|
|
| Hey Jefo,
You can, in fact, use both built-in and inline/external grammars with VoiceXML, however only one of them will match. You may want to use the SRGS grammar I provided you before as it will allow you to match both the day and the date in the same utterance. I've reattached that grammar here in case you did not get it the first time. Thanks, Dustin |
|
jefo12
|
|
| <?xml version="1.0" encoding="UTF-8"?>
<vxml version = "2.1"> <form id="welcome"> <field name="Phone" type="number" mode="dtmf"> <prompt> Please enter your phone number </prompt> <filled> <prompt> ok got it you said <value expr="phone"/> </prompt> </filled> </field> </form> </vxml> This code is not executed it is saying some internal error...can uplz tell me why?> |
|
voxeodamonic
|
|
| Hi Jefo,
I'll be happy to assist you with looking into this error. Please allow me some time test the application and try to replicate the error in which you are experiencing. Hopefully, we can identify why we are having a problem. I'll update you shortly with my findings. Thanks, Damonic Voxeo Support |
|
voxeodamonic
|
|
| Hello,
Upon reviewing your code I've noticed a possible error within the <field> element. You'll notice that you are using the following: <field name="Phone" type="number" mode="dtmf"> The mode attribute is not a valid component of the <field> element. The proper attribute that I believe you may have confused this for is the "modal" attribute. The modal attribute is a fine tuning control for grammars within the field element. When the modal attribute is set to false(default value) all higher scoped grammars are activated. If set to true then only grammars within the field are activated and all other grammars are temporarily disengaged or disabled. You may find more on this subject in our online docs at the following URL: http://docs.voxeo.com/voicexml/2.0/field.htm In order to allow for dtmf functionality you would utilize something like this: <form id="guessNumber"> <field name="guess"> <grammar type="text/gsl"> [one two three four five six seven eight nine zero] </grammar> <grammar type="text/gsl"> [dtmf-1 dtmf-2 dtmf-3 dtmf-4 dtmf-5 dtmf-6 dtmf-6 dtmf-7 dtmf-8 dtmf-9 dtmf-0] </grammar> <prompt> Guess what the computer is thinking! Pick a number between 0 and 9. </prompt> . . . You can also find more about DTMF functionality at the following online documentation: http://docs.voxeo.com/voicexml/2.0/t_8.htm Best regards, Damonic Voxeo Support |
|
jefo12
|
|
| Thank u for your help damonic,
here i'm facing another problem regarding the callerid validations.... i'm attaching my code here....please give me your suggestion otherwise give me a reference tutorial for that.. i'll be very much pleased if u do this favour... <vxml> <var name="callerid" expr="session.callerid"> <form id="welcome"> <block> <if cond="callerid.length==10&,&callerid!='restricted'&,&callerid!='unknown'"> <field name="enterphone" type=digits?length=10"> <prompt> welcome plz enter your phone no.</prompt> <filled> <subdialog name="checkapp" src="checkapponitment.jsp" namelist="enterphone/"> <prompt> you have the appointments on (".....")so and so date </prompt> </filled> </field> </form> 1) An error occurs at if condition...dont know why it is?. another important one i would like to know is.... 2) if we submit this phone no to checkappointment.jsp from that send it to database retrieve the appointments of that phone no from database and we hav to store appointments in an array in jsp. my question is how to store that date and timings in an array..suppose if the user has an appointment on 25th march at 10:30 how to store that in an array in checkappointment.jsp....suppose lets assume that we store that in a array.Is it possible to receive the array which is having appointment timings from jsp to the subdialog "checkapp"... after receiving from jsp to subdialog how can i prompt all these appointments to the user... |
|
MattHenry
|
|
|
Hello Jefo, Your questions on the topic of the <if> element are being addressed in the account ticket that you opened for it, but regarding the question on how to store arrays in the JSP context is best left for JSP specific sites: http://forum.java.sun.com/thread.jspa?threadID=580629&messageID=2941191 As to how you may read them back in the VoiceXML context, you may want to take a look at the <foreach> element: http://docs.voxeo.com/voicexml/2.0/foreach.htm ~Matt |
|
jefo12
|
|
| how to enable dynamic grammar using dtmf...
<prompt> The appointments are </prompt> <foreach item="applist" array="myarr"> <prompt><value expr="applist"/><break/></prompt> </foreach> //palys all the appointments the callerid has..... <prompt> Do you want to cancelorreschedule any of those appointments say cancel or reschedule or if you want to take an new appointment say schedule.. </prompt> If the user selects cancel...then <prompt>To cancel any of the appointments press the corresponding dtmf button to cancel </prompt> //how can i do this dynamiclaly.... plz suggest me..... |
|
voxeojohnq
|
|
| Hey jefo,
In order to create a dynamic grammar, you must generate it using server side programming. We have an excellent tutorial on how to create these grammars in our VoiceXML documentation. You can read it here: http://docs.voxeo.com/voicexml/2.0/frame.jsp?page=t_16.htm If after reading this, you still have questions, please don't hesitate to ask. Regards, John Quinn Voxeo Support |
|
archdave
|
|
| hello,
i'm having a small problem trying a starter vxml script. When I call i get an error saying something about the file content having an internal error. However, i have run the xml file and it is well-formed and validates perfectly. Please see below: <?xml version="1.0" encoding="UTF-8"?> <vxml version="2.1"> <form> <block> <prompt> Things are working correctly. Congratulations. </prompt> </block> </form> </vxml> Can u pls help me on this one? I am anxious to begin full IVR devt. Thanks in advance. |
|
voxeojohnq
|
|
| Hello,
First off, your code is 100% correct. I took at look at your application configuration, and what I think is happening here is that the server that you hosted your VoiceXML script on is not responding. If you goto your evolution account then open the application debugger and call your application, you will be able to see the "Fetch Timeout" error that I am talking about. If you have any further questions, please don't hesitate to ask. Regards, John Quinn Voxeo Support |
|
jefo12
|
|
| Hi,
Can any one suggest me how can i use freestyle grammar.means "I would like a coca cola and three large pizzas with pepperoni and mushrooms". how can i recognize this.. pls give me the link. |
|
voxeoJeffK
|
|
| Hi,
A situation like that is best solved with a mixed initiative dialog. We have a full tutorial on them here: http://docs.voxeo.com/voicexml/2.0/t_20.htm?search=mixed+dialog#anchor hope that helps, Jeff K. |
| login |