VoiceXML培训资料课件_第1页
VoiceXML培训资料课件_第2页
VoiceXML培训资料课件_第3页
VoiceXML培训资料课件_第4页
VoiceXML培训资料课件_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

VoiceXML培训资料什么是VoiceXML?VoiceXML简介

VoiceXML:Voice

eXtensibleMarkupLanguage

(语音可扩展标记语言)VoiceXML开发环境Jdk1.4.0以上版本Tomcat4.0以上版本环境变量的配置:PATH=C:\j2sdk1.4.2\bin;setCLASSPATH=.;C:\j2sdk1.4.2\jre\lib\rt.jar;setJAVA_HOME=C:\j2sdk1.4.2注:CALSSPATH是CLASS文件的寻找路径,没设就找不到CALSS文件。CHASSPATH中的”点”代表当前路径。VoiceXML入门先来了解一下XMLXML简单规则:1、从<?xmlversion=“1.0”encoding=“gb2312”?>开始2、元素的格式 <元素名 属性名=“属性值”属性名=“属性值”….> </元素名>3、一个XML文当中只能包含一个主元素,例如:元素名为:vxml4、元素间的包含 <元素名 属性名=“属性值”属性名=“属性值”….> 可以并列放置一个或者多个文本或者元素 </元素名>5、空元素 是指元素中没有包含任何文本或者元素的元素,可以缩写为: <元素名 属性名=“属性值”属性名=“属性值”…./>如何进行业务的日常维护通常可以使用IE对业务流程的检查采用逐步检查的办法:1、检查普通页面是否能够正常显示2、检查是否能够支持动态脚本程序,例如Jsp程序是否能够正确运行3、检查操作数据库部分的流程是否正常下面是一个例子:从HelloWorld开始<?xmlversion="1.0"encoding="gb2312"?><!--这是我们的第一个VoiceXML程序--><vxml><form> <block> <prompt><audiosrc=“”>你好</audio></prompt> </block> <block> <prompt>再见</prompt> </block></form></vxml>放音收号

<fieldname=“exercise"type="digits"><propertyname=“maxdigit”value=“1”/><!—最大收号位数--><propertyname="interdigittimeout"value=“1”/><!—收号间隙时间--><propertyname=“cancelchar”value=“*”/><!—默认取消键--><propertyname=“termchar”value=“#”/><!—默认结束键--><prompt><audiosrc=“c:\voice\*.vox”>您好!</audio></prompt><filled><ifcond="exercise==1"><gotonext=“*.jsp"/><elseifcond="exercise==2"/><gotonext=“*.jsp"/><else/></if></filled>深入了解VoiceXML框架可执行内容可执行内容指的是程序上的逻辑块,这种逻辑出现在:<block>的formitem中。Form和formitem的<filled>行为中。事件处理中(<catch>,<help>等)。下面分别介绍一下这些元素:clear变量清空var变量定义prompt放音reprompt重放音gotosubmit流程跳转ifelseelseif流程分支的判断return返回subdialog调用exit退出常用的标准session变量Session.telephone.ani系统主叫Session.telephone.dnis系统被叫FormForm元素可以包含:一个或者多个formitem变量定义(var)事件处理(error/help/nomatch/noinput/catch)填充后处理(Filled)VoiceXML中的流控制-1FormItem总体特性包括如下元素:field、block、subdialog、object、record、transfer1、它们都有一个用name属性指定名字的变量,该变量用expr属性计算结果为初始值2、它们都有一个cond属性,作为判断表达式,用于判定是否需要执行该formitem3、其中fielditem通常包含: filled:其中包含了当fielditem的结果变量被填充的时候需要进行的相应处理 property:用于设定影响当前交互的一些属性 prompt:指定当该fielditem被访问的时候需要提供的提示音 grammar:指定允许的用户说话和按键的语法 catch:指定fielditem中发生事件时需要进行的处理FILLEDfilled:用于指明某一个或者多个域被用户输入所填充后的处理流程mode 可以为all(默认值),或者为any,表示指定的处理过程被执行的选择原则,是所有namelist中的域被填充,还是任意一个namelist中的域被填充namelist

