VoiceXML开发的指南_第1页
VoiceXML开发的指南_第2页
VoiceXML开发的指南_第3页
VoiceXML开发的指南_第4页
VoiceXML开发的指南_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 . VoiceXML开发指南Ver 1.017 / 19目 录1.VoiceXML概述11.1.VoiceXML语言11.2.系统结构11.3.工作原理21.3.1.应用程序的输入21.3.2.应用程序的输出22.VoiceXML基本编程22.1.程序结构22.1.1.Welcome示例程序22.1.2.基本元素32.2.程序输出32.2.1.TTS输出32.2.2.声音文件输出42.2.3.声音文件和TTS混合输出42.3.程序输入52.3.1.菜单输入52.3.2.字段输入62.4.条件语句82.5.goto语句93.VoiceXML高级编程103.1.事件103.2.录音113.3.呼

2、叫转移123.4.object元素133.5.submit元素143.6.ECMAScript143.7.收发 164.参考文献171. VoiceXML概述1.1. VoiceXML语言VoiceXML(语音扩展标记语言)是一种基于XML的因特网标记语言,用于开发语音用户界面。它是音“语音Web”使用的语言,它使得用户可以使用来访问因特网的容,可以将其视为用于的HTML。使用语音界面,用户可以用他们的声音而不是通过计算机键盘和显示器与应用程序进行交互操作。在银行、学校或证券交易所,你可能已经通过语音或者交互式语音应答(IVR)系统接触过语音界面。这些系统提示用户输入相应的信息,用户再根据要求

3、输入相应的数据作为应答,然后系统就可以为用户执行有关的在线操作,例如,在不同之间进行资金转帐。在语音界面中,有一个VoiceXML对话框(相当于一个HTML页)用于描述应用程序对用户说出的提示信息,定义和接收来自用户的应答,并且描述程序控制的流程。用户通过拨打应用程序的来访问VoiceXML应用程序。从用户的角度看,这个相当于一个Web网页的URL。用户可以通过任何类型的拨打。1.2. 系统结构声软公司VoiceServer系统的结构如下图所示。语音浏览器通过解析VoiceXML ,采用提示音、按键等方式进行人机交互完成业务流程。特别地,VoiceServer系统采用可插拔结构支持语音识别(A

4、utomatic Speech Recognition)和语音合成(Text To Speech)技术,从而实现完全通过语音进行人机交互的梦想。图 1VoiceServer系统概图采用VoiceServer系统实现的新业务可以采用任何Web技术方便地和原有数据系统结合。用户可以根据业务需求编写静态voiceXML脚本,或采用ASP/JSP/PHP等动态生成voiceXML脚本;与后台数据系统间可以采用数据库访问,或采用XML或其他协议访问。1.3. 工作原理一般来说,VoiceXML和语音浏览器通过为语音技术和容传递提供标准界面,从而可以帮助变成人员开发因特网上运行的语音界面。尤其值得注意的是

5、VoiceXML提供了一个连接自动语音识别(ASR)、文本语音转换(TTS)、双音多频(DTMF)、呼叫处理以与其他技术和标准界面。虽然VoiceXML在一定程度上降低了这些技术的复杂性,但是要编写高质量的语音应用程序,就必须了解它们的复杂性。在下面两个小节中,将对VoiceXML程序的输入和输出所使用的一些关键技术做一个概述。1.3.1. 应用程序的输入自动语音识别是一种使口语输入能够被程序所理解的技术。为此需要将口语中的单次分解成为离散的声音小段,这种声音小段称为音素(phonemues)。然后将这些音素与应用程序开发人员或语音识别工具提供的词汇相比较。这不是可调整的或自然语言的识别方式。

6、每给一个提示信息,VoiceXML应用程序定义一组有限的有效输入,其他用户的应答将不能被应用程序理解。语音识别可以通过专门的硬件或软件来实现。双音多频(DTMF)系统通过网络中的硬件和软件对按键式的键盘输入进行翻译,实现音频播放。每个按键都能够产生一个可识别的独一无二的音频。该系统使得用户可以使用键盘将数字信息输入VoiceXML应用程序,并且游程序负责接收和理解这些数字信息。1.3.2. 应用程序的输出文本语音转换技术(TTS)能够将输出的文本转换成“语音”(实际上是一种数字音频格式)。这使得应用程序能够拥有灵活的输出方式,将开发人员没有预料到的事情告诉用户。TTS的功能与ASR基本上相反,

