作者:Eric Assouad, Al Haddock, Michael Clark
BEA WebLogic Workshop 8.1提供了创建Web服务器应用程序所需的大量工具。通过 Workshop的可扩展组件模型所集成的组件包括:Java控件、页面流以及所有软件供应商或Web应用程序开发商都可用的源及开发视图。
作为集成开发环境的基础,WebLogic Workshop提供了创建本身具有其Web设计创新的新Web services的能力。SandCherry的AppDev VXML就是扩充了BEA WebLogic Workshop 8.1功能,从而可通过电话访问所创建服务的一个例子。
通过接触—音调或语音识别,交互式语音应答(IVR)及基于语音的服务现在能够与Web应用程序一起集成到三层应用基础架构中,从而降低了解决方案的成本,同时改进了用户体验。传统上这些服务运行于硬件及软件的私有信息库(silo)之上,这些软件和硬件完全独立于基于Web的应用程序及基础架构。由于对数据集成、商业逻辑及系统的复制使得信息库解决方案的成本很高,更不必说由于在不同语音和Web系统间的非一致性体验引起的用户不满意而导致的成本增加。现在,开发人员只需简单地向Web应用程序添加一个新的语音表示层,即可实现在重用现有的业务逻辑及后端资源的情况下通过电话与任何顾客或雇员取得联系(参见图 1)。

图1:向Web应用程序中添加语音表示层
SandCherry AppDev语音扩展使得用于控制语音及媒体资源的语音表示层的开发变得方便,这些资源包括自动语音识别(ASR)、文本向语音转换(TTS)以及预记录提示。通过将语音表示层的开发组件集成到WebLogic Workshop 8.1中,开发人员通过重用在Workshop IDE中已经为Web应用程序创建好的控件和模型,可以减少开发及维护语音应用的时间并降低成本。
集成概述
任何语音应用都需要以下三个组件来工作:用VoiceXML(VXML)编写的语音用户界面开发与流动;用Grammar XML(GRXML)编写的将被应用程序所识别的语音输入的语法定义;以及以波形格式或以其他类型的语音格式捕捉的向用户播放的语音提示及通知。在WebLogic Workshop下添加语音应用开发环境需要集成5个主要的Workshop组件,以提供Web和语音 Web工程之间的无缝开发体验。扩展这些组件包括集成先前的单独应用程序,以及创建在Workshop工作空间中驻留及运行的新应用程序。AppDev VXML所扩展的5个组件和使用它们的工具是:
- Web工程:语音Web工程
- 文档:音频、Grammar XML(GRXML)和VoiceXML(VXML)文档类型
- 标签库:语音文档的VoiceXML及GRXML标签
- 动作:与语音相关的菜单、工具栏以及启动外部应用程序
- 框架:可在WebLogic Workshop中驻留的应用程序框架
因为建造开发环境的一个主要目的即为语音应用程序创建一个完整独立的开发和测试环境,所以添加到WebLogic Workshop的功能提供了开发和测试工具。使用基于Workshop的方法,开发人员不再需要昂贵复杂的语音硬件平台来开发或测试语音应用程序。
语音应用程序开发工具
语音应用程序必须联合几个不同的组件来传递与用户进行语音交互所必需的三个基本功能:控制应用流、处理用户输入的语音以及向用户输出预录(或已合成)信息。添加的开发工具包括了Workshop所表示的Web视图、语音需要的语音应用视图以及用于传送语音应用的媒体组件。添加的开发工具包括:
- 语音Web工程:维持与语音相关文档及功能的工程。语音Web工程继承了WebLogic Workshop Web Project的Web工程功能。
- VXML文档:包含VXML页面的描述语音应用流的文档。VXML文档从WebLogic Workshop JSP Document继承JSP文档的功能。
- GRXML文档:包含GRXM页面,列出表示应用程序将识别的语音单词的有效文本(语法)的文档。GRXML文档按照与VXML文档同样的方式继承JSP文档的功能。
- 音频文档:文档包括将要向呼叫者播放用于提示或通知的波形音频数据。提示通常会在尝试识别呼叫者的响应之前播放。这是扩展了Workshop基本Document类的全新文档类型。
- 树设计视图:创建VXML或者GRXML页面的面向树的视图。正如Workshop对于Web文档那样,树向开发人员提供了语音文档的易于管理和易读的视图。
- 语音菜单及工具栏:菜单及工具栏包括语音应用程序工具。SandCherry在语音菜单及工具栏上添加了Log Viewer、Validator、SoftPhone以及Test Voice Application工具。通过扩展WebLogic Workshop的Action类将这些选项集成在一起。
- 合法性验证器:使用第三方分析器来验证WebLogic Web服务器上的VXML或GRXML页面的合法性。集成此组件需要扩展WebLogic Workshop的Frame类。
总之,这些工具允许开发人员从VXML及GRXML标签库中添加标签,创建能够在语音应用程序中播放的波形文件,并且在测试之前验证应用程序脚本。
语音Web工程
语音Web工程是新创建的工程类型,包含语音及Web相关的文档。此工程通过扩展 WebLogic Workshop的Web工程而继承了Web工程的功能。Java 控件(JCX)、Java页面流(JPF)以及任何其他合法的Web文档都能添加到语音工程中。一旦创建了新的应用程序,就能在“Voice Interface”类别下找到“Voice Web Project”。创建此工程类型将把VXML、GRXML以及语音用户接口(VUI)的音频文档集成进Workshop模型中,同时根据语音应用程序的独特性质提供足够的隔离,以避免对Workshop中现有的Web工程造成不必要的复杂化。
文档
在语音工程中仅存在三种新的语音文档类型——VXML、GRXML以及音频文档。一旦创建完语音工程,开发人员就能够像创建其他Workshop文档一样创建这些语音文档(参见图 2)。

