VXml语音业务开发培训课件_第1页
VXml语音业务开发培训课件_第2页
VXml语音业务开发培训课件_第3页
VXml语音业务开发培训课件_第4页
VXml语音业务开发培训课件_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

VoiceXML开发知识——iAvp平台系列培训通信增值事业部张磊

Thursday,September21,20231VoiceXML开发知识通信增值事业部张磊1对象和目标课程对象业务流程开发、测试人员VUI设计人员平台开发、测试人员课程目标了解VoiceXML基本概念和标记使用VoiceXML开发流程2对象和目标课程对象2相关课程《iAvp基础知识培训》《VUI基础》3相关课程《iAvp基础知识培训》3主要内容VoiceXML概述VoiceXML基本概念VoiceXML中的变量和基本标记VoiceXML中的输入输出标记VoiceXML高级标记VoiceXML与服务器端应用开发一个完整的VoiceXML应用4主要内容VoiceXML概述4概述—什么是VoiceXML全称:VoiceeXtensibleMarkupLanguageVoiceXML是一种基于XML规范的标准,是XML子集。它允许通过电话和语音访问Web上的信息和服务。可以用来开发基于语音的电话应用程序。5概述—什么是VoiceXML全称:VoiceeXtens概述—VoiceXML历史AT&TPhoneMarkedLanguage(PML)MotorolaVoxMLIBMSpeechMLHPTalkMLPIPEBEACHVoiceHTML1998,W3C召开Voicebrowsers会议VoiceXMLforum2000,VoiceXML1.02003VoiceXML2.02004VoiceXML2.16概述—VoiceXML历史AT&TPhoneMarked概述—VoiceXML的目标为应用开发者屏蔽底层的、平台相关的细节分离交互代码和服务逻辑提高应用在不同平台的可移植性既能提供对简单应用快捷开发,也提供对复杂应用语言级的支持单文档表示多次交互,减少了Client/Server交互负荷7概述—VoiceXML的目标为应用开发者屏蔽底层的、平台相关概述–VoiceXML与传统语音开发的区别InternetOperatorsNetworkPlatf.VoiceMailAppl.Platf.VividRingAppl.VoiceXMLInterface8概述–VoiceXML与传统语音开发的区别Interne概述–VoiceXML与传统语音开发的区别InternetOperatorsNetworkPlatf.VoiceMailAppl.Platf.VividRingAppl.VoiceXMLInterface9概述–VoiceXML与传统语音开发的区别Interne概述–VoiceXML与传统语音开发的区别InternetOperatorsNetworkPlatf.VoiceMailAppl.Platf.VividRingAppl.VoiceXMLInterface10概述–VoiceXML与传统语音开发的区别Interne概述—VoiceXML与HTML开发比较<formaction=“url”>EnteryourId:<inputname=‘id’><inputtype=‘submit’></form><form><fieldname=‘id’><prompt>YourID,please.</prompt></field><block><submitnext=“url”/></block></form>VoiceXML语音应用开发与HTML页面开发具有很高的相似度11概述—VoiceXML与HTML开发比较<formacti概述—我们的VoiceXML基于VoiceXML1.0规范实现了VoiceXML1.0中的大部分标记和属性扩展了一些1.0中没有的标记,如传真等识别支持built-in、justintime和dgdb12概述—我们的VoiceXML基于VoiceXML1.0规范1概述—iAvp支持的标记(1)13概述—iAvp支持的标记(1)13概述—iAvp支持的标记(2)14概述—iAvp支持的标记(2)14概述—iAvp支持的标记(3)15概述—iAvp支持的标记(3)15概述—iAvp支持的标记(4)16概述—iAvp支持的标记(4)16概述—iAvp支持的标记(5)17概述—iAvp支持的标记(5)17主要内容VoiceXML概述VoiceXML基本概念VoiceXML中的变量和基本标记VoiceXML中的输入输出标记VoiceXML高级标记VoiceXML与服务器端应用开发一个完整的VoiceXML应用18主要内容VoiceXML概述18基本概念—Dialog对话(Dialog/DialogStates)VoiceXML应用程序的用户总是处于一种对话状态或对话中。每个对话都跟着另一个对话,如果没有指定下一个对话,就终止VoiceXML应用程序的执行。有两种对话:表单(Form)和菜单(Menu)。19基本概念—Dialog对话(Dialog/DialogSt基本概念—Document文档(Document)一个VoiceXMLdocument由多个dialog组成。单个document的执行缺省是从第一个dialog开始执行。也可以指定从某个对话执行。在一个application中有多个document时,应选一个document作为rootdocument,并且在其他document的<vxml>标记里引用它,并且它的变量和语法在整个应用中有效。在含多个document的application中,最多只能有两个document可以同时被加载,一个是正在执行的document,另一个是rootdocument。20基本概念—Document文档(Document)20基本概念—RootDocument<?xmlversion="1.0"encoding="UTF-8"?><vxmlversion="2.0"application="app-root.vxml"><formid="say_goodbye"><fieldname="answer"><grammartype="application/srgs+xml"src="/grammars/boolean.grxml"/><prompt>Shallwesay<valueexpr="application.bye"/>?</prompt><filled><ifcond="answer"><exit/></if><clearnamelist="answer"/></filled></field></form></vxml>Leaf.vxml将app_root.vxml作为当前文档的根文档<?xmlversion="1.0"encoding="UTF-8"?><vxmlversion="2.0"><varname="bye"expr="'Ciao'"/><form><block>hello,world.</block></form></vxml>app-root.vxml21基本概念—RootDocument<?xmlversio基本概念—ApplicationApplication(应用)应用(application)是由共享同一应用根文档(applicationrootdocument)的一系列文档组成的。在一个application内,rootdocument总是处于加载状态,此时rootdocument的变量和语法在整个application都是保持激活状态。22基本概念—ApplicationApplication(应用基本概念—Application(续)23基本概念—Application(续)23基本概念—Session会话(Session)会话开始:呼入接通呼出接通会话过程:交互 文档获取会话结束:用户挂机 上下文挂机24基本概念—Session会话(Session)24基本概念—SubDialog子对话(SubDialog)类似函数调用,它提供了调用一个新的交互的机制,并返回到原来的form。返回时保存内部数据、所用语法以及状态信息,以供在调用该Subdialog的document中使用。25基本概念—SubDialog子对话(SubDialog)25基本概念—文档之间的跳转(1)保留根文档上下文的跳转RRRRL1L2234126基本概念—文档之间的跳转(1)保留根文档上下文的跳转RRRR基本概念—文档之间的跳转(2)重新初始化上下文的跳转R1R2R3R1L1234127基本概念—文档之间的跳转(2)重新初始化上下文的跳转R1R2基本概念—文档之间的跳转(3)SubDailog的上下文跳转(1)MaindialogexecutecontextD1D2D3SubDialogexecutecontextSD1SD2<Subdialogsrc=“SD1.vxml”><gotonext=“SD2.vxml”><return>28基本概念—文档之间的跳转(3)SubDailog的上下文跳转SubDialogexecutecontext2基本概念—文档之间的跳转(4)SubDailog的上下文跳转(2)MaindialogexecutecontextD1D2D3SubDialogexecutecontext1SD1SD2<Subdialogsrc=“SD1.vxml”><Subdialogsrc=“

SD2.vxml”><return><return>29SubDialogexecute基本概念—文档之间的跳转(基本概念—Event事件(Event)事件可以是预先定义的或者是应用程序定义。对于各种的情况,由平台抛出事件,如:用户没用响应,请求帮助。当VoiceXML文档有语义错误时,解释器也会抛出事件(<throw>)。事件由<catch>或由它的快捷形式捕捉;一个事件能产生的每个标记都可指定catch标记。在任何层次都可以指定共有事件的处理方式,并且这适用于所有较低层。在VoiceXML的事件模式中,事件可以由平台或应用产生,这些事件可以由应用程序捕获和处理,也可以由平台捕获和处理。30基本概念—Event事件(Event)30基本概念—FIAFIA(FormInterpretationAlgorithm)初始化Form,重新设置状态选择要执行的FormItem并播放提示音收集用户输入,或者填充一个或多个field,或者抛出各种事件查找执行<filled>动作

31基本概念—FIAFIA(FormInterpretati基本概念—FIA(续)初始化选择Item获取输入处理输入结果没有Item可以继续处理Event处理Link其它Dialog32基本概念—FIA(续)初始化选择Item获取输入处理输入结果基本概念—Grammar语法(Grammar)语法指定一份准许的词汇列表,供用户从中选择,以便与VoiceXML应用程序交互每一个dialog都有一个或多个语法(识别、按键),在directeddialog的应用中,每个dialog的语法只有在用户使用该dialog时,才处于激活状态语法的作用域33基本概念—Grammar语法(Grammar)33主要内容VoiceXML概述VoiceXML基本概念VoiceXML中的变量和基本标记VoiceXML中的输入输出标记VoiceXML高级标记VoiceXML与服务器端脚本开发一个完整的VoiceXML应用34主要内容VoiceXML概述34从HelloWord!开始<?xmlversion="1.0"?><vxmlversion="1.0"><form><block>HelloWorld!</block></form></vxml>VoiceXML是Xml的子集,遵从xml1.0规范指定当前文档使用VXML1.0规范定义一个对话表单定义一个表单项,用于封装对应的语句输出文本,可以被TTS合成并播放35从HelloWord!开始<?xmlversion="1VoiceXML中的变量变量相当于ECMAScript变量变量不能以”_”开头类型共有6种Undefine(未定义]——变更被赋予一个值之前它的默认值Null(空)——只能是”null”Boolean(布尔型)——只能是”true”或”false”String(字符串)——用单引号封装的字符串Number(数字型)——正负数……Object(对象型)——一组没有排序的属性。每个属性都包含一个名字、一个值和一组属性。36VoiceXML中的变量变量相当于ECMAScript变量3声明变量变量具有name和Expr属性通过表单项的Name属性来声明通过标记<Var>来声明<Blockname=“FirstBlock”><Varname=“myVar”value=“true”/><Varname=“myVar”/>37声明变量变量具有name和Expr属性<Blockname变量的作用域SessionApplicationDocumentDialog(Anonymous)它是由解释器上下文来声明和赋值,只读变量。不能声明新的session变量。由应用根文档的<vxml>标记的子成员<var>声明由document的<vxml>标记的子成员<var>声明,仅对该document可访问由Form或Menu的<Var>声明在Block、Filled或catch等标记中的<Var>声明当变量不带作用域并发生命名冲突时,使用限定性最明确的作用域变量高低38变量的作用域SessionApplicationDocumeSession变量Session.telephone.ani(主叫号)Session.telephone.dnis(被叫号)Session.telephone.iidigits(信息批示数字)Session.telephone.uui(用户到用户信息)Session.telephone.callidSession.telephone.stationidSession.telephone.channelid39Session变量Session.telephone.ani影子变量影子变量是与字段项相关的变量。影子变量用于返回字段项执行的结果语法:field_item_name$.shadow_var_name例如:recording$.termchar40影子变量影子变量是与字段项相关的变量。40<assign>标记:为变量赋值<formid=“test”><varname=“int_var”expr=“2”/><block><assignname=“int_var”expr=“’two’”/></block></form>VXML中的变量是“弱类型“,声明时不需要显示给出类型在赋值后仍然可以动态改变变量类型(不推荐)41<assign>标记:为变量赋值<formid=“testForm标记:最重要的的DialogForm对应于对话的状态两个属性id:对话标识,例如:<Formid="Welcome">scope:指示这个form对应语法的活动范围FormItemsInputitems:field、record、transfer、object、subdialogControlitems:block、initail42Form标记:最重要的的DialogForm对应于对话的状态Menu标记—另一个Dialog标记<?xmlversion="1.0"encoding="UTF-8"?><vxmlversion="2.1"><menuid="menu“scope=“document”dtmf=“false”><prompt>Whatwouldyoulikeforlunch?Tochoose<enumerate><valueexpr="_prompt"/>,press<valueexpr="_dtmf"/></enumerate></prompt>

<choicenext="#F1"dtmf="1">hamandcheese</choice><choicenext="#F1"dtmf="2">grits</choice><choicenext="#F1"dtmf="3">hamandshatner</choice></menu></vxml>43Menu标记—另一个Dialog标记<?xmlversioDialog的公用属性field、record、transfer、subdialog、block、object和initial标记都具有以下三个属性:nameexprcond通过操作name、expr、cond来确定被封装在这些标记中的内容能否被执行44Dialog的公用属性field、record、transfDialog的公用属性(续)Name和Expr被定义,被封装的指令要在Clear标记被执行后才能被执行如果没有定义Expr,Cond值为true则可以执行,false则不被执行,Cond默认为true<fieldname=“field_var”expr=“true”><fieldname=“field_var”expr=“false”cond=“true”><fieldname=“field_var”expr=“false”cond=“false>被以上field封装的指令均不会被执行<fieldname=“field_var”cond=“false”><fieldname=“field_var”expr=“false”cond=“true”><fieldcond=“false”>被以上field封装的指令均不会被执行<fieldname=“field_var”cond=“true”><fieldname=“field_var”><fieldcond=“false”>被以上field封装的指令均会被执行45Dialog的公用属性(续)Name和Expr被定义,被封装Block标记Block是表单项,用于封装其它语句。属性NameExprCond46Block标记Block是表单项,用于封装其它语句。46If/elseif/else标记If/elseif/else用于条件逻辑判断。如果Cond属性的值计算为true,那么其中封装的语句将被执行,否则将不予执行。<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><ifcond="total>1000"> <prompt>Thisiswaytoomuchtospend.</prompt></if>注意:>,<,”,’,&在使用时需要转义和if不同elseif和else是单行标记47If/elseif/else标记If/elseif/elseParam标记Param标记用于将参数传递给子对话框或者对象。属性name—参数名expr—表达式值value—字串值48Param标记Param标记用于将参数传递给子对话框或者对象SubDialog标记类似于函数调用不丢失当前上下文当subdialog调用完成后,调用者的所有本地数据、语法和状态均被还原属性src属性是必须的Return标记用于结束对话框执行并返回,有两个属性event和namelistEvent属性是返回后产生的一个事件Namelist属性包含了返回后给调用对话框的变量列表。49SubDialog标记类似于函数调用49SubDailog示例<MySubD.vxml><?xmlversion="1.0"encoding="UTF-8"?><vxmlversion="2.1"><formid="F1"><varname="confirm_prompt"/><varname="response"/><fieldname="field_confirm"type="boolean"><prompt><valueexpr="confirm_prompt"/></prompt><filled><ifcond="field_confirm==true"><assignname="response"expr="'yes'"/><else/><assignname="response"expr="'no'"/></if><returnnamelist="response"/></filled></field></form></vxml><formid="F1"><subdialogname="SubD_3"src="MySubD.vxml"cond="true"expr=""><paramname="confirm_prompt"expr="'thissubdialogwillbeexecuted,sincetheconditionistrue,andtheexpressionisundefined.Sayyesornotoexecutethesubdialogfile.'"/><filled><prompt>poppaoomowmow!</prompt></filled></subdialog></form>50SubDailog示例<MySubD.vxml><formGoto标记跳转到当前form的另一个formitem跳转到当前文档的另一个dialog跳转到另一个文档主要属性nextitemnext51Goto标记跳转到当前form的另一个formitem51Goto标记示例1—From内的跳转<varname="GotoVar"expr="'B_4'"/><formid="F1"><blockname="B_1"><prompt>preparingtogotothenextformitem.</prompt><gotonextitem="B_2"/></block><blockname="B_2"><prompt>preparingtogotothenextformitemvariable.</prompt><gotoexpritem="GotoVar"/></block><blockname="B_3"><prompt>thisblockwillbeskipped,andwillbethelastblockexecutedbytheFIA.</prompt></block><blockname="B_4"><prompt>testsuccessful.</prompt></block></form>FIA52Goto标记示例1—From内的跳转<varname="GGoto标记示例2—Form及文档间的跳转<formid=“welcome”><block>welcome!</block><gotonext=“#how_many”/></form><formid=“how_many”><block>howmanybookyouwant?</block><gotonext=“calc_books.vxml#calc“/></form>跳转到另一个Form,本Form内的变量值将丢失跳转到另一个document,本document内的变量值将丢失53Goto标记示例2—Form及文档间的跳转<formid=Clear标记Clear标记用于将变量的值设置为undefine属性namelist<form><varname=“stop”expr=“5”/><varname=“I”expr=“0”/><blockname=“loop”><ifcond=“I<stop”><assignname=“I”expr=“i+1”/><clearnamelist=“loop”/></if></block></form>通过将block的expr值设置为undefine来构造出一个54Clear标记Clear标记用于将变量的值设置为undefiExit标记当执行exit标记时,控制返回给执行平台。这时进行什么操作由平台决定,一般情况下将挂断电话。<formid=“bye”><block>Wearefinishedandwillnowexit.<exit/>

Wehavenotexitedyet!</block></form>55Exit标记当执行exit标记时,控制返回给执行平台。这时进Disconnect标记Disconnect标记用于平台切断用户的电话调用disconnect时会抛出telephone.disconnect.hangup事件<formid=“bye”><block>Wearefinishedandwillnowexit.<disconnect/>

Wehavenotdisconnectedyet!</block></form>56Disconnect标记Disconnect标记用于平台切断主要内容VoiceXML概述VoiceXML基本概念VoiceXML中的变量和基本标记VoiceXML中的输入输出标记VoiceXML高级标记在VoiceXML中使用客户端脚本VoiceXML与服务器端脚本开发一个完整的VoiceXML应用57主要内容VoiceXML概述57Prompt标记用于TTS输出封装audio标记属性bargeincondcounttimeout<formid="F1"><fieldname="F_1"><grammartype="text/gsl">[(gavinmacleeodd)]</grammar><promptcond="false">youguessedit.thispromptwillnotbeexecuted.becausethepromptissettofalse.</prompt><promptcond="true"count="1">hereistheveryfirstprompt.trynottosayanything.</prompt><promptcond="true"count="2">whowastheactorwhoplayedcaptainstoobing?</prompt><filled><prompt>correctyouare!</prompt></filled></field></form>58Prompt标记用于TTS输出<formid="F1">Value标记Value标记用于输出变量的值和表达式计算结果。属性expr<formid="F1"><varname="MyVar"expr="'DirkDiggler'"/><block><prompt> Ourfavoritemoviestaris<valueexpr="MyVar"/>.</prompt></block></form>59Value标记Value标记用于输出变量的值和表达式计算结果Audio标记audios标记用于设定向用户播放预先录制的声音文件。语音文件格式与平台相关,以WAV格式居多。属性src—向用户播放的声音文件的URLfetchtimeout—获取语音文件超时之前的等待时间<formid="F_1"><block><prompt>hereweusetheaudiofetchtimeoutattributewiththevalueof10seconds.</prompt><audiosrc="MySoundFile.wav"fetchtimeout="10s"/></block></form>60Audio标记audios标记用于设定向用户播放预先录制的声Field标记field标记用来接收来自用户的自动语音识别或DTMF按键信息。属性name、expr、condtype—iavp目前只支持builtin方式收集按键<fieldname="inputkey" type="digits?length=1;max_time=2000;mask_key=06789#;"> <prompt> 今日笑话请按1,笑话连篇请按2,打榜笑话请按3…… </prompt> <filled> <ifcond="inputkey=='1'"> <submitnext="../page/TodayJoke_main.aspx"/> <elseifcond="inputkey=='2'"/> <submitnext="../page/JokeSeries_main.aspx"/> </if> </filled></field>digits?length=1;max_time=2000;mask_key=06789#;按键长度为1最大超时为2秒有效按键为12345*,其它为无效按键61Field标记field标记用来接收来自用户的自动语音识别或Filled标记<filled>标记指定了当一个或多个inputitem被填充后要执行的操作。它可以出现在两个地方:作为<form>标记的子标记,或者作为inputitem的子标记。属性namelistmode<formid="get_starting_and_ending_cities"><fieldname="start_city"> <grammarsrc="http://url/city.grxml"type="application/srgs+xml"/><prompt>Whatisthestartingcity?</prompt></field><fieldname="end_city"><grammarsrc="http://url/city.grxml"type="application/srgs+xml"/><prompt>Whatistheendingcity?</prompt></field><filledmode="all"namelist="start_cityend_city"><ifcond="start_city==end_city"><prompt>Youcan'tflyfromandtothesamecity.</prompt><clear/></if></filled></form>Filled标记作为form的子项出现的例子<formid="get_city"><fieldname="city"><grammartype="application/srgs+xml"src="http://url/cities.grxml"/><prompt>Whatisthecity?</prompt><filled><ifcond="city=='Novosibirsk'"><prompt>Note,Novosibirskserviceendsnextyear.</prompt></if></filled></field></form>Filled标记作为输入项的子项出现的例子62Filled标记<filled>标记指定了当一个或多个inpGrammar标记Grammar标记用于设定可能的语音输入不同的平台支持不同的语法格式语法范围iAvp支持Nuance识别语法(GSL2.0)JustInTime(需要即时编译)DTMFDynamicGrammar63Grammar标记Grammar标记用于设定可能的语音输入6Justintime语法<grammar><![CDATA[Name1:public[ [(dtmf-1)(yi1)]{<key"1">}[(dtmf-2)(er2)]{<key"2">}[(dtmf-3)(san1)]{<key"3">} (dtmf-star){<key"*">} (dtmf-pound){<key"#">}]]]></grammar>64Justintime语法<grammar>64动态大语法动态语法定义在应用中可以被动态创建和加载的识别语法DBKey每个DBKey相当于一个识别语法DBItem每个DBItem相当于一个识别条目

例如一个歌手名相当于一个DBKey,那他的每一首歌相当于一个DBItem65动态大语法动态语法定义例如一个歌手名相当于一个DBKey,那iAvp中的大语法实现通过动态语法添加接口向数据库中添加DBKey和DBItem通过动态语法编译接口编译语法通过<DGDB>标记引用语法66iAvp中的大语法实现通过动态语法添加接口向数据库中添加DB动态大语法示例<fieldname=singer><grammar><![CDATA[Name1:public[<dgdb:?key=SingersAll>:s{<singer$s>}[(dtmf-1)(yi1)]{<key"1">}(dtmf-star){<key"*">}]]]></grammar><filled>...</filled></field>67动态大语法示例<fieldname=singer>67NBest应用在一次识别需要返回多个识别结果的语音应用中使用影子变量实现application.lastresult$.length可以得到此次识别结果的数量,iavp平台最多为5个。application.lastresult$[i].confidence识别结果的置信度application.lastresult$[i].utterance识别结果的语音数据application.lastresult$[i].inputmodespeechdtmfapplication.lastresult$[i].interpretation识别结果application.lastresult$[i].interpretation.Key多个slot68NBest应用在一次识别需要返回多个识别结果的语音应用中68语法冲突如果用户语音输入或按键输入结果包括多个有效语法,VoiceXML按下列顺序进行选择:当前字段内的语法包含在当前From或Menu中的语法文档作用域内在当前文档内的非当前Form或Menu的语法及<VXML>标记内的语法当前根文档内的语法69语法冲突如果用户语音输入或按键输入结果包括多个有效语法,VoThrow和Catch标记Throw标记用于产生预定义的事件和应用程序定义的事件。Catch将文档、对话、FormItem与事件捕获联系起来,它包含了可执行的内容。<vxmlversion="2.1"><catchevent="MyUserDefinedEvent"><prompt>wecaughtthethrownevent.</prompt></catch><formid="F_1"><block><prompt>gettingreadytothrowaneventtobecaught.<throwevent="MyUserDefinedEvent"/></prompt></block></form></vxml>throwcatch70Throw和Catch标记Throw标记用于产生预定义的事件Error、Help、Noinput、Nomatch标记<error>、<help>、<noinput>和<nomatch>标记都是<catch>标记特定形式的快捷标记属性condcount<formid="F1"><!--Wemustenablethe'help'universalgrammarfirst--><propertyname="un iversals"value="help"/><fieldname="F_1"><grammartype="text/gsl">[(slappywhite)]</grammar><prompt>sayhelphere.</prompt><helpcount="1"cond="true"><prompt>thisisthefirstoccuranceofthehelpevent.sayhelpagain.</prompt></help><helpcount="2"cond="true"><prompt>thisisthesecondoccuranceofthehelpevent.goodbye.</prompt><disconnect/></help></field><filled><prompt>whydidyoufillthefield,youdummy?</prompt></filled></form>第一次说"help"第二次说"help"71Error、Help、Noinput、Nomatch标Reprompt标记当前对话中的提示音(prompt)最大count属性小于或等于prompt计数器值,那么reprompt标记可用于使该提示得以播放。<fieldname="want_ice_cream"><grammartype="application/srgs+xml"src="/grammars/boolean.grxml"/><prompt>Doyouwanticecreamfordessert?</prompt><promptcount="2">Ifyouwanticecream,sayyes.Ifyoudonotwanticecream,sayno.</prompt><noinput>Icouldnothearyou.<!--Causethenextprompttobeselectedandplayed.--><reprompt/></noinput></field>C:Doyouwanticecreamfordessert?H:(silence)C:Icouldnothearyou.C:Ifyouwanticecream,sayyes.Ifyoudon'twanticecream,sayno.H:(silence)C:Icouldnothearyou.C:Ifyouwanticecream,sayyes.Ifyoudon'twanticecream,sayno.H:No.<fieldname="want_ice_cream"><grammartype="application/srgs+xml"src="/grammars/boolean.grxml"/><prompt>Doyouwanticecreamfordessert?</prompt><promptcount="2">Ifyouwanticecream,sayyes.Ifyoudonotwanticecream,sayno.</prompt><noinput>Icouldnothearyou.<!--Causethenextprompttobeselectedandplayed.-->

<!--<reprompt/>--></noinput></field>C:Doyouwanticecreamfordessert?H:(silence)C:Icouldnothearyou.H:(silence)C:Icouldnothearyou.H:No.72Reprompt标记当前对话中的提示音(prompt)最大c主要内容VoiceXML概述VoiceXML基本概念VoiceXML中的变量和基本标记VoiceXML中的输入输出标记VoiceXML高级标记VoiceXML与服务器端应用开发一个完整的VoiceXML应用73主要内容VoiceXML概述73Record标记Record标记用于录制一段语音74Record标记Record标记用于录制一段语音74Record示例<recordname="jokerecord"beep="true"maxtime="60s"finalsilence="10000ms"dtmfterm="true"type="audio/wav-ulav-8k8bit"dest="file://C:\\record\\"><prompt>嘟声后开始说录音,0号键重录,时间不超过一分钟,星号键返回</prompt><filled><ifcond="jokerecord$.termchar=='*'"><submitnext="../page/LaughShow_main.aspx"/><elseifcond="jokerecord$.termchar=='0'"/><clearnamelist="jokerecord"/><reprompt/><else/><submitnext="../page/save.aspx"namelist="jokerecord"/></if></filled></record>使用影子变量来保存录音结果信息保存录音结果必须通过submit标记75Record示例<recordname="jokerecoTransfer标记将用户的电话转接到另一个电话上有两种类型的转接桥转接解释器一直处于等待状态,直到Transfer从转接通话状态下退出。如果因为挂机或网络的原因而线路中断,会抛出一个Connection.disconnect.hangup事件。如果通话因为其它原因而中断,中断原因会写在标记的属性里。盲转接解释器在完成转接后,不再监控转接过程,也不再在标记的名字属性中报告挂断结果,而是立即抛出一个connection.disconnect.transfer事件。76Transfer标记将用户的电话转接到另一个电话上76Property标记property标记用于控制语音识别、提示、提取文档和资源、以及输入类型等的运行特性。<propertyname="bargein"value="true"/>77Property标记property标记用于控制语音识别、提Submit标记<submit>标记

温馨提示

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

评论

0/150

提交评论