该filled所对应的域的名字,以空格分隔filled可以放置在form、formitem中如果放在formitem中,则表明当该formitem被填充的时候执行该filled中的流程;如果放在form中就是指namelist中的域被填充后需要执行该filled中的流程例子:ex_6_3.vxmlFIELDfield: 收集用户输入的域 name 结果变量名 expr 产生初始值变量表达式 cond 判断是否选择该item被执行的表达式 type 数据类型,相当于有这样的类型的语法 slot 域的关键字名,用于接受语音识别结果 modal 是否屏蔽该field以外的所有的语法type的类型包括:boolean、date、digits、currency、number、phone、time举例:ex_5_3.vxml<fieldname="flavor"><prompt>Whatisyourfavoriteicecream?</prompt><grammarsrc="../grammars/ice_cream.gsl"/></field>SUBDIALOGsubdialog:激活一个类似函数调用的过程 name 结果变量名 expr 产生初始值变量表达式 cond 判断是否选择该item被执行的表达式 namelist 通过HTTP携带的参数的列表 src 跳转到的流程的URL地址 method HTTP获取方式,(Get/Post) enctype HTTP编码方式他和其他fielditem不同的是,其中可以放置param用于传递参数,注意不要将这个参数和namelist属性中的参数混淆,param携带的参数是通过VoiceXML解释器进行传递的举例:return.vxmlPROMPTprompt:播放提示语音 bargein 提示音是否能不用户打断 bargeintype 打断类型(2.0新增),支持识别打断 cond 判断是否播放的条件表达式 count 计数(在选择规则中使用) timeout 用户超时时间例子:<prompt>欢迎使用听网</prompt>相关内容:跳转到执行单元中的介绍VALUEvalue:将表达式值的运算结果输出为语音或者TTS文本 expr 输出表达式例子:<prompt><valueexpr="n*n"/>isthesquareof<valueexpr="n"/>.</prompt>放音内容TTS放音<prompt>请说出城市名称</prompt><prompt>您说的城市名称是:<valueexpr=“cityname”/></prompt>播放WAV语音<prompt><audiosrc="say_your_city.wav"/></prompt><prompt> <audiosrc=“say_your_city.wav”>

请说出城市名称

</audio></prompt><prompt><valueexpr=“recordaudio”/></prompt>混合TTS文本、WAV语音<prompt>

欢迎来到电话听网

<audiosrc=”welcome.wav"/>

下面为您插播一段广告,请收听

<audiosrc=”advertizement.wav"/></prompt>PROMPT的选择规则注意这里的选择规则是指在formitem中的prompt,对于block、catch及事件处理缩写元素、filled中的prompt不存在选择问题。选择规则如下:1、按照文档中的顺序将所有的prompt进行排序,组成列表2、从列表中删除所有cond条件表达式判断为false的prompt元素3、寻找correctcount:列表中所有的的比当前的计数器小的最大计数值4、删除列表中所有值不等于correctcount的标记PROMPT的缓冲原理Vxml解释器任何时候都处于以下两种状态: 1、等待状态:在fielditem中等待用户输入 2、转移状态:根据等待状态获得的输入在fielditem之间转移,在该状态是不接受用户的任何语音输入在转移状态,所有的播放的提示音需要被缓存,在以下情况下才会被真正播放:1、当解释器到达等待状态的时候,所有的缓存的提示音被放出,同时等待用户的输入2、当解释器获取某资源时指定了fetchaudio属性,则需要将所有的缓存的语音播放出去,如果播放完缓存的语音时资源还未获取到,则播放fetchaudio指定的语音直到获取到资源为止3、如果系统准备退出,需要将所有的缓存的语音播放出去变量、表达式与脚本变量与表达式无处不在涉及如下元素:var、script、assign、clear脚本在Vxml中的地位在VoiceXML中,通过嵌入脚本的方式,可以实现复杂的应用,并为VoiceXML提供了强大的计算能力。变量和脚本的关系脚本和变量是融合在一起的,在作用域中可以相互引用。脚本不是孤立存在的,而是与整个VoiceXML结合在一起的除了var定义的变量,还有没有其他变量?VoiceXML中隐含地定义了变量,系统会为每个item定义一个formitem变量,这个变量有两个作用:1)流程控制,2)保存输入值或者返回值。变量作用域sesssion:整个通话过程中起作用application:在一个应用中起作用document:在当前文档中起作用dialog:在form、menu中起作用anonymous:看上一级是谁,可能是block、catch元素包括其缩写、filled变量的使用cond表达式,作为if、elseif、prompt、catch等等元素的属性expr表达式,作为assign、value、等等元素的属性script脚本中对其进行使用举例:<ifcond="i>1"><assignname="i"expr="i-1"/></if><assignname="document.ssn"expr="dialog.ssn"/><linkevent="menulinkevent"><grammarsrc="./linkgrammar.grxml" type="application/grammar+xml"/></link><form>...<field>...<catchevent="menulinkevent"><ifcond="application.lastresult$.confidence<0.7"><gotonextitem="confirmlinkdialog"/><else/><gotonext="./main_menu.html"/></if></catch></field>...</form>Application变量application.lastresult$ application.lastresult$[i].confidence application.lastresult$[i].utterance application.lastresult$[i].inputmode application.lastresult$[i].interpretation这是VoiceXML2.0中的新特性事件的抛出与处理Whothrowevent1)流程抛出事件:通过throw,将指定的事件抛出2)系统处理中抛出的事件:nomatch:在等待用户输入时,如果用户的语音或者按键没有匹配上相应的语法,则抛出该事件;noinput:如果用户在一定时间内没有输入,则抛出该事件;help:如果用户输入“帮助”时,抛出help事件error:错误事件,例如跳转到一个不存在的页面、或者流程中有语法错误、或者在执行过程中有JavaScript运算异常telphone.disconnect:用户挂机或转移exit:流程结束事件,form中的所有item都被执行,没有跳转离开该form则抛出该事件Whichelementprocesstheevent1)catch元素,其属性event中指明了其处理的事件名称2)nomatch、noinput、help、error元素能够处理相应的事件3)事件只能被相比于事件发生地层次高或者相同的元素捕获,不能被低层次的元素捕获catch、nomatch、noinput、help、error元素中可以放置一个执行块,其中可以放置各种执行单元,用于说明当制定事件被捕获后需要完成的动作CATCHcatch: 捕获事件 event 事件名称,或者一组事件的名称 count 计数(用于Catch的选择规则) cond 执行事件处理的判断条件

