电话报税系统

ynkmzj 2003-08-18 03:28:28
我们要开发电话报税系统,时间非常紧,需要用到语音卡
哪位有经验的仁兄帮帮忙:
如何选购语音卡?
如何编程处理语音卡的多条线路并行处理
是否:一个通道拨通以后,就不能再对它进行其它操作,一直到处理完或者挂断后,
才能进行其它操作;
...全文
160 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
fairboy_csdn 2003-09-02
  • 打赏
  • 举报
回复
我2000年就进行电话申报的开发,三汇的卡我用过
全部源程序哟
我的msn:fairboy2008@hotmail
fairboy_csdn 2003-09-02
  • 打赏
  • 举报
回复
我2000年就进行电话申报的开发,三汇的卡我用过,杭州的,
我的msn:fairboy2008@hotmail
甜而不腻 2003-08-22
  • 打赏
  • 举报
回复
关注学习
zjkuki 2003-08-22
  • 打赏
  • 举报
回复
jhonline(jhonline): 呵呵.....我对语音卡的开发的时间不是很长,三汇的卡我没用
用过,如果上面说错了什么请多多包涵,我是广州的,我的EMAIL是zjkuki@21cn.com,qq:24262418 有空大家多多交流吧,呵呵....

brown0432 2003-08-22
  • 打赏
  • 举报
回复
现在怎么还有人要开发这个东西。。。。。。成型的技术太多了。。

到东进的网上多了。。。语音卡的技术。。。。都差不多。。。我以前就做电话报税的
jhonline 2003-08-22
  • 打赏
  • 举报
回复
其实我说的卡也要对拨号音的播放和忙音的播放等等进行控制
只是开发平台把这些功能都已经完成了,不需要自己去重新开发

zjkuki(酷奇):你对语音卡开发挺熟嘛,有机会叙叙,我是杭州的
zjkuki 2003-08-21
  • 打赏
  • 举报
回复
我用的是深圳东进公司出的D160A二外二内的语音传真卡,使用起来比较容易。它的卡的多路同时工作是用这种方式的,下面我给一个片段你看看,只要仔细想想,就可以察觉到如何使用大循环来在后台进行语音卡处理了。

下面是一个很简单的银行帐号查询的语音查询程序,可同时接入多条外线和内线(根据语音卡的通道决定):

先在一个模块文件里(Bas文件)定义一些常量,例如:
Public TRUNK=0 '外线标志
Public USER=1 '内线标志

Public CH_FREE=1
Public CH_OFFHOOK=2
Public CH_WELCOM=3
Public CH_PASSWORD=4
Public CH_SELECT=5
Public CH_PLAYRESULT=6
Public CH_WAITONHOOK=7
Public CH_RECEVIE=8
然后在编写代码时,在初始化驱动程序的部分,或FORM_LOAD里进行初始化:
Public State(128) as Integer
Dim I as Integer

Private Sub Form_Load()
For i=0 to 128
State(i)=CH_FREE
Next i

TotalLine=GetValidChannel() '获取可用的总通道数

调用其他函数来初始化语音卡........
End Sub
然后在Timer控件里这样处理:
Private Sub Timer1_Timer()
Dim i as Integer

For i=0 to totalLine-1
Select Case State(i)
Case CH_FREE
If RingDetec(i) Then '检查到有外线震铃或内线摘机
If ChType(i)=TRUNK Then '检查如果震铃的通道是外线
State(i)=CH_RECEVIE
End if
Else
If ChType(i)=USER then '如果是内线摘机
State(i)=CH_OFFHOOK
End If
End If
Case CH_RECEVIE
在这里检测来电震铃的次数,如果两次之后就将
State(i)=CH_OFFHOOK
Case CH_OFFHOOK
在这里处理欢迎辞播放,同时将
State(i)=CH_WELCOM
Case CH_WELCOM
在这里接收电话按键,判断,并播放"请输入密码"的语音,将
State(i)=CH_PASSWORD
Case CH_PASSWORD
在这里接收电话按键,判断是否正确,如果正确就播放"请选择结果播
放",并将
State(i)=CH_SELECT
如果判断输入的密码错误,则将
State(i)=CH_WELCOM
Case CH_SELECT
在这里接收电话按键,根据输入的键码进行判断。
Select Case dtmf(i) '-----dtmf(i)是保存i通道的电话输入的键码
的变量
Case "1"
将对应的要连续播放的语音放用API压入内存,例如是:
“您的存款余额为:九万八千七百六十五元”之类的,
需要连续播放的语音文件
Case "2"
同上
End Select
State(i)=CH_PLAYRESULT
Case CH_PLAYRESULT
播放内存里的连续语音,并将
State(i)=CH_WAITONHOOK
Case CH_WAITONHOOK
检查通道连接的电话是否挂机,如果是就用API断开连接,重置通道
的连接。
End Select
Next i
End Sub
zjkuki 2003-08-21
  • 打赏
  • 举报
