版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VoiceXML開發(fā)知識——iAvp平臺系列培訓(xùn)通信增值事業(yè)部張磊
Thursday,September21,20231VoiceXML開發(fā)知識通信增值事業(yè)部張磊1對象和目標(biāo)課程對象業(yè)務(wù)流程開發(fā)、測試人員VUI設(shè)計人員平臺開發(fā)、測試人員課程目標(biāo)了解VoiceXML基本概念和標(biāo)記使用VoiceXML開發(fā)流程2對象和目標(biāo)課程對象2相關(guān)課程《iAvp基礎(chǔ)知識培訓(xùn)》《VUI基礎(chǔ)》3相關(guān)課程《iAvp基礎(chǔ)知識培訓(xùn)》3主要內(nèi)容VoiceXML概述VoiceXML基本概念VoiceXML中的變量和基本標(biāo)記VoiceXML中的輸入輸出標(biāo)記VoiceXML高級標(biāo)記VoiceXML與服務(wù)器端應(yīng)用開發(fā)一個完整的VoiceXML應(yīng)用4主要內(nèi)容VoiceXML概述4概述—什么是VoiceXML全稱:VoiceeXtensibleMarkupLanguageVoiceXML是一種基于XML規(guī)范的標(biāo)準(zhǔn),是XML子集。它允許通過電話和語音訪問Web上的信息和服務(wù)??梢杂脕黹_發(fā)基于語音的電話應(yīng)用程序。5概述—什么是VoiceXML全稱:VoiceeXtens概述—VoiceXML歷史AT&TPhoneMarkedLanguage(PML)MotorolaVoxMLIBMSpeechMLHPTalkMLPIPEBEACHVoiceHTML1998,W3C召開Voicebrowsers會議VoiceXMLforum2000,VoiceXML1.02003VoiceXML2.02004VoiceXML2.16概述—VoiceXML歷史AT&TPhoneMarked概述—VoiceXML的目標(biāo)為應(yīng)用開發(fā)者屏蔽底層的、平臺相關(guān)的細(xì)節(jié)分離交互代碼和服務(wù)邏輯提高應(yīng)用在不同平臺的可移植性既能提供對簡單應(yīng)用快捷開發(fā),也提供對復(fù)雜應(yīng)用語言級的支持單文檔表示多次交互,減少了Client/Server交互負(fù)荷7概述—VoiceXML的目標(biāo)為應(yīng)用開發(fā)者屏蔽底層的、平臺相關(guān)概述–VoiceXML與傳統(tǒng)語音開發(fā)的區(qū)別InternetOperatorsNetworkPlatf.VoiceMailAppl.Platf.VividRingAppl.VoiceXMLInterface8概述–VoiceXML與傳統(tǒng)語音開發(fā)的區(qū)別Interne概述–VoiceXML與傳統(tǒng)語音開發(fā)的區(qū)別InternetOperatorsNetworkPlatf.VoiceMailAppl.Platf.VividRingAppl.VoiceXMLInterface9概述–VoiceXML與傳統(tǒng)語音開發(fā)的區(qū)別Interne概述–VoiceXML與傳統(tǒng)語音開發(fā)的區(qū)別InternetOperatorsNetworkPlatf.VoiceMailAppl.Platf.VividRingAppl.VoiceXMLInterface10概述–VoiceXML與傳統(tǒng)語音開發(fā)的區(qū)別Interne概述—VoiceXML與HTML開發(fā)比較<formaction=“url”>EnteryourId:<inputname=‘id’><inputtype=‘submit’></form><form><fieldname=‘id’><prompt>YourID,please.</prompt></field><block><submitnext=“url”/></block></form>VoiceXML語音應(yīng)用開發(fā)與HTML頁面開發(fā)具有很高的相似度11概述—VoiceXML與HTML開發(fā)比較<formacti概述—我們的VoiceXML基于VoiceXML1.0規(guī)范實現(xiàn)了VoiceXML1.0中的大部分標(biāo)記和屬性擴(kuò)展了一些1.0中沒有的標(biāo)記,如傳真等識別支持built-in、justintime和dgdb12概述—我們的VoiceXML基于VoiceXML1.0規(guī)范1概述—iAvp支持的標(biāo)記(1)13概述—iAvp支持的標(biāo)記(1)13概述—iAvp支持的標(biāo)記(2)14概述—iAvp支持的標(biāo)記(2)14概述—iAvp支持的標(biāo)記(3)15概述—iAvp支持的標(biāo)記(3)15概述—iAvp支持的標(biāo)記(4)16概述—iAvp支持的標(biāo)記(4)16概述—iAvp支持的標(biāo)記(5)17概述—iAvp支持的標(biāo)記(5)17主要內(nèi)容VoiceXML概述VoiceXML基本概念VoiceXML中的變量和基本標(biāo)記VoiceXML中的輸入輸出標(biāo)記VoiceXML高級標(biāo)記VoiceXML與服務(wù)器端應(yīng)用開發(fā)一個完整的VoiceXML應(yīng)用18主要內(nèi)容VoiceXML概述18基本概念—Dialog對話(Dialog/DialogStates)VoiceXML應(yīng)用程序的用戶總是處于一種對話狀態(tài)或?qū)υ捴小C總€對話都跟著另一個對話,如果沒有指定下一個對話,就終止VoiceXML應(yīng)用程序的執(zhí)行。有兩種對話:表單(Form)和菜單(Menu)。19基本概念—Dialog對話(Dialog/DialogSt基本概念—Document文檔(Document)一個VoiceXMLdocument由多個dialog組成。單個document的執(zhí)行缺省是從第一個dialog開始執(zhí)行。也可以指定從某個對話執(zhí)行。在一個application中有多個document時,應(yīng)選一個document作為rootdocument,并且在其他document的<vxml>標(biāo)記里引用它,并且它的變量和語法在整個應(yīng)用中有效。在含多個document的application中,最多只能有兩個document可以同時被加載,一個是正在執(zhí)行的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作為當(dāng)前文檔的根文檔<?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(應(yīng)用)應(yīng)用(application)是由共享同一應(yīng)用根文檔(applicationrootdocument)的一系列文檔組成的。在一個application內(nèi),rootdocument總是處于加載狀態(tài),此時rootdocument的變量和語法在整個application都是保持激活狀態(tài)。22基本概念—ApplicationApplication(應(yīng)用基本概念—Application(續(xù))23基本概念—Application(續(xù))23基本概念—Session會話(Session)會話開始:呼入接通呼出接通會話過程:交互 文檔獲取會話結(jié)束:用戶掛機(jī) 上下文掛機(jī)24基本概念—Session會話(Session)24基本概念—SubDialog子對話(SubDialog)類似函數(shù)調(diào)用,它提供了調(diào)用一個新的交互的機(jī)制,并返回到原來的form。返回時保存內(nèi)部數(shù)據(jù)、所用語法以及狀態(tài)信息,以供在調(diào)用該Subdialog的document中使用。25基本概念—SubDialog子對話(SubDialog)25基本概念—文檔之間的跳轉(zhuǎn)(1)保留根文檔上下文的跳轉(zhuǎn)RRRRL1L2234126基本概念—文檔之間的跳轉(zhuǎn)(1)保留根文檔上下文的跳轉(zhuǎn)RRRR基本概念—文檔之間的跳轉(zhuǎn)(2)重新初始化上下文的跳轉(zhuǎn)R1R2R3R1L1234127基本概念—文檔之間的跳轉(zhuǎn)(2)重新初始化上下文的跳轉(zhuǎn)R1R2基本概念—文檔之間的跳轉(zhuǎn)(3)SubDailog的上下文跳轉(zhuǎn)(1)MaindialogexecutecontextD1D2D3SubDialogexecutecontextSD1SD2<Subdialogsrc=“SD1.vxml”><gotonext=“SD2.vxml”><return>28基本概念—文檔之間的跳轉(zhuǎn)(3)SubDailog的上下文跳轉(zhuǎn)SubDialogexecutecontext2基本概念—文檔之間的跳轉(zhuǎn)(4)SubDailog的上下文跳轉(zhuǎn)(2)MaindialogexecutecontextD1D2D3SubDialogexecutecontext1SD1SD2<Subdialogsrc=“SD1.vxml”><Subdialogsrc=“
SD2.vxml”><return><return>29SubDialogexecute基本概念—文檔之間的跳轉(zhuǎn)(基本概念—Event事件(Event)事件可以是預(yù)先定義的或者是應(yīng)用程序定義。對于各種的情況,由平臺拋出事件,如:用戶沒用響應(yīng),請求幫助。當(dāng)VoiceXML文檔有語義錯誤時,解釋器也會拋出事件(<throw>)。事件由<catch>或由它的快捷形式捕捉;一個事件能產(chǎn)生的每個標(biāo)記都可指定catch標(biāo)記。在任何層次都可以指定共有事件的處理方式,并且這適用于所有較低層。在VoiceXML的事件模式中,事件可以由平臺或應(yīng)用產(chǎn)生,這些事件可以由應(yīng)用程序捕獲和處理,也可以由平臺捕獲和處理。30基本概念—Event事件(Event)30基本概念—FIAFIA(FormInterpretationAlgorithm)初始化Form,重新設(shè)置狀態(tài)選擇要執(zhí)行的FormItem并播放提示音收集用戶輸入,或者填充一個或多個field,或者拋出各種事件查找執(zhí)行<filled>動作
31基本概念—FIAFIA(FormInterpretati基本概念—FIA(續(xù))初始化選擇Item獲取輸入處理輸入結(jié)果沒有Item可以繼續(xù)處理Event處理Link其它Dialog32基本概念—FIA(續(xù))初始化選擇Item獲取輸入處理輸入結(jié)果基本概念—Grammar語法(Grammar)語法指定一份準(zhǔn)許的詞匯列表,供用戶從中選擇,以便與VoiceXML應(yīng)用程序交互每一個dialog都有一個或多個語法(識別、按鍵),在directeddialog的應(yīng)用中,每個dialog的語法只有在用戶使用該dialog時,才處于激活狀態(tài)語法的作用域33基本概念—Grammar語法(Grammar)33主要內(nèi)容VoiceXML概述VoiceXML基本概念VoiceXML中的變量和基本標(biāo)記VoiceXML中的輸入輸出標(biāo)記VoiceXML高級標(biāo)記VoiceXML與服務(wù)器端腳本開發(fā)一個完整的VoiceXML應(yīng)用34主要內(nèi)容VoiceXML概述34從HelloWord!開始<?xmlversion="1.0"?><vxmlversion="1.0"><form><block>HelloWorld!</block></form></vxml>VoiceXML是Xml的子集,遵從xml1.0規(guī)范指定當(dāng)前文檔使用VXML1.0規(guī)范定義一個對話表單定義一個表單項,用于封裝對應(yīng)的語句輸出文本,可以被TTS合成并播放35從HelloWord!開始<?xmlversion="1VoiceXML中的變量變量相當(dāng)于ECMAScript變量變量不能以”_”開頭類型共有6種Undefine(未定義]——變更被賦予一個值之前它的默認(rèn)值Null(空)——只能是”null”Boolean(布爾型)——只能是”true”或”false”String(字符串)——用單引號封裝的字符串Number(數(shù)字型)——正負(fù)數(shù)……Object(對象型)——一組沒有排序的屬性。每個屬性都包含一個名字、一個值和一組屬性。36VoiceXML中的變量變量相當(dāng)于ECMAScript變量3聲明變量變量具有name和Expr屬性通過表單項的Name屬性來聲明通過標(biāo)記<Var>來聲明<Blockname=“FirstBlock”><Varname=“myVar”value=“true”/><Varname=“myVar”/>37聲明變量變量具有name和Expr屬性<Blockname變量的作用域SessionApplicationDocumentDialog(Anonymous)它是由解釋器上下文來聲明和賦值,只讀變量。不能聲明新的session變量。由應(yīng)用根文檔的<vxml>標(biāo)記的子成員<var>聲明由document的<vxml>標(biāo)記的子成員<var>聲明,僅對該document可訪問由Form或Menu的<Var>聲明在Block、Filled或catch等標(biāo)記中的<Var>聲明當(dāng)變量不帶作用域并發(fā)生命名沖突時,使用限定性最明確的作用域變量高低38變量的作用域SessionApplicationDocumeSession變量Session.telephone.ani(主叫號)Session.telephone.dnis(被叫號)Session.telephone.iidigits(信息批示數(shù)字)Session.telephone.uui(用戶到用戶信息)Session.telephone.callidSession.telephone.stationidSession.telephone.channelid39Session變量Session.telephone.ani影子變量影子變量是與字段項相關(guān)的變量。影子變量用于返回字段項執(zhí)行的結(jié)果語法:field_item_name$.shadow_var_name例如:recording$.termchar40影子變量影子變量是與字段項相關(guān)的變量。40<assign>標(biāo)記:為變量賦值<formid=“test”><varname=“int_var”expr=“2”/><block><assignname=“int_var”expr=“’two’”/></block></form>VXML中的變量是“弱類型“,聲明時不需要顯示給出類型在賦值后仍然可以動態(tài)改變變量類型(不推薦)41<assign>標(biāo)記:為變量賦值<formid=“testForm標(biāo)記:最重要的的DialogForm對應(yīng)于對話的狀態(tài)兩個屬性id:對話標(biāo)識,例如:<Formid="Welcome">scope:指示這個form對應(yīng)語法的活動范圍FormItemsInputitems:field、record、transfer、object、subdialogControlitems:block、initail42Form標(biāo)記:最重要的的DialogForm對應(yīng)于對話的狀態(tài)Menu標(biāo)記—另一個Dialog標(biāo)記<?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標(biāo)記—另一個Dialog標(biāo)記<?xmlversioDialog的公用屬性field、record、transfer、subdialog、block、object和initial標(biāo)記都具有以下三個屬性:nameexprcond通過操作name、expr、cond來確定被封裝在這些標(biāo)記中的內(nèi)容能否被執(zhí)行44Dialog的公用屬性field、record、transfDialog的公用屬性(續(xù))Name和Expr被定義,被封裝的指令要在Clear標(biāo)記被執(zhí)行后才能被執(zhí)行如果沒有定義Expr,Cond值為true則可以執(zhí)行,false則不被執(zhí)行,Cond默認(rèn)為true<fieldname=“field_var”expr=“true”><fieldname=“field_var”expr=“false”cond=“true”><fieldname=“field_var”expr=“false”cond=“false>被以上field封裝的指令均不會被執(zhí)行<fieldname=“field_var”cond=“false”><fieldname=“field_var”expr=“false”cond=“true”><fieldcond=“false”>被以上field封裝的指令均不會被執(zhí)行<fieldname=“field_var”cond=“true”><fieldname=“field_var”><fieldcond=“false”>被以上field封裝的指令均會被執(zhí)行45Dialog的公用屬性(續(xù))Name和Expr被定義,被封裝Block標(biāo)記Block是表單項,用于封裝其它語句。屬性NameExprCond46Block標(biāo)記Block是表單項,用于封裝其它語句。46If/elseif/else標(biāo)記If/elseif/else用于條件邏輯判斷。如果Cond屬性的值計算為true,那么其中封裝的語句將被執(zhí)行,否則將不予執(zhí)行。<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>注意:>,<,”,’,&在使用時需要轉(zhuǎn)義和if不同elseif和else是單行標(biāo)記47If/elseif/else標(biāo)記If/elseif/elseParam標(biāo)記Param標(biāo)記用于將參數(shù)傳遞給子對話框或者對象。屬性name—參數(shù)名expr—表達(dá)式值value—字串值48Param標(biāo)記Param標(biāo)記用于將參數(shù)傳遞給子對話框或者對象SubDialog標(biāo)記類似于函數(shù)調(diào)用不丟失當(dāng)前上下文當(dāng)subdialog調(diào)用完成后,調(diào)用者的所有本地數(shù)據(jù)、語法和狀態(tài)均被還原屬性src屬性是必須的Return標(biāo)記用于結(jié)束對話框執(zhí)行并返回,有兩個屬性event和namelistEvent屬性是返回后產(chǎn)生的一個事件Namelist屬性包含了返回后給調(diào)用對話框的變量列表。49SubDialog標(biāo)記類似于函數(shù)調(diào)用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標(biāo)記跳轉(zhuǎn)到當(dāng)前form的另一個formitem跳轉(zhuǎn)到當(dāng)前文檔的另一個dialog跳轉(zhuǎn)到另一個文檔主要屬性nextitemnext51Goto標(biāo)記跳轉(zhuǎn)到當(dāng)前form的另一個formitem51Goto標(biāo)記示例1—From內(nèi)的跳轉(zhuǎn)<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標(biāo)記示例1—From內(nèi)的跳轉(zhuǎn)<varname="GGoto標(biāo)記示例2—Form及文檔間的跳轉(zhuǎn)<formid=“welcome”><block>welcome!</block><gotonext=“#how_many”/></form><formid=“how_many”><block>howmanybookyouwant?</block><gotonext=“calc_books.vxml#calc“/></form>跳轉(zhuǎn)到另一個Form,本Form內(nèi)的變量值將丟失跳轉(zhuǎn)到另一個document,本document內(nèi)的變量值將丟失53Goto標(biāo)記示例2—Form及文檔間的跳轉(zhuǎn)<formid=Clear標(biāo)記Clear標(biāo)記用于將變量的值設(shè)置為undefine屬性namelist<form><varname=“stop”expr=“5”/><varname=“I”expr=“0”/><blockname=“l(fā)oop”><ifcond=“I<stop”><assignname=“I”expr=“i+1”/><clearnamelist=“l(fā)oop”/></if></block></form>通過將block的expr值設(shè)置為undefine來構(gòu)造出一個54Clear標(biāo)記Clear標(biāo)記用于將變量的值設(shè)置為undefiExit標(biāo)記當(dāng)執(zhí)行exit標(biāo)記時,控制返回給執(zhí)行平臺。這時進(jìn)行什么操作由平臺決定,一般情況下將掛斷電話。<formid=“bye”><block>Wearefinishedandwillnowexit.<exit/>
Wehavenotexitedyet!</block></form>55Exit標(biāo)記當(dāng)執(zhí)行exit標(biāo)記時,控制返回給執(zhí)行平臺。這時進(jìn)Disconnect標(biāo)記Disconnect標(biāo)記用于平臺切斷用戶的電話調(diào)用disconnect時會拋出telephone.disconnect.hangup事件<formid=“bye”><block>Wearefinishedandwillnowexit.<disconnect/>
Wehavenotdisconnectedyet!</block></form>56Disconnect標(biāo)記Disconnect標(biāo)記用于平臺切斷主要內(nèi)容VoiceXML概述VoiceXML基本概念VoiceXML中的變量和基本標(biāo)記VoiceXML中的輸入輸出標(biāo)記VoiceXML高級標(biāo)記在VoiceXML中使用客戶端腳本VoiceXML與服務(wù)器端腳本開發(fā)一個完整的VoiceXML應(yīng)用57主要內(nèi)容VoiceXML概述57Prompt標(biāo)記用于TTS輸出封裝audio標(biāo)記屬性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標(biāo)記用于TTS輸出<formid="F1">Value標(biāo)記Value標(biāo)記用于輸出變量的值和表達(dá)式計算結(jié)果。屬性expr<formid="F1"><varname="MyVar"expr="'DirkDiggler'"/><block><prompt> Ourfavoritemoviestaris<valueexpr="MyVar"/>.</prompt></block></form>59Value標(biāo)記Value標(biāo)記用于輸出變量的值和表達(dá)式計算結(jié)果Audio標(biāo)記audios標(biāo)記用于設(shè)定向用戶播放預(yù)先錄制的聲音文件。語音文件格式與平臺相關(guān),以WAV格式居多。屬性src—向用戶播放的聲音文件的URLfetchtimeout—獲取語音文件超時之前的等待時間<formid="F_1"><block><prompt>hereweusetheaudiofetchtimeoutattributewiththevalueof10seconds.</prompt><audiosrc="MySoundFile.wav"fetchtimeout="10s"/></block></form>60Audio標(biāo)記audios標(biāo)記用于設(shè)定向用戶播放預(yù)先錄制的聲Field標(biāo)記field標(biāo)記用來接收來自用戶的自動語音識別或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標(biāo)記field標(biāo)記用來接收來自用戶的自動語音識別或Filled標(biāo)記<filled>標(biāo)記指定了當(dāng)一個或多個inputitem被填充后要執(zhí)行的操作。它可以出現(xiàn)在兩個地方:作為<form>標(biāo)記的子標(biāo)記,或者作為inputitem的子標(biāo)記。屬性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標(biāo)記作為form的子項出現(xiàn)的例子<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標(biāo)記作為輸入項的子項出現(xiàn)的例子62Filled標(biāo)記<filled>標(biāo)記指定了當(dāng)一個或多個inpGrammar標(biāo)記Grammar標(biāo)記用于設(shè)定可能的語音輸入不同的平臺支持不同的語法格式語法范圍iAvp支持Nuance識別語法(GSL2.0)JustInTime(需要即時編譯)DTMFDynamicGrammar63Grammar標(biāo)記Grammar標(biāo)記用于設(shè)定可能的語音輸入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動態(tài)大語法動態(tài)語法定義在應(yīng)用中可以被動態(tài)創(chuàng)建和加載的識別語法DBKey每個DBKey相當(dāng)于一個識別語法DBItem每個DBItem相當(dāng)于一個識別條目
例如一個歌手名相當(dāng)于一個DBKey,那他的每一首歌相當(dāng)于一個DBItem65動態(tài)大語法動態(tài)語法定義例如一個歌手名相當(dāng)于一個DBKey,那iAvp中的大語法實現(xiàn)通過動態(tài)語法添加接口向數(shù)據(jù)庫中添加DBKey和DBItem通過動態(tài)語法編譯接口編譯語法通過<DGDB>標(biāo)記引用語法66iAvp中的大語法實現(xiàn)通過動態(tài)語法添加接口向數(shù)據(jù)庫中添加DB動態(tài)大語法示例<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動態(tài)大語法示例<fieldname=singer>67NBest應(yīng)用在一次識別需要返回多個識別結(jié)果的語音應(yīng)用中使用影子變量實現(xiàn)application.lastresult$.length可以得到此次識別結(jié)果的數(shù)量,iavp平臺最多為5個。application.lastresult$[i].confidence識別結(jié)果的置信度application.lastresult$[i].utterance識別結(jié)果的語音數(shù)據(jù)application.lastresult$[i].inputmodespeechdtmfapplication.lastresult$[i].interpretation識別結(jié)果application.lastresult$[i].interpretation.Key多個slot68NBest應(yīng)用在一次識別需要返回多個識別結(jié)果的語音應(yīng)用中68語法沖突如果用戶語音輸入或按鍵輸入結(jié)果包括多個有效語法,VoiceXML按下列順序進(jìn)行選擇:當(dāng)前字段內(nèi)的語法包含在當(dāng)前From或Menu中的語法文檔作用域內(nèi)在當(dāng)前文檔內(nèi)的非當(dāng)前Form或Menu的語法及<VXML>標(biāo)記內(nèi)的語法當(dāng)前根文檔內(nèi)的語法69語法沖突如果用戶語音輸入或按鍵輸入結(jié)果包括多個有效語法,VoThrow和Catch標(biāo)記Throw標(biāo)記用于產(chǎn)生預(yù)定義的事件和應(yīng)用程序定義的事件。Catch將文檔、對話、FormItem與事件捕獲聯(lián)系起來,它包含了可執(zhí)行的內(nèi)容。<vxmlversion="2.1"><catchevent="MyUserDefinedEvent"><prompt>wecaughtthethrownevent.</prompt></catch><formid="F_1"><block><prompt>gettingreadytothrowaneventtobecaught.<throwevent="MyUserDefinedEvent"/></prompt></block></form></vxml>throwcatch70Throw和Catch標(biāo)記Throw標(biāo)記用于產(chǎn)生預(yù)定義的事件Error、Help、Noinput、Nomatch標(biāo)記<error>、<help>、<noinput>和<nomatch>標(biāo)記都是<catch>標(biāo)記特定形式的快捷標(biāo)記屬性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標(biāo)Reprompt標(biāo)記當(dāng)前對話中的提示音(prompt)最大count屬性小于或等于prompt計數(shù)器值,那么reprompt標(biāo)記可用于使該提示得以播放。<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標(biāo)記當(dāng)前對話中的提示音(prompt)最大c主要內(nèi)容VoiceXML概述VoiceXML基本概念VoiceXML中的變量和基本標(biāo)記VoiceXML中的輸入輸出標(biāo)記VoiceXML高級標(biāo)記VoiceXML與服務(wù)器端應(yīng)用開發(fā)一個完整的VoiceXML應(yīng)用73主要內(nèi)容VoiceXML概述73Record標(biāo)記Record標(biāo)記用于錄制一段語音74Record標(biāo)記Record標(biāo)記用于錄制一段語音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>使用影子變量來保存錄音結(jié)果信息保存錄音結(jié)果必須通過submit標(biāo)記75Record示例<recordname="jokerecoTransfer標(biāo)記將用戶的電話轉(zhuǎn)接到另一個電話上有兩種類型的轉(zhuǎn)接橋轉(zhuǎn)接解釋器一直處于等待狀態(tài),直到Transfer從轉(zhuǎn)接通話狀態(tài)下退出。如果因為掛機(jī)或網(wǎng)絡(luò)的原因而線路中斷,會拋出一個Connection.disconnect.hangup事件。如果通話因為其它原因而中斷,中斷原因會寫在標(biāo)記的屬性里。盲轉(zhuǎn)接解釋器在完成轉(zhuǎn)接后,不再監(jiān)控轉(zhuǎn)接過程,也不再在標(biāo)記的名字屬性中報告掛斷結(jié)果,而是立即拋出一個connection.disconnect.transfer事件。76Transfer標(biāo)記將用戶的電話轉(zhuǎn)接到另一個電話上76Property標(biāo)記property標(biāo)記用于控制語音識別、提示、提取文檔和資源、以及輸入類型等的運(yùn)行特性。<propertyname="bargein"value="true"/>77Property標(biāo)記property標(biāo)記用于控制語音識別、提Submit標(biāo)記<submit>標(biāo)記
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《安全感悟分享》課件
- 《職業(yè)適應(yīng)與發(fā)展》課件
- 《生產(chǎn)安全事故應(yīng)急》課件
- 2024教師發(fā)言稿(34篇)
- 藝術(shù)與人生和社會的關(guān)系
- 單位管理制度匯編大全【人事管理】
- 單位管理制度分享合集【人員管理篇】十篇
- 單位管理制度分享大合集【人員管理】十篇
- 單位管理制度范文大合集【員工管理篇】十篇
- 單位管理制度呈現(xiàn)大全【人員管理】
- 安全生產(chǎn)培訓(xùn)法律法規(guī)
- 廣東省廣州市2021-2022學(xué)年高二上學(xué)期期末五校聯(lián)考生物試題
- 2024年領(lǐng)導(dǎo)干部任前廉政知識考試測試題庫及答案
- 2023-2024學(xué)年浙江省寧波市鎮(zhèn)海區(qū)四年級(上)期末數(shù)學(xué)試卷
- 舞蹈演出編導(dǎo)排練合同模板
- 融資合作法律意見
- 污水泵站運(yùn)營維護(hù)管理方案
- 湖北省武漢市洪山區(qū)2023-2024學(xué)年六年級上學(xué)期語文期末試卷(含答案)
- 中醫(yī)辨證-八綱辨證(中醫(yī)學(xué)課件)
- 冠脈介入進(jìn)修匯報
- 蔣詩萌小品《誰殺死了周日》臺詞完整版
評論
0/150
提交評論