新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 C/C++编程思想 』 → 基于TurboWay电话卡的语音服务系统编程 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4767 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 基于TurboWay电话卡的语音服务系统编程 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 基于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 复制到 <WINDOWS 95>\SYSTEM 目录下。在 Windows NT 4.0 下, 运行程序时,可将 TW8A.SYS 复制到 <WINDOWS NT>\SYSTEM32\DRIVERS 下, 将TW8A.DLL 复制到 <WINDOWS NT>\SYSTEM32 下, 然后运行如下程序注册 TW8A: REGINI TW8A.INI

    3、  在用VC生成的工程文件中,加入并包含进头文件TW8A.H,再将输入库TW8A.LIB连接至工程中,既可利用TW8A提供的语音接口来自行设计你所需的各种电话话音服务程序了。

    下面就以我的实例中的部分功能来作以简单说明(实现细节请参看实例代码):

    1、当用户按下1键时,会进入相应的投诉类型中。计算机会播放相应投诉类型的信息及提示用户相对应的按键(1到3)。用户挂机后,计算机会进行自动拔号投诉。计算机在拔号后30秒内,无人摘机的话,将自动拔打上级领导号码。

    例如:

    按1键后开始投诉漏水信息并同时进行录音,完毕后可按任一键结束录音并挂机。

    按2键后开始投诉漏电信息并同时进行录音,完毕后可按任一键结束录音并挂机。

    按3键后开始投诉漏气信息并同时进行录音,完毕后可按任一键结束录音并挂机。

    按4键投诉挂机后,电脑会直接呼叫内线电话。

    部分代码实现如下:

    ……(前面代码实现部分省略掉)

    /**************在播放选择投诉提示过程中按键***********/

    else if( inputchar[i] == APPEAL)

                    {

                        switch (dtmf)

                        {

                        case '1':

                        case '2':

                        case '3':

                        case '4':

                            if(inputchar[i]==LEAVEWORD) dtmf='0';

                            filenamestr=GetFileName(dtmf,i);

                            strcpy(filename[i],filenamestr);

                            fail=TW_StartRecordFile( i , filename[i] , 0 , LONG_MAX);

                            if( fail==-1)

                            {

                                MessageBox("初始录音失败!","错误",MB_OK|MB_ICONSTOP);

                                strcpy(filename[i],welcomfile);

                                TW_StartPlayFile(i,filename[i],0,LONG_MAX);

                                TW_StartPlayFile (3, filename[i], 0 , LONG_MAX); //放音模块开始播放

                                CS[i]=WS_PLAY;

                                inputchar[i]=START;

                            

                            }

                            else            

                              CS[i]=WS_RECORD;

                         break;

    ……(后面代码实现部分省略掉)

    2、当用户按下2键时,会进入相应的留言类型中。这时计算机会提示进行留言的各种信息类型和相应类型的用户按键(0到9)。

       例如:

           用户按0到9中任一键后,便可进行留言并同时录制留言信息。留言完毕后,可按任一键结束留言并转入初始欢迎的放音文件。

    部分代码实现如下:

    ……(前面代码实现部分省略掉)

    else if( inputchar[i] == APPEAL || inputchar[i] == LEAVEWORD)

         {

                        switch (dtmf)

                        {

                        case '1':

                        case '2':

                        case '3':

                        case '4':

    ……(此投诉部分代码省略掉)

    break;

                        default:

                            if(inputchar[i]==LEAVEWORD)

                            {

                            filenamestr=GetFileName('0',i);

                            strcpy(filename[i],filenamestr);

                            fail=TW_StartRecordFile(i,filename[i],0,LONG_MAX);

                            if (fail==-1) //录音失败

                            {

                                MessageBox("初始录音失败!","错误",MB_ICONQUESTION);

                                strcpy(filename[i],welcomfile);

                                TW_StartPlayFile(i,filename[i],0,LONG_MAX);

                                TW_StartPlayFile (3, filename[i], 0 , LONG_MAX); //放音模块开始播放

                                CS[i]=WS_PLAY;                                    

                                inputchar[i]=START;

                            }

                            else

                              CS[i]=WS_RECORD;

                            }    

                            else                             

                            {

                            strcpy(filename[i],welcomfile);

                            inputchar[i]=START;

                            TW_StartPlayFile( i , filename[i] , 0 , LONG_MAX);

                            TW_StartPlayFile (3, filename[i], 0 , LONG_MAX) ; //放音模块开始播放

                            }

                        break;

        }

    ……(后面代码实现部分省略掉)


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/9 9:47:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客2
    发贴心情 
    3、当用户按下3键时,会进入相应的信息查询(如:水费,电费,气费)中,这时计算机会提示相对应信息查询的按键。信息播放完成后,系统会自动转入初始欢迎的放音文件。

       例如:

                按1键会播放水费信息。

                按2键会播放电费信息。

                按3键会播放气费信息。

    部分代码实现如下:

    ……(前面代码实现部分省略掉)

    else if(inputchar[i]==INQUIRE)//进入查询功能

         {

                        switch (dtmf)

                        {

                        case '1':

                            strcpy(filename[i],INFORMATION1);

                            CS[i]=WS_PLAYINF;

                            break;

                        case '2':

                            strcpy(filename[i],INFORMATION2);

                            CS[i]=WS_PLAYINF;

                            break;

                        case '3':

                            strcpy(filename[i],INFORMATION3);

                            CS[i]=WS_PLAYINF;

                            break;

                        default:

                            strcpy(filename[i],chooseinf);

                            break;

                        }

                        TW_StartPlayFile(i , filename[i] , 0 , LONG_MAX);

                        TW_StartPlayFile (3, filename[i], 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[i]==PARTICULAR)  //进入特殊功能输入密码

        {

                        passwordpointer=0;

                        password[passwordpointer++]=dtmf;

                        TW_StartTimer(i,30);

                        CS[i]=WS_WAITFORPASSWORD;

        }

    case WS_WAITFORPASSWORD

    ……(后面部分代码实现省略掉)

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

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/9 9:48:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/9/21 13:44:19

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    89.844ms