IVR-2 [Voice XML规范详细描述1]

第二章  Dialog的结构
 
第一节 Forms enter.gif 
 
    form是VoiceXML文档的主要组成部分,它包括以下几个部分:
      1、一组form. item,即在FIA(form. interpretation algorithm)的主循环被访问的一些元素。Form. item可细分为input item和control item,input item可由用户填充,而control item不能;
      2、非form. item(non-form. item)变量的声明;
      3、事件处理;
      4、填充后(filled)的操作,也就是当某些input item的组合被赋值后要执行的程序逻辑模块。
    Form元素的属性:
idForm的名字。如果有指定的话,这个form就可以在该文档内被引用,或者在别的文档中引用它。例如,,。
scope该form语法的默认作用域(scope)。如果它的值为dialog,则该form语法只是在这个form里是激活的;如果它的值为document,则该form语法在这个文档的任何对话中都是激活的;如果该文档为应用根文档,则该form语法在这个应用的任何文档的任何dialog中都是激活的。注意,单独的form的语法作用域的优先权高于默认的语法作用域。例如在非根文档的某个form默认的作用域为dialog,且有一个form语法的作用域为document,则该语法在这个文档的任何对话中都是激活的。
表3:元素的属性
    这一节描述了关于form的一些概念,并给出了它们的一些操作的具体例子。
 
一、Form的解释
    form由内置的FIA解释。FIA有一个主循环用来重复选定一个form. item并访问它。被选定的form. item是在文档顺序中第一个警戒条件不满足的form. item。例如,field的默认警戒条件检测看该field的form. item变量是否有值。因此,如果一个简单的form只包含了几个field,则每个field会顺序地提示给用户。
    解释一个form. item一般包括以下步骤:
      1、选定并播放一个或多个prompt;
      2、收集用户的输入,或填充一个或多个input item的响应,或一些事件的抛出(例如help);
      3、解释属于最新的input item的填充的操作。
    FIA终止于解释一个控制语句的跳转(例如用元素到另一个对话或文档,或者一个元素把数据提交到文档服务器)。当再没有符合条件的form. item可以被选定时,FIA也随着一个隐式的而中止。
    关于FIA更详细的说明见2.1.6节。
 
二、Form. Items
    form. item就是在FIA的主循环中能够被访问的元素。Input item控制FIA为特定的元素收集信息。当FIA选定一个control item时,该control item可以包含一个要执行的代码块,或告诉FIA开始为混合主动式的form的提示和收集进行初始化。
 
    、Input Items
    input item指定了得到用户输入的input item变量。它有一些提示,告诉用户要说或者键入什么;还有定义允许的输入的语法;还有处理一些由此产生的事件的事件处理。Input item也可以有元素,它定义了input item变量被填充以后要进行的操作。Input item有以下几个:
它的值是通过ASR或DTMF语法获得的。
它的值是用户录音的一段音频。例如,元素可以用来收集语音邮件的语音信息。
它把用户转接到另一个电话号码。如果该转接返回控制,则把该转接结果的状态赋值给它的变量。
它通过一些参数调用依赖于平台的object,该object是一个ECMAScript. Object。平台的object可以是一个内置的dialog,比如说用来收集信用卡信息的dialog。也可以是用特定的DTMF文本方法收集文本消息的dialog。虽然当依赖于平台的object不被平台支持时,要抛出error.unsupported.objectname事件来处理元素(专门的事件变量“_message”提供了更详细的错误信息,详见5.2.2节),但是对于这些依赖于平台的object的执行却是没有任何限制的。
有点像函数调用。它调用同一文档中的另一个dialog,或者调用另一个文档。它返回的是一个ECMAScript. Object。
表4:Input Items
 
    、Control Items
    control item有两种:
它包含一些程序语句的序列,这些程序语句是用于提示和计算的,不是用于收集输入的。有一个form. item变量(通常是隐含的),在它被解释之前,该变量被置为true。
该元素用于在混合主动式的form里控制最初的交互。它应该提示用户说一些话来匹配一个form级别的语法。在元素的执行中,当至少有一个input item变量被识别结果所填充时,元素的form. item变量变为true,从而把它置为不是FIA可选定的。
表5:Control Items
 
