首頁(yè)>>廠(chǎng)商>>CTI系統平臺廠(chǎng)商>>易谷網(wǎng)絡(luò )

基于VoiceXML技術(shù)可視化IVR設計和實(shí)現(二)

上海易谷網(wǎng)絡(luò )科技有限公司 查瑋 2009/12/29

基于VoiceXML技術(shù)的可視化IVR系統設計和實(shí)現(一)

  交互式語(yǔ)音應答(IVR)系統是電話(huà)銀行呼叫中心系統的最前端,它的質(zhì)量直接影響整個(gè)系統的穩定性和可擴展性。本文設計的IVR系統主要分為兩個(gè)模塊:可視化過(guò)程定義工具(用戶(hù)交互接口)、流程執行引擎。由于過(guò)程定義工具主要是面向用戶(hù),它的設計規范首先要符合流程的定義規則,反應到本文中即流程工具涉及到的節點(diǎn)類(lèi)型均符合IVR的操作動(dòng)作和相關(guān)的業(yè)務(wù)動(dòng)作,同時(shí)還要生成符合流程執行引擎能處理的文件格式。在流程執行引擎方面,符合VoiceXML的設計框架,將Web應用和語(yǔ)音應用相結合。

3.1 IVR系統結構的總體分析與設計

  IVR系統流程工具是通過(guò)使用圖形化的編輯界面,將工作流程以圖形的方式展現給用戶(hù),使用者也可以通過(guò)次編輯器根據具體的業(yè)務(wù)需求將特定的IVR流程反應在圖形當中,因此,對于使用者來(lái)說(shuō),根本不需要知道底層的工作模式就可以很輕松的完整定制工作流程的制作。在這部分中,主要通過(guò)使用自定義的節點(diǎn),以及在節點(diǎn)的屬性窗體中進(jìn)行相應屬性的設置來(lái)完成工作流程的制作。

  隨著(zhù)IVR技術(shù)的發(fā)展,與企業(yè)級后臺數據系統聯(lián)系越來(lái)越緊密。傳統的IVR系統已經(jīng)不能適應Web技術(shù)的發(fā)展了,本文設計的IVR系統,將用戶(hù)通過(guò)電話(huà)操作的過(guò)程類(lèi)比成用戶(hù)登陸網(wǎng)頁(yè)的過(guò)程,整個(gè)業(yè)務(wù)流程相當于用戶(hù)所登陸的網(wǎng)站,構成網(wǎng)站的每一個(gè)網(wǎng)頁(yè)可以看成是業(yè)務(wù)流程中的每一個(gè)節點(diǎn)。業(yè)務(wù)流程交給Web Service來(lái)驅動(dòng),只要增加對語(yǔ)音操作的解釋就可以完成整個(gè)語(yǔ)音系統的驅動(dòng)。而定義的語(yǔ)音操作,本文是通過(guò)使用標準的VoiceXML語(yǔ)言來(lái)定義,所以流程定義工具所交給執勤引擎驅動(dòng)的中間文件就是標準的Web頁(yè)面與VoiceXML標簽的集合。

  而IVR系統執行引擎是根據IVR系統的特點(diǎn),基于VoiceXML技術(shù)的設計所實(shí)現的流程解釋器,主要針對解釋執行通過(guò)IVR系統流程定義工具所設計的中間文件,并控制硬件交換機及板卡按照工作流程的內容完成相應的功能。
圖3.1給出了IVR系統詳細的總體結構圖。IVR系統總共分為兩大部分:軟件平臺和硬件平臺。其中硬件平臺主要是硬件廠(chǎng)商提供,本文所設計的系統主要是軟件平臺的設計和實(shí)現。從圖中可以看出,整個(gè)系統分為三個(gè)部分:IVR系統可視化流程定義工具、含有VoiceXML標簽的Web頁(yè)面和執行引擎。

圖3.1 IVR系統整體結構圖

