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