三、Form. Item变量和条件
    每个form. item都有一个和它相关的form. item变量,当进入该form时,它的默认值为undefined。Input item的form. item变量包含了解释该form. item的结果。Input item的form. item变量也称为input item变量(Input item variable),它保存了从用户那里收集到的值。Input item变量可以用name属性给它命名;或让它匿名,此时会产生一个内部名称。
    每个form. item也有一个警戒条件,它决定该form. item是否能够被FIA选定。默认的警戒条件只是检测该form. item是否有非undefined的值,如果有,该form. item就不会被访问。
    通常,input item都会有名称,control item都没有名称;form. item变量都没有被赋初始值,且没有指定附加的警戒条件。但有些时候需要更精确地控制。如:form可以在开始的时候给一个form. item 变量赋初始值来跳过相应的field的执行,然后清零(如用元素)并强制该field重新被选定;另一个field可以有一个警戒条件,只有当该field没有被选定过,且其他两个field已经被填充时才激活它;或只有当某个条件为true时,才能执行。这样一来,哪些form. item会被FIA选定并执行的顺序可以得到更好的控制。然而,通常很多对话都可以不用这么复杂。
    总的来说,所有的form. item都有如下的属性:
name该form. item变量的名称,作用域为dialog。它保存了该form. item的值。
expr给form. item变量赋初始值,默认的初始值为ECMAScript. 的undefined 。如果有初始值,则该form. item不会被执行,除非该form. item变量被清零。
cond它是一个表达式的值,如果缺省,默认值为true。如果是在元素里,它用来检测是否有input item被填充了。
表6:Form. Item共有的属性
 
四、Directed Forms
    最简单、最普通的form类型是,在computer-directed交互中,该form的form. item正好被顺序地执行一次。
      <?xml version="1.0" encoding="UTF-8"?>
      
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd">
        
         Welcome to the weather information service.
         
           What state?
           
           
              Please speak the state for which you want the weather.
           
         
         
           What city?
           
           
              Please speak the city for which you want the weather.
           
         
         
           
         
        
      
    该对话执行的顺序为:
      C (computer): Welcome to the weather information service. What state?
      H (human): Help.
      C: Please speak the state for which you want the weather.
      H: Georgia.
      C: What city?
      H: Tblisi.
      C: I did not understand what you said. What city?
      H: Macon.
      C: The conditions in Macon Georgia are sunny and clear at 11 AM ...
    FIA的第一次循环选定时,选定了第一个block,因为它的form. item变量(隐含的)值为undefined。该block输出了它的提示语,且它的form. item变量被置为true。在FIA的第二次反复选定时,略过了第一个block,因为它的form. item变量值不为undefined,此时FIA选定了名为“state”的field,因为该field的变量state的值为undefined。该field提示用户输入州名,然后把变量state置为用户输入的答案。关于field级的语法填充form. item变量的具体描述见3.1.6节。第三次提示并收集名称为city的field。第四次执行了最后的block,并跳转到另外一个URI。
    这个例子里的每个field都有播放一段提示语引导用户输入,有一个语法指定要监听的内容,有help事件的事件处理。无论何时,只要用户要求帮助,help事件就会被抛出。Help事件处理捕获这些事件并播放一段更详细的提示语。
    下面还有一个机器主导的form,用于收集信用卡信息的:
      <?xml version="1.0" encoding="UTF-8"?>
      
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd">
        
         We now need your credit card type, number, and expiration date.
         
           What kind of credit card do you have?
           Type of card?
           <!-- This is an inline grammar. --&gt
           
             
              
               visa
               mastercard
               amex
               american express
              
            
          
          Please say Visa, Mastercard, or American Express.
          
          
           
           What is your card number?
           Card number?
           
             
               Please say or key in your 15 digit card number.
          
               Please say or key in your 16 digit card number.
          
         
          
           
               American Express card numbers must have 15 digits.
             
             
               Mastercard and Visa card numbers have 16 digits.
             
             
           
          
        
										
        
          
          What is your card's expiration date?
          Expiration date?
          
             Say or key in the expiration date, for example one two oh one.
          
            <!-- validate the mmyy --&gt
            
            
            
              
            
              
            
            
             
             
            
          
         
										
         
           
           
              I have  number
              expiring on
             .
              Is this correct?
           
           
             
               
             
             
           
         
        
      
    注意:语法的可选项‘amex’和‘american express’返回的真实值需要在条件表达式中分开处理。3.1.5节描述了语法中的语义元素怎样才能对多种输入返回一个单独的值。
    该对话的流程可能是这样的:
      C: We now need your credit card type, number, and expiration date.
      C: What kind of credit card do you have?
      H: Discover.
      C: I did not understand what you said. (a platform-specific default message.) 
      C: Type of card? (the second prompt is used now.)
      H: Shoot. (fortunately treated as "help" by this platform)
      C: Please say Visa, Master card, or American Express.
      H: Uh, Amex. (this platform. ignores "uh") 
      C: What is your card number?
      H: One two three four ... wait ...
      C: I did not understand what you said.
      C: Card number?
      H: (uses DTMF) 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 #
      C: What is your card's expiration date?
      H: one two oh one
      C: I have Amex number 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 expiring on 1 2 0 1. Is this correct?
      H: Yes.
    Field是form的主要组成元素。Field声明了一个变量并指定了相应的提示语、语法、DTMF序列、帮助信息和其他一些事件处理。每个field声明了一个VoiceXML form. item变量,它的作用域为该form的dialog。该field被填充后,它的变量可以被提交,也可以赋值给其他的变量。
    每个field有它自己的语音和(或)DTMF语法,既可以明确的使用元素指定,也可以用type属性隐含地指定。Type属性用于指定内置的语法,像digits、boolean或number。
    每个field可以有一个或多个提示语。如果有一个提示语,它会被反复地播放给用户,直到用户输入信息。若有多个提示语则根据提示语选择算法来选定提示语(详见4.1.6节)。在每次要播放提示语的时候,count属性可以决定用哪一条提示语。在这个例子,提示语越变越短,这叫做锥形提示(tapered prompting:语音提示渐渐地简短而精炼,或越来越精细)。
    元素是一个事件处理,它定义了当用户请求帮助时该做什么。帮助信息也可以是分级的。这些信息可以简化,下面两个元素的效果是等同的。
      
         Please say visa, mastercard, or amex.
      
										
      
         Please say visa, mastercard, or amex.
      
    元素定义的是,当用户提供了相应field要识别的输入后该做什么。一个用途就是在语法检查之后再指定一套完整的约束,像上面例子中名为expiry_date的field。
 