3.2可視化過(guò)程化定義工具的分析

  可視化建模語(yǔ)言的模型必須具備足夠豐富的描述能力來(lái)表達所需的流程的實(shí)體及相互關(guān)系,它必須易于實(shí)現且有著(zhù)良好的用戶(hù)的交互性。一種模型描述方式是使用類(lèi)過(guò)程語(yǔ)言的邏輯和實(shí)體描述語(yǔ)言,將IVR工作流程寫(xiě)為一段語(yǔ)言程序,活動(dòng)、數據和邏輯關(guān)系等在內部加以界定;另外一種方式是將活動(dòng)或邏輯從過(guò)程邏輯中抽象出來(lái),形成獨立的對象(邏輯關(guān)系可以作為活動(dòng)對象的內部屬性,也可以作為獨立的對象)。

  傳統的實(shí)現IVR系統的方法[20],經(jīng)歷了一個(gè)由復雜到簡(jiǎn)單的發(fā)展歷程。

  它已經(jīng)由基本代碼編寫(xiě)發(fā)展到現在的高度抽象的計算機模型的實(shí)現方法。在這個(gè)過(guò)程中主要出現了以下幾種方法:

  代碼生成:此種方法主要是根據工作流程的要求,由技術(shù)人員手工編寫(xiě)代碼實(shí)現。這增加了開(kāi)發(fā)的難度和系統的復雜度,可擴展性較差,不利于系統的復用,從圖2.1所示的可視化建模工具總體框架可以看出,這種方法將過(guò)程建模和業(yè)務(wù)流程以及相關(guān)數據和工作流程處理集成在一起,通過(guò)代碼生成的方式實(shí)現工作流過(guò)程。

  表格方式:此種方法在過(guò)程建模部分由表格方式實(shí)現,通過(guò)手動(dòng)添加業(yè)務(wù)流程執行過(guò)程狀態(tài);同時(shí)將工作流過(guò)程中的每一個(gè)狀態(tài)封裝成函數或類(lèi)。在工作流引擎執行過(guò)程中,通過(guò)讀取表格內容,調用相應的函數實(shí)現功能。這種方法雖然在一定程度上降低了業(yè)務(wù)流程引擎部分的復雜,但增加了過(guò)程建模的復雜度,導致用戶(hù)接口人性化程度降低,應用程序交互的接口定義的靈活度受到的限制。

  圖和鏈表方式:這種方法在過(guò)程建模部分相對于表格方式做了改進(jìn),取消了表格,代之以圖和鏈表,使用戶(hù)接口部分體現了圖形化和人性化的特點(diǎn)。但由于圖的結構復雜,用戶(hù)在使用容易出錯,同時(shí)業(yè)務(wù)流程引擎在執行過(guò)程中圖的結構增加了流程解釋執行的復雜度。

  樹(shù)型方式:樹(shù)型方式是目前常用的方法,采用的是父-子關(guān)系模式。這一模式的指樹(shù)中的任何節點(diǎn)(狀態(tài))的下一個(gè)狀態(tài)節點(diǎn)都以此節點(diǎn)的子節點(diǎn)方式出現。雖然這種方法使用戶(hù)界面更加清晰,但樹(shù)的深度加大會(huì )給實(shí)現業(yè)務(wù)流程引擎和過(guò)程建模工具增加了難度。

  根據上述對傳統的IVR系統的分析和實(shí)現方法的比較,本文提出VoiceXML應用于可視化建模工具中,在用戶(hù)接口部分沿用的樹(shù)型方式,但根據VoiceXML的規范性和靈活性,相鄰節點(diǎn)之間的關(guān)系由原來(lái)的父子關(guān)系變?yōu)樾值荜P(guān)系。這樣無(wú)論過(guò)程建模還是在工作流程引擎的實(shí)現難度都被極大降低。

  過(guò)程定義模型向用戶(hù)提供的用于抽象描述業(yè)務(wù)過(guò)程的設計元素會(huì )通過(guò)工作流過(guò)程定義工具表達出來(lái),用戶(hù)使用過(guò)程定義工具提供的輸入界面,通過(guò)將各中設計控件加以組合來(lái)完成對實(shí)際業(yè)務(wù)流程的抽象描述[21]。在設計過(guò)程定義工具時(shí),本文采用了圖形化的用戶(hù)界面,從而簡(jiǎn)化了建模操作的復雜行,提高了易用性,有效降低了使用難度。

3.2.1 過(guò)程定義建模語(yǔ)言的描述

  根據可視化建模語(yǔ)言描述的方法,語(yǔ)言和編輯器配置項體現了系統的可配置性。它包括三個(gè)部分:圖元庫、編輯器定義文件、界面描述文件。

  圖元庫是對可視化建模語(yǔ)言語(yǔ)素的定義。編輯器定義文件中包含了可視化語(yǔ)言語(yǔ)法(抽象語(yǔ)法和具體語(yǔ)法)、圖元操作定義、靜態(tài)語(yǔ)義元類(lèi)與圖元的靜態(tài)關(guān)系,采用RGVL的方式來(lái)描述。界面描述文件定義可視化語(yǔ)言編輯器的主界面,包括對菜單、各種工具條、各種視圖、狀態(tài)條。

3.2.2 基于可視化技術(shù)的過(guò)程定義工具的功能

  IVR系統的過(guò)程定義工具是一個(gè)可視化的軟件工具,它主要用于定義工作流模型中各個(gè)活動(dòng)之間的關(guān)系[22]。工作流程過(guò)程定義向用戶(hù)提供對實(shí)際業(yè)務(wù)處理過(guò)程分析、建模的手段。其輸入輸出可以用圖3.2表達:

圖3.2 IVR系統流程開(kāi)發(fā)工具的輸入和輸出

其功能可以細分為:

  1. 向用戶(hù)提供定義工作流的操作界面;


  2. 根據用戶(hù)的輸入自動(dòng)生成以文本形式表達的IVR系統流程抽象描述;


  3. 將以文本形式表達的工作流抽象描述發(fā)送給格式化工具組件。

  本文設計的IVR系統的流程定義工具遵循以上規則,它被流程定義者使用,其所有的動(dòng)作都是由流程設計人員發(fā)起的,通過(guò)對定義工具進(jìn)行了統一建模分析,其使用用例圖如圖3.3所示。

圖3.3 IVR系統流程定義工具用例圖

  1. 新建流程:用戶(hù)通過(guò)選擇“新建工作流模型”菜單或單擊工具欄上相應按鈕新建一個(gè)空的模型文件。


  2. 繪制流程:用戶(hù)使用定義工具提供的各種建模組件繪制模型。主要包括:IVR系統流程中涉及到各個(gè)節點(diǎn)繪制、各個(gè)連接點(diǎn)的連線(xiàn)的繪制。


  3. 編輯流程:用戶(hù)可以用直接操作節點(diǎn)元素,包括選擇、刪除、平移等功能。


  4. 設置節點(diǎn)屬性:用戶(hù)通過(guò)設置節點(diǎn)屬性對話(huà)框來(lái)設置節點(diǎn)的屬性。


  5. 保存流程:用戶(hù)將所建流程以文件的形式保存起來(lái)。


  6. 打開(kāi)模型:用戶(hù)通過(guò)給出的文件列表打開(kāi)流程文件。