7、它将文字转变为音素,这些音素具有相对应的数字声音。另一种语音输出是用某种标准格式存储的录制的声音文件。这些声音文件格式包括WAVE和脉冲编码调制(PCM)。这些声音文件在应用程序启动以前已经被编写和录制好了。所有录制的语音输出都必须事先确定。因此,TTS是一种更灵活的输出方式。尽管TTS技术在过去的几年里有了显著的改进,但是商用TTS语音输出的声音往往仍然比较死板。VoiceXML还为网络本身提供了转移功能。它使得程序能够将用户从当前运行的VoiceXML应用程序转到另一个。2. VoiceXML基本编程2.1. 程序结构2.1.1. Welcome示例程序<?xml version=”

8、1.0”><!- Welcome示例程序 -><vxml version=”1.0”> <form id=”welcome”> <block>欢迎访问声软科技</block> </form>和介绍所有的编程语言一样,Welcome示例程序给出了一个最简单的示例。当该程序被执行时,VoiceServer将通过TTS引擎来说出“欢迎访问声软科技”。下面详细说明该程序代码涉与到的元素。2.1.2. 基本元素元素说明<xml><?xml version=”1.0”>代码行向XML解析器或编辑器说明该文

9、档是XML 1.0语法编写的。所有VoiceXML 1.0文档都是采用XML 1.0语法编写的。虽然元素xml对应VoiceXML解释程序来说并不是必不可少的元素,但是最好使用该元素,这样就可以检查VoiceXML文档的格式是否正确,是否符合文档类型定义(DTD)。注释<!- Welcome示例程序 ->是注释行,VoiceXML程序的注释使用标准的XML语法编写。所有VoiceXML注释一律采用<!-commont text ->格式。<vxml>所有的VoiceXML命令必须封装在<vxml></vxml>元素中。其中属性vers

10、ion告诉解释程序在执行程序文件时,使用哪个版本的VoiceXML文档类型定义(DTD)。目前,VoiceServer支持VoiceXML 1 .0,具体文档类型定义参见 /voicexml1-0.dtd。本示例程序中没有使用vxml元素的另一个属性applicaiton,该属性指明VoiceXML文档的根文档的URL。当你上载一个VoiceXML文档时,它的根文档也同时上载;一般地,根文档中可以定义全局使用的变量、过程等等。<form><form>是VoiceXML的对话框,用于描述VoiceXML应用程序对用户所说的各种提示,定义和收集用户

11、作出的响应,并且描述程序控制的流程。对话框分为两种:一种是菜单,一种是窗体。<form>元素负责执行对话框定义中描述的所有操作,封装与用户输入输出相关的命令,在文档中导航或导航到其他文档中,也可以给变量赋值,进行录音和呼叫转移。<block><block>元素是窗体的项目,用于封装一组语句。这些语句可以用于对变量的值进行输出、浏览、声明和赋值。2.2. 程序输出在VoiceXML中,有两种方法可以用来将信息输出给用户。第一种方法是通过文本语音转换(TTS)工具进行输出,另一种方法是通过播放预先录制的声音文件。2.2.1. TTS输出TTS输出比较简单,如2.

12、1.1的例子<form id=”welcome”> <block>欢迎访问声软科技</block></form>prompt元素是封装TTS输出和audio元素使用的另一种元素。如上例,TTS信息不用<prompt>封装时,相当于使用了<prompt>元素的默认值。在以下两种情况下,必须使用prompt元素:首先,如果输出包含TTS语音标记元素,就必须使用prompt元素;语音标记元素是用于控制向用户说出TTS信息时的各项特性,如速度、音量和发音等。其次,当输出信息需要bargein、cond、count或timeout等

13、属性时,则必须使用prompt元素。<form id=”welcome”> <prompt>欢迎访问声软科技</prompt></form>需要说明的是,VoiceServer系统对TTS的转换结果作了缓存处理,同样的容直接从缓存中获取语音文件,而不是通过TTS引擎实时转换,大大提高了TTS的效率。2.2.2. 声音文件输出<audio>元素用于设定向用户播放事先录制好的声音文件。不同的VoiceXML语音平台支持不同的声音文件格式,一般支持的文件格式为.wav文件。VoiceServer系统支持的文件格式参见其配置说明文档。声音文件