五、Mixed Initiative Forms
    上一节我们讨论了执行严格的,由计算机主导的会话,要实现混合主动式的form,即计算机和用户共同主导该会话,必须有一个或多个form级别的语法。这种会话的编写有几种方式,其中一种普遍的方式是使用元素和元素,元素用来获得全面的信息,而元素用来获得特定的信息。下面的例子说明了这一点。其他一些更复杂的技巧也可以取得同样的效果,例如使用元素的cond属性。
    如果某个form拥有几个form级别的语法,那么:
      1、它的input item在任何顺序中都能够被填充;
      2、用户的一个utterance就可以填充一个以上的input item。
    只有input item能够被form级别的语法的匹配结果填充,control item不能。关于form级别的语法填充field变量的描述见3.1.6节。
    当用户在其他的对话内,form级别的语法也可能是激活的。假如某个文档有两个form,一个是汽车租金的form,另一个是酒店预定的form,它们都有在整个文档激活的语法,在和酒店预定的form交互的时候,用户可以输入汽车租金的信息,引导计算机到汽车租金的form里。用户可以根据任何激活的语法讲话,填充input item和进行相应的操作。
    例子。下面的例子是天气信息服务的第二个版本,是混合主动式的。这个例子为了增强它的说明性,加入了广告和城市名及州名的确认:
      <?xml version="1.0" encoding="UTF-8"?>
      
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd">
        
         
         <!-- Caller can't barge in on today's advertisement. --&gt
         
           
             Welcome to the weather information service.
             
           
          
										
         
           
              For what city and state would you like the weather?
           
           
             Please say the name of the city and state for which you would like a weather report.
          
          <!-- If user is silent, reprompt once, then try directed prompts. --&gt
          
          
         
										
         
           What state?
             
               Please speak the state for which you want the weather.
            
         
										
         
           Please say the city in for which you want the weather.
           Please speak the city for which you want the weather.
           
             <!-- Most of our customers are in LA. --&gt
             
               
             
           
         
										
        
          
          Do you want to hear the weather for , ?
          
            
              
                
             
             
            
            
           
         
        
      
    下面是该例子的一个可能的流程,它显示了它的优势,即使该用户是个新手:
      C: Welcome to the weather information service. Buy Joe's Spicy Shrimp Sauce.
      C: For what city and state would you like the weather?
      H: Uh, California.
      C: Please say the city in California for which you want the weather.
      H: San Francisco, please.
      C: Do you want to hear the weather for San Francisco, California?
      H: No
      C: For what city and state would you like the weather?
      H: Los Angeles.
      C: Do you want to hear the weather for Los Angeles, California?
      H: Yes
      C: Don't forget, buy Joe's Spicy Shrimp Sauce tonight!
      C: Mostly sunny today with highs in the 80s. Lows tonight from the low 60s ...
    名称为go_ahead的field有一个modal属性,它的值为true,它的作用是使所有的语法都失效,除了当前form. item中定义的那个语法,因此,在该field中只有boolean语法是激活的。
    有经验的用户可以更快的完成流程,但是他还是必须要听广告:
      C: Welcome to the weather information service. Buy Joe's Spicy Shrimp Sauce.
      C: What ...
      H (barging in): LA.
      C: Do you ...
      H (barging in): Yes.
      C: Don't forget, buy Joe's Spicy Shrimp Sauce tonight!
      C: Mostly sunny today with highs in the 80s. Lows tonight from the low 60s ...
    Controlling the order of field collection.
    FIA可以用多种方式定制。其中一种方法是给一个form. item变量赋值,这样该form. item就不会被选定了;另一种方法是用把form. item变量置为undefined,强制FIA再次访问该form. item。
    还有一种是用元素的nextitem属性明确地指定下一个要访问的form. item,该方法强加了一个到目标form. item 的立即跳转。目标form. item的变量、条件和计数器都不会被重置。即使该form. item已经被访问过,他的提示语还是会播放的。如果跳转出现在中,该剩下的操作和任何挂起的操作都会被跳过。
    下面这个例子中出现在exit事件的事件处理中:
      <?xml version="1.0" encoding="UTF-8"?>
      
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd">
        
           
             
             
           
           
             
                Hello, you have been called at random to answer questions critical to U.S. foreign policy.
             
           
										
           
             
             Do you agree with the IMF position on privatizing
                 certain functions of Burkina Faso's agriculture ministry?
          
										
          
           
             If this privatization occurs, will its effects be
                  beneficial mainly to Ouagadougou and Bobo-Dioulasso?
         
										
          
           
             Do you agree that sorghum and millet output might
                   thereby increase by as much as four percent per annum?
         
										
         
           
         
										
        
           
           You have elected to exit.  Are you sure you want to do this, and perhaps 
             adversely affect U.S. foreign policy vis-a-vis sub-Saharan Africa for decades 
             to come?
										
         
           
             Okay, but the U.S. State Department is displeased.
             
            
             Good, let's pick up where we left off.
             
            
          
          
            
          
         
        
      
    无论用户在哪个要收集的问题中说“exit”,平台都会抛出exit事件,并由元素的事件处理捕获。该事件处理把FIA引导到下一个要访问的field,“confirm_exit”。confirm_exit域在正常的调查完成过程中将不再被访问,因为其前面的元素将控制转向“register”脚本。
 