3.2.3 IVR系統流程工具的用戶(hù)交互方式

  在IVR系統過(guò)程定義工具過(guò)程中,同用戶(hù)的交互方式的選擇是主要考慮的一個(gè)方面。而一般的工作流過(guò)程定義工具可以通過(guò)兩種方式同用戶(hù)進(jìn)行交互,一種是基于文本的方式,一種是基于圖形的方式。基于文本的方式易于實(shí)現,在目前的辦公工作流系統中應用比較廣泛。但對用戶(hù)來(lái)說(shuō),這種定義方法使用比較復雜,不直觀(guān),難于創(chuàng )建復雜的流程。而圖形化的定義方式具有直觀(guān)、易于使用的特點(diǎn),能夠方便的定義復雜的流程。由于IVR系統菜單的調整、播放音頻文件的更換、業(yè)務(wù)處理過(guò)程的變化等原因,用戶(hù)的工作流程可能會(huì )經(jīng)常發(fā)生變化,直觀(guān)的圖形化定義界面可以使得流程的定義變成一種簡(jiǎn)單而高效的工作。用戶(hù)可以相當方便的根據實(shí)際變化情況對流程作出修改,而無(wú)須修改程序的源代碼,從而大大提高工作效率和系統的應變能力,將系統的控制權真正交給用戶(hù),而不是掌握在開(kāi)發(fā)者手中。因此,在設計中選擇采用圖形化的工作流方式來(lái)定義IVR系統的流程。

3.2.4 IVR系統流程的節點(diǎn)抽象和定義

  在用戶(hù)界面采用了圖形化的過(guò)程方式來(lái)定義IVR系統的流程,那么流程定義工具就需要向用戶(hù)提供一組抽象描述流程的基本設計控件,用戶(hù)通過(guò)使用這些基本控件來(lái)可視化的搭建IVR系統的流程。而基本設計控件的選擇就同整個(gè)系統所選擇的過(guò)程定義模型密切相關(guān),過(guò)程定義模型的一個(gè)重要的功能就是為建模用戶(hù)提供抽象描述實(shí)際業(yè)務(wù)處理過(guò)程所必須的設計元素。在設計本文所描述的IVR系統流程定義工具是,采用的是基于流程節點(diǎn)的過(guò)程定義模型,流程節點(diǎn)是整個(gè)IVR系統流程定義工具定義的唯一設計元素。因此,在用戶(hù)界面中,向用戶(hù)提供的是流程中所涉及到的各種流程節點(diǎn)控件,用戶(hù)通過(guò)在設計界面中添加以圖形表示的各種流程節點(diǎn)控件,填寫(xiě)相應的流程節點(diǎn)相關(guān)屬性信息,之后通過(guò)使用帶箭頭的連線(xiàn)來(lái)連接不同的流程節點(diǎn)來(lái)可視化的定義流轉順序。

  根據IVR系統的流程和本文系統應用的具體項目需求,定義出在大多數IVR系統常用的流程9種節點(diǎn)類(lèi)型。


表3.1 流程定義工具中的相關(guān)圖元


3.3 可視化過(guò)程定義工具的設計

  作為流程工具,它的設計原則就是,使用最簡(jiǎn)單易懂的方式,適合各層次的開(kāi)發(fā)人員最快速的開(kāi)發(fā)業(yè)務(wù)流程。本工具采用的是圖形開(kāi)發(fā)的方法,但是最終配置的視圖數據是要轉化IVR系統執行引擎可解析的模型數據(含有VoiceXML的Web頁(yè)面)。

  在設計上,首先是定義主框架類(lèi),這些類(lèi)的作用是提供一個(gè)通用的可視化流程定義類(lèi)包,為后面的設計帶來(lái)便利,以便對界面組件的實(shí)現提供便利。

3.3.1主框架類(lèi)包的定義

  主框架類(lèi)包CDiagramEditor是整個(gè)流程定義工具的骨架。它是由一個(gè)從CWnd類(lèi)(MFC基礎類(lèi))繼承而來(lái)editor類(lèi)、一個(gè)data類(lèi)、一個(gè)畫(huà)圖對象類(lèi)和一些幫助類(lèi)所組成的。在設計的時(shí)候,考慮到程序的可復用性和可擴展性,將editor和data類(lèi)分開(kāi),使其既可以在dialog應用程序中使用,也可以在doc/view應用程序中使用,如圖3.4所示。


3.3.2 主框架類(lèi)描述

下面給出各個(gè)類(lèi)的詳細描述:

CDiagramEditor類(lèi)

  CDiagramEditor類(lèi)繼承于CWnd類(lèi),它是處理窗口詳細的相關(guān)操作,所封裝的是一個(gè)基礎的矢量編輯器,它所生成的是圖(diagrams)而不是圖片(graphics)。所以它支持小于和大于正常窗口的虛擬屏幕(virtual screen)、網(wǎng)格抓取(snap to grid)、拷貝/復制、“無(wú)限制”(所謂無(wú)限制,只是在設置撤銷(xiāo)棧的大小時(shí)取值較大,讓使用者感覺(jué)上是無(wú)限制,其實(shí)是有限的)的撤銷(xiāo)、放大等等,由于它使用了與之“隔離”的數據容器,所以它既可以被加入對話(huà)框(dialog)和文檔/視圖(doc/view)程序里面去。通常,這個(gè)類(lèi)僅僅在繪圖函數不足以滿(mǎn)足需要的時(shí)候來(lái)繼承使用的。

