24小时热门版块排行榜    

查看: 132  |  回复: 0
当前主题已经存档。

zsglly

木虫 (著名写手)

[交流] 基于TurboWay电话卡的语音服务系统编程

下载实例代码(http://www.csdn.net/cnshare/soft/2/2185.shtm)

    将计算机和电话有机的结合起来形成无人电话自动服务系统,在当今已经社会越来越普遍化。这边用户只需拔打电话,根据那边计算机的自动提示,按相应的操作键既可完成他所需要的目地。你也想实现这些功能服务吗?下面就用我以前用VC做过的一个这方面的实例(投诉抢修管理系统)来告诉你。
    本系统只需安装一块TurboWay  TW8A 电话卡,就可以完成你所见到的电话自动服务所有功能。具体实现步骤如下:
1、 将TW8A 电话卡插入扩展槽中,设置跳针,使TW8A电话语音卡占用C800-EF00内存扩展地址中的一段2Kbyte内空间,驱动软件会自动找到设置正确的内存地址。(注意:在使用EMM386或其它占用扩展内存的软件,应留出相应的内存地址空间,否则电话卡驱动程序会提示找不到卡的错误信息。故可在CONFIG.SYS文件中添加DEVICE=C:\WINDOWS\EMM386.EXE NOEMS X=d000-d0ff,TW8A电话语音卡出厂时地址的缺省值为D000.)
2、 在 Windows 95 下,运行程序时,可将 TW8A.VXD 和 TW8A.DLL 复制到 \SYSTEM 目录下。在 Windows NT 4.0 下, 运行程序时,可将 TW8A.SYS 复制到 \SYSTEM32\DRIVERS 下, 将TW8A.DLL 复制到 \SYSTEM32 下, 然后运行如下程序注册 TW8A: REGINI TW8A.INI
3、 在用VC生成的工程文件中,加入并包含进头文件TW8A.H,再将输入库TW8A.LIB连接至工程中,既可利用TW8A提供的语音接口来自行设计你所需的各种电话话音服务程序了。

下面就以我的实例中的部分功能来作以简单说明(实现细节请参看实例代码):
1、当用户按下1键时,会进入相应的投诉类型中。计算机会播放相应投诉类型的信息及提示用户相对应的按键(1到3)。用户挂机后,计算机会进行自动拔号投诉。计算机在拔号后30秒内,无人摘机的话,将自动拔打上级领导号码。
例如:
按1键后开始投诉漏水信息并同时进行录音,完毕后可按任一键结束录音并挂机。
按2键后开始投诉漏电信息并同时进行录音,完毕后可按任一键结束录音并挂机。
按3键后开始投诉漏气信息并同时进行录音,完毕后可按任一键结束录音并挂机。
按4键投诉挂机后,电脑会直接呼叫内线电话。
部分代码实现如下:
……(前面代码实现部分省略掉)
/**************在播放选择投诉提示过程中按键***********/
else if( inputchar == APPEAL)
{
switch (dtmf)
{
case '1':
case '2':
case '3':
case '4':
if(inputchar==LEAVEWORD) dtmf='0';
filenamestr=GetFileName(dtmf,i);
strcpy(filename,filenamestr);
    fail=TW_StartRecordFile( i , filename , 0 , LONG_MAX);
                        if( fail==-1)
{
MessageBox("初始录音失败!","错误",MB_OK|MB_ICONSTOP);
strcpy(filename,welcomfile);
TW_StartPlayFile(i,filename,0,LONG_MAX);
            TW_StartPlayFile (3, filename, 0 , LONG_MAX); //放音模块开始播放
CS=WS_PLAY;
inputchar=START;

}
else
  CS=WS_RECORD;
break;
……(后面代码实现部分省略掉)
2、当用户按下2键时,会进入相应的留言类型中。这时计算机会提示进行留言的各种信息类型和相应类型的用户按键(0到9)。
   例如:
       用户按0到9中任一键后,便可进行留言并同时录制留言信息。留言完毕后,可按任一键结束留言并转入初始欢迎的放音文件。
部分代码实现如下:
……(前面代码实现部分省略掉)
else if( inputchar == APPEAL || inputchar == LEAVEWORD)
{
switch (dtmf)
{
case '1':
case '2':
case '3':
case '4':
……(此投诉部分代码省略掉)
break;
default:
if(inputchar==LEAVEWORD)
{
filenamestr=GetFileName('0',i);
strcpy(filename,filenamestr);
fail=TW_StartRecordFile(i,filename,0,LONG_MAX);
    if (fail==-1) //录音失败
{
MessageBox("初始录音失败!","错误",MB_ICONQUESTION);
strcpy(filename,welcomfile);
TW_StartPlayFile(i,filename,0,LONG_MAX);
            TW_StartPlayFile (3, filename, 0 , LONG_MAX); //放音模块开始播放
CS=WS_PLAY;                                    
inputchar=START;
}
else
  CS=WS_RECORD;
}
else                              
{
strcpy(filename,welcomfile);
inputchar=START;
TW_StartPlayFile( i , filename , 0 , LONG_MAX);
        TW_StartPlayFile (3, filename, 0 , LONG_MAX) ; //放音模块开始播放
}
break;
}
……(后面代码实现部分省略掉)
3、当用户按下3键时,会进入相应的信息查询(如:水费,电费,气费)中,这时计算机会提示相对应信息查询的按键。信息播放完成后,系统会自动转入初始欢迎的放音文件。
   例如:
            按1键会播放水费信息。
            按2键会播放电费信息。
            按3键会播放气费信息。
部分代码实现如下:
……(前面代码实现部分省略掉)
else if(inputchar==INQUIRE)//进入查询功能
{
switch (dtmf)
{
case '1':
strcpy(filename,INFORMATION1);
CS=WS_PLAYINF;
break;
case '2':
strcpy(filename,INFORMATION2);
CS=WS_PLAYINF;
break;
case '3':
strcpy(filename,INFORMATION3);
CS=WS_PLAYINF;
break;
default:
strcpy(filename,chooseinf);
break;
}
TW_StartPlayFile(i , filename , 0 , LONG_MAX);
    TW_StartPlayFile (3, filename, 0 , LONG_MAX) ;  //放音模块
while(TW_PlayFileRest(i)>0&&TW_PlayFileRest(3)>0);
    }
……(后面代码实现部分省略掉)
4、当用户按下0键时,会进入特殊功能(领导使用)中。此功能会提示输入相应密码的信息,密码正确后可以查询用户留言和投诉信息及可录制3键中的信息文件(水费,电费,气费)。
例如:
      当输入密码为1999时,会提示查询留言和投诉类型的相应按键(0到3)。按0键查询留言信息,按1到3键分别查询1到3类的投诉信息。(按*键可查询到最近的留言信息,按#键可查询到最近的投诉信息。)
当输入密码为2000时,会提示录制信息文件(水费,电费,气费) 的相应按键,录音完成后按任一键结束录音。否则,当输入密码不正确或等待15秒后仍未输入密码时,进行 自动挂机。
部分代码实现如下:
……(前面代码实现部分省略掉)
else if(inputchar==PARTICULAR) //进入特殊功能输入密码
{
passwordpointer=0;
password[passwordpointer++]=dtmf;
    TW_StartTimer(i,30);
CS=WS_WAITFORPASSWORD;
}
case WS_WAITFORPASSWORD
……(后面部分代码实现省略掉)

以上语音服务系统的具体代码实现及其它部分功能(如内线语音服务等),请在下载实例代码后,参看源码及其文档即可。

[ Last edited by 幻影无痕 on 2006-11-17 at 08:23 ]
回复此楼
做人要厚道啊!厚道啊!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zsglly 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 4FFAWE8HcgUD 2026-08-29 3/150 2026-08-30 20:19 by hZiFeudZyoGR
[找工作] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 jCd0dEvKHShX 2026-08-29 5/250 2026-08-30 19:48 by hZiFeudZyoGR
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 jCd0dEvKHShX 2026-08-29 4/200 2026-08-30 19:13 by hZiFeudZyoGR
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 19:01 by hZiFeudZyoGR
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 18:50 by hZiFeudZyoGR
[考研] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 G6APbkg8SA6w 2026-08-29 5/250 2026-08-30 18:40 by hZiFeudZyoGR
[博后之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 gy1nBQXYQJqL 2026-08-29 4/200 2026-08-30 18:28 by hZiFeudZyoGR
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 gy1nBQXYQJqL 2026-08-29 6/300 2026-08-30 17:47 by hZiFeudZyoGR
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 jCd0dEvKHShX 2026-08-29 5/250 2026-08-30 14:03 by GkCVyODlx4mR
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 gy1nBQXYQJqL 2026-08-29 4/200 2026-08-30 06:57 by ZPa0EcMwuECS
[硕博家园] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +6 ASdOkHsho7FD 2026-08-28 11/550 2026-08-30 06:00 by ZPa0EcMwuECS
[基金申请] 2026年叶企孙基金 +4 bud_bud 2026-08-27 7/350 2026-08-29 07:23 by foolishmani
[基金申请] 怎么查啊 +6 huang1991js 2026-08-26 6/300 2026-08-28 08:42 by winsaint
[基金申请] 面上合作单位盖章 +5 ssyjh 2026-08-27 5/250 2026-08-27 20:50 by gdfollow
[基金申请] 申请删除本帖 +6 lyz123lyz 2026-08-27 7/350 2026-08-27 17:31 by 宁静致远sy
[基金申请] 为什么 国际(地区)合作与交流项目 没有放榜? 10+3 majunge000 2026-08-26 11/550 2026-08-27 08:42 by 北京莱茵编辑
[基金申请] 出来了 +9 trojank 2026-08-26 9/450 2026-08-26 14:25 by 宝贝虫子
[基金申请] 国合可查了 +3 paperzjh 2026-08-26 3/150 2026-08-26 10:41 by LemmonTr
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
[基金申请] 如果此刻你正在为国基感到焦虑,不妨来听听这首《基金之外》 +8 scalable 2026-08-24 8/400 2026-08-25 12:52 by jnhyjjm
信息提示
请填处理意见