图2:创建语音文档与创建WebLogic Workshop文档一样
VXML文档
由W3C标准组织定义的语音可扩展标记语言(VoiceXML或VXML)是当今具有领导性的语音应用程序语言。标准中包括的对VXML的描述如下:
“设计VoiceXML的目的是创建特征为合成语音、数字化音频、对发音及DTMF密钥输入的识别、对语音输入的记录、电话以及混合型主动对话的音频会话。其主要目标是将基于Web开发和内容传送的优势带入到交互式语音应答(IVR)应用程序之中。”
SandCherry团队定义了几个最重要的目标来指导WebLogic Workshop的扩展,以支持VXML文件:
- WebLogic Workshop必须理解VXML 2.0以提供熟悉的IDE开发帮助(诸如属性编辑及代码完成)。
- Workshop中的HTML及VXML文档类型必须不同。
- 每个VXML文件都必须作为JavaServer Page(JSP)页面来处理,以便充分利用BEA WebLogic 平台。
因为SandCherry公司AppDev的VXML的开发与WebLogic Workshop的集成同时进行,所以诸如在AppDev中为VXML页面使用JSP等的一些基本设计选择使得开发团队能轻松地与Workshop的JSP Document类集成,并且能够继承WebLogic Workshop所提供的功能。为VXML创建自定义的JSP 标签库,使得与Workshop的JSP设计器进行集成并重用其许多特性以帮助开发人员编写VXML成为可能。因为打开AppDev文档时必须启用一些功能,而打开标准Workshop文档时又必须禁用,所以需要一种新的文档类型。创建新的文档类型是在WebLogic Workshop可扩展性框架中通过扩展基本Document类来实现的,从而创建出用于VXML及GRXML文件类型的新“语音文档”类型。
GRXML文档
GRXML是在语音应用程序中定义语法的另一个W3C标准。在规范中陈述如下:
“语法在语音识别中使用,使开发人员能够指定语音辨识器所监听的单词及单词模式。语法格式的语义以XML形式表示。”
GRXML文档利用与VXML文档相同的方式添加到WebLogic Workshop中,同时“语音文档”类型映射为文件扩展名“grxml”。以W3C的“语音识别语法规范”(SRGS 1.0)为基础为GRXML创建惟一的标签库。
音频文档
由于音频文档在语音应用程序中只是作为一个波形文件,所以音频文档在WebLogic Workshop框架中要面临两个独特的挑战。首先,音频文件包含波形记录,而非文本记录,仍必须驻留于Workshop工程中以供应用程序使用。其次,利用基于GUI的源或波形文件的设计视图来表示应用开发器并不十分奏效。所以必须将音频记录工具嵌入到Workshop文档编辑器中以解决这些问题。
通过给予工具开发人员对扩展基本Document类、删除源视图并将曾经独立的工具嵌入到Workshop工作空间中的灵活性,BEA WebLogic Workshop为这些问题提供了简单明了的解决方案。使用该方法,音频记录以及回放工具被集成到Workshop环境中,所以当打开一个音频文档时,音频工具通常会在源视图窗口中启动。该工具记录了开发及测试语音应用程序期间所使用的音频文件。
树设计视图
创建用于VXML及GRXML文档的树设计视图来代替原来的设计视图。因为VXML以及GRXML文档都继承了JSP功能,所以无法使用原来的设计视图创建语音应用程序。使用树来显示及开发语音应用程序可提供层次清晰的脚本视图。在此视图下,开发人员可以关闭或打开节点以收缩或展开应用程序的相应部分,从而将精力集中于文档的特定部分。WebLogic Workshop提供了禁用原视图以及创建在源编辑器中可作为标签显示的新视图的灵活性(参见图 3)。

