现在的位置: 首页 > 综合 > 正文

VXML语言演示

2014年02月24日 ⁄ 综合 ⁄ 共 2932字 ⁄ 字号 评论关闭

2.1 VoiceXML2.0脚本结构

    现在让我们来看一个简单的例子(行号是为了本文引用方便,其不应该出现在VoiceXML脚本文件中):

1 <?xml version="1.0"?>
2 <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
3 <form>
4 <block>
5 欢迎使用明建公司语音系统!
6 </block>
7 </form>
8 </vxml>

    当电话接通,用户将会听到由语音合成的“欢迎使用明建公司语音系统!”。第1,2和8行是每个VoiceXML脚本文件都应该包含的;第3到第7行是一个对话表,用<from>…</form>标志;在该对话表中有一个块<block>…</block>,其包含了要输出的内容。

如果不用语音合成功能,上面的例子还可以写成:
1 <?xml version="1.0"?>
2 <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
3 <form>
4 <block>
5 <audio src="welcome.wav"/>
6 </block>
7 </form>
8 </vxml>

当电话一接通,用户将会听到预先录制好的语音文件welcome.wav的内容。

    用VoiceXML编写语音应用程序,不仅可以方便地实现语音文件以及文本的播放(通过语音合成的功能),而且还可以方便地实现按键输入以及语音输入(通过语音识别的功能)。VoiceXML定义两种基本输入方式:菜单<menu>和输入域<field>。菜单将输入的内容列举出来,并根据需要允许用户用按键或/和语音的方式进行输入。以下是一个用菜单接受用户输入的例子:
1 <?xml version="1.0"?>
2 <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
3 <menu dtmf="true">
4 <prompt>
5 用户您好。请选择明建为您提供的服务:
6 1 天气预报 2 股票市场
7 <choice next="weather.vxml">天气预报</choice>
8 <choice next="stocks.vxml">股票市场</choice>
9 </prompt>
10 </menu>
11 </vxml> 

当电话接通,用户将会听到提示“用户您好。请选择明建为您提供的服务:1 天气预报 2 股票市场”,并等待用户输入;当用户说“天气预报”或按键输入“1”后,系统将转向另一个VoiceXML脚本文件(定义天气预报的对话流)。第3行到第10行定义了整个菜单;第4到第7行是提示<prompt<的定义;第8和第9行列举出菜单项。 除了菜单方式之外,用输入域<field>也可以接受用户输入:

1 <?xml version="1.0"?>
2 <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
3 <form>
4 <field name="inputitem">
5 <prompt>
6 用户您好。请选择明建为您提供的服务:
7 1 天气预报 2 股票市场
8 </prompt>
9 <grammar mode="voice" root="item1">
10 <rule id="item1">
11 <one-of>
12 <item>天气预报</item>
13 <item>股票市场</item>
14 </one-of>
15 </rule>
16 </grammar>
17 <grammar mode="dtmf" root="item2">
18 <rule id="item2">
19 <one-of>
20 <item>1</item>
21 <item>2</item>
22 </one-of>
23 </rule>
24 </grammar>
15 <filled>
16 <if cond=" inputitem == '天气预报'">
17 <goto next="weather.vxml"/>
28 <else/>
29 <goto next="stocks.vxml"/>
30 </if>
31 </filled>
32 </field>
33 </form>
34 </vxml>

    该例中<field>定义的输入流程与前面例子中<menu>定义的流程相同,即当电话接通,用户将会听到提示“用户您好。请选择明建为您提供的服务:1 天气预报 2 股票市场”,并等待用户输入;当用户说 "天气预报" 或按键输入“1”后,系统将转向另一个VoiceXML脚本文件(定义天气预报的对话流)。第9行到第16行和第17行到第24行分别定义了语音输入和按键输入的语法。该例中的语法本身出现在VoiceXML脚本文件中,这类语法称为在线语法。语法也可以不是在线语法,它们可以被放在一个独立的语法文件中。例如,如果将上面的语法分别放在services_voice.grxml和services_dtmf.grxml中,该例子可以改写为: 电话录音功能是实际应用系统中常常会遇到的。下面的例子给出如何用VoiceXML提供的录音元素实现电话录音功能:

1 <?xml version="1.0"?>
2 <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
3 <form>
4 <record name="msg" beep="true" maxtime="10s" finalsilence="4000ms"
type="audio/x-wav">
5 <prompt timeout="5s">
6 请在'嘟'声后留言。
7 </prompt>
8 </record>
9 <block>
10 <prompt>
11 您的留言是<value expr="msg"/>。
12 </prompt>
13 </block>
14 </form>
15 </vxml>

    当电话接通,用户将会听到“请在‘嘟’声后留言”的提示,随后系统提示“嘟”声并等待用户留言;最长录音时间为10秒(maxtime="10s"),当用户停止说话4秒(finalsilence="4000ms")后系统停止录音,录音将被放在变量msg中;录音停止后用户将听到系统提示"您的留言是" 和录音内容。第4行到第9行是录音功能的定义;第10行到第14行播放提示和录音内容。VoiceXML不仅提供上述基本的输入输出功能,还提供了其它功能,如电话转接、强大的数据库接口、互联网接口、Javascript操作、对话流自由转向、模块化结构等功能。除此之外,VoiceXML还提供了扩展接口<object>,使得其功能得到更为广泛的延伸。显而易见,用VoiceXML编写一个电话语音应用系统,摆脱了传统的CTI技术的开发方法和模式。开发人员不需要了解语音板卡、交换机、语音合成、语音识别等的编程细节,只需要把精力放在业务流程上。用VoiceXML不仅完全可以代替传统CTI技术所能完成的功能,而且还能完成用传统CTI技术难以实现的功能。用VoiceXML开发语音应用系统周期短、对技术人员要求相对较低。基于VoiceXML开发出来的应用系统有很好的可扩展性、可维护性、可移植性、可重用性和开放。

 

抱歉!评论已关闭.