1、╳╳╳╳-╳╳-╳╳实施 ╳╳╳╳-╳╳-╳╳发布 中国移动通信集团公司 发布 QB-╳╳-╳╳╳-╳╳╳╳ 中国移动通信企业标准 语音内容服务VoiceXML接口规范 Title{英文黑体四号} 版本号:╳.╳.╳{黑体小四} 目次 1 范围 1 2 引用标准 1 3 术语和定义 1 4 概述 2 4.1 VoiceXML简介 2 4.2 VoiceXML的背景 4 4.2.1 VoiceXML的结构模型 4 4.2.2 Vo
2、iceXML的设计目标 5 4.2.3 VoiceXML的范围 6 4.2.4 VoiceXML的设计要点 6 4.2.5 对VoiceXML实现平台的要求 7 4.3 VoiceXML的一些概念 7 4.3.1 对话框和子对话框 7 4.3.2 会话 8 4.3.3 应用 8 4.3.4 语法 8 4.3.5 事件 9 4.3.6 链接 9 4.4 VoiceXML的元素 9 5 VXML元素说明 10 5.1 文档结构与文档执行 11 5.1.1VXML元素 11 5.1.2单文档应用 11 5.1.3多文档应用 12 5.1.4子对话框 13 5.2
3、业务控制与业务流程元素 13 5.2.1 对话框 13 5.2.1.1窗体 13 5.2.1.1.1 窗体的解释 14 5.2.1.1.2 窗体项 14 5.2.1.1.3 窗体项变量和条件 14 5.2.1.1.4 定向窗体 15 5.2.1.1.5 混合初始窗体 15 5.2.1.2 菜单(menu)元素 15 5.2.1.2.1 CHOICE元素和ENUMERATE元素 16 5.2.1.3 窗体项 17 5.2.1.3.1 FIELD元素 18 5.2.1.3.2 BLOCK元素 19 5.2.1.3.3 INITIAL元素 20 5.2.1.3.4 SUB
4、DIALOG元素 20 5.2.1.3.5 OBJECT元素 22 5.2.1.3.6 RECORD元素 23 5.2.1.3.7 TRANSFER元素 25 5.2.1.3.8 FILLED元素 26 5.2.1.3.9 LINK元素 28 5.2.2 控制流和ECMAScript 29 5.2.2.1 变量和表达式 29 5.2.2.1.1 变量和表达式的一般信息 29 5.2.2.1.2变量的作用域 30 5.2.2.1.3标准会话变量 30 5.2.2.1.4标准应用变量 31 5.2.2.2事件处理 31 5.2.2.2.1 THROW元素 31 5.2.
5、2.2.2 CATCH元素 32 5.2.2.2.3 事件处理的时机 33 5.2.2.2.4速记表示法 33 5.2.2.2.5 事件处理中的冲突 33 5.2.2.2.6 事件缺省动作 33 5.2.2.2.7事件类型 34 5.2.2.2.8定时器事件 34 5.2.3 执行上下文 35 5.2.3.1 VAR元素 35 5.2.3.2 ASSIGN元素 35 5.2.3.3 CLEAR元素 36 5.2.3.4 IF,ELSEIF和ELSE元素 36 5.2.3.5 PROMPT元素 37 5.2.3.6 REPROMPT元素 37 5.2.3.7 GOTO
6、元素 37 5.2.3.8 SUBMIT元素 38 5.2.3.9 EXIT元素 39 5.2.3.10 RETURN元素 39 5.2.3.11 DISCONNECT元素 39 5.2.3.12 SCRIPT元素 39 5.2.3.13 LOG元素 41 5.3 业务功能实现元素 41 5.3.1语法 41 5.3.1.1 语音语法 42 5.3.1.2 语法的作用域 43 5.3.1.3 语法冲突 43 5.3.2 系统输出 43 5.3.2.1 语音合成标志语言 43 5.3.2.2 基本语音输出 44 5.3.2.3 播放语音文件 44 5.3.2.4
7、VALUE元素 45 5.3.2.5 打断语音输出 45 5.3.2.6 超时 45 5.3.3 环境与资源 45 5.3.3.1 资源 45 5.3.3.1.1资源获取 45 5.3.3.1.2 缓冲 46 5.3.3.1.3 预读 47 5.3.3.1.4 协议 47 5.3.3.2文档信息 47 5.3.3.2.1 META元素 47 5.3.3.2.2 METADATA元素 48 5.3.3.3平台属性 49 5.3.3.4 PARAM元素 49 5.3.3.5 时间设计 50 5.3.4 VoiceXML在独立外设中的应用 50 5.3.4.1对独立I
8、P的硬件的要求 50 5.3.4.2 VoiceXML与多层次的业务 51 5.3.4.3 VoiceXML与其他功能实体的通信 51 5.3.5 各种功能的object说明 52 5.3.5.1会议桥资源的操作实现 52 5.3.5.1.1开始会议 52 5.3.5.1.2结束会议 53 5.3.5.1.3加入会议 54 5.3.5.1.4离开会议 55 5.3.5.1.5修改通话方的状态 56 5.3.5.2 连接两条话路 57 5.3.5.2.1操作申请 57 5.3.5.2.2主动方等待 57 5.3.5.2.3被动方接入 59 5.3.5.3 SCP与IP
9、的UI操作实现 60 6 应用举例:无线广告业务的VoiceXML描述 60 7 TTS语法规则 65 8编制历史 71 前言 随着基于内容业务的不断发展和梦网模式的不断普及,移动用户对内容的需求也逐步增大。目前,运营商主要通过数据业务(短消息、GPRS等)向用户提供内容。 话音内容服务系统是通过话音为主的方式向用户提供内容服务。该系统由SCP、增强IP、SP等几个部分组成。本规范主要对增强IP设备与ICP接口的VXML语言规范进行描述。 本标准由中国移动通信集团公司技术部提出并归口。 本标准由标准提出并归口部门负责解释。 本标准起草单位:中国
10、移动通信集团公司研发中心。 本标准主要起草人:魏冰、赵毓毅、孙楠。 本标准解释单位:中国移动通信集团公司技术部。 1 范围 本标准是对VoiceXML(the Voice Extensible Markup Language)语言的介绍。本规范中主要描述了VXML语言的结构、元素、语法及事件处理、资源获取的方法与机制。 本标准适用于对独立外设上应用的VoiceXML接口进行开发、规范。 2 引用标准 [1] W3C, Extensible Markup Language (XML),1998年1月, .w3.org/TR/REC-xml [2] VoiceXML forum,
11、VoiceXML Version 1.0, 2000年3月, [3] Standard ECMA-262, Standard ECMA-262 ECMAScript Language Specification, 1999年10月 [4] IETF, Hypertext Transfer Protocol -- HTTP/1.1, 1999, [5] Burnett、Walker、Hunt, Speech Synthesis Markup Language Version 1.0(W3C Working Draft), 2002年10月, [6] Hunt、McGlash
12、an , W3C Candidate Recommendation :Speech Recognition Grammar Specification Version 1.0,2002年5月,
[7]IETF,URLs for Telephone Calls,2000,
3 术语和定义
VXML:VoiceXML语音扩展标记语言
元素(element):元素是XML(VoiceXML是基于XML的)标记的基本组成部分,可以看成容器。它们可以有相关的属性和/或包含其它元素、注释等。下面是元素的例子:
13、or/>
其中, 14、语法和嵌套树结构的正确使用。
VoiceXML文档(VoiceXML Document):符合VoiceXML的文档类型定义的XML数据。
应用平台(Implementation Platform):应用平台是具有支持VoiceXML功能所需软硬件的计算机。
VoiceXML解释器(VoiceXML interpreter):VoiceXML解释器是一个(组)计算机程序,该程序通过解释开发人员编写的VoiceXML文档,控制应用平台和用户交互。
VoiceXML解释器上下文(VoiceXML interpreter context):VoiceXML解释器是一个(组)计算机程序,该程序 15、使用VoiceXML解释器解释VoiceXML文档,同时独立(VoiceXML解释器)与应用平台交互。
对话框(dialog):由一个或者多个VoiceXML文档构成的应用系统是一个有限状态自动机,该自动机的一个状态成为一个对话框。对话框分两种:表单和菜单。
表单(form):用于收集输入内容,并向用户表示信息的对话框。
菜单(menu):菜单用于向用于提供选择,并根据用户的输入转到另一个对话框。
语法(grammar):语法指出了可以指定给字段的合法表示方式,如可以通过语法,要求用户输入布尔值。 VoiceXML使用的语法是基于JSGF(JSpeech Grammar Format) 16、
事件(event):应用平台会抛出一些事件来响应错误情况,如没有输入、不能理解的输入或者意外断开;特有的事件也可以通过脚本调用throw元素来产生。
4 概述
4.1 VoiceXML简介
VoiceXML是由IBM、Lucent、Motorola、AT&T四家公司于2000年提出的一种专门设计用来支持语音业务的可扩展标记语言,它建立在XML 标记语言规范的基础之上,是语音浏览技术的核心,其与数据库、HTML、WML以及其它文档处理和发布系统的资料交换几乎没有障碍。它的主要目标是在交互式语音应用中采用Web开发的结构和技术,做到了将Web和电话的结合,简化原本比较复杂的交互式语音业 17、务开发,并使内容提供商的开发工作得到有效的保护,它可以应用于不同的系统,不会因为系统的扩容和系统切换导致业务的描述失效,真正做到了业务与平台无关。
下面是两个简短的VoiceXML的例子。第一个是著名的“Hello World”:
18、流程。对话框分为两种,分别是窗体(forms)和菜单(menus)。窗体输出信息并且收集输入,菜单提供下一步作什么的选择。这个例子有一个单一的窗体,它包括一个块(block),该块合成并输出“Hello World!”。由于这个窗体没有后继的对话框,所以输出完“Hello World!”后,脚本结束。
第二个例子要求用户选择一种饮料,并把用户的选择提交到服务器:
19、 or nothing?
20、did not understand what you said.
C: Would you like coffee, tea, milk, or nothing?
H: Tea
C: (continues in document drink2.asp)
4.2 VoiceXML的背景
4.2.1 VoiceXML的结构模型
VoiceXML采用如下结构模型:
文档服务器(比如:Web服务器)处理来自客户端应用的请求,在应答中产生VoiceXML文档(VoiceXML documents),该文档在VoiceXML解释器中处理。VoiceXML解释器上下文(VoiceXML 21、interpreter context)是VoiceXML解释器(VoiceXML interpreter)的执行环境。VoiceXML解释器上下文可以在监视用户输入的同时,解释执行VoiceXML文档。比如,一个VoiceXML解释器上下文可以一直监听一个用户需要帮助的事件,同时监听改变语音合成参数(如音量或者TTS特征)的事件。
实现平台受VoiceXML解释器上下文和VoiceXML解释器控制。
例如,在交互式语音应用中,VoiceXML解释器上下文可以负责检测呼叫并获得相应的VoiceXML文档,应答该呼叫。同时VoiceXML解释器开始执行文档中的对话框。
实现平台能够产生用户 22、响应和动作(比如:讲话或输入字符,挂机)的事件和系统事件(比如:事件超时)。这些事件中一些由VoiceXML解释器本身进行处理,另外一些由VoiceXML解释器上下文进行处理。
4.2.2 VoiceXML的设计目标
VoiceXML的主要目标是将web应用开发的全部技术和经验引入到语音应答应用中,同时把这类应用的开发人员从底层编程和资源管理中解放出来。它利用熟悉的客户机服务器模式来实现语音业务和数据业务的集成。
VoiceXML将语音业务看作是用户和实现平台上一系列对话框的交互。对话框由VoiceXML文档描述,VoiceXML文档存放在文档服务器,而文档服务器可放置在实现平台之外。文 23、档服务器管理着业务脚本,同时可以执行数据库操作,保留现有遗留系统,并且产生对话框。VoiceXML文档定义了一系列对话框,由VoiceXML解释器执行。用户的输入将作为对话框下一步执行的根据,同时根据需要,可以将用户的输入发送给文档服务器,文档服务器产生另一个VoiceXML文档作为应答,应答的VoiceXML文档将继续应用在当前的会话中。
VoiceXML具有以下优点:
l 每个文档可以指定多个对话框,减少了客户机与服务器的交互;
l 把开发人员从底层和具体平台的细节中解脱出来;
l 分离用户交互操作(in VoiceXML)和业务逻辑(CGI scripts);
l 跨实现平台。 24、VoiceXML是内容提供商,工具提供商和平台提供商的公共语言;
l 提供构造复杂应用的语言特性。
当然,VoiceXML努力满足绝大多数语音交互业务的要求,但它不是万能的,当VoiceXML努力来满足绝大多数语音应答业务的要求时,那些有特殊要求的业务最好由专门应用来完成。
4.2.3 VoiceXML的范围
VoiceXML用于描述语音应答系统提供的人机交互功能,这些功能包括:
l 合成语音(TTS)的输出;
l 音频文件的输出;
l 语音输入的识别;
l DTMF输入的识别;
l 语音输入的记录;
l 电话的一些功能,如呼叫转移和挂机;
l 与业务相关的扩展。
Vo 25、iceXML提供多种方式来收集字符输入、语音输入,可以将输入赋值到在文档中定义好的相应变量中,并且决定文档以后的执行。VoiceXML之间通过统一资源标识符(URI)来相互链接。
4.2.4 VoiceXML的设计要点
VoiceXML基于XML。关于XML的细节,请参考相关的文档。以下是VoiceXML的设计要点:
l VoiceXML语言的跨平台特性,是通过对资源的抽象获得的。
l 为了满足了平台多样性的要求和市场竞争,VoiceXML语言不对平台支持音频文件格式,语音语法格式和URI方案等方面进行规范。
l VoiceXML语言只支持交互所需要的通用的特征。
l VoiceX 26、ML语言有确定语义,保证了开发人员的意图不被误解。客户机不需要决定文档元素的语义。
l VoiceXML语言有控制执行流的机制。
l VoiceXML语言使业务逻辑和交互行为相分离。
l VoiceXML语言不针对具有大量计算的应用,数据库操作和遗留系统的操作,这些任务由文档解释器外部的资源,如文档服务器来处理。
l 业务逻辑、状态管理、对话框的产生和对话框序列驻留在文档解释器的外部。
l VoiceXML语言利用URI来链接文档,同时也利用URI来向服务器脚本提交数据。
l VoiceXML语言提供方法来识别提交给服务器数据和提交的HTTP方法(get 或 post)。
l V 27、oiceXML语言不要求文档作者明确分配和收回相应的资源,或者处理并发。实现平台处理资源分配和并发。
4.2.5 对VoiceXML实现平台的要求
本部分概括了支持VoiceXML解释器的软硬件的要求。
文档获取:解释器上下文负责获取VoiceXML解释器所需要的文档。在一些情况下,文档请求可由VoiceXML文档的解释过程产生,而其他请求由解释器上下文产生(当解释器上下文对VoiceXML语言之外的事件,比如入呼电话呼叫发生响应时)。
音频输出:实现平台能够通过使用音频文件、TTS方式,提供音频输出。当两种方式都支持时,平台必须能够自由地对TTS和音频进行序列输出。
音频输入:实现 28、平台能同时检测和报告字符、语音输入,并且用计时器来控制输入间隙,这个间隙长度可以由VoiceXML文档来指定。实现平台必须能报告用户输入的字符(如:DTMF)。必须能动态接受语音识别语法数据,如通过一个URI来引用语音语法数据。对于语音输入,语音识别器可通过任意一种语音语法规范来监听。对接收自用户的音频进行记录,同时将信息保存到请求元素变量中。
必须能满足语音输入的动态更新,应该能对接收自用户的音频进行记录。实现平台必须能让录音对请求(request)变量可用。
4.3 VoiceXML的一些概念
一个VoiceXML文档(或者一个文档的集合,称为应用)构成一个有限会话的自动机。在某一时 29、刻,用户总是在一个会话状态或者一个对话框中。每个对话框决定下一个要执行的对话框,对话框间的迁移用URI来指定,URI定义了下一个对话框和对话框所在的文档。如果URI没有给出文档,默认使用当前文档。如果URI没有给出对话框,则使用文档中的第一个对话框。当一个对话框没有指定后继对话框,或者对话框中执行到明确退出会话的元素,则执行被终止。
4.3.1 对话框和子对话框
对话框分为两类:窗体和菜单。窗体定义了一个交互,用来收集域的项目变量的值。每个域可以指定一个语法来定义某一个域允许的输入。窗体级的语法能用来填充几个域。菜单提供给用户一系列选择,基于选择的结果转到某一个对话框。
子对话框类似函数 30、调用,它提供一个机制来调用新的交互,完成后可以返回原来的窗体。子对话框返回以后,将恢复原来的局部数据,语法和状态信息。例如,子对话框可用来创造一个带确认的数据库查询;在一个单一应用中创造一个可供各文档共享的组件;或者创建一个许多应用共享的可重用库。
4.3.2 会话
当用户与VoiceXML解释器上下文交互时,开始一个会话;文档装载和处理不中断会话;用户、文档或解释器上下文的请求可以结束一个会话。
4.3.3 应用
应用是共享应用根文档的文档集合。任何时候,当用户与应用中的某一个文档交互时,这个文档的应用根文档也被装载。当用户在同一个应用的文档中变迁时,应用根文档将保持装载。当用户变迁 31、到一个非本应用的文档中去时,应用根文档将被卸载。当应用根文档装载后,应用根文档的变量作为应用变量,对其他文档可用,并且它定义的语法的状态在应用执行期间被置成激活。下图表示了共享应用根文档(root)的文档的变迁。
4.3.4 语法
每个对话框有一个或多个语音、DTMF语法与之关联。在机器主导应用中,每个对话框的语法只有当用户在那个对话框时是激活的。在混合主导应用中,由用户和机器交替决定下一步作什么。这种情况下,即使当用户在同一文档的其他对话框之中,或者当用户在同一应用的其他装载文档中时,一些对话框还将激活他们的语法(如:监听)。在这种情况下,如果用户输入与其他对话框活动条件相匹配的 32、东西,则执行转移到相应的对话框,用户的输入如同那个对话框是当前的对话框。混合主导给语音应用增加弹性和能力。
4.3.5 事件
VoiceXML应用填表机制来处理用户的正常输入。同时,VoiceXML定义了一种机制来处理表机制不能处理的事件。在一定条件下,平台抛出事件,如用户未响应,没有正确响应,请求帮助。
解释器也可能扔出事件,如它发现了VoiceXML文档中的语义错误。事件由catch元素(或catch元素的简写)来捕获。每一个能发生事件的元素都可以指定catch元素。catch元素也可从高一级的封闭元素中继承。采用这种方式,共同事件处理行为可以在任一层指定,并应用到所有的低层。
33、4.3.6 链接
链接支持多种控制转移。当用户在链接的范围内时,链接指定一个活动语法。如果用户的输入与链接的语法相匹配,则控制转向此链接的目的URI。同时,link元素能够被用来把事件抛到相应的目的URI。
4.4 VoiceXML的元素
下表给出了VoiceXML的所有元素。
表4.4.1 VoiceXML的元素列表
元素
用途
对变量进行赋值
34、量,窗体变量清除成Undefined,事件计数器复位为0
35、逻辑
是
的缩写,