CDiagramEntityContainer類(lèi)

  CDiagramEntityContainer類(lèi)包含了CDiagramEditor類(lèi)里的數據。它管理了如拷貝、粘貼、和撤銷(xiāo)這類(lèi)的操作集合。同樣為了能在文檔/視圖使用,它與CDiagramEditor類(lèi)分成兩個(gè)類(lèi)來(lái)實(shí)現。這也是一些函數功能在這兩個(gè)類(lèi)里面同時(shí)存在的原因。

  CDiagramEntityContainer類(lèi)包含了一個(gè)CObArray對象,它是由一組繼承CDiagramEntity類(lèi)的實(shí)例,用來(lái)為編輯器存放實(shí)時(shí)的數據。同時(shí),也包含了一個(gè)CDiagramClipboardhandler指針(作為一個(gè)或者多個(gè)編輯器間的剪切板)。它還包含了一組CUndoItem用來(lái)實(shí)現撤銷(xiāo)棧。

  通常,CDiagramEntityContainer類(lèi)是不用繼承的,一個(gè)CDiagramEditor需要一個(gè)CDiagramEntityContainer的實(shí)例來(lái)保存住對象的數據。在文檔/視圖應用程序中它作為外部實(shí)例,而在對話(huà)框應用程序中是作為內部的實(shí)例來(lái)管理所有的數據。對于前者,需要在document類(lèi)中申明CDiagramEntityContainer成員,并且需要調用 CDiagramEditor::SetCDiagramEntityContainer來(lái)創(chuàng )建;對于后者,則任何特別的操作都不需要去操作,因為在CDiagramEditor::Create被調用的時(shí)候CDiagramEntityContainer將會(huì )被自動(dòng)創(chuàng )建。

CDiagramClipboardHandler類(lèi)

  CDiagramClipboardHandler類(lèi)為一個(gè)或者多個(gè)編輯器管理剪切板。它保持著(zhù)所有CDiagramEntity類(lèi)實(shí)例的拷貝。

CUndoItem類(lèi)

  CUndoItem類(lèi)表示CDiagramEntityContainer類(lèi)中撤銷(xiāo)棧的單點(diǎn)入口。

CDiagramEntity類(lèi)

  CDiagramEntity類(lèi)所有繪圖對象的基類(lèi),并由CDiagramEditor類(lèi)控制和管理。它是繼承CObject類(lèi),同時(shí)允許其實(shí)例的集合以CObArrays方式存儲。通常,在實(shí)現所有繪圖類(lèi)的時(shí)候,只要繼承CDiagramEntity類(lèi),覆蓋(overridden)Clone和Draw方法,返回該類(lèi)指針的拷貝即可。

  為了滿(mǎn)足IVR系統執行引擎所需要的文件,CDiagramEntity類(lèi)支持基本的存儲功能,可以存儲成.txt文件。在生成符合具體業(yè)務(wù)流程所產(chǎn)生的文件格式的時(shí)候可以通過(guò)覆蓋FromString和GetString來(lái)實(shí)現。針對第三章對流程節點(diǎn)抽象,9種流程節點(diǎn)的屬性各不相同,因此,每一個(gè)流程節點(diǎn)類(lèi)都應該擁有自己的屬性對話(huà)框,這些對話(huà)框類(lèi)繼承了CDiagramPropertyDlg類(lèi)。實(shí)現的時(shí)候只要這些流程節點(diǎn)類(lèi)擁有一個(gè)繼承CDiagramPropertyDlg類(lèi)的實(shí)例作為成員變量就可以完成。

CDiagramLine類(lèi)

  CDiagramLine類(lèi)主要是完成IVR系統流程中各個(gè)節點(diǎn)的連接。在連接線(xiàn)的設計過(guò)程中,首先,使用者不需要強制的設置線(xiàn)的大小,應該由其成員函數來(lái)設置(SetRect)完成;其次,相應點(diǎn)擊事件的區域應該不是矩形,它是一條線(xiàn);這些都需要在這個(gè)類(lèi)中實(shí)現,這樣才能有很好的繼承性。

CDiagramMenu類(lèi)

  CDiagramMenu類(lèi)是一個(gè)很簡(jiǎn)單的類(lèi),它的作用是可以方便的定義出彈出(popup)菜單,所完成的功能是在右鍵單擊各個(gè)流程節點(diǎn)的時(shí)候彈出菜單。

CDiagramPropertyDlg類(lèi)

  CDiagramPropertyDlg類(lèi)所展現的是CDiagramEntity對象的屬性對話(huà)框。在IVR系統流程中反應出來(lái)的是對應各個(gè)流程節點(diǎn)的屬性設置對話(huà)框。

CTokenizer類(lèi)

  CTokenizer類(lèi)的作用也很簡(jiǎn)單,它是用來(lái)對CString和CStringArray的做string token的。

CGroupFactory類(lèi)

  CGroupFactory類(lèi)為CDiagramEntity組產(chǎn)生唯一的標識符。它采用了 MFC中定義“組機制”[23]技術(shù),即可以在屏幕上類(lèi)似于移動(dòng)單個(gè)實(shí)體那樣移動(dòng)整個(gè)組的實(shí)體集合。

3.3.3 Link類(lèi)的設計

  在業(yè)務(wù)流程編輯過(guò)程中,流程控制非常重要。流程的走向表現為節點(diǎn)圖元之間的關(guān)聯(lián)關(guān)系。根據公式2-3,它的抽象語(yǔ)法規則可以描述為