14、输出的示例如下:<audio src = "welcome.wav"></audio>audio元素的属性包括:元素说明srcSrc属性是向用户播放声音文件的url,注意可以是hostname/path/voicefile的形式,从指定的服务器远程得到语音文件。cachingCaching为true的话,则如果有一个声音文件的高速缓存拷贝且没有过期,则使用该拷贝。目前,VoiceServer系统尚不支持该属性。fetchtimeout该属性用于设定提供声音文件的超时,如果平台在指定的超时时间没有取得声音文件,则平台将发出一个出错事件。fetchtin

15、t该属性用于确定平台是否应该在实际需要前提前提取声音文件。目前,VoiceServer系统尚不支持该属性。2.2.3. 声音文件和TTS混合输出VoiceServer系统支持声音文件和TTS输出的混合使用。混合输出的示例如下:<prompt><audio src = "welcome.wav" ></audio></prompt><prompt> 王国强先生</prompt>。值得注意的是,声音文件的格式和TTS输出的格式必须一致;可以参考系统配置手册的说明,配置声音文件和TTS输出的格式。另一种混合输

16、出的方式是,如果在声音文件没有找到或者超时的情况下,则播放TTS的输出。示例如下:<prompt><audio src = "welcome.wav"> 欢迎访问声软科技</audio></prompt>如上例所示,在平台无法得到welcome.wav声音文件时,就将通过TTS引擎将” 欢迎访问声软科技”实时转换成声音文件向用户播放。该功能特别适合在系统升级时,由于某种原因语音文件不全的情况下,用户也能得到正确的提示信息。由于VoiceServer系统对TTS结果的缓存处理,TTS可以获得与预先录制语音文件几乎一样的性能。2.

17、3. 程序输入输入信息可以用两种方法来接收,一种是语音,一种是双音多频(DTMF)。输入信息既可以直接识别,也可以录音。直接识别的输入信息是通过语法来表述的,该语法设定了一组声音,用户可以发出这一组声音,也可以由用户按下DTMF按钮,以便要求进行某项操作,或将信息提供给应用程序。2.3.1. 菜单输入<menu>元素和<form>元素一样,是VoiceXML中的两种对话框之一。根据定义,VoiceXML对话框用于描述应用程序向用户说出的提示信息,也用于定义和接收用户的应答,并且用于描述程序控制的流程。菜单包含的prompt元素用于将应用程序的输出信息传递给用户,它也包含

18、用于建立语法的choice元素,以便定义和接收用户的输入信息,此外它还包含描述程序控制的choice元素和事件。菜单的示例如下:<menu id = "QueryMenu"><prompt> <audio src = "QueryMenu.wav">查询产品信息请按1,了解公司信息请按2,转话务员请按0 </audio></prompt><choice dtmf = "1" next = "#Product" /><choice dtmf

19、 = "2" next = "#Company" /><choice dtmf = "0" next = "#Transfer" /></menu>如上所示,平台在运行到该菜单时,向用户提示“查询产品信息请按1,了解公司信息请按2,转话务员请按0”;QueryMenu.wav的声音文件应事先录制好该语句,如果该文件不存在,则使用TTS输出(参见2.2.3混合输出)。dtmf = "1"、dtmf = "2" 和dtmf = "0&quo

20、t;定义了用户可以按的键值,next定义了用户按了该键后,执行的下一个<form>或<menu>,其中#Product、#Company和#Transfer表示<form>或<menu>的名称,即<form>或<menu>的id值。Menu元素的属性包括:元素说明idId用于标识菜单。当使用goto、submit、next等元素从另一个对话框导航到该菜单时,可以使用该id值。scopescope指在菜单中定义的choice元素语法的作用域。如果scope的值是它的默认值dialog,则菜单的语法只在对话框中有效。如果sco

