95992828九五至尊2

硬件接口开发之Modem来电突显,硬件接口开发之USB电话录音盒来电呈现

一月 18th, 2019  |  882828九五至尊手机版

除开上篇《硬件接口开发之Modem来电显》介绍的Modem来电呈现,还足以应用USB电话录音盒来开展来电显示和电话录音功效,本文介绍怎样在C#中完结该成效。首先大家看看自家是何许在自身的软件中集成USB电话录音盒的效率,先对USB电话录音盒的功效和应用场景有一个整机的认识先。
我的送水软件可以支持两路及以上多路的来电突显电话录音效益,当用户有新的来电,系统会检测数据库是否留存该电话的用户,如果有那么调出该用户的材料(包罗上次预定产品信息),否则提醒操作员建立新客户的资料,并记录该次的电话号码。这些来电显示效果相当有益操作人士进行工作操作,点击下鼠标就足以做到客户的订单。

    
本文介绍下什么促成Modem的来电彰显的法力。Modem的来电呈现是在自我最早的送水管理软件中贯彻的,大约是05年做到的,由于Modem的血本相比较低(普通的在100元以内),而来电显示效果在送水管理软件中相比须求,因而是一项性价比相比较好的功能。
    
随着年华的延期,Modem的生育越来越少,而协理来电显示模块的Modem就更少一些了,取而代之是法力相比较专一的来电显示盒横行天下,一般USB来电显示盒都得以扶助2路、4路、8路等等,不过USB来电突显盒较贵,Modem由于性价比相比好,市场上照旧还接二连三出现。本篇首要介绍怎样落到实处Modem的来电显示,下篇将持续介绍基于USB的来电显示盒的接口开发。方今在我的送水软件中,为了兼顾两者的裨益,一般是合二为一了七个硬件的效应,随便选一个硬件都足以运用来电显示效果。
   
看看Modem来电突显的选用场景,在送水软件中,链接一台机子(Modem只可以屡次三番一台机子),当有客户的电话机接通的时候,软件会提醒用户的新闻,并进入下订单的界面,如下所示。
882828九五至尊手机版 1

882828九五至尊手机版 2
图1 来电自动记录并在景况栏展现相关来电音信

   
这样更加有利于业务员的音信输入,同时还足以调出越来越多客户的连带新闻,如客户的账号新闻,购买记录作为默许本次订单的操作等,达到优质服务的目标。如下这个立异版的送水软件的来电突显效果就提供了客户财务音讯,默许上次的购入记录等音讯。

882828九五至尊手机版 3
图2 来电彰显效果调出已有客户资料,并默许调出上次预定音讯

882828九五至尊手机版 4

 

Modem的来电彰显效果要求上面所需的前提条件。
一、 完成来电突显的系统最小须求。
       1.
你的定位电话已经向电信局申请开展了来电显示效果,若没有申请,纵然MODEM支持也是卓殊的。
       2. 装置了MODEM的专用驱动软件(注意不要选取Windows如XP自带的驱动程序)。
       3.
MODEM协理来电展现。不管是放手MODEM,外置MODEM,只要它援救来电呈现即可。

贯彻来电显示的系统最小须求
       1.
你的固化电话已经向电信局申请开展了来电呈现效果,若没有申请,即便有软件协助也是可怜的。
       2. 装置了点名厂商的录音与来电弹屏设备(包涵硬件和软件)。
       3. 正确安装深田之星送水管理种类网络版软件。

二、怎么判断MODEM是不是协理来电突显?
       1. 打开顶尖终端,随便输入一个连续名称,比如TEST。
       2.
按确定后,下个窗口中,看到您的MODEM,不要输入电话号码。再下一步。
       3. 在那么些窗口中按撤销。
       4. 这么一个得以输入的空域窗口就有了。
       输入:AT回车
       即使出现OK,表明MODEM扶助AT指令,不然,其余也不用试了。
      
然后输入上面的授命(每条前边加上AT),只要一条反馈有OK,就表达MODEM本身芯片协理来电显示。
       #CID=1
       %CCID=1
       +VCID=1
       #CC1
       *ID1

