【项目实例】使用C#开发纽曼USB来电通来电弹屏客户端小结
基于CRM客户和咨询者的普遍需求,老板决定在CRM系统上加入来电弹屏功能,所谓来电弹屏,就是当一个电话打入时,电脑会弹出该电话号码对应的客户、联系人或者供应商详细信息,如果是新号码,则添加一个新的客户。
要达到这样的效果,首先需要硬件的支持,最后老板决定使用纽曼USB来电通作为电话与电脑的连接媒介,它提供二次开发接口,可以实现电脑中获取电话来电号码并弹屏。其次需要在CRM系统中预留一个接口支持根据电话号码弹出信息。由于CRM以前和某知名呼叫中心集成,所以留有这样的借口。
于是就只差一个客户端来连接硬件和CRM系统了,来电通提供了多中语言的开发示例,有VB、Delphi,C#等,由于我学过Java,C#语法和Java差不多,又以前用过VS2005编写MFC程序,于是便说服老板使用C#来发客户端。
C#开发windows客户端果然效率很高,我一天就做出了一个简易的Demo,实现了弹屏的功能,然后陆陆续续的加入开机自启动、同时只允许一个进程运行等,然后进行一下界面美化,就完成了,当然里面很多东西都是通过Google在很多blog中搜索出来的,哎,如果没有google,那该怎么办?现在我就把资料整理一下:
C#导入(来电通)API函数提取电话号码:http://topic.csdn.net/u/20080319/17/6e20454d-3457-4ece-ac1b-30c03a1729ed.html
C# 程序只能运行一次:http://www.cnblogs.com/fubin/archive/2009/12/08/1619229.html
C#开机自动启动程序:http://www.cnblogs.com/xumingming/archive/2009/01/08/1371931.html
winform程序加图标:http://wenwen.soso.com/z/q173944920.htm
另:纽曼USB来电通开发接口有个小bug,Setup_Tel函数中的回调函数当你打电话时也会触发,而且电话号码不一定是你拨的号码(和你拨的速度有关),遇到这个问题可以使用LineOffHook_Tel函数,判断是否摘机,从而判断是否来电,代码如下:
- string number;
- bool zhaiji = LDT.LineOffHook_Tel(port);
- number = LDT.GetNumber_Tel(port).ToString();
- if (!zhaiji)
- {
- //现在有电话打入,是来电
- }
好了,就总结到这里吧,这个任务完成,马上就会有新的任务了。又一次新的编码旅程开始了。
【项目实例】使用C#开发纽曼USB来电通来电弹屏客户端小结的更多相关文章
- 使用C#开发纽曼USB来电小秘书客户端小结
在前面用C#开发完CRM的来电弹屏之后,有些客户有了新的要求,他们希望不但能够实现来电弹屏,更希望能够将呼入呼出的电话录音并上传到CRM服务器上,方便日后跟踪记录.于是便有了来电小秘书客户端的开发. ...
- [转]BeagleBone Black USB一线通(2)
接上篇 BeagleBone Black USB 一线通(1) 三.网络与ssh终端 通过串口终端我们可以看到启动的过程,也能做一些交互操作,比如我们看到了网络接口的状况.其中的usb0已经在随板的 ...
- 关于开发板不能ping通外网IP
最近在做远程监控的项目,打算用开发板给一个网站发送数据包.不过发现开发板只能ping通同一局域网内的ip,外网的ip不能ping通.纠结了半天发现是网关没有设置的原因.下面来说说如何解决这个问题. 首 ...
- iOS开发UI篇—Quartz2D使用(截屏)
iOS开发UI篇—Quartz2D使用(截屏) 一.简单说明 在程序开发中,有时候需要截取屏幕上的某一块内容,比如捕鱼达人游戏.如图: 完成截屏功能的核心代码:- (void)renderInCont ...
- EBS OAF开发中实现參数式弹出窗体
EBS OAF开发中实现參数式弹出窗体 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 概览 參数式弹出窗体和嵌入式弹出窗体不一样,它拥有独立 ...
- iOS开发网络篇—网络请求(HTTP协议)小结
iOS开发网络篇—网络请求(HTTP协议)小结 iOS开发网络篇—网络请求(HTTP协议)小结 1. 聊一下HTTP协议(协议的完整的通信过程) 2.通信过程 1> 请求 * 客户端 --> ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:Java集成应用中心。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- 【转】BeagleBone Black USB一线通(3)
接上篇 BeagleBone Black 一线通(2) 五.vnc图形终端 虽然 BB-Black带有一个Micro-HDMI接口,不过那么名片不到的一个小板,连接到一个20来寸的显示器上,还是有些 ...
随机推荐
- js 判断页面是否加载完成
javascript代码如下: document.onreadystatechange = subSomething; //当页面加载状态改变的时候执行这个方法 function subSomethi ...
- python程序中自启动appium服务
普通启动Appium服务方法: 打开cmd,运行命令: #>appium -a 127.0.0.1 -p 4723 当程序输出如上图信息的时候,表示appium启动成功,此时便可以运行 ...
- html页面加载和解析流程
HTML页面加载和解析流程 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件: 浏览器开始载入html代码,发现<head>标签内有一 ...
- Hive常用命令
本位为转载,原地址为:http://www.cnblogs.com/BlueBreeze/p/4232421.html #创建新表 hive> CREATE TABLE t_hive (a in ...
- 【开源项目之路】jquery的build问题
在刚开始clone了jquery到本地build的时候,就遇到了问题. “ENORESTARGET No tag found that was able to satisfy ...” 提示为bowe ...
- Android调用系统自带的文件管理器进行文件选择并读取
先调用: intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("*/*"); //设置类型,我这里是任意类 ...
- E:Package 'Vim' has no installation candidate问题解决
问题描述: root@zhouls-virtual-machine:~# apt-get install vimReading package lists... DoneBuilding depend ...
- UTC+0800是什么意思
<%@ language="javascript" %> <html> <body> <% var d=new Date() var h= ...
- ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏
ACM 中常用的算法有哪些?作者: 张俊Michael 网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以水题为主(就是没有任何算法, ...
- vim之vba文件
[vim之vba文件] Vimball 官方描述: The vimball plugin facilitates creating, extracting , and listing the cont ...