21、pe的值是document,则菜单的语法将在整个VoiceXML文档中有效。dtmfDtmf值可以是true或false。如果是true,则封装在menu元素中的choice元素如果没有定义dtmf属性,那么将字段赋予一个dtmf值。Choice元素用于菜单语法。如果一个选项的语法被识别,那么该choice元素的next、event或expr等属性将用于确定下一步将执行什么程序。只有next、expr和event之一能够拥有用于每个choice元素的值。Choice元素的常用属性包括:元素说明dtmfDtmf指定与该选项相关的DTMF按键值。nextNext用于指定执行的下一个对话框。如果被访

22、问的对话框位于另一个文件中,对话框的名字必须使用以下格式:<下一个文档的URL>#<对话框名称>如果访问的对话框位于同一个文档,则可以简化为 #<对话框名称>。eventEvent用于设定choice元素语法被识别后产生的事件。exprExpr的作用与next一样,区别在于expr是一个表达式,它的计算结果将作为下一个对话框的名字。下面再给出一个使用<choice>元素的event属性的示例:<menu id = "QueryMenu"><prompt> <audio src = "Qu

23、eryMenu.wav">查询产品信息请按1,了解公司信息请按2,转话务员请按0 </audio></prompt><choice dtmf = "1" next = "#Product" /><choice dtmf = "2" event = "evtCompany" /><choice dtmf = "0" next = "#Transfer" /></menu><catch

24、event = " evtCompany "><prompt><audio src = "Company.wav"></audio></prompt><goto next = "# QueryMenu" /></catch>和前面的示例一样,平台在运行到该菜单时,向用户提示“查询产品信息请按1,了解公司信息请按2,转话务员请按0”,如何用户按了“2”,平台将接收到一个名为evtCompany的事件,<catch event=”evtCompany”&g

25、t;元素中定义了该事件处理程序,即播放一段公司介绍Company.wav,播放完毕后再转到菜单QueryMenu。关于<catch>元素的具体参见3.1的说明。2.3.2. 字段输入字段输入采用field元素,该元素用于接收用户的自动语音识别信息或DTMF信息。<field>元素是接收用户输入信息最常用的元素。<field>元素的示例如下:<form id = "QueryProductCode"><field name = "productCode" type = "digits"

26、;><prompt><audio src = "InputProductCode.wav" >请输入产品代码</audio></prompt></field> </form>如上所示,平台在执行到QueryProductCode对话框时,会向用户提示“请输入产品代码”,之后用户就可以键入产品代码。Field元素的属性包括:元素说明nameName用于存放来自用户输入信息的变量。exprExpr声明变量的初始值。如果expr没有指定,则该变量的初始值就是undefined。如果该变量的值是undef

27、ined之外的值,则封装在field元素中的指令将不予执行。condCond是一个表达式,它的计算结果可以是true或false。如果cond的计算值是true,则封装在field中的指令将被执行,如果cond的计算值是false,则封装在field中的指令将不被执行。typeType指明了期望的用户输入类型。系统置的类型包括:- Boolean:缺省”1”为true,“2”为false- Date:年月日组成的有效日期,格式为yyyymmdd。- Digits:一串由09组成的串。- Currency:货币数量,格式为dddddd*dd,*表示小数点。- Number::数字,输入格式同cu

28、rrency。- Phone:有数字构成的,*表示分机。例如:800861234*123表示800861234转分机123。- Time:时间,格式是hhmm。Field元素还有以下影子(shadow)变量:- Name$.confidence:0.0-1.0 间的数字,表示返回结果的可信度,0.0最低,1.0最高。该变量主要用于ASR识别结果;- Name$.utterance:是被识别时的确切词组,同样是用于ASR识别结果的;- Name$.imputmode:表明输入方式是ASR还是DTMF,用于当ASR和DTMF同时可用时,说明该次输入是用什么方式进行的。当用户输入后,一般地执行<

29、;filled>元素。Filled元素表示在某些字段项赋值后,执行封装在filled元素中的指令。以下示例使用filled元素完善前面的示例:<form id = "QueryProductCode"><field name = "productCode" type = "digits"><prompt><audio src = "InputProductCode.wav" >请输入产品代码</audio></prompt></fi

30、eld><filled><submit expr=server/get.aspx' namelist=" productCode" /></filled></form>如上所示,如果用户输入了产品,则将输入的产品post到后台服务器,取得信息后向用户播放产品信息。关于submit元素的说明,参见3.5节。Filled元素的属性包括:元素说明namelist该属性包含filled元素等待被赋予一个值的所有字段变量。它的默认值是父窗体中的所有字段变量。mode该属性可以是all或any。如果是any,则当filled