但前提是亟需一些前提条件,上面是贯彻来电呈现的小小需要和一部分有关问题。

三、Modem 驱动装置的题目
       借使你的操作系统是Windows
2K/XP,当安装MODEM驱动程序的时候,会自行安装操作系统自带的MODEM驱动,而此驱动程序只好扶助数据传送(即只可以用来拨号上网,而没有传真和语音效用)。所以您必须升级MODEM的驱动程序,并且在进步的时候手工指定到跟随MODEM的光盘中的驱动程序(而不让系统和谐摸索)。并且在进步完未来再次开动系统。

882828九五至尊手机版 5
图3 安装所需的来电突显设备驱动

上面介绍怎样在C#中落到实处来电显示模块的法力。

882828九五至尊手机版 6
图4 电话录音文件,用户可以选拔指定的文书举办回播

Modem的来电突显须求一个和串口打交道的控件Apax
Control,它是一个ActiveX的控件,原则上可以动用在其他语言中,本文只介绍在C#中的应用。
先是要求注册ActiveX控件,然后在开发IDE中引用控件,把控件拖动到界面上,如下所示。
882828九五至尊手机版 7

选拔来电突显和电话录音设备的便宜

接下来生成目录会多出几个公文,如下所示。
882828九五至尊手机版 8

一、总体优势
       1、先进的话音设备
          
录音设备选用USB或者PCI接口,最多可支持达256路电话同时录音、同时弹出客户资料;
       2、强大的电话录音作用
          
拥有独立文化产权的专用压缩算法,录音数据量小、通话清晰,每线通话数据量唯有5.5兆/小时,
          
即一个120G的硬盘可以单线两次三番录音21000钟头。拔取专用的压缩算法,可以使得的防护别人恶意窃听、篡改录音数据,确保资料安全。可随时将重点的录音材料举行备份。
       3、录音回听
          
用户可依照自己的权限回听授权的录音材料,以便对第一通话举办解析、做笔记等。可在本地回听,也可经过局域网或者Internet等广域网进行长途回听,极大地便民了常事出差在外或者商店部门分布较广的店铺管理层人士动用。
       4、远程同步监听
          
特定用户可以在该地或者通过局域网或者Internet等广域网举行长距离实时电话通话状态查看、实时通话监听等。及时通晓员工对外关系景况,及时跟进第一客户等。
       5、来电弹出
          
客户来电,系统自动按照来电号码调出客户资料,在摘机接听电话前就足以及时领悟来电客户的主导音讯,沟通历史等,给职工一种亲切感,同时客户可以博得最及时、最规范、最健全的劳动。
       6、记录未接来电不放过一个来电音信,保证与客户的即时联系。
       7、电话集中录音,有效防范录音材料丢失;

在代码中,大家得以再Form_Load方法中先河化控件的有些特性。如下代码所示。

上述的电话录音盒功效介绍是厂商提供的内容,不过我们一般就是应用来做来电弹出事情窗口、电话录音这三个功用了,其余的都足以不管。那么我们什么在我们开发的先后中融为一体,也就是运用代码如何做到和硬件的接口开发呢。
由于这几个来电显示的录音设备开发包也是一个ActiveX的控件来的,由此和操作其余ActiveX控件一样,大家在工具栏中进入控件,然后拖动到界面上就足以了,注意为了防止给客户爆发不佳的震慑,把控件设置为隐蔽即可。

882828九五至尊手机版 9882828九五至尊手机版 10Code
                // 设置来电展现控件的属性
                this.axApax1.EnableVoice = true;
                this.axApax1.Visible = false;
                this.axApax1.TapiStatusDisplay = false;
                this.axApax1.TapiAnswer();
                this.axApax1.OnRing += new EventHandler(axApax1_OnRing);
                this.axApax1.OnTapiCallerID += new IApaxEvents_OnTapiCallerIDEventHandler(axApax1_OnTapiCallerID);

1)首先在Form_OnLoad函数中起始化硬件信息和事件,如下所示

