基于VoiceXML技术可视化IVR设计和实现(二)
上海易谷网络科技有限公司 查玮 2009/12/29
交互式语音应答(IVR)系统是电话银行呼叫中心系统的最前端,它的质量直接影响整个系统的稳定性和可扩展性。本文设计的IVR系统主要分为两个模块:可视化过程定义工具(用户交互接口)、流程执行引擎。由于过程定义工具主要是面向用户,它的设计规范首先要符合流程的定义规则,反应到本文中即流程工具涉及到的节点类型均符合IVR的操作动作和相关的业务动作,同时还要生成符合流程执行引擎能处理的文件格式。在流程执行引擎方面,符合VoiceXML的设计框架,将Web应用和语音应用相结合。图3.1 IVR系统整体结构图
3.2可视化过程化定义工具的分析
可视化建模语言的模型必须具备足够丰富的描述能力来表达所需的流程的实体及相互关系,它必须易于实现且有着良好的用户的交互性。一种模型描述方式是使用类过程语言的逻辑和实体描述语言,将IVR工作流程写为一段语言程序,活动、数据和逻辑关系等在内部加以界定;另外一种方式是将活动或逻辑从过程逻辑中抽象出来,形成独立的对象(逻辑关系可以作为活动对象的内部属性,也可以作为独立的对象)。
传统的实现IVR系统的方法[20],经历了一个由复杂到简单的发展历程。
它已经由基本代码编写发展到现在的高度抽象的计算机模型的实现方法。在这个过程中主要出现了以下几种方法:
代码生成:此种方法主要是根据工作流程的要求,由技术人员手工编写代码实现。这增加了开发的难度和系统的复杂度,可扩展性较差,不利于系统的复用,从图2.1所示的可视化建模工具总体框架可以看出,这种方法将过程建模和业务流程以及相关数据和工作流程处理集成在一起,通过代码生成的方式实现工作流过程。
表格方式:此种方法在过程建模部分由表格方式实现,通过手动添加业务流程执行过程状态;同时将工作流过程中的每一个状态封装成函数或类。在工作流引擎执行过程中,通过读取表格内容,调用相应的函数实现功能。这种方法虽然在一定程度上降低了业务流程引擎部分的复杂,但增加了过程建模的复杂度,导致用户接口人性化程度降低,应用程序交互的接口定义的灵活度受到的限制。
图和链表方式:这种方法在过程建模部分相对于表格方式做了改进,取消了表格,代之以图和链表,使用户接口部分体现了图形化和人性化的特点。但由于图的结构复杂,用户在使用容易出错,同时业务流程引擎在执行过程中图的结构增加了流程解释执行的复杂度。
树型方式:树型方式是目前常用的方法,采用的是父-子关系模式。这一模式的指树中的任何节点(状态)的下一个状态节点都以此节点的子节点方式出现。虽然这种方法使用户界面更加清晰,但树的深度加大会给实现业务流程引擎和过程建模工具增加了难度。
根据上述对传统的IVR系统的分析和实现方法的比较,本文提出VoiceXML应用于可视化建模工具中,在用户接口部分沿用的树型方式,但根据VoiceXML的规范性和灵活性,相邻节点之间的关系由原来的父子关系变为兄弟关系。这样无论过程建模还是在工作流程引擎的实现难度都被极大降低。
过程定义模型向用户提供的用于抽象描述业务过程的设计元素会通过工作流过程定义工具表达出来,用户使用过程定义工具提供的输入界面,通过将各中设计控件加以组合来完成对实际业务流程的抽象描述[21]。在设计过程定义工具时,本文采用了图形化的用户界面,从而简化了建模操作的复杂行,提高了易用性,有效降低了使用难度。
3.2.1 过程定义建模语言的描述
根据可视化建模语言描述的方法,语言和编辑器配置项体现了系统的可配置性。它包括三个部分:图元库、编辑器定义文件、界面描述文件。
图元库是对可视化建模语言语素的定义。编辑器定义文件中包含了可视化语言语法(抽象语法和具体语法)、图元操作定义、静态语义元类与图元的静态关系,采用RGVL的方式来描述。界面描述文件定义可视化语言编辑器的主界面,包括对菜单、各种工具条、各种视图、状态条。
3.2.2 基于可视化技术的过程定义工具的功能
IVR系统的过程定义工具是一个可视化的软件工具,它主要用于定义工作流模型中各个活动之间的关系[22]。工作流程过程定义向用户提供对实际业务处理过程分析、建模的手段。其输入输出可以用图3.2表达:
图3.2 IVR系统流程开发工具的输入和输出
其功能可以细分为:
图3.3 IVR系统流程定义工具用例图
式(3-1)
表示节点图元可以连接多个关联关系,每个关联关系必须连接到一个节点图元。
每一个节点保存自己的唯一的节点名称,由CArrowLine类来保存其关联关系,因为两个节点之间的关联关系只有二向性,所以只需要保存一个
节点名称和一个 节点名称。类图如图3.5所示,CLinkFactory类的作用是一个获取当前节点名称,CNodeMenu类是菜单(Menu)
节点类,继承CDiagramEntity类。图中只是以CNodeMenu类未代表来表示所有的节点类。
图3.6 目标文件基本框架图
例如,放音节点的完整文件描述如下:
图3.7 目标文件生成类图
MainFramwork
文件的主框架,主要是标准html标签的生成;
CreateVXMLTree
调用标准的XML类生成VoiceXML树;
UserAddContent
插入用户输入的自定义代码;
OutPutFile
输出目标文件。
3.5 IVR系统执行引擎的分析
IVR系统执行引擎作为IVR系统的核心,是整个系统的控制中枢。它所完成的功能是对IVR系统业务流程的解释和驱动。
3.5.1基于VoiceXML的执行引擎
随着Internet和Web技术的迅速发展,越来的企业开始建立自己的门户网站,同时又拥有自己的IVR系统(如图3.8所示),但是两套系统完全独立,语音系统和数据系统没有任何交互或者只有很少的交互。而建立IVR系统的目标就是给客户更好的体验,使客户能方便的通过电话完成更多以前需要登陆企业门户网站,或者亲自去企业或其网点去办理的业务,这就需要IVR系统能跟后台数据系统有更多更好的交互。“语音门户”的概念出现也愈发的证明这一点。
图3.12 IVR系统执行引擎系统交互序列图
3.6.2 VoiceXML解析器的设计
作为VoiceXML语言的解释工具,文档解析是VoiceXML解析器主要任务,也是执行引擎的重要组成部分,文档解析的内容决定了执行平台的下一步操作,也是整个系统运行的核心。因为VoiceXML文档首先是一个XML文档,所以主要包含对象树生成模块和语义解释模块两个部分。其中对象树生成模块是对VoiceXML文档进行XML方式的解析,解释模块使用FIA算法对生成的对象进行解析。图3.13描述了VoiceXML解析器文档解析的模型。
图3.13 VoiceXML解析器文档解析模型图
1.对象树生成模块
计算机无法直接对VoiceXML文档操作来实现解释功能,必须把VoiceXML文档转换成易识别、易操作的数据结构。所以,在进行VoiceXML语义分析之前,首先要按照对XML文件的处理方式,用接口程序对文档进行分析,生成一棵VoiceXML对象树。该树包含了从文档中获取的数据和处理数据的方法,并完成部分的初始化,构建索引等辅助工作。这棵树是后面解释模块的核心基础。对象树生成模块负责读取从文档获取模块传来的VoiceXML文档,调用接口程序对文档分析,生成对象树,并把此对象树的指针传给解释器。
目前最通用的接口为DOM(Document Object Model)和SAX(Simple API for XML)。
DOM[27]即文档对象模型,是W3C开发的一组独立于语言和平台的结构化文档编程接口,它定义了文档的逻辑结构以及访问和操纵文档的方法。使用DOM模型,程序所面对的XML文档不是一个文本流,而是一棵对象树。程序员可以方便的创建文档、导航其结构,或增加、修改、删除、移动文档的任何部分。
SAX[28]的诞生是在XML-DEV讨论组上,提出他的原因是有一些情况不适用DOM接口,而且DOM实现太大而且比较慢。SAX接口规范是XML分析器和XML处理器提供的较XML更底层的接口。它能提供应用以较大的灵活性。SAX是一种事件驱动的接口,它的基本原理是,由接口的用户提供符合定义的处理器,XML分析时遇到特定的事件,就去调用处理器中特定事件的处理函数。SAX
的主要限制是它无法向后浏览文档。实际上,激发一个事件后,语法分析器就将其忘记。
在本文设计的系统中,采用了DOM接口和SAX相结合的方式:使用SAX构建DOM树,主要是因为对VoiceXML语言解释的过程中,需要反复浏览不同的接点元素,采用DOM
树结构会方便许多。结合DOM和SAX的优点,用SAX建立一棵仿DOM的树,树的数据结构的定义更加符合自身的要求,不仅简练,而且在定义节点的同时实现了操作。图3.14显示了用SAX解析方法模拟DOM树的过程。
图3.14用SAX解析方法模拟DOM树的过程
2.语义解释模块
语义解释模块的主要功能是实现流程文档的解释工作,控制整个的会话过程和与输入输出功能模块实现交互操作。该模块处理的数据结构是对象树生成模块提供的对象树。模块功能的实现依赖于对象树提供的结构及树节点上相应的操作,对象树表述了文档的全部信息以及处理方法,语义解释模块依照这棵树上的信息完成所有控制操作。
VoiceXML文档结构和执行过程
每个VoiceXML文档都构成一个有限状态自动机,主要是由Dialog组成,主要分为单文档和多文档地执行过程。
(1)单个文档的执行过程。文档默认的从第一个Dialog开始执行,Dialog没有指定后继的Dialog时,文档解释结束。
(2)多文档的应用的执行。如果在会话过程中希望使用多个文档来共同完成一个工作,这时就需要采用多文档方式。多文档方式的优点是:应用根文档的变量可以为其他子文档所共享,信息可以被共享和获取,可以从一个文档跳到另一个;应用根文档的语法可以一直保持激活的状态,可以保证用户总是和通用的Form
或Menu 的交互,例如提示给用户的一些具有普遍性的帮助信息等。
Form解释算法[29](FIA:Form Interpretation Algorithm)
Form 解释算法对VoiceXML文档进行了语义分析和解释,驱动Form、Menu 和用户的交互。FIA 算法主要分为两个阶段:初始化阶段和主循环阶段。
(1)初始化阶段:完成Form内各种变量的初始化操作,包括计数器置为1,初始化一般变量和Item变量等操作。
(2)主循环阶段又被分为三个子阶段:选择阶段、收集阶段和处理阶段。这三个子阶段循环运行,直到解释完成为止。
选择阶段:选择要执行的Item,一般情况是顺序选择没有执行的Item。 当没有发现要执行的Item时,解释操作完成。
收集阶段: 完成对用户输入信息和事件的收集。首先访问选定的Item 来播放提示音,可以根据提示次数选择提示音,激活语音或DTMF 的Grammar,然后等待收集用户输入或事件。
处理阶段:对收集到的用户输入信息和事件进行处理。如果用户输入后,对用户输入信息进行语法匹配,执行相应的Filled元素来执行输入处理。如果用户输入匹配的是另一个不同Dialog中的Grammar,则完成当前Dialog的解释,跳转到新的Dialog;如果事件被抛出,选择正确的Catch元素来处理,并执行相应的事件处理过程。在处理完成后,重新进入选择阶段。
解释器完成文档的语义功能。它获得对象生成模块生成的VoiceXML对象树。按照算法FIA(表单解释算法)搜索VoiceXML对象树、读取树节点的节点属性、调用资源代理模块,通过输入输出模块接口与客户进行语音交互,完成整个交互流程。
3.6.2 Telephoney Service的设计
当VoiceXML解析器做完解析工作之后,遇到需要语音操作时,就得依靠调用Telephoney API来完成,同时Telephony Service需要向VoiceXML解析器去返回相应的语音操作结果事件。图3.15描述了这一过程。
图3.15 VoiceXML解析器与Telephony Service交互图
调用的过程相对简单,只需按照标签的定义调用相应的API即可,如当解析到
标签的时候直接调用播放语音文件接口。需要向Telephoney Service调用API所涉及到的VoiceXML标签如表3.2所示。
表3.2 涉及到IVR系统语音操作的VoiceXML标签表
标签名称 |
说明 |
<prompt> |
播放语音文件或者队列 |
<transfer> |
呼叫转移 |
<record> |
录音 |
<disconnect> |
断开语音 |
当Telephony Service处理完相应的语音操作的时候,需要向VoiceXML解析器返回操作结果事件,由VoiceXML解析器重的接收线程来获取,返回事件分为两类:正常事件和挂断事件。正常事件指的是语音卡执行完动作后返回的结果,分为执行成功和失败事件;挂断事件表示语音卡在收到用户挂机事件后发送给解析器的事件。同时,在VoiceXML解析器向语音平台调用Telephoney
API的同时,会启动一个计时器来进行超时判断,来处理如果语音平台没有回消息的情况。
3.7本章小结
本章首先分析了传统IVR系统的优缺点,并基于可视化建模语言设计了IVR系统的总体结构。其次在对过程化定义工具的使用上才采用图形化的方式来实现和用户交互,满足简单易用的特点。最后,分析了传统的IVR系统执行引擎的特性,引入了VoiceXML技术,设计出基于VoiceXML的IVR系统执行引擎的基本框架。
基于VoiceXML技术的可视化IVR系统设计和实现(三)
基于VoiceXML技术可视化IVR设计和实现(四)
作者独家提供CTI论坛稿件,其它媒体谢绝转载
CTI论坛报道
基于VoiceXML技术可视化IVR设计和实现(三) 2009-12-29 |
基于VoiceXML的可视化IVR系统设计和实现(一) 2009-09-22 |
上海易谷与Genesys达成大中华区长期合作伙伴关系 2009-04-17 |
联络中心与3G应用 2009-04-09 |