六、Form. Interpretation Algorithm
    我们已经从概念上讨论了FIA,在这一节,我们将更详细地讨论它(更详细的描述见附录C)。
 
    、Initialization Phase
    FIA只要进入一个form就会初始化它。内部的提示语计数器变量(在form的dialog作用域内)被置为1。每个变量(form级别的元素和form. item变量)根据在文档中的顺序被一一初始化为undefined和相应的expr属性的值。
 
    、Main Loop
    FIA的主循环有三个阶段:
    选定(select)阶段:选定下一个没有被填充的form. item供访问。
    收集(collect)阶段:访问被选定的form. item,播放它的提示语让用户输入,激活相应的语法,等待收集用户的输入(例如语音或DTMF按键输入)或者事件(例如请求帮助或noinput timeout)。
    处理(process)阶段:处理用户输入,填充form. item并执行元素的操作,例如确认输入;处理事件,执行该事件相应的事件处理。
    注意:FIA可以被给定一个输入(一组语法槽值(grammar slot/slot value pairs)),该输入是用户在另外一个FIA时被收集到的。在这种情况下,主循环的第一次循环跳过了选定和收集阶段,直接跳到处理阶段,使用给定的输入处理。另一个要注意的是,如果在选定或收集阶段有错误发生,产生一个事件,该事件被抛出,FIA也直接跳到处理阶段。
 
      1、Select phase
      选定阶段的目的是选定下一个要访问的form. item,当出现以下情况时,选定阶段结束:
      如果上一次主循环的处理阶段指定了一个,则该指定的form. item被选定。
      另外,如果第一个form. item的警戒条件为false,则该form. item被选定。在检查警戒条件时,如果发生错误,事件被抛出,FIA跳过收集阶段,进入处理阶段,处理该事件。
      如果没有任何form. item的警戒条件为false,且FIA最后一次循环完成时没有碰到明确的控制跳转,FIA会执行一个隐含的操作(类似的,如果执行是在form. 之外,例如当在form之外产生一个错误时,没有任何明确的控制跳转,解释器将执行一个隐含的操作)。
 
      2、Collect phase
      收集阶段的目的是收集用户输入或事件。当一个form. item被选定时,FIA要执行的操作取决于该form. item的类型:
      如果访问的是一个field item,FIA根据该field item的提示语计数器和提示语条件选定提示语,进行排队,然后激活并监听该field级别的语法和任何其他更高级别的激活的语法,等待语法识别和某个事件。
      如果访问的是,FIA根据提示语计数器和提示语条件对提示语进行排队,激活该item的语法,在该transfer执行前播放它的提示语队列。
      如果访问的是或,FIA根据提示语计数器和提示语条件对提示语进行排队,FIA没有激活语法,相反,执行环境给subdialog或object指定了收集输入的行为。在执行subdialog或object之前不播放提示语队列,而应该在后来的输入收集的时候播放。
      如果访问的是,FIA根据该的提示语计数器和提示语条件选定提示语,进行排队,然后监听form级别的语法和其他更高级别的激活的语法,等待语法识别和某个事件。
      如果访问的是,FIA把它的form. item 变量置为true,对它的内容求值,跳过处理阶段,没有收集任何输入,FIA主循环的下一次循环进入该。
 
      3、Process phase
      处理阶段的目的是处理上一个阶段收集到的输入或事件。
        (1)、如果出现一个事件(如noinput或挂机),FIA确定该应用的catch元素并执行它,该应用catch元素在当前form. item 的范围内选定,在该会话封装的范围内进行,这样可能会导致该FIA终止(例如,如果它跳转到一个对话或文档,或执行了),或者可能导致FIA进入主循环的下一个循环(如,执行帮助的默认事件处理)。
        (2)、如果某个输入匹配了语法,则FIA执行该link的跳转,或者抛出它的事件,如果抛出一个事件,事件在当前的form. item(如、 、等等)的环境下处理。
        (3)、如果输入匹配了一个不同于当前form的另一个form的语法,该FIA终止,另一个form被初始化,该form的FIA带着这个输入直接进入它的处理阶段。
      如果某个输入匹配了该form的语法,则:
        (1)、该语法的语义结果被映射到一个或多个form. item变量,详细描述见3.1.6节;
        (2)、FIA标识这些赋值所触发的操作,详细描述见24节;
        (3)、FIA根据它们在文档中的顺序执行每个操作。如果遇到、、、、或者元素,就不会再执行剩下的元素了,FIA要么终止,要么继续主循环的下一个循环。不会终止FIA(终止意味着一个操作),只是相当于给相应的prompt做个标记,让FIA在下一次循环再次播放prompt。如果在执行某个时抛出一个事件,FIA将在该的作用域内开始选定事件处理,该作用域可以是一个 form. item或者该form自己,然后在该dialog作用域外处理。
      在完成处理阶段后,解释器继续返回到选定阶段。
    关于FIA更详细的描述见附录C。

