蓝星际语音平台 问与答
- 一、蓝星际语音平台
- 1. 蓝星际语音平台能做什么?
- 2. 开发平台和运行平台有什么不同?
- 3. 脚本要不要先用开发平台编译成二进制文件,然后再放到运行平台上去运行?
- 4. 作为一个应用开发工程师,我需要哪些知识?
- 5. 蓝星际语音平台支持哪些硬件?
- 6. 下载了开发平台后,怎么运行?
- 7. 我暂时没有语音卡,能够测试脚本吗?
- 8. 蓝星际语音平台支持什么格式的语音文件?
- 9. 我想用TTS来播放文字,可以吗?
- 二、Koodoo语言
- 1. 自定义函数怎么用?
- 2. 语音平台和后台数据库之间是如何交互的?
- 3. 怎么访问MySQL数据?
- 4. 在语音平台的系统函数中怎么没有看到执行存储过程的函数?
- 5. 应用很复杂,脚本很长,怎么办?
- 6. 运行之中有些参数想让最终用户去配置,有什么好办法?
- 7. 如何记录日志?
- 8. 外部动态库有什么用处?
- 9. 如果外部动态库要返回一个列表,里面包含很多数据,怎么办?
- 10. 什么是好的Koodoo编程风格?
- 三、蓝星际呼叫中心
一、蓝星际语音平台
1. 蓝星际语音平台能做什么?
答:蓝星际语音平台是一个强大的语音应用开发工具和运行环境。同时,它又十分简单,开发和运行都很简单。它支持功能强大语法简单的脚本语言,可以应用在自动语音应答,自动外呼,短消息收发,语音信息,呼叫中心等各个方面,它支持各种类型的数据库系统,支持多种方法和后台进行通讯。它对应用开发人员有很好的支持,在开发平台上可以进行方便的调试。
2. 开发平台和运行平台有什么不同?
答:开发平台是专门用来测试脚本的,可以对流程进行调试,如设置断点,单步执行,查看变量等等。
开发平台只能在一条线路上运行。
运行平台是用户的最终运行环境,可以支持全部线路,而且提供了一个全面的运行监控环境。
运行平台线路间可以相互通讯,因而可以构造更复杂的应用,运行速度也比开发平台更快。
开发平台是免费的,可以随时到我们的网站上下载最新版本。运行平台需要购买许可。
3. 脚本要不要先用开发平台编译成二进制文件,然后再放到运行平台上去运行?
答:不需要。
无论是运行平台还是开发平台,都是直接加载脚本源代码,即使编译到内存运行。
可以把开发平台看成是1条线的运行环境。因为是免费的,可以利用开发平台来构造个人的桌面应用或短信应用。
4. 作为一个应用开发工程师,我需要哪些知识?
答:对于简单的应用,其实你只需要非常一般的编程知识,而大部分应用的确是很简单的,比如,你需要使你的 电话处于自动应答,当有电话打入时,播放一段语音:
WaitRing(1); // 等待来电 Play("welcome.wav"); // 播放语音文件"welcome.wav" Hangup(); // 挂断
这简单3条语句构成的脚本,就可以让你的电话成为自动应答机。
当然,面向商用用户的应用要复杂一些,如果你学习过C或VB或Pascal等计算机语言,编制脚本会变得十分容易。
5. 蓝星际语音平台支持哪些硬件?
答:目前支持下列硬件:
- 1). Intel Dialogic系列语音板卡;
- 2). 深圳东进公司的模拟卡、数字卡和传真资源卡等语音卡;
- 3). 杭州三汇公司的模拟卡、数字卡和传真资源卡等语音卡;
- 4). 支持TAPI3接口的语音Modem卡,语音卡,交换机等。
6. 下载了开发平台后,怎么运行?
答:可按下列步骤:
- 1). 正确安装好语音卡硬件,配置正确并能够正常运行语音卡厂商的演示程序;
- 2). 到这里选择对应硬件版本的开发平台下载:下载页面
- 3). 下载一个例子脚本,如演示IVR的“证券电话委托”,下载后解包到某个目录下;
- 4). 将第二步下载的开发平台执行文件拷贝到脚本例子的目录下,并运行开发平台;
- 5). 在开发平台上加载例子脚本,点击编译,然后点击运行。
7. 我暂时没有语音卡,能够测试脚本吗?
答:可以。只要你的电脑上安装了声卡,声卡能够播放声音就可以了。请下载TAPI3的版本, 要求你的电脑必须是windows 2000或windows XP。这时脚本运行在虚拟线路上,放音函数将自动在声卡上播放, 你还可以在“模拟按键”的输入框来响应收码函数,甚至还能够打断正在播放的语音。
8. 蓝星际语音平台支持什么格式的语音文件?
答:对于TAPI3版本的语音Modem卡通道,支持单声道16位线性PCM格式的wav文件;
对于东进和三汇语音卡的语音通道,支持单声道8位A率格式的wav文件或原始语音数据文件;
对于Dialogic卡的语音通道,支持单声道8位A率格式的wav文件或原始语音数据文件,以及Dialogic ADPCM格式的VOX文件;
对于虚拟线路通道,支持上面讲到的任何一种格式的文件。
9. 我想用TTS来播放文字,可以吗?
答:当然可以。对于简单的数字、数量和号码,系统函数中提供了PlayNumber()来播放。对于复杂的句子,目前有下面几种方法来播放:
- 1). 蓝星际TTS,运行平台支持,要安装蓝星际TTS的语音库;
- 2). 微软免费TTS,开发平台和运行平台都支持,必须安装微软的TSAPI;
- 3). 第三方商品化TTS,使用外部动态库方式调用,需购买许可。
二、Koodoo语言
1. 自定义函数怎么用?
答:自定义函数可以降低流程的复杂性,是对业务流程的封装和抽象。
在自定义函数内可以使用局部变量,可以通过参数来传递变量。反复调用的函数也是代码重用的重要方面。
Koodoo语言还提供了线路间函数调用的方法,可以跨线路提供服务。
2. 语音平台和后台数据库之间是如何交互的?
答:蓝星际语音平台提供了一组数据库操作的系统函数,简单、灵活,但功能强大。
该组函数允许用两种方式连接后台的数据库系统,一是ADO方式,微软在windows2000或以上版本已经在操作系统内安装了ADO驱动,所以部署比较简单;另外一种方式是数据库厂商原始API,因为语音平台会自动调用数据库厂商的底层API,所以速度很快,但必须安装数据库的客户端。
上述两种方式,访问数据库的函数都是一样的,也就是接口保持了一致。
3. 怎么访问MySQL数据?
答:可以直接使用MySQL原始API来访问,但注意必须把libmySQL.dll拷贝到工作目录。
4. 在语音平台的系统函数中怎么没有看到执行存储过程的函数?
答:蓝星际语音平台所提供的数据库访问接口是简单的,一致的。
无论是ADO方式还是数据库厂商原始API方式,DbExec()函数既可以传入标准的SQL语句,如select、update、delete等,也可以传入存储过程语句,如"exec sp_help"等等。可以参考相关的例子。
5. 应用很复杂,脚本很长,怎么办?
答:建议分成多个脚本,如某个外线应用,既有IVR,也有外呼,可以使用下列脚本:
- 1). IvrProc.bss -- IVR处理脚本
- 2). DialProc.bss -- 外拨脚本
- 3). Cfg.bss -- 配置
- 4). Main.bss -- 主脚本
只需要在主脚本的前面加上下列文件包含语句:
#include "Cfg.bss" #include "IvrProc.bss" #include "DialProc.bss"
在开发环境或运行平台指定运行主脚本Main.bss就可以了。
6. 运行之中有些参数想让最终用户去配置,有什么好办法?
答:可以将需要变化的参数专门抽取出来,放置在一个单独的文件里面,供其它文件包含就可以了,如:
配置文件名:Cfg.bss,内容如下:
const TIME_OUT = 20; // 拨号超时的秒数 const LOOP_NUM = 5; // 循环的次数 const IP_PRE_CODE = "17909"; // IP电话的前缀
等等。其实该文件里面的内容就是普通的Koodoo语句,通常为常量定义语句,当然也可以增加判断逻辑。
当然,也可以把配置项放到数据库里面,然后脚本到数据库里面读取;也可以放到一个外部的.ini文件里面,用文件操作函数去读取。
无论如何,直接包含的方式是最简单,也是最直观的。
7. 如何记录日志?
答:记录文本日志是很简单的,系统提供了一个函数TextFileAppend(sFile, sText, isCR);可以直接调用。
当然,你也可以封装成一个自定义函数,格式化写入的内容,如加上日期时间,线路号等,使记录的日志更加直观。
8. 外部动态库有什么用处?
答:外部动态库(DLL)是对蓝星际语音平台的扩展,在外部动态库中编写的函数可以供Koodoo脚本调用。
在下列场合可能需要开发外部DLL:
- 1). 当需要集成已经存在的业务系统,而且原来的业务系统通过传统的编程语言已经实现, 如金融系统中的与后台系统的交易、查询,可简单地将原来的业务系统封装成DLL,供脚本调用;
- 2). 当某些操作需要和底层接口打交道时,如操纵串口,调用平台没有封装的win32API等;
- 3). 当需要访问其它语言才有的机制时;
- 4). 当某些操作需要更高的安全性或更快的速度时,此外由于DLL仅仅是二进制模块,可以达到隐藏某些关键算法的目的。
当然,外部动态库的编写要遵循一定的规范,请参考文档《外部动态连接库编写规范(PDF)》。
9. 如果外部动态库要返回一个列表,里面包含很多数据,怎么办?
答:Koodoo语言和外部动态库交互只能传入普通变量,不允许传入数组。如果要返回一组数据,可以将该数组封装到格式化的字符串里,如逗号分隔或空格分隔或竖线分隔,赋值到Koodoo语言的参数变量中,然后在Koodoo语言脚本里面通过调用函数AnlyStr(s, ch, m);将字符串分解到数组。
脚本中可以直接通过下标访问数组,也可以用for in循环遍历数组,都是很简单的。
10. 什么是好的Koodoo编程风格?
答:Koodoo是一种高级语言,所有现代高级语言的好的编程风格都可以应用到Koodoo语言中。
当然,所谓“风格”向来都是见仁见智,下面写几条我喜欢的风格:
- 全局变量使用长的描述性的名字,局部变量使用短名字,循环变量使用单个字母如i,j,k;
- 常量全部大写,用下划线分隔单词,如: const IP_PRE_CODE = "17909"; // IP电话的前缀
- 变量大小写混用,首字母小写,如:isFound, phoneCode等等;
- 函数名大小写混用,首字母大写,而且尽量描述动作,如: function InputAccCode(code, len) // 输入帐号
- 少用while循环,尽量使用标准循环;
- 尽量不要用数字,要用常量代替;
- 减少重复代码,一旦发现重复代码即封装成函数;
- 大的应用使用文件包含。
从大的开发过程提出三点建议:
- 函数不要太大,太长;因为函数大了就会变得很难阅读,很难调试,如果功能较复杂,可以再分解为几个小函数;
- 推荐使用UltraEdit来编辑器和调试Koodoo脚本,通过适当的配置,在这个强大编辑器里面,可以按F1得到系统函数帮助,可以即时编译和查错,提高开发效率,请参考主页文章: 使用UltraEdit编辑器开发Koodoo脚本;
- 不要等到全部脚本写完再来测试和调试,从最小部分开始就进行编译和运行,逐步完善功能。也可以先写出一个主框架,把要完成的功能写成空函数,逐步实现这些功能函数,实现一个调试一个。
三、蓝星际呼叫中心
1. 呼叫中心和语音平台是什么关系?
答:从本质上讲,蓝星际呼叫中心是语音平台的一个应用,当然是复杂而且重要的应用。
从呼叫中心的角度来看,语音平台及其运行的各脚本组件构成了CTI服务器,包括:
- ACD脚本组件
- IVR脚本组件
- 外呼脚本组
- 硬电话(内线)脚本组件
- 数据库服务脚本组件
- 其它脚本组件:如短信收发组件,TTS组件,Email收发组件等
蓝星际呼叫中心的鲜明特点是,所有的CTI服务器组件均由Koodoo脚本写成,因而具有开源的性质,集成商或客户可以自行修改;
其次,蓝星际智能座席客户端非常容易和业务系统集成。 详细内容请参见:完美演绎.蓝星际呼叫中心平台。
2. 蓝星际座席软件有什么特点?
答:如上所述,蓝星际智能座席客户端非常容易和业务系统集成,其采用的总体原则是:软电话和业务系统完全分离。
详细内容请参见:《呼叫中心平台技术白皮书》第五章 座席业务集成:如此简单。