图3:源编辑器
由于树设计视图提供的所有功能,所以它成为创建语音应用程序时极其强大的工具。首先,它提供对标签的完整性错误检查。其次,它能够方便地剪切、粘贴、复制及移动文档的大部分内容。最后,它提供了整个语音文档的方便易读的视图。
树设计视图内置的错误检查提供了用户熟悉的环境,以创建集成了普通WebLogic Workshop设计视图中许多特点的语音文件:包含错误的节点以同样方式用彩色编码表示;在视图中的元素(树节点)上点击右键将显示包含该节点合法动作的菜单;同时用户能够对任意节点的任意标签实施拖放操作。对于插入还增加了智能因素,以确保VXML规范中的标签合法,从而有助于避免基本错误。树设计视图使用底层的Workshop编译器服务对每个节点提供诊断(参见图 4)。

图4:树设计视图
语音菜单和工具栏
语音菜单及工具栏是简单的控件,允许用户启动语音工具,包括Test Voice Application,、Log Viewer、Validator以及SoftPhone。
将这些工具添加到菜单选项只需简单地扩展Workshop的Action类,同时通过XML的几行语句指定工具的位置、图标以及选中选项时所要运行的Java代码即可实现。在清单1中显示了添加Validator菜单选项的脚本片断:
清单1
<action-set>
<action
class="com.sandcherry.ide.bea.control.LaunchVa
lidator"
label="Validator" show-always="false"
icon="resources/images/com/sandcherry/
ide/Validator.gif">
<location priority="30"
path="menu/voicemenu/voice" />
<location priority="30" path="toolbar/
voicetoolbar/voice" />
</action>
</action-set>
在此例中,“action class”是启动Validator的Java代码,Validator.gif是显示的图标,“location priority”指定在工具栏及菜单中何处显示工具。在WebLogic Workshop中添加动作简单但却功能强大,因为这些动作实现了无缝集成并且继承了Workshop的观感(参见图 5)。