接下来大家就只要求关心axApax1_OnRing和axApax1_OnTapiCallerID处理函数了,如下代码所示

882828九五至尊手机版 11        private void InitCallControl()
882828九五至尊手机版 12882828九五至尊手机版 13        882828九五至尊手机版 14{
882828九五至尊手机版 15            this.axTMNC_OCXX1.OnConnect += new AxTMNC_OCX.ITMNC_OCXXEvents_OnConnectEventHandler(axTMNC_OCXX1_OnConnect);
882828九五至尊手机版 16            this.axTMNC_OCXX1.OnDisConnect += new AxTMNC_OCX.ITMNC_OCXXEvents_OnDisConnectEventHandler(axTMNC_OCXX1_OnDisConnect);
882828九五至尊手机版 17
882828九五至尊手机版 18            this.axTMNC_OCXX1.OnCallIn += new AxTMNC_OCX.ITMNC_OCXXEvents_OnCallInEventHandler(axTMNC_882828九五至尊手机版,OCXX1_OnCallIn);
882828九五至尊手机版 19            this.axTMNC_OCXX1.OnCallOut += new AxTMNC_OCX.ITMNC_OCXXEvents_OnCallOutEventHandler(axTMNC_OCXX1_OnCallOut);
882828九五至尊手机版 20            this.axTMNC_OCXX1.OnNoAnswer += new AxTMNC_OCX.ITMNC_OCXXEvents_OnNoAnswerEventHandler(axTMNC_OCXX1_OnNoAnswer);
882828九五至尊手机版 21        }

882828九五至尊手机版 22882828九五至尊手机版 23Code
        /// <summary>
        /// 来电响铃后的处理事件
        /// </summary>
        private void axApax1_OnRing(object sender, EventArgs e)
        {
            //由于此函数会触发3次,故使用axApax1_OnTapiCallerID事件展开处理。
        }