式(3-1)

  表示節點(diǎn)圖元可以連接多個(gè)關(guān)聯(lián)關(guān)系,每個(gè)關(guān)聯(lián)關(guān)系必須連接到一個(gè)節點(diǎn)圖元。

  每一個(gè)節點(diǎn)保存自己的唯一的節點(diǎn)名稱(chēng),由CArrowLine類(lèi)來(lái)保存其關(guān)聯(lián)關(guān)系,因為兩個(gè)節點(diǎn)之間的關(guān)聯(lián)關(guān)系只有二向性,所以只需要保存一個(gè) 節點(diǎn)名稱(chēng)和一個(gè) 節點(diǎn)名稱(chēng)。類(lèi)圖如圖3.5所示,CLinkFactory類(lèi)的作用是一個(gè)獲取當前節點(diǎn)名稱(chēng),CNodeMenu類(lèi)是菜單(Menu) 節點(diǎn)類(lèi),繼承CDiagramEntity類(lèi)。圖中只是以CNodeMenu類(lèi)未代表來(lái)表示所有的節點(diǎn)類(lèi)。


3.4 目標文件的描述與分析

3.4.1 文件基本框架描述

  本文設計的IVR系統的流程文件是含有VoiceXML標簽的Web文件,因此,首先,文件的基本框架必須符合HTML文件框架。而對語(yǔ)音節點(diǎn)的具體描述是通過(guò)某個(gè)VoiceXML標簽或者某些具體標簽的集合,其語(yǔ)法符合VoiceXML語(yǔ)音規范。與此同時(shí),有編程經(jīng)驗的用戶(hù)可以添加自定義代碼來(lái)定制一些具體Web數據操作,譬如,jsp或者asp的代碼。如圖3.6所示。

圖3.6 目標文件基本框架圖

例如,放音節點(diǎn)的完整文件描述如下:


3.4.2 目標文件的生成

  目標文件的基本框架已經(jīng)確定,所有的流程節點(diǎn)文件都應該滿(mǎn)足這個(gè)基本框架。不同點(diǎn)就在于語(yǔ)音節點(diǎn)的描述有所不同,而語(yǔ)音節點(diǎn)的描述就是標準的VoiceXML語(yǔ)言。可以看到,事實(shí)上 VoiceXML 文件和普通的 html 文件并沒(méi)有實(shí)質(zhì)的不同,可以完全使用相同的思維方式去理解,唯一不同的是針對特殊的語(yǔ)音 VoiceXML 應用了相應特別的標簽,具體可以參考 w3 上有關(guān) VoiceXML 的規范(詳見(jiàn)參考資源)。所以,在VoiceXML生成上完全可以調用標準的XML文件生成類(lèi)來(lái)生成。目標文件生成的類(lèi)圖如圖3.7所示。

圖3.7 目標文件生成類(lèi)圖

MainFramwork
  文件的主框架,主要是標準html標簽的生成;

CreateVXMLTree
  調用標準的XML類(lèi)生成VoiceXML樹(shù);

UserAddContent
  插入用戶(hù)輸入的自定義代碼;

OutPutFile
  輸出目標文件。

3.5 IVR系統執行引擎的分析

  IVR系統執行引擎作為IVR系統的核心,是整個(gè)系統的控制中樞。它所完成的功能是對IVR系統業(yè)務(wù)流程的解釋和驅動(dòng)。

3.5.1基于VoiceXML的執行引擎

  隨著(zhù)Internet和Web技術(shù)的迅速發(fā)展,越來(lái)的企業(yè)開(kāi)始建立自己的門(mén)戶(hù)網(wǎng)站,同時(shí)又擁有自己的IVR系統(如圖3.8所示),但是兩套系統完全獨立,語(yǔ)音系統和數據系統沒(méi)有任何交互或者只有很少的交互。而建立IVR系統的目標就是給客戶(hù)更好的體驗,使客戶(hù)能方便的通過(guò)電話(huà)完成更多以前需要登陸企業(yè)門(mén)戶(hù)網(wǎng)站,或者親自去企業(yè)或其網(wǎng)點(diǎn)去辦理的業(yè)務(wù),這就需要IVR系統能跟后臺數據系統有更多更好的交互。“語(yǔ)音門(mén)戶(hù)”的概念出現也愈發(fā)的證明這一點(diǎn)。


  通過(guò)3.1節的分析,可以看出傳統的IVR系統的執行引擎雖然完成了對流程的解釋和驅動(dòng),但是為了獲得更多的客戶(hù)的資料和配合企業(yè)的業(yè)務(wù)邏輯,就得需要再去和后臺的企業(yè)數據系統去交互,這勢必增加了整個(gè)系統的負擔,相應的運營(yíng)風(fēng)險也就隨之加大。

  從另外一個(gè)方面,到目前為止,人們從Internet獲取各種資源時(shí),還只能是借助計算機來(lái)實(shí)現[24]。而實(shí)際上,電話(huà)具有比計算機更高的普及率,如果允許人們通過(guò)電話(huà)來(lái)訪(fǎng)問(wèn)Internet的資源,那么這對于Internet的應用發(fā)展必將是一次質(zhì)的飛躍。在這類(lèi)應用前景的驅動(dòng)下,VoiceXML使得用戶(hù)可以通過(guò)電話(huà)按鍵或語(yǔ)音來(lái)訪(fǎng)問(wèn)Internet上的各種資源,它是語(yǔ)音瀏覽技術(shù)以及語(yǔ)音互聯(lián)網(wǎng)的核心。圖3.9描述了一個(gè)基于VoiceXML的現代企業(yè)語(yǔ)音門(mén)戶(hù)的系統結構。


  人們在Internet上瀏覽的網(wǎng)站是程序員們使用HTML(Hypertext Markup Language)開(kāi)發(fā)的Web應用程序,在這些網(wǎng)站上可以瀏覽到人們所需要的文字、圖片、視頻等信息。與這種方式類(lèi)似,程序員可以開(kāi)發(fā)基于VoiceXML的語(yǔ)音應用程序,從而把用戶(hù)需要的信息以語(yǔ)音的方式提供給用戶(hù)。用戶(hù)可以通過(guò)手機或者電話(huà)等呼叫終端來(lái)訪(fǎng)問(wèn)這類(lèi)應用程序得到他們想獲得信息。圖3.10顯示[25]了基于VoiceXML的語(yǔ)音應用和基于HTML的Web應用的相似和不同。


