注:2008.06.04重写,修订了资源中不可达的链接。
(本文是个引导性文字,希望大家能够整理出实际的FAQ,如:如何使用极性反转功能,为什么收到的主叫号码是乱码等等)
欢迎来到语音开发的世界!
也许你是服务行业的技术人员,单位想开发自动语音服务或呼叫中心;
也许你是系统集成商,老板要你在原来的产品上增加语音功能;
也许你原来开发或维护过语音系统,仅仅是要换一种新的硬件,或者要在系统中增加新功能,或者要使系统更加灵活。
无论如何,你不是孤独的,大家在做同样的事情,所以最重要的原则是:
你得到别人的帮助,你也去帮助别人。
但是,作为语音开发的新手,你可能仅仅是希望快点完成老板交给你的任务,所以一上来就问一些很基础的问题,这样不好,没有人会停下自己手头的工作来回答你的“傻问题”。所以:
1. 问问题之前:
1.1、请先阅读语音卡厂商的开发手册;就算你没有安装光盘,厂家的网站上通常都有资料可以下载;
1.2、阅读厂家提供的例子程序源代码,试着编译、修改并运行;如果没有你使用语言的例子,就看C/C++的例子,毕竟用C描述的API接口是最精确的,而且现代的Java,C#在语法上看起来和C都比较像;
1.3、借助Google,先搜索答案,比你盲目地提问要好的多;尤其是很基础的问题,比如什么是数字线路,7号信令,极性反转等等;
1.4、经常到专业论坛上看看,这些论坛上有精华文章,可能有你需要的答案,而且可以开阔你的视野。在本文的后面将给出一些资源链接。
1.5、实际验证比纸上谈兵更加重要,先写出一个能运行的程序来再说。没有什么比你的程序第一次能够运行,你从电话里面听到机器播放声音更动听的了。
2.语音卡编程和其它编程有什么不同:
2.1、语音卡编程是多路并发的,这个通道在放音,另外一个通道可能在收码(接收DTMF按键),另外一个通道可能在发传真,其它通道可能在等待数据库返回。在同一时刻,你要处理多条线路的呼入或者呼出,而我们平时的应用程序通常只要考虑一个程序的逻辑。
2.2、解决多路并发有几种办法:
2.2.1).多线程,比如每个通道一个线程;可惜很多国产板卡的API不支持多线程;
2.2.2).状态机,将应用划分为很多的状态,每个状态的执行时间很短,状态之间可以跳转;想像一下操作系统中的时间片调度;
2.2.3).状态机有很多表现形式,还有一种表现形式是所谓的消息编程,就是收到某种消息就执行某种动作,然后再发送另外一个消息。
2.3、如果你仅仅是想完成一个很特定的任务,不要考虑太多,用厂家的例子程序修改,当然上面的讨论让你更容易理解那些例子。
3. 更高级的思考:
3.1、架构问题:
3.1.1. 将语音程序嵌合到原来的应用程序中,如给原来的管理系统增加语音控制的代码;
3.1.2. 语音程序是个独立的程序,通过数据库访问或外部消息(如TCP、HTTP等)和其它应用程序通讯。
建议采用第2中方式,你的应用将有更大的灵活性。
3.2、业务流程和底层代码分离:
流程经常变化,而驱动语音卡的底层代码比较稳定。解决办法是:
3.2.1. 将访问硬件的代码进行适当的封装;
3.2.2. 考虑将经常变化的部分写成配置文件;
3.2.3. 考虑将经常变化的部分配置到数据库表;
在程序启动时或运行中读取这些配置,实现适当的智能。
当然,市面上有很多商品化的语音平台,可以用各种方式来描述全部的流程,你评估一下(更多是你的老板来评估,不过他可能会听听你的意见),如果购买的成本低于自行开发的成本,也不妨考虑采用。
我们程序员通常都有重新发明一遍车轮的冲动,如果你和我一样有这种冲动,可以看看他们形形色色的设计,从中或许能得到一些启发。
3.3、底层代码的抽象
底层代码的抽象是必要的,你可以做一个通用的接口出来,上层保持不变。参见上面的3.2.1。
看看东进的模拟卡,数字卡中的各信令接口都很不相同,你就明白抽象的重要性。
4.资源:
4.1. 东进公司主页:http://www.donjin.com,东进技术论坛:http://www.donjin.com/donjinbbs/Default.asp
4.2. 三汇公司主页:http://www.sanhuid.com/,技术论坛在主页上有入口,必须先登录才能浏览帖子,论坛地址是:http://www.sanhuid.com/word/index.asp?action=View_Words&forumid=2
4.3. Dialogic公司主页:http://www.dialogic.com,资源下载页面,对Dialogic编程或东进DN接口编程的有用:
http://www.dialogic.com/products/tdm_boards/system_release_software/default.htm
4.4. 老弘的CTI技术论坛,不算热闹,但主要是专业技术人员出没,有不少老弘自己搜集的资料。(该论坛已经关闭,成为历史陈迹了)
4.5. CTI论坛,资料最全面,很多厂家在上面做宣传,论坛很热闹,但以销售人员居多,广告满天飞:
http://www.ctiforum.com/
4.6. SP论坛(上官网),是SP或IVR增值业务的同业论坛,主页:http://www.spforum.net/,论坛入口:http://bbs.spforum.net/
4.7. 顺便做一下广告,我们蓝星际公司的主页: http://www.bluespace.com.cn/koodoo/,留言板:http://www.bluespace.com.cn/koodoo/bbs/default.asp
4.8. 拙作,“从历史角度再论'状态机'”: http://www.bluespace.com.cn/koodoo/bbs/showdetail.asp?boardid=a&id=113&page=8
也可参看本人的技术Blog:http://blog.csdn.net/bluesen