31、元素的namelist属性中的任何变量被赋值时,filled元素中的指令均被执行;如果是all,则当filled元素的namelist属性中的所有变量被赋值后,filled元素中的指令才被执行。下面的示例说明了mode为all的应用示例:<form id = "Login"><field name = "name" type = "digits"><prompt><audio src = "InputLoginName.wav" >请输入用户代码</audio&

32、gt;</prompt></field><field name = "password" type = "digits"><prompt><audio src = "InputPassword.wav" >请输入用户密码</audio></prompt></field><filled namelist=” name password” mode=”all”><submit expr=server/login.aspx

33、9; namelist="name password" /></filled></form>如上所示,只有在用户输入了用户名和密码后,进入后台的验证程序。2.4. 条件语句VoiceXML的条件语句采用<if>、<elseif>和<else >元素,其中<elseif>和<else >元素总是封装在一个<if>元素中。If元素可以包含多个elseif元素,但只能包含一个else元素。<if>元素的示例程序如下,该程序示意了产品折扣处理:<form id =

34、 “UnitPrice”><field name = "Qty" type = "digits"><prompt><audio src = "InputQuantity.wav" >请输入购买数量</audio></prompt></field><filled><if cond = ”Qty &gt; 100”> <assign name=”unitPrice” value=”60” /> <elseif c

35、ond = “Qty &gt; 10”/> <assign name=”unitPrice” value=”80” /> <else/> <assign name=”unitPrice” value=”100” /> </if></filled></form>如上所示,用户输入购买的产品数量后,在<filled>元素中判断,如果数量超过100则单价为60,如果数量大于10小于100则单价为80,如果数量小于10,则单价为100。这里需要注意的是,由于<、>是XML的保留字符,所以大于、

36、小于符号都需要使用转义符。转义符表如下:保留字符转义符保留字符转移符< 小于符号&lt; 单引号&apos;> 大于符号&gt;& 与符号&amp;“ 引号&quot;2.5. goto语句goto元素用于从一个对话框浏览到另一个对话框,也可以从一个窗体项转到另一个窗体项。Goto元素的示例如下:<form id=”welcome”> <block>欢迎访问声软科技 <goto next = “#QueryMenu”></block></form><menu id =

37、"QueryMenu"><prompt> <audio src = "QueryMenu.wav">查询产品信息请按1,了解公司信息请按2,转话务员请按0 </audio></prompt><choice dtmf = "1" next = "#Product" /><choice dtmf = "2" next = "#Company" /><choice dtmf = "0&qu

38、ot; next = "#Transfer" /></menu>如上所示,平台在播放了欢迎词后,转到查询菜单,提示用户输入菜单选择。Goto元素的常用属性包括:元素说明NextNext属性用于从一个对话框转移到另一个对话框。它用于设定要访问的下一个对话框。如果访问的对话框在另一个文件中,则必须采用<下一个文档的URL>#<对话框名称>。如果没有提供对话框名称,则执行VoiceXML文件的第一个对话框。ExprExpr属性的作用与next相似,差别在与expr是一个表达式,其计算结果是一个URL。nextitem当goto元素从窗体的

39、一个项目导航到另一个项目,必须使用nextitem。Nextitem语法上与next相似,差别在于nextitem的名字不带前缀符号。ExpritemExpritem属性的作用与nextitem相似,差别在与expritem是一个表达式,其计算结果是一个URL。注意,对于每个goto元素来说,next、expr、nextitem、expritem属性中只能有一个属性具有相应的值。3. VoiceXML高级编程3.1. 事件在menu元素中已经接触过事件。事件即可以是预先定义的,也可以是由应用程序定义。事件可以是正常的,如用户请求帮助,也可以是出错事件,如用户没有输入等。在VoiceXML的事件

