| 查看: 112 | 回复: 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 复制到 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 ] |
» 猜你喜欢
存款400万可以在学校里躺平吗
已经有15人回复
拟解决的关键科学问题还要不要写
已经有6人回复
Materials Today Chemistry审稿周期
已经有6人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
推荐一本书
已经有13人回复
国自然申请面上模板最新2026版出了吗?
已经有17人回复
纳米粒子粒径的测量
已经有8人回复
疑惑?
已经有5人回复
计算机、0854电子信息(085401-058412)调剂
已经有5人回复












回复此楼