3.5.2基于VoiceXML執行引擎的結構分析

  執行引擎的目的是為了解釋和驅動(dòng)業(yè)務(wù)流程,本文設計的IVR系統的流程系統中,語(yǔ)音節點(diǎn)的類(lèi)型都符合VoiceXML的基本標簽。按照本文2.2.2中描述的VoiceXML基本體系結構,基本的執行引擎應該要包含3個(gè)部分:文檔服務(wù)器、VoiceXML解析器和電話(huà)平臺。因此執行引擎的基本架構如下圖(圖3.11)描述。

  Web Server模塊:用來(lái)執行和發(fā)送Web相關(guān)的請求和文檔;

  VoiceXML parser模塊:解析VoiceXML頁(yè)面,同時(shí)協(xié)調與Web Server和Telephony API之間的聯(lián)系;

  Telephony Service模塊:調用放音、收鍵等統一的接口。


3.6 IVR系統執行引擎的設計

  IVR系統執行引擎驅動(dòng)著(zhù)整個(gè)IVR系統的業(yè)務(wù)流程,本文設計的IVR系統是基于VoiceXML技術(shù),如節3.2里描述的系統架構,執行引擎主要分為兩大塊:

  1. VoiceXML Parser:負責提供VoiceXML的解析、同Web Server的交互和Telephony Service的交互。

  2. Telephony Service:驅動(dòng)語(yǔ)音卡語(yǔ)音動(dòng)作進(jìn)行相關(guān)的操作。

3.6.1執行引擎的總體架構設計

  系統的架構符合VoiceXML標準技術(shù),與傳統的IVR執行引擎相比較,除了支持相關(guān)的語(yǔ)音業(yè)務(wù),對于數據業(yè)務(wù)的操作則完全交給Doucument Server(Web server)來(lái)處理。語(yǔ)音平臺完全不用關(guān)心怎樣去操作數據業(yè)務(wù),大大降低了開(kāi)發(fā)的風(fēng)險和難度。譬如,銀行用戶(hù)在使用電話(huà)在訪(fǎng)問(wèn)IVR系統的時(shí)候,需要查詢(xún)自己賬戶(hù)的余額,語(yǔ)音平臺只要處理播報余額的工作,在向Web Server提交文檔(Web頁(yè)面)請求后,Web Server便會(huì )處理相關(guān)的數據操作,查詢(xún)數據庫獲得余額,只要將結果返回給VoiceXML解析器,再由VoiceXML解析器通知語(yǔ)音平臺完成播報余額的操作。

  系統交互序列圖[26]如圖3.12所示。當一通呼叫呼入的時(shí)候,語(yǔ)音平臺會(huì )自動(dòng)檢測到有呼叫到達。隨后,語(yǔ)音平臺(Telephone Service)會(huì )將呼叫進(jìn)入的事件發(fā)送給VoiceXML解析器,VoiceXML解析器通過(guò)分析URL的內容去裝載初始的文檔。隨后,VoiceXML解析器就會(huì )發(fā)送一個(gè)請求給Document Server(Web Server),獲取初始的文檔,相當于用戶(hù)剛剛登陸到一個(gè)網(wǎng)站的主頁(yè)。Web Server在解析完相關(guān)的數據業(yè)務(wù)(例如:查詢(xún)數據庫判斷來(lái)電是否為黑名單)后,就會(huì )向VoiceXML解釋器回復一個(gè)文檔,同時(shí)告訴VoiceXML解析器需要解析執行的語(yǔ)音操作,而VoiceXML解釋器在解析完所收到返回的文檔后會(huì )引導語(yǔ)音平臺來(lái)實(shí)現語(yǔ)音系統的相關(guān)操作。在這個(gè)過(guò)程之后VoiceXML解釋器會(huì )收到語(yǔ)音平臺發(fā)送過(guò)來(lái)的結果,根據結構VoiceXML解釋器收到的結果不同,觸發(fā)其向Web Server發(fā)送的請求的不同,直到整個(gè)一通呼叫結束。這就如同用戶(hù)在登陸網(wǎng)站的時(shí)候,根據自己的喜好選擇了不同的頁(yè)面瀏覽,直到退出瀏覽器,完成瀏覽。

圖3.12 IVR系統執行引擎系統交互序列圖

