- From: Dirk Schnelle <dirk.schnelle@jvoicexml.org>
- Date: Sun, 23 Mar 2008 20:27:56 +0100
- To: Ian Sutherland <ian.sutherland@oracle.com>, www-voice@w3.org
Hi Ian, Thanks for the clarification, but I still see some problems with that. See below. > > // > > // Collect Phase: execute the selected form item. > > // > > // Queue up prompts for the form item. > > > > unless ( the last loop iteration ended with > > a catch that had no <reprompt>, > > and the active dialog was not changed ) > > { > > > > Select the appropriate prompts for an input item or <initial>. > > Queue the selected prompts for play prior to > > the next collect operation. > > > > Increment an input item's or <initial>'s prompt counter. > > } > > > > Following this description, prompts will only be queued if there is a <reprompt> in a catch. > > > > "Unless (A) { B }" is equivalent to "if (!A) { B }". That means that > prompts are queued if > 1. The last loop iteration didn't end with a <catch>, OR I do not see this here, but in the definition of default catch handlers http://www.w3.org/TR/voicexml20/#dml5.2.5 > 1. The last loop iteration ended with a <catch>, but that <catch> > executed a <reprompt>, OR > 2. The active dialog changed from the last loop iteration. I don't see this in this algorithm > Prompts will be queued if, for example, the current loop iteration is > the first one in this active dialog, or if the previous loop iteration > ended by filling a <field>. I read it as follows. The specification states (I hope that I read it right, since it is really confusing): if (!("lastloop ends with catch" && !"reprompt in catch")) { queue prompts increment counter } This means: if (lastloop ends with catch || reprompt in catch) { queue increment counter } Questions here: 1. Am I right with my interpretation? It differs to your points. 2. Am I in a lastloop in the first iteration? - If not, the prompts will not be queued, as I stated before. 3. Why do I have to increment the counter if I have no reprompt. IMHO, this conflicts with http://www.w3.org/TR/voicexml20/#dml5.3.6 where the prompt counter should only be incremented if I have a reprompt. > > > At the first time the form item is entered no prompts will be queued > > I don't think this is a correct reading of the snippet above. > > > and we will have the same behaviour if there is no > > reprompt. > > > > If the previous iteration was in the same active dialog, and ended > with a <catch> with no <reprompt>, then yes, prompts should not be > queued. I believe various people have found this odd in the past, > but, odd or not, that's the way VoiceXML is meant to work. > > I think this is a great illustration of why one should avoid using > "unless" in specifications. I fully agree with that. I think that it would be good to avoid such constructs in the upcoming 3.0 specification. I know that doing a correct specifiaction is a hard job, but it should be easy for vendors to understand the basic idea behind it. "Unless" is definitly a construct that should be avoided. Dirk
Received on Sunday, 23 March 2008 19:28:35 UTC