第二节 Menus enter.gif 
 
    menu在语法上是一个form的另一种形式,该form包含了单个的匿名的field。menu提示选择一个选项,并根据该选项跳转到相应的dialog。就像一个正规的form一样, menu也有它自己的语法作用域,例如当用户在执行另一个dialog时,它的语法也可以是激活的。下面的例子中,menu给用户提供了3个选项:
      <?xml version="1.0" encoding="UTF-8"?>
      
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd">
        
          
             Welcome home. Say one of: 
          
          
             Sports
          
          
             Weather
          
          
              Stargazer astrophysics news
          
         Please say one of 
        
      
    下面是该dialog可能的流程:
      C: Welcome home. Say one of: sports; weather; Stargazer astrophysics news.
      H: Astrology.
      C: I did not understand what you said. (a platform-specific default message.) 
      C: Welcome home. Say one of: sports; weather; Stargazer astrophysics news.
      H: sports.
      C: (proceeds to http://www.sports.example.com/vxml/start.vxml) 
 
一、MENU
    
idMenu的标识符,它允许dialog通过或跳转到该menu。
scopeMenu的语法作用域。如果它的值为“dialog”,只有当用户跳转到该menu,它的语法才是激活的。如果它的值为“document”,它的语法在整个文档内(或者,如果该menu在应用根文档里,在该应用中,所有加载的文档内)都是激活的。
dtmf当它的值为“true”,前九个choice如果没有明确的指定dtmf属性,则它们会得到隐含的dtmf属性,如“1”、“2”等。剩下的那些没有明确指定dtmf属性的choice不会得到DTMF值(因此它们不能通过DTMF按键来匹配)。此时,如果该menu有choice指定了它自己的DTMF序列,该序列包含除了“*”、“#”或“0”以外的字符,平台要抛出error.badfetch 事件。该属性默认值为“false”。
accept当它的值为“exact”(该值为默认值),则该menu中的choice元素的文本定义的是要识别的精确的短语。如果它的值为“approximate”,则该menu中的choice元素的文本定义的是要识别的近似的短语(如2.2.5节中描述的)。的accept属性的优先权高于menu的该属性。
表7:
 
二、CHOICE
    元素有下面几个作用:
      1、它可以指定一个语音语法,用元素定义或由程序自动产生,详细描述见2.2.5节;
      2、它可以指定一个DTMF语法,详见2.2.3节;
      3、它的内容可以作为的提示语,详见2.2.4节;
      4、当某个选项被选择的话,它要么指定了要抛出的事件,要么指定了要跳转的URI。
    的属性有:
dtmf该元素的DTMF序列。它的作用等同于一个简单的DTMF语法,或者应用于该序列识别的DTMF property(6.3.3节)。它和DTMF不同的是,它的空格是不起作用的:dtmf=“123#”和 dtmf=“1 2 3 #”是等同的。
accept该元素的“accept”属性的优先权高于所在的
next要跳转的下一个对话或文档。
expr一个表达式,它的值为要跳转的URI,而不指定“next”属性。
event指定一个要抛出的事件,而不指定“next”属性。
eventexpr一个ECMAScript表达式,它的值为要抛出的事件名。
message一个信息串,它提供了关于要抛出的事件的上下文。在元素的作用域内用变量“_message”可以得到该信息串,详见5.2.2。
messageexpr一个 ECMAScript表达式 ,它的值为一个信息串。
fetchaudio见6.1节。它默认为的fetchaudio的值。
fetchhint见6.1节。它默认为的documentfetchhint的值。
fetchtimeout见6.1节。它默认为的fetchtimeout的值。
maxage见6.1节。它默认为的documentmaxage的值。
maxstale见6.1节。它默认为的documentmaxstale的值。
表8:元素的属性
    必须正确地指定属性“next”、“expr”、“event”和“eventexpr”中的一个,否则会抛出error.badfetch事件。也可以正确地指定属性“message”或“messageexpr”中的一个,否则会抛出error.badfetch事件。
    如果在中指定了一个元素,则该外部语法用于替换自动产生的语法。这样开发者就可以准确地控制元素的语法,例如:
      <?xml version="1.0" encoding="UTF-8"?>
      
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://www.w3.org/2001/vxml
               http://www.w3.org/TR/voicexml20/vxml.xsd">
        
          
             
             Sports
          
          
             
             Weather
          
          
             
              Stargazer astrophysics
          
        
      

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12476590/viewspace-217093/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12476590/viewspace-217093/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目次 1 范围 1 2 引用标准 1 3 术语和定义 1 4 概述 3 4.1 VoiceXML简介 3 4.2 VoiceXML的背景 4 4.2.1 VoiceXML的结构模型 4 4.2.2 VoiceXML的设计目标 5 4.2.3 VoiceXML的范围 6 4.2.4 VoiceXML的设计要点 7 4.2.5 对VoiceXML实现平台的要求 7 4.3 VoiceXML的一些概念 8 4.3.1 对话框和子对话框 8 4.3.2 会话 8 4.3.3 应用 8 4.3.4 语法 9 4.3.5 事件 9 4.3.6 链接 10 4.4 VoiceXML的元素 10 5 VXML元素说明 11 5.1 文档结构与文档执行 11 5.1.1VXML元素 11 5.1.2单文档应用 12 5.1.3多文档应用 12 5.1.4子对话框 13 5.2 业务控制与业务流程元素 14 5.2.1 对话框 14 5.2.1.1窗体 14 5.2.1.1.1 窗体的解释 14 5.2.1.1.2 窗体项 15 5.2.1.1.3 窗体项变量和条件 15 5.2.1.1.4 定向窗体 15 5.2.1.1.5 混合初始窗体 15 5.2.1.2 菜单(menu)元素 15 5.2.1.2.1 CHOICE元素和ENUMERATE元素 16 5.2.1.3 窗体项 18 5.2.1.3.1 FIELD元素 18 5.2.1.3.2 BLOCK元素 20 5.2.1.3.3 INITIAL元素 20 5.2.1.3.4 SUBDIALOG元素 20 5.2.1.3.5 OBJECT元素 22 5.2.1.3.6 RECORD元素 23 5.2.1.3.7 TRANSFER元素 25 5.2.1.3.8 FILLED元素 27 5.2.1.3.9 LINK元素 28 5.2.2 控制流和ECMAScript 29 5.2.2.1 变量和表达式 30 5.2.2.1.1 变量和表达式的一般信息 30 5.2.2.1.2变量的作用域 31 5.2.2.1.3标准会话变量 31 5.2.2.1.4标准应用变量 31 5.2.2.2事件处理 32 5.2.2.2.1 THROW元素 32 5.2.2.2.2 CATCH元素 32 5.2.2.2.3 事件处理的时机 33 5.2.2.2.4速记表示法 33 5.2.2.2.5 事件处理中的冲突 34 5.2.2.2.6 事件缺省动作 34 5.2.2.2.7事件类型 34 5.2.2.2.8定时器事件 35 5.2.3 执行上下文 35 5.2.3.1 VAR元素 36 5.2.3.2 ASSIGN元素 36 5.2.3.3 CLEAR元素 36 5.2.3.4 IF,ELSEIF和ELSE元素 36 5.2.3.5 PROMPT元素 37 5.2.3.6 REPROMPT元素 37 5.2.3.7 GOTO元素 38 5.2.3.8 SUBMIT元素 38 5.2.3.9 EXIT元素 39 5.2.3.10 RETURN元素 39 5.2.3.11 DISCONNECT元素 40 5.2.3.12 SCRIPT元素 40 5.2.3.13 LOG元素 42 5.3 业务功能实现元素 42 5.3.1语法 42 5.3.1.1 语音语法 42 5.3.1.2 语法的作用域 43 5.3.1.3 语法冲突 43 5.3.2 系统输出 43 5.3.2.1 语音合成标志语言 44 5.3.2.2 基本语音输出 44 5.3.2.3 播放语音文件 44 5.3.2.4 VALUE元素 45 5.3.2.5 打断语音输出 45 5.3.2.6 超时 46 5.3.3 环境与资源 46 5.3.3.1 资源 46 5.3.3.1.1资源获取 46 5.3.3.1.2 缓冲 46 5.3.3.1.3 预读 47 5.3.3.1.4 协议 47 5.3.3.2文档信息 47 5.3.3.2.1 META元素 48 5.3.3.2.2 METADATA元素 48 5.3.3.3平台属性 49 5.3.3.4 PARAM元素 50 5.3.3.5 时间设计 50 5.3.4 VoiceXML在独立外设中的应用 51 5.3.4.1对独立IP的硬件的要求 51 5.3.4.2 VoiceXML与多层次的业务 51 5.3.4.3 VoiceXML与其他功能实体的通信 51 5.3.5 各种功能的object说明 53 5.3.5.1会议桥资源的操作实现 53 5.3.5.1.1开始会议 53 5.3.5.1.2结束会议 54 5.3.5.1.3加入会议 54 5.3.5.1.4离开会议 55 5.3.5.1.5修改通话方的状态 56 5.3.5.2 连接两条话路 57 5.3.5.2.1操作申请 57 5.3.5.2.2主动方等待 58 5.3.5.2.3被动方接入 59 5.3.5.3 SCP与IP的UI操作实现 60 6 应用举例:无线广告业务的VoiceXML描述 63 7 TTS语法规则 68 8编制历史 73
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值