3.6.2 VoiceXML解析器的設計

  作為VoiceXML語(yǔ)言的解釋工具,文檔解析是VoiceXML解析器主要任務(wù),也是執行引擎的重要組成部分,文檔解析的內容決定了執行平臺的下一步操作,也是整個(gè)系統運行的核心。因為VoiceXML文檔首先是一個(gè)XML文檔,所以主要包含對象樹(shù)生成模塊和語(yǔ)義解釋模塊兩個(gè)部分。其中對象樹(shù)生成模塊是對VoiceXML文檔進(jìn)行XML方式的解析,解釋模塊使用FIA算法對生成的對象進(jìn)行解析。圖3.13描述了VoiceXML解析器文檔解析的模型。

圖3.13 VoiceXML解析器文檔解析模型圖

1.對象樹(shù)生成模塊

  計算機無(wú)法直接對VoiceXML文檔操作來(lái)實(shí)現解釋功能,必須把VoiceXML文檔轉換成易識別、易操作的數據結構。所以,在進(jìn)行VoiceXML語(yǔ)義分析之前,首先要按照對XML文件的處理方式,用接口程序對文檔進(jìn)行分析,生成一棵VoiceXML對象樹(shù)。該樹(shù)包含了從文檔中獲取的數據和處理數據的方法,并完成部分的初始化,構建索引等輔助工作。這棵樹(shù)是后面解釋模塊的核心基礎。對象樹(shù)生成模塊負責讀取從文檔獲取模塊傳來(lái)的VoiceXML文檔,調用接口程序對文檔分析,生成對象樹(shù),并把此對象樹(shù)的指針傳給解釋器。

  目前最通用的接口為DOM(Document Object Model)和SAX(Simple API for XML)。

  DOM[27]即文檔對象模型,是W3C開(kāi)發(fā)的一組獨立于語(yǔ)言和平臺的結構化文檔編程接口,它定義了文檔的邏輯結構以及訪(fǎng)問(wèn)和操縱文檔的方法。使用DOM模型,程序所面對的XML文檔不是一個(gè)文本流,而是一棵對象樹(shù)。程序員可以方便的創(chuàng )建文檔、導航其結構,或增加、修改、刪除、移動(dòng)文檔的任何部分。

  SAX[28]的誕生是在XML-DEV討論組上,提出他的原因是有一些情況不適用DOM接口,而且DOM實(shí)現太大而且比較慢。SAX接口規范是XML分析器和XML處理器提供的較XML更底層的接口。它能提供應用以較大的靈活性。SAX是一種事件驅動(dòng)的接口,它的基本原理是,由接口的用戶(hù)提供符合定義的處理器,XML分析時(shí)遇到特定的事件,就去調用處理器中特定事件的處理函數。SAX 的主要限制是它無(wú)法向后瀏覽文檔。實(shí)際上,激發(fā)一個(gè)事件后,語(yǔ)法分析器就將其忘記。

  在本文設計的系統中,采用了DOM接口和SAX相結合的方式:使用SAX構建DOM樹(shù),主要是因為對VoiceXML語(yǔ)言解釋的過(guò)程中,需要反復瀏覽不同的接點(diǎn)元素,采用DOM 樹(shù)結構會(huì )方便許多。結合DOM和SAX的優(yōu)點(diǎn),用SAX建立一棵仿DOM的樹(shù),樹(shù)的數據結構的定義更加符合自身的要求,不僅簡(jiǎn)練,而且在定義節點(diǎn)的同時(shí)實(shí)現了操作。圖3.14顯示了用SAX解析方法模擬DOM樹(shù)的過(guò)程。

圖3.14用SAX解析方法模擬DOM樹(shù)的過(guò)程

2.語(yǔ)義解釋模塊

  語(yǔ)義解釋模塊的主要功能是實(shí)現流程文檔的解釋工作,控制整個(gè)的會(huì )話(huà)過(guò)程和與輸入輸出功能模塊實(shí)現交互操作。該模塊處理的數據結構是對象樹(shù)生成模塊提供的對象樹(shù)。模塊功能的實(shí)現依賴(lài)于對象樹(shù)提供的結構及樹(shù)節點(diǎn)上相應的操作,對象樹(shù)表述了文檔的全部信息以及處理方法,語(yǔ)義解釋模塊依照這棵樹(shù)上的信息完成所有控制操作。

VoiceXML文檔結構和執行過(guò)程

  每個(gè)VoiceXML文檔都構成一個(gè)有限狀態(tài)自動(dòng)機,主要是由Dialog組成,主要分為單文檔和多文檔地執行過(guò)程。

  (1)單個(gè)文檔的執行過(guò)程。文檔默認的從第一個(gè)Dialog開(kāi)始執行,Dialog沒(méi)有指定后繼的Dialog時(shí),文檔解釋結束。

  (2)多文檔的應用的執行。如果在會(huì )話(huà)過(guò)程中希望使用多個(gè)文檔來(lái)共同完成一個(gè)工作,這時(shí)就需要采用多文檔方式。多文檔方式的優(yōu)點(diǎn)是:應用根文檔的變量可以為其他子文檔所共享,信息可以被共享和獲取,可以從一個(gè)文檔跳到另一個(gè);應用根文檔的語(yǔ)法可以一直保持激活的狀態(tài),可以保證用戶(hù)總是和通用的Form 或Menu 的交互,例如提示給用戶(hù)的一些具有普遍性的幫助信息等。