图5:语音应用程序
Validator
Validator工具通过从WebLogic服务器获取VXML及GRXML文档,并在AppDev VXML的“合法性验证分析器”(Apache Xerces)中运行,对当前文档使用相应的W3C Schema来验证其合法性。分析器以服务部署时VXML浏览器从Web服务器下载应用程序相同的方式下载活动的文档。正在进行合法性验证的内容以及在文档中找到的所有错误列表都将显示在窗口中。
用Java编写的Validator使用了巧妙插入到Workshop的 Frame扩展中的Swing面板。通过继承Workshop的外观、感觉及功能,这些扩展允许Validator为开发人员提供一致的UI体验。
测试语音工具
测试语音应用程序引入了在Workshop环境中先前未曾预料到的一系列问题。在窗口中能够轻松地显示一个Web应用程序,而语音应用程序却需要与控制着许多不同媒体组件的语音平台进行基于电话的交互。SandCherry已经利用其基于软件的语音平台预集成了多种组件,并且添加了基于软件的电话模拟器为语音应用程序提供完整的测试环境。在应用程序中测试语音项目时将使用4个工具。
- Test Voice Application:该组件启动语音平台及测试语音应用程序时所必需的组件处理。
- SoftPhone:基于软件的电话模拟器使得开发人员能够调用语音应用程序进行测试。Workshop的Action类用于启动SoftPhone应用程序,该应用程序是WebLogic Workshop的外部组件。
- Log Viewer:开发人员也许将在应用程序运行时或者应用程序结束后查看所有不同语音资源的日志。Log Viewer使用Workshop的Frames类实现了其在Workshop中驻留,并且继承了相应的外观及感觉。
- AppTuner:一个基于软件的语音平台,用于控制语音识别、提示播放以及应用测试中文本到语音转换所需的媒体组件的膝上型电脑或PC。
Test Voice Application
Test Voice Application通过允许开发人员使用单一按钮来启动测试应用程序所需的多个组件,从而简化了测试过程。通过使用WebLogic Workshop的Action类,该按钮能够启动安装有应用程序的WebLogic服务器、查看语音资源日志的Log Viewer以及调用应用程序的SoftPhone。启动时,SoftPhone将自动填充以运行当前的VXML文档。
SoftPhone
SoftPhone同音频文档一样也是独立的程序。同样地,从语音菜单扩展Action类使得在无需对SoftPhone应用程序作任何改动即可轻松地启动它。其他WebLogic Workshop扩展使得SandCherry能够检索用于自动填充电话的当前文档信息,并指定将运行哪一个VXML文档(参见图6)。

图6:SandCherry的SoftPhone
Log Viewer
Log Viewer根据用于运行语音应用程序的语音资源状态提供对重要信息的访问。例如,当应用程序正处理语音识别时,Log Viewer可用于验证识别引擎是否与语音语法正确匹配。
Log Viewer通过WebLogic Workshop的Action类从语音菜单或者工具栏启动(参见语音菜单和工具栏),利用Frame类无缝地集成到Workshop中。默认情况下,窗口将具有与其他WebLogic Workshop组件相应的外观及感觉,并且能够在多个位置驻留(参见图7)。

图7:Log Viewer
AppTuner
用于测试语音应用程序的底层语音平台AppTuner是一个具有许多集成组件的复杂系统。AppTuner Console是用于启动及管理语音资源组件的单独GUI程序,它使应用程序开发商能够轻松地读取运行中的语音资源视图(参见图8)。

图8:AppTuner的语音组件状态视图
最初,控制台本应是AppDev套件中需要从WebLogic Workshop窗口之外启动的惟一部分——因为很不幸,其他的语音开发工具都嵌入到Workshop框架中。在Workshop存在一个简单的解决方案,然而,那需要在不用任何代码的前提下将其添加进Workshop环境。
WebLogic Workshop提供了从Tools菜单启动可执行文件的工具。按照以下步骤使得独立的AppTuner控制台成为Workshop内集成的工具。
1.从Tools菜单选择IDE Properties。
2.在IDE属性窗口的左边窗格中,点击Tools文件夹。
3.选择右边窗格顶部的New Tool按钮。
4.在Tool Name文本框中输入“AppTunerConsole”。
5.在Directory文本框中输入AppTunerConsole.exe的完整路径。
6.点击OK。
至此,从Workshop内的External Tools菜单中可以访问控制台。
结束语
由于语音应用程序与Web应用程序间的固有差异,将SandCherry的AppDevVXML集成到BEA WebLogic Workshop 8.1中引起了一系列特有问题。将新工程及语音应用程序文件类型进行集成,处理只包含记录音频的文件以及将外部应用程序集成进Workshop,这些只是在提供与Workshop实现无缝集成的、完整的语音开发环境过程中的一些潜在障碍。令人惊喜的是,所需努力比想像中要少得多,尽管目前呈现在BEA WebLogic Workshop团队面前的情势还显得比较严峻。
总之,内置于WebLogic Workshop 8.1的可扩展组件为集成过程中遇到的几乎所有问题都提供了解决方案。可扩展的工程、文档、Frame类及Action类为将新功能集成进WebLogic Workshop框架中提供了极大的灵活性。除了支持内部增强以外,Workshop的可扩展性支持也提供不同方法来集成外部应用程序,甚至允许与Web应用服务器无关的应用程序或其组件也看起来充分集成了。现在开发人员就能无缝地使用BEA WebLogic Workshop 8.1以及SandCherry的AppDevVXML来构建及测试Web及语音应用程序。
|