882828九五至尊手机版 24        private void MainToolWindow_Load(object sender, EventArgs e)
882828九五至尊手机版 25882828九五至尊手机版 26        882828九五至尊手机版 27{
882828九五至尊手机版 28882828九五至尊手机版 29            来电突显设置情节#region 来电展现设置情节
882828九五至尊手机版 30            try
882828九五至尊手机版 31882828九五至尊手机版 32            882828九五至尊手机版 33{
882828九五至尊手机版 34                host = config.AppConfigGet(“CallHost”);
882828九五至尊手机版 35                channel = config.AppConfigGet(“CallChannel”);
882828九五至尊手机版 36                UseCallDevice = Convert.ToBoolean(config.AppConfigGet(“UseCallDevice”));
882828九五至尊手机版 37            }
882828九五至尊手机版 38            catch (Exception ex)
882828九五至尊手机版 39882828九五至尊手机版 40            882828九五至尊手机版 41{
882828九五至尊手机版 42                LogHelper.Error(ex);
882828九五至尊手机版 43                MessageUtil.ShowError(“您没有配备来电展现须求的CallHost和CallChannel参数!”);
882828九五至尊手机版 44                return;
882828九五至尊手机版 45            }
882828九五至尊手机版 46
882828九五至尊手机版 47            try
882828九五至尊手机版 48882828九五至尊手机版 49            882828九五至尊手机版 50{
882828九五至尊手机版 51                if (UseCallDevice)
882828九五至尊手机版 52882828九五至尊手机版 53                882828九五至尊手机版 54{
882828九五至尊手机版 55                    InitCallControl();
882828九五至尊手机版 56                    this.axTMNC_OCXX1.EC_Connect(host);
882828九五至尊手机版 57                    //this.axTMNC_OCXX1.EC_StartMonitor(prot);
882828九五至尊手机版 58
882828九五至尊手机版 59                    string content = “来电展现设备已就绪”;
882828九五至尊手机版 60                    Portal.gc.MainDialog.RefreshComingCallStatus(content);
882828九五至尊手机版 61                }
882828九五至尊手机版 62                else
882828九五至尊手机版 63882828九五至尊手机版 64                882828九五至尊手机版 65{
882828九五至尊手机版 66                    string content = “来电设备未启用”;
882828九五至尊手机版 67                    Portal.gc.MainDialog.RefreshComingCallStatus(content);
882828九五至尊手机版 68                }
882828九五至尊手机版 69            }
882828九五至尊手机版 70            catch (Exception ex)
882828九五至尊手机版 71882828九五至尊手机版 72            882828九五至尊手机版 73{
882828九五至尊手机版 74                LogHelper.Error(ex);
882828九五至尊手机版 75                string content = “设备未链接(错误)”;
882828九五至尊手机版 76                Portal.gc.MainDialog.RefreshComingCallStatus(content);
882828九五至尊手机版 77            } 
882828九五至尊手机版 78            #endregion
882828九五至尊手机版 79        }

        /// <summary>
        /// 来电响铃后的处理事件
        /// </summary>
        private void axApax1_OnTapiCallerID(object sender, IApaxEvents_OnTapiCallerIDEvent e)
        {
            ComingCallUtil.PlaySound();
            string oldCaption = this.Text;
            this.Text = “近年来一个客户来电号码:” + this.axApax1.CallerID;
            string phoneNumber = this.axApax1.CallerID;

2)然后就是贯彻位置的几个委托事件了,代码如下所示。

            this.axApax1.Close();
            this.axApax1.TapiAnswer();

        private void axTMNC_OCXX1_OnNoAnswer(object sender, AxTMNC_OCX.ITMNC_OCXXEvents_OnNoAnswerEvent e)
        {
            /**//*
             表明:当有电话打入,且无人接听的情形,即未接来电新闻。
            LocalNum:本地号码。CallID:未接来电号码。
            注:此来电号码在OnCallIn事件中也会发送过来,不过不相同的是,只有当来电无人接听时
            才会生出OnNoAnswer事件。
             */
            string content = string.Format(“未接来电:{0} 本地号码:{1}”, e.callID, e.localNum);
            Portal.gc.MainDialog.RefreshComingCallStatus(content);
        }

            Portal.gc.CustomerComingCall(phoneNumber);
            this.Text = oldCaption;
        }

        private void axTMNC_OCXX1_OnCallOut(object sender, AxTMNC_OCX.ITMNC_OCXXEvents_OnCallOutEvent e)
        {
            string content = string.Format(“拨出号码:{0} 本地号码:{1}”, e.callOutNum, e.localNum);
            Portal.gc.MainDialog.RefreshComingCallStatus(content);
        }

最终关闭程序的时候要自由资源,否则会冒出COM错误的,代码如下所示。

        private void axTMNC_OCXX1_OnCallIn(object sender, AxTMNC_OCX.ITMNC_OCXXEvents_OnCallInEvent e)
        {
            string content = string.Format(“来电号码:{0} 本地号码:{1}”, e.callInNum, e.localNum);
            Portal.gc.MainDialog.RefreshComingCallStatus(content);

882828九五至尊手机版 80882828九五至尊手机版 81Code
        /// <summary>
        /// 清理所有正在采用的资源。
        /// </summary>
        protected override void Dispose(bool disposing)
        {
            if (this.axApax1 != null)
            {
                this.axApax1.Dispose(); //必须执行,否则出错
            }

            Portal.gc.DealWithComingCall(e.callInNum);
        }

            Portal.gc.Dispose(); //伍华聪 
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);

        private void axTMNC_OCXX1_OnDisConnect(object sender, AxTMNC_OCX.ITMNC_OCXXEvents_OnDisConnectEvent e)
        {
            string content = “设备未连接”;
            Portal.gc.MainDialog.RefreshComingCallStatus(content);
        }

        }

        private void axTMNC_OCXX1_OnConnect(object sender, AxTMNC_OCX.ITMNC_OCXXEvents_OnConnectEvent e)
        {
            string content = “设备已就绪”;
            Portal.gc.MainDialog.RefreshComingCallStatus(content);
        } 

Your Comments

近期评论

    功能


    网站地图xml地图