40、模式中,事件即可以由平台产生,也可以由应用程序产生。这些事件可以由应用程序获取和处理,也可以由平台获取和处理。平台预定义的事件如下表所示:事件说明Cancel用户要求取消当前输出Telephone.disconnect.hangup用户已经结束呼叫Exit用户要求退出Help用户要求帮助Noinput平台希望用户输入,但用户在超时发生前一直没有输入Nomatch平台检测到用户输入,但和任何有效的语法均不符Error.badfetch请求访问资源失败Error.sematic执行文档遇到运行时错误Error.noauthorization用户要求对平台执行一项他没有被授权运行的操作Error.u

41、nsupported.format用户要求访问的资源所用的格式平台不支持Error.unsupported.element平台遇到一个它不支持的有效元素。应用程序获取和处理事件采用<catch>元素,该元素包含处理平台发出的和应用程序发出的事件的处理方法。Catch元素的示例如下:<catch event=”noinput”><prompt><audio expr = "PleaseInput.wav">您一直没有输入,请重新输入!</audio></prompt></catch>如上所示,

42、一旦在平台期望用户输入而用户在超时前一直没有输入时,平台向用户提示“您一直没有输入,请重新输入!”。Catch元素的属性包括:元素说明EventEvent属性指明获取的一个或多个事件名称。Event可以是一个特定的事件,也可以是一个事件类别,如event=”error”CountCount指发生事件的次数。Count的默认值是1。Cond如果cond为true,则对事件进行处理,如果cond为false则不处理。以下是count属性的应用示例:<catch event=”nomatch” count=”1”><prompt><audio expr = "

43、InputError1.wav">对不起,您的输入错误,请重新输入!</audio></prompt></catch><catch event=”nomatch” count=”2”><prompt><audio expr = "InputError2.wav">对不起,您的输入再次错误,请按1查询产品信息,按2了解公司信息</audio></prompt></catch>应用程序可以利用count属性,在用户反复错误的情况下,给出进一步具体的提示信息

44、,以提供更友好的用户界面。另外,对应最常用的error、noinput、nomatch和help事件,VoiceXML语言提供的<eroro>、<noinput>、<nomatch>和<help>元素,其效果等价于<catch event=”>。3.2. 录音record元素用于录制用户的语音输入。录制的声音文件可以通过record元素的name属性中声明的变量来加以引用。Record元素的应用示例如下所示:<form id = “LeaveMessage”> <record name = “message” bee

45、p = “true” maxtime=”60s” finalsilence =”2s” dtmfterm =”true”> <prompt>请在听得滴声后留言</prompt> <filled> <prompt>您的留言是<value expr=”message”></prompt></filled> </record></form>如上所示,平台在执行到这段程序时向用户提示“请在听得滴声后留言”,并播放提示音,用户开始留言。用户留言完毕后,平台向用户确认“您的留言是”,并播放用户

46、的留言容。Record的一些属性指明在录制用户留言前播放提示音,最长留言时间是60秒,如果用户2秒没有声音或者用户按了任何按键则认为留言结束。Record元素的属性包括:元素说明NameName是引用用户录制声音文件时使用的变量名称。如果访问record时,name属性的变量值不是undefined,则record元素将不执行。ExprName变量的初始值。Cond确定访问record元素时是否执行,如果是true执行,false则不执行。缺省值是true。Beep如果beep为true,则平台在准备接收用户录音前播放提示音,beep的缺省值是false。Maxtime该值指定平台允许用户录音

47、的最长时间。Finalsilence该值指定平台允许的静默时间。Dmfterm如果dtmfterm为true,则用户按下任何dtmf键结束录音。按键产生的声音将不是录音的部分。Type录制的声音文件的格式。该格式必须是平台支持的格式,如果不指定,则采用平台的默认格式。Record元素具有以下影子变量:- name$.duration:以毫秒为单位的录音长度;- name$.size:以字节为单位的文件大小;- name$.termchar:为结束录音而输入的DTMF键值,可以是null。3.3. 呼叫转移呼叫转移采用transfer元素,使得应用程序可以在用户和另一方之间启动一次呼叫。Tran

48、sfer元素的示例如下:<form id=”transfer”> <transfer name = “call” dest = “123456” bridge = “false”> <prompt>您的正在被转接到话务员,请稍候</prompt><filled> <if cond = “call = noanswer”> <prompt>对不起,话务员无法接听您的,请稍后再试。,再见!</prompt> <disconnect/> <exit/> </if> &l

