第七节 Timeout | |
timeout属性指定了当最后一个元素播放结束后,等待用户输入时,允许的静音时间。如果静音事件超过了timeout属性值,则抛出noinput事件。在元素排队时,该属性默认为timeout property指定的值(见6.3.4节)。换句话说,每个元素都有它自己的timeout值。 | |
允许指定元素的timeout属性值是为了能够支持分级timeout。例如,用户在第一次输入时有5秒的事件,而第二次则有10秒。 | |
元素的timeout属性决定了接下来用户输入的noinput timeout: | |
Pick a color for your new Model T. Please choose color of your new nineteen twenty four Ford Model T. Possible colors are black, black, or black. Please take your time. | |
如果在用户输入之前有几个元素进行排队,则使用最后一个元素的timeout属性值。 |
第八节 Prompt Queueing and Input Collection | |
VoiceXML解释器一直都处于下面的两种状态之一: | |
·在input itm 中等待输入(例如,或元素) ; | |
·在input item中跳转以响应在等待状态中收集到的输入(包括语音输入、DTMF按键输入和与输入有关的的事件,如noinput和nomatch事件)。当在跳转状态时,任何语音输入都不会被收集、接受或解释。从而,root和文档级的语音语法在整个应用中可能都没有被激活的机会。然而,在跳转状态时,DTMF输入应该被收集并缓冲。同样的,和跳转的执行没有直接关系的异步产生的事件(如connection.disconnect.hangup事件)也应该被缓冲,直到等待状态才被删除。 | |
等待和跳转状态与FIA的几个阶段的关系如下: | |
·在一个input item的收集阶段开始时才进入等待状态(在解释器等待输入的那一刻)。 | |
·跳转状态贯穿了处理阶段和选定阶段,包括control item(例如元素)的选定阶段和input item的选定阶段,直到解释器等待输入的那一刻。 | |
分成两个状态是为了更好的简化编程的模型。特别的,这个模型让VoiceXML应用的开发者能够依靠所有的可执行内容(例如元素和元素的内容)一直运行到完成要执行的操作。因为在跳转状态,正在执行的操作不会被用户的输入打断。 | |
在跳转状态有多种元素进行排队,或者是可执行内容中的元素,或者是form. item中的元素。另外,由于指定了fetchaudio属性,音频也可以参加排队。当出现下面的情况之一时,播放排队的元素和音频: | |
·当解释器达到等待状态时,此时系统播放提示语,且解释器监听是否有匹配激活的语法的输入; | |
·当解释器开始获取资源(例如一个文档),且该元素指定了fetchaudio属性。在这种情况下,fetchaudio之前的提示语都会被播放,之后,如果确实需要获取资源(即该资源在缓存中不是非过期的),就播放该fetchaudio直到获取完成。在获取资源时,解释器处于跳转状态,且不接收任何输入。 | |
注意,如果一个元素的bargein属性值为false,则输入不会被收集,且在跳转状态时,缓冲中的DTMF输入被删除(见4.1.5)。 | |
在解释器退出前,会播放完所有已排队的元素。当解释器正在退出时,解释器保持在跳转状态,且不接受任何输入。 | |
一个允许的优化是:在达到等待状态之前的跳转状态期间就播放已排队的元素。如果这样做的话,对于在播放元素时接收到的输入音频的处理是能够保持正确的语义的。例如,对于bargein和语法的处理。 | |
下面的例子表明了,在某些情形下这些规则的操作。 | |
情形1 | |
典型的non-fetching情形:第一个元素后面有可执行的内容(如元素和元素),再后面是另外一个元素。 | |
in document d0 executable content e1 queues prompts {p1} queues prompts {p2} enables grammars {g2} | |
在元素f0的等待状态中接收到输入,导致了下面操作的发生: | |
· 在跳转状态 | |
o 执行e1(没有元素) | |
o 对元素{p1}排队 | |
o 对元素{p2}排队 | |
·在等待状态中同时进行如下操作 | |
o 播放元素{p1,p2} | |
o 激活语法{g2},并等待输入 | |
情形2 | |
典型的获取资源的情形:第一个元素后面是以元素为结尾的可执行内容,该元素指定了fetchaudio属性,并跳转到另一个文档中的元素,该文档是从服务器获取的。 | |
in document d0 executable content e1 queues prompts {p1} ends with goto f2 in d1 with fetchaudio fa in document d1 queues prompts {p2} enables grammars {g2} | |
在元素f0的等待状态中接收到输入,导致了下面操作的发生: | |
· 在跳转状态 | |
o 执行 e1 | |
o 对元素 {p1}排队 | |
o 同时 | |
·获取 d1 | |
·播放 {p1} ,之后播放fa,直到获取资源完毕 | |
o 对元素 {p2}排队 | |
·在等待状态中同时进行如下操作 | |
o 播放 {p2} | |
o 激活语法 {g2} 并等待输入 | |
情形3 | |
和情形2类似,只是没有指定fetchaudio属性。 | |
in document d0 executable content e1 queues prompts {p1} ends with goto f2 in d1 (no fetchaudio specified) in document d1 queues prompts {p2} enables grammars {g2} | |
在元素f0的等待状态中接收到输入,导致了下面操作的发生: | |
· 在跳转状态 | |
o 执行 e1 | |
o 对元素 {p1}排队 | |
o 获取 d1 | |
o 对元素 {p2}排队 | |
·在等待状态中同时进行如下操作 | |
o 播放元素 {p1, p2} | |
o 激活语法{g2},并等待输入 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12476590/viewspace-217110/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12476590/viewspace-217110/