回复
对 ynkmzj() 的补充:
那个状态是我自己定义的,不是API里要求的,你完全可以根据自己的要求来定制。
第一次接触时,初次接触这种方式时的确是有点混乱的,看看他的DEMO你就可以清楚了
解了。
还有,这种处理方法的确是比较复杂,如果时间紧的话,还是使用jhonline(jhonline) 说的那种卡好一点。不过如果时间不紧,而且功能要做得更强大一些,最好还是使用可对板卡编程的卡,毕竟灵活性高很多。(不过东进的卡也太灵活了,连拨号音的播放和忙音的播放都要自己去搞。有点烦!呵呵...)
zjkuki 2003-08-21
  • 打赏
  • 举报
回复
ynkmzj():
东进卡的语音处理方式是必须在大循环里进行的。它的卡在播放一个语音时,是分段播放的,如果你只单纯的用StartPlayFile函数来在普通的过程里进行一个语音文件播放,他只会
播放这个语音的1/3,所以我在一个大循环里,对每个通道都进行一次处理。这样就不会造成
专门为一个通道服务的情况了。
而且这样的处理性能不会有问题的,不会出现撞车的问题。我是这样做的,我用RPC专门做一个独立的电话语音服务器。而该服务器的功能只用于为电话拨号用户播放语音和为后台流程处理模块接收按键而已。流程是这样的:
首先想象有以下三个对象:A=拨入电话,B=语音服务器,C=流程处理模块
A 拨入电话:就是一个打电话过来的一方
B 语音服务器:就是接电话的东西,负责接收C传过来的要播放给A听的语音文件名路径或
接收A按下电话按键后,把音频信号转换后发送给C的责任。
C 流程处理模块:当从B接收到按键码后,C就去作对应的检查,然后把检查后是否正确的
语音路径传回给B,由B再播放回给A听。
整个一对一的流程就是这样。A<=>B<=>C而B则作为一个中间件。这样的做法有三个好处:

1、不用把C和语音处理的部分混在一起,我查我的数据库,而服务器做的只是负责接听电
话,播放C要给A听的语音。帮助C接收A的键码信息而已。而当实时进行数据库查询时
,B是不受影像的,B照样可以服务第二个通道。即使是C方出现网络问题,也不会出现
延时等待而造成其他通道一起等待的问题。
2、可以同时进行多个流程处理。例如有四个来电,分别为A1,A2,A3,A4,而他们要求的服
是:
A1=A2=医保帐号余额查询 C1
A3=查询和银行挂钩的帐户余额 C2
A4=查询检验报告 C3
C1,C2,C3是同时运行在多台不同的机器上的独立的后台查询模块。他们不停扫描B提供的一个GETCHANNEL方法,当接收到属于自己的通道后,就针对该通道进行查询服务。即使有两个电话同时要求一个服务,例如上面的 A1=A2=C1那样,A1和A2分别和B上的语音卡的两个通道进行连接1,2。这样,C1也就可以象单机处理多通道连接的功能了。
我可能说得很乱,不过用多线程来做也不失是一个好方法,但是如果把语音处理部分的模块和数据库处理的模块混合在一起,这样语音卡只能提供一个服务。而当要实现其他服务的时候,则必须将语音处理部分的代码加进去,不能实现统一的管理。
整个服务器的设计思想有点象 MS SQL Server的思想,您也可以自己选择一下。
luh 2003-08-21
  • 打赏
  • 举报
回复
电话报税流程结点还是比较简单的
主要是接收用户按键输入
//
如果考虑实时扣款
银税联往是不是通畅
如果不通畅你就最好考虑用多线程开发
免得到时候客户对你应用程序不满
luh 2003-08-21
  • 打赏
  • 举报
回复
我做过电话报税系统
整套都有
可以和我联系
luhju@263.net
jhonline 2003-08-21
  • 打赏
  • 举报
回复
三汇的CALLCENTER平台比较方便
1。平台包括交换机程序,CTI,IVR,不需要对板卡编程
2。有完备的语音流程编辑器,可以方便的编辑流程,简单流程根本不需要编程,复杂流程可挂接DLL
3。提供ctiapi接口,实现坐席功能
具体可以去网站看看,当然平台需要一定费用
至于怎么选就看你自己,如果你时间紧,系统比较复杂,我看还是考虑一下这个平台
(哈哈,我怎么觉得自己象个推销商)
ynkmzj 2003-08-21
  • 打赏
  • 举报
回复
zjkuki(酷奇):
有个疑问想确定一下:
语音卡给定每个通道的状态只有基础的几个,其他可以根据需要在程序中设置,是吗?
另外,你的代码使用一个TTimer 和循环检测,这样处理性能怎么样,用多线程要不要好一点?
ynkmzj 2003-08-21
  • 打赏
  • 举报
回复
zjkuki(酷奇) :太感谢了,我先看看代码!
jhonline 2003-08-20
  • 打赏
  • 举报
回复
杭州的三汇
三汇硬件(语音卡)www.sanhuid.com
三汇软件(语音卡开发平台-CTI,IVR,交换机)www.synway.com 0571-88915999
fansnaf 2003-08-18
  • 打赏
  • 举报
回复
gz
shuixin13 2003-08-18
  • 打赏
  • 举报
回复
是呀,

你要用到语音卡了
国内比较常用的就是
东进
www.dj.com.cn

五岳鑫
www.maystar.com.cn
kuangning 2003-08-18
  • 打赏
  • 举报
回复
语音卡,可以到东进的网上看看

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