49、t;/filled> </transfer></form>如上所示,平台执行到该程序时,向用户提示“您的正在被转接到话务员,请稍候”,然后向123456转移,如果123456无法接听,则向用户提示“对不起,话务员无法接听您的,请稍后再试。,再见!”,之后挂机退出。Transfer元素的属性包括:元素说明NameTransfer的变量名称。如果该变量是undefined,则transfer元素被执行,否则不执行transfer元素。当transfer失败后,该变量为以下值之一:- busy:接收到忙音- noanser:在规定的timeout没有收到回答- netw

50、ork_busy:网忙,无法接通- near_end_disconnect:用户已挂断- far_end_disconnect:呼叫方已挂断- network_disconnet:呼叫被网切断ExprName属性变量的初始值CondCond为true则执行transfer元素,为false则不执行Dest转接的Destexpr是一个表达式,其计算值作为转接的Bridge用于确定当转接后,转接呼叫结束后是否返回应用程序。Transfer元素有一个影子变量name$.duration,表示以毫秒为单位的成功呼叫的时间长度。3.4. object元素使用object元素,VoiceXML开发人员可以

51、访问不是VoiceXML提供的特定平台的功能。由于有些对象是平台所特有的,因此使用一个对象会导致某个应用程序与特定的平台相关联。如果平台不知道被引用的对象,则产生一个error.unsupported.object事件。Object元素的示例如下:<object classid = "xml.windows.text2tiff" name = "TiffObj" ><param name = "text" value = " 的容" /><param name = "tiff

52、" value = "fax.tif" /></object>如上所示,xml.windows.text2tiff就是VoiceServer平台特有的提供将文本保存为 文件的object元素。Object元素的主要属性包括:元素说明NameName是引用返回的对象时使用的变量名称。当访问一个object元素时,如果name的值不是undefined,则不执行object元素ExprExpr是name属性中声明对象的初始值CondCond是布尔值,用于确定object元素是否被执行ClassidClassid是对象所在设备的url,用于唯一标识一个

53、对象类别CodebaseClassbase是确定classid等属性中所有相对url时使用的基本urlCodetype是对象的容类型一般的,需要向object传递参数,传递参数使用param元素。Param元素的属性包括:元素说明NameName是参数的名称ExprExpr是参数值的表达式Value参数值Valuetype可以是data或ref,默认值是data。说明传递的值是值类型还是引用类型Type如果valuetype是ref,则type说明其具体的mime类型3.5. submit元素submit元素用于从一个VoiceXML文档转到服务器端的脚本文件,如Perl、ASP或ASP.ne

54、t等。Submit的示例如下所示:<form id = "QueryProductCode"><field name = "productCode" type = "digits"><prompt><audio src = "InputProductCode.wav" >请输入产品代码</audio></prompt></field><filled><submit next = ”server/get.aspx”

55、namelist=" productCode" /></filled></form>如上所示,如果用户输入产品“1234”,submit将发出server/get.aspx?productCode=1234的请求。get.aspx中对此productID作处理,并返回下一页vxml文档。submit元素的主要属性包括:元素说明NextNext是下一个要执行的脚本文件url。url可以是当前文档的绝对地址,也可以是以当前文档的相对地址。如果next设置了一个值,则expr就不能设置其他值ExprExpr的作用同next,差别在于expr是一个表达

56、式,其计算结果是一个url。如果设置了expr就不能设置next属性Method指明 请求的方法是get还是post,默认是getNamelistNamelist是要提交到脚本文件的变量列表,如果namelist省略了,则作用域的所有字段项均被提交EnctypeEnctype是提交文档的mime类型,默认值是application/x-form-urlencoded类型3.6. ECMAScript使用scipt元素,ECMAScript代码既可以嵌入VoiceXML文档,也可以从外部文件调用。Script元素的示例如下:<script src = "common.js&quo

57、t; />该语句表示包括common.js中的所有javascript变量定义和函数定义,在common.js中定义过的变量和函数可以在任何expr属性中使用。如果在common.js中有如下定义:function getVoiceFile(index)if (index >= 0 && index < 10)return _fileNameindex; else return “”;_fileName = new Array(10);_fileName0 = "0.vox"_fileName1 = "1.vox"_fileName2 = "2.vox"_fi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论