Form解釋算法[29](FIA:Form Interpretation Algorithm)

  Form 解釋算法對VoiceXML文檔進(jìn)行了語(yǔ)義分析和解釋?zhuān)寗?dòng)Form、Menu 和用戶(hù)的交互。FIA 算法主要分為兩個(gè)階段:初始化階段和主循環(huán)階段。

  (1)初始化階段:完成Form內各種變量的初始化操作,包括計數器置為1,初始化一般變量和Item變量等操作。

  (2)主循環(huán)階段又被分為三個(gè)子階段:選擇階段、收集階段和處理階段。這三個(gè)子階段循環(huán)運行,直到解釋完成為止。

  選擇階段:選擇要執行的Item,一般情況是順序選擇沒(méi)有執行的Item。 當沒(méi)有發(fā)現要執行的Item時(shí),解釋操作完成。

  收集階段: 完成對用戶(hù)輸入信息和事件的收集。首先訪(fǎng)問(wèn)選定的Item 來(lái)播放提示音,可以根據提示次數選擇提示音,激活語(yǔ)音或DTMF 的Grammar,然后等待收集用戶(hù)輸入或事件。

  處理階段:對收集到的用戶(hù)輸入信息和事件進(jìn)行處理。如果用戶(hù)輸入后,對用戶(hù)輸入信息進(jìn)行語(yǔ)法匹配,執行相應的Filled元素來(lái)執行輸入處理。如果用戶(hù)輸入匹配的是另一個(gè)不同Dialog中的Grammar,則完成當前Dialog的解釋?zhuān)D到新的Dialog;如果事件被拋出,選擇正確的Catch元素來(lái)處理,并執行相應的事件處理過(guò)程。在處理完成后,重新進(jìn)入選擇階段。

  解釋器完成文檔的語(yǔ)義功能。它獲得對象生成模塊生成的VoiceXML對象樹(shù)。按照算法FIA(表單解釋算法)搜索VoiceXML對象樹(shù)、讀取樹(shù)節點(diǎn)的節點(diǎn)屬性、調用資源代理模塊,通過(guò)輸入輸出模塊接口與客戶(hù)進(jìn)行語(yǔ)音交互,完成整個(gè)交互流程。

3.6.2 Telephoney Service的設計

  當VoiceXML解析器做完解析工作之后,遇到需要語(yǔ)音操作時(shí),就得依靠調用Telephoney API來(lái)完成,同時(shí)Telephony Service需要向VoiceXML解析器去返回相應的語(yǔ)音操作結果事件。圖3.15描述了這一過(guò)程。

圖3.15 VoiceXML解析器與Telephony Service交互圖

  調用的過(guò)程相對簡(jiǎn)單,只需按照標簽的定義調用相應的API即可,如當解析到

標簽的時(shí)候直接調用播放語(yǔ)音文件接口。需要向Telephoney Service調用API所涉及到的VoiceXML標簽如表3.2所示。

表3.2 涉及到IVR系統語(yǔ)音操作的VoiceXML標簽表

  當Telephony Service處理完相應的語(yǔ)音操作的時(shí)候,需要向VoiceXML解析器返回操作結果事件,由VoiceXML解析器重的接收線(xiàn)程來(lái)獲取,返回事件分為兩類(lèi):正常事件和掛斷事件。正常事件指的是語(yǔ)音卡執行完動(dòng)作后返回的結果,分為執行成功和失敗事件;掛斷事件表示語(yǔ)音卡在收到用戶(hù)掛機事件后發(fā)送給解析器的事件。同時(shí),在VoiceXML解析器向語(yǔ)音平臺調用Telephoney API的同時(shí),會(huì )啟動(dòng)一個(gè)計時(shí)器來(lái)進(jìn)行超時(shí)判斷,來(lái)處理如果語(yǔ)音平臺沒(méi)有回消息的情況。

3.7本章小結

  本章首先分析了傳統IVR系統的優(yōu)缺點(diǎn),并基于可視化建模語(yǔ)言設計了IVR系統的總體結構。其次在對過(guò)程化定義工具的使用上才采用圖形化的方式來(lái)實(shí)現和用戶(hù)交互,滿(mǎn)足簡(jiǎn)單易用的特點(diǎn)。最后,分析了傳統的IVR系統執行引擎的特性,引入了VoiceXML技術(shù),設計出基于VoiceXML的IVR系統執行引擎的基本框架。

基于VoiceXML技術(shù)的可視化IVR系統設計和實(shí)現(三)

基于VoiceXML技術(shù)可視化IVR設計和實(shí)現(四)

作者獨家提供CTI論壇稿件,其它媒體謝絕轉載

CTI論壇報道



相關(guān)閱讀:
基于VoiceXML技術(shù)可視化IVR設計和實(shí)現(三) 2009-12-29
基于VoiceXML的可視化IVR系統設計和實(shí)現(一) 2009-09-22
上海易谷與Genesys達成大中華區長(cháng)期合作伙伴關(guān)系 2009-04-17
聯(lián)絡(luò )中心與3G應用 2009-04-09

熱點(diǎn)專(zhuān)題:  呼叫中心  
分類(lèi)信息:  IVR技術(shù)_與_VoiceXML技術(shù)
亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 高台县| 永福县| 德州市| 即墨市| 广宁县| 柳河县| 湄潭县| 台安县| 洛南县| 通州区| 葫芦岛市| 威信县| 黄陵县| 富川| 唐河县| 盱眙县| 乐陵市| 鹤岗市| 泾阳县| 长武县| 梁山县| 余干县| 康平县| 油尖旺区| 阿瓦提县| 鹤山市| 崇礼县| 吉首市| 孟村| 湖州市| 汉寿县| 綦江县| 松桃| 连山| 彭水| 教育| 交城县| 曲阜市| 禹州市| 绵竹市| 年辖:市辖区| http://444 http://444 http://444 http://444 http://444 http://444