举例:<catchevent="nomatchnoinput"count="3”cond=“true”><prompt>Securityviolation!</prompt><submitnext="apprehend_felon"namelist="user_id"/></catch>事件处理缩写标记事件处理缩写标记包括:catch: 捕获事件 count 计数(用于Catch的选择规则) cond 执行事件处理的判断条件

举例:<nomatchcount="3”cond=“true”> 您三次密码输入错误,再见 <exit/></nomatch>Catch的选择规则当一个事件发生的时候,我们如何选择该有谁来处理?依据以下原则:1、将所有的在当前作用域中的、包含域中的catch组成一个列表,首先按照Catch所在域从小到大排序,在同一个作用域中按照文档中的实际顺序排序2、将列表中所有cond表达式条件为false的catch标记删除;将列表中所有event中没有包含当前需要被处理的事件的catch删除3、寻找correctcount:在catch列表中比当前的实际计数次数小的最大的count4、寻找列表中第一个其属性count等于correctcount的catch。终于找到你了:)formitemformdocumentapplicationrootinterpretercontext系统默认事件exit (平台屏蔽,避免造成错误),用于用户主动说明离开error 系统错误或者业务错误 error.badfetch无法获取文档

error.semantic error.noauthorization 无权操作(例如呼叫受限) error.unsupported.format error.unsupported.elementhelp 用户主动说帮助noinput 用户在指定时间内没有输入nomatch 用户输入与语法不匹配telephone.disconnect.hangup 用户挂机telephone.disconnect.transfer 无条件前转执行单元详细介绍VARvar:用于定义和初始化变量 name 变量名 expr 初始值例子:<varname="phone"expr="6305551212"/><varname="y"expr="document.z+1"/>ASSIGNassign:用于变量赋值 name 变量名 expr 初始值例子:<assignname="flavor"expr="'chocolate'"/><assignname="document.mycost"expr="document.mycost+14"/>CLEARclear:用于清除formitem变量值 namelist 希望被清楚的变量名例子:<clearnamelist="citystatezip"/><clear/>IFElseifElse例子:<ifcond="amount<29.95"> <assignname="x"expr="amount"/><else/> <assignname="x"expr="29.95"/></if><ifcond="flavor=='vanilla'"> <assignname="flavor_code"expr="'v'"/><elseifcond="flavor=='chocolate'"/> <assignname="flavor_code"expr="'h'"/><elseifcond="flavor=='strawberry'"/> <assignname="flavor_code"expr="'b'"/><else/> <assignname="flavor_code"expr="'?'"/></if>if、elseif: cond 判断条件表达式

PROMPTprompt:播放提示语音 bargein 提示音是否能不用户打断 bargeintype 打断类型(2.0新增),支持识别打断 cond 判断是否播放的条件表达式 count 计数(在选择规则中使用) timeout 用户超时时间例子:<prompt>欢迎使用听网</prompt>相关内容:参考系统输出的详

温馨提示

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

评论

0/150

提交评论