消息类业务的流程交互采用W3C标准的VXML脚本技术来进行定义,通过对VXML规则及解释器进行简单的升级改造来实现对数据多媒体交互的支持,并后向兼容语音交互,使之能够同时支持语音、数据多媒体和视频等全方位的媒体通道,帮助我们实现“一个流程到处应用”的目标。
在IVR中,定义基于语音的菜单推送是通过播放一个语音文件或者TTS(也是通过转换为语音文件)来实现的。相关的定义在VXML中是prompt标签,提示语可以是预先录音的文件、音频流和合成语音这3种方式的任意组合。其中,audio标签用于指定播放一个语音文件,里面有一个src或expr的属性,可以填写语音文件的URL或变量值;prompt里面放置的文本内容将作为TTS来解析执行,如下面代码所示。
<prompt>
Welcome to the CINCC.
<audio src="rtsp://www.cincc.cn/menu.wav"/>
We have the most advanced NGCC products
<audio src="http://www.cincc.cn/product.wav"/>
</prompt>
为了最大限度地保留原有语法,并保持与语音交互流程的兼容,在不改变audio语法的情况下,在audio标签内插入一段文字,作为数据通道的推送菜单。代码如下。
<prompt>
<audio expr="''">
您好,欢迎致电上卡网络公司,售前咨询请按1,售后支持请按2,投诉请按3,人工服务请按0
<!--即为提供给全业务IVR的文字菜单-->
</audio>
</prompt>
在上面的代码中我们看到,audio标签的语法没有被破坏,依旧符合VXML语言的规范定义。这样设计的流程可以在各种VXML解释器中运行而不会出错。但是由于没有设置audio标签的src或expr属性,所以在只支持IVR交互的平台中,该节点将不会放音,但不影响流程的执行。