CN105592023A - SIPHelloSDK与语音板卡的通话系统和方法 - Google Patents

SIPHelloSDK与语音板卡的通话系统和方法 Download PDF

Info

Publication number
CN105592023A
CN105592023A CN201410639674.6A CN201410639674A CN105592023A CN 105592023 A CN105592023 A CN 105592023A CN 201410639674 A CN201410639674 A CN 201410639674A CN 105592023 A CN105592023 A CN 105592023A
Authority
CN
China
Prior art keywords
sip agent
phone
control module
board control
voice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410639674.6A
Other languages
English (en)
Other versions
CN105592023B (zh
Inventor
于碧辉
贾军营
王率
孙建伟
杨海波
于波
王卫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenyang Institute of Computing Technology of CAS
Original Assignee
Shenyang Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenyang Institute of Computing Technology of CAS filed Critical Shenyang Institute of Computing Technology of CAS
Priority to CN201410639674.6A priority Critical patent/CN105592023B/zh
Publication of CN105592023A publication Critical patent/CN105592023A/zh
Application granted granted Critical
Publication of CN105592023B publication Critical patent/CN105592023B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Telephonic Communication Services (AREA)

Abstract

本发明涉及SIPHelloSDK与语音板卡的通话系统,服务器与话机之间依次设有SIP代理模块和板卡控制模块;SIP代理模块:将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;板卡控制模块:接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块。方法包括:SIP代理模块将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;板卡控制模块接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块本发明将语音的采集与传输分成两个模块,通过自定义协议进行信息的交互,耦合度低,具有高度可扩展性,可以扩展SIP功能和较为复杂的电话控制功能,并可以开启多个SIP终端实现多路控制。

Description

SIPHelloSDK与语音板卡的通话系统和方法
技术领域
本发明涉及一种SIPHelloSDK与语音板卡的通话系统和方法,具体地说是一种通过SIP代理模块和板卡控制模块交互完成语音通话和电话控制的系统和方法。
背景技术
语音板卡通信以近几年发展迅速的微机语音处理技术为基础,基本思想是在微机平台上集成各种功能的语音处理卡,完成通信接口、语音处理、传真处理、坐席转接等功能,再结合外部的计算机网络实现各种应用系统的需求,具有结构简单,易于维护的特性。
一般来说,这种语音板卡通信都是直接通过语音板卡向服务器发送和接收语音来实现的,比如本发明中所用到的三汇语音板卡中就存在直接与市话线接口的能力。但是这种方式受语音卡厂商的限制,耦合度紧密,不易扩展,功能性不高。
发明内容
为解决上述问题,本发明的目的在于提供一种将SIPHelloSDK和语音板卡结合的新的语音通话方法,能实现基于SIP协议的语音交互及通话控制。该种方式将语音的采集与传输分成两个模块,通过某种自定义协议进行信息的交互,具有高度可扩展性,耦合度低,可以扩展SIP功能和较为复杂的电话控制功能,并可以开启多个SIP终端实现多路控制。
为实现上述目的,本发明采用的技术方案是:SIPHelloSDK与语音板卡的通话系统,服务器与话机之间依次设有SIP代理模块和板卡控制模块;
SIP代理模块:将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;
板卡控制模块:接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块。
所述SIP代理模块包括多个SIP代理进程;板卡控制模块包括多个坐席通道;每个坐席通道与每个话机连接,并与一个SIP代理进程对应。
所述SIP代理进程将来自服务器的语音数据发送至对应的坐席通道语音端口;坐席通道将监听到的语音数据存入环状缓冲区,并连续由多个放音缓冲读出通过话机放音,同时接收话机的录音存入录音缓冲、并发送给SIP代理进程的语音端口;SIP代理进程将接收的语音数据发送至服务器。
所述SIP代理模块和板卡控制模块之间还进行信息数据的传输。
SIPHelloSDK与语音板卡的语音通话方法,包括:
SIP代理模块将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;
板卡控制模块接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块。
所述SIP代理模块包括多个SIP代理进程;所述板卡控制模块包括多个坐席通道;每个坐席通道与每个话机连接,并与一个SIP代理进程对应。
所述SIP代理进程将来自服务器的语音数据发送至对应的坐席通道语音端口;坐席通道将监听到的语音数据存入环状缓冲区,并连续由多个放音缓冲读出通过话机放音,同时接收话机的录音存入录音缓冲、并发送给SIP代理进程的语音端口;SIP代理进程将接收的语音数据发送至服务器;所述SIP代理进程或坐席通道所传输的语音数据通过udp端口方式传输。
所述SIP代理模块和板卡控制模块之间还进行信息数据的传输。
所述信息数据包括电话控制信息,状态信息与初始化信息。
所述所述信息数据通过udp端口方式传输。
本发明具有以下有益效果及优点:
1.本发明将语音的采集与传输分成两个模块,通过自定义协议进行信息的交互,耦合度低,具有高度可扩展性,可以扩展SIP功能和较为复杂的电话控制功能,并可以开启多个SIP终端实现多路控制。
2.继承了SIPHelloSDK和特定语音卡的特点,集中各自的优势,通话清晰,抗干扰能力强,可扩展性强。
附图说明
图1是本发明的系统模型结构示意图;
图2是进程间通信的端口模型示意图;
图3是语音通信的端口模型示意图;
图4是板卡控制进程先启动、SIP代理进程注册成功后的初始化流程图;
图5是SIP代理进程先注册成功、板卡控制进程启动后的初始化流程图;
图6是语音通话过程的流程图;
图7是录音缓冲区原理图;
图8是放音缓冲区原理图;
图9是电话接听功能流程图;
图10是电话外呼功能流程图。
具体实施方式
本发明的系统是由SIPHelloSDK与语音板卡组成的语音通话系统,如图1所示,SIP代理模块(SIPAgent)是若干封装了“SIPHelloSDK.dll”API的SIP代理,用于和其他SIP终端之间的语音交互。板卡控制模块(CardManager)是封装了“SHP_A3.dll”API的基于三汇语音板卡的驱动控制程序,主要负责控制话机的行为及状态,接收话机的行为及状态,以及对话机进行内存录音,放音的操作。其中SIP代理模块包括多个SIP代理进程,板卡控制模块包括多个坐席通道(Channel),每个坐席通道与一个话机连接,并与一个SIP代理进程对应。
如图2所示,SIP代理进程注册到服务器上与服务器上其他SIP终端进行语音交互,而SIP代理进程与对应的坐席通道通过语音udp端口进行语音交互。如图3所示,SIP代理进程与板卡控制进程通过基于udp的进程间通信协议(IPC协议)进行相关业务信息,电话控制信息,状态信息与初始化信息的交互,同时SIP代理进程还会与其他控制进程进一步交互,如图中的终端控制进程。语音数据和信息数据传输的接口是不同的接口。
上文中提到的进程间通信协议(IPC协议),是为了实现SIP代理模块与板卡控制模块的信息交互而制定的协议,具有良好的业务扩展性,可以实现自定义的需求,比如模块初始化以及电话业务逻辑等。IPC协议是通过udp来传输相关信息的,每一个进程都监听自己进程的端口并向其他关联进程的端口发送信息。
启动关联进程时,一个进程首先启动,检测所有进程的默认端口是否被占用,如果占用将测试选取未被占用端口作为其他进程的启动参数,开启守护进程。
详细的IPC协议定义见下表。
表一IPC协议表
SIP代理进程接收注册服务器发送的语音信息,并发送至板卡通道对应的端口,待板卡读取后存入缓冲区经话机放音。同时接收板卡通道对应的端口的话机录音,并发送给注册服务器。由此过程可知,该板卡通道端口对于语音交互的实现起至关作用。因此实现初始化板卡的通道的对应SIP代理进程及对应端口,就可以实现语音交互。
如图4所示,当板卡驱动进程先启动后发送IPC协议-23(UdpList),但是某个或某些SIP代理进程未启动,因此并未收到响应。此时SIP代理进程启动并发送IPC协议-25(UdpRequest),板卡驱动进程收到后响应并发送IPC协议-26(UdpResponse),完成对应信息的初始化。如图5所示,当SIP代理进程先启动并注册成功发送IPC协议-25(UdpRequest),但是板卡驱动进程未启动,因此并未收到响应。此时板卡驱动进程启动并发送IPC协议-23(UdpList),SIP代理进程收到后响应发送IPC协议-24(ChannelNotice),完成对应信息的初始化。其中SIP代理进程在初始化时会从数据库或XML配置文件中读取“SIP代理进程-板卡坐席通道”对应关系,因此SIP代理进程已知自己对应的坐席通道。
每一个坐席通道都有对应的线程在监听端口,收到SIP代理进程发来语音消息的同时,会获取到SIP代理进程对应的IP和端口,以便向其发送语音消息。
如图6所示,为语音通话的流程图,图7为录音缓冲区原理图,图8为放音缓冲区原理图。语音数据传输的具体方式如下所述:
录音缓冲区和放音缓冲区各有3个,用来对通道话机进行录音和放音操作。每当一个缓冲区完成录音和放音,或录音和放音任务被终止时,都会自定调用任务开始时设置的回调函数。回调函数会分配给下一个缓冲区新的录音和放音任务。缓冲区工作的具体顺序为3-2-1。
例如,对于放音缓冲区,当放音缓冲1完成放音操作后,回调函数会从环状缓冲区中取出一段新的语音数据存入放音缓冲3中,然后分配给放音缓冲3放音任务,并设置下一次回调函数。对于录音缓冲区,当录音缓冲1完成录音操作后,回调函数会将录音缓冲1中的语音数据发送到SIP代理进程的语音端口,然后分配给录音缓冲3录音任务,并设置下一次的回调函数。
当板卡收到SIP代理进程发送的IPC协议-16(StartPlaY)之后,开启线程监听对应坐席通道的端口的SIP代理进程发送来的语音数据,开始进行通话。
当语音数据从其他SIP终端发送到SIP代理进程,再由SIP代理进程发送给对应坐席通道的语音端口时,板卡对应端口监听到语音数据,并记录远端(SIP代理进程)的IP地址和端口。其中收到的语音数据存入环状缓冲区中。环状缓冲区开始接收一定数据后,会触发响应的事件通知(BufferNotice),从而开启乒乓内存的录音和放音。首先从环状缓冲区取出一部分语音数据分别存入放音缓冲1和放音缓冲2中,然后依次分配给两个放音缓冲区放音任务,接着依次分配给录音缓冲1和录音缓冲2录音任务,由于回调函数在每次任务开始时已经设置,语音交互开始。因为三个缓冲区是互不干扰的,会出现1-2-3-1-2-3-1-2-3……交替工作的情况,提高了多线程读写效率。
环状缓冲区是一种数据结构用于表示一个固定尺寸、头尾相连的缓冲区,适合缓冲数据流。在此模型模型中加入环状缓冲区可以解决现实网络传输速率不稳定而造成的语音流丢失等问题,降低由于过快或过慢的写入缓冲区速率对语音信号的影响。
如图9所示,为基本电话接听的原理图。对于基本的电话接听,需要完成来电话机振铃,摘机通话,对方挂断播放忙音等等。而话机行为的控制就需要IPC通信模式来实现。当SIP会话状态为空闲时,热线电话打入,SIP会话状态变为发送前期媒体。若当前监测的板卡话机状态为挂机时,则向板卡发送IPC协议-24(Ring),板卡收到后振铃。(若当前监测的板卡话机状态为摘机时,则自动接听,此为旧版快速接听操作)。此时若将话机摘机,板卡会向SIP代理进程发送IPC协议-3(OffHook),SIP代理进程收到后会执行SIPHelloSDK的接口来接听会话,SIP会话状态变为连接,于是向板卡发送IPC协议-16(StartPlay),板卡收到后,开启监听线程,开始通话。之后有两种情况,一种是导播主动挂机,向SIP代理进程发送IPC协议-2(OnHook),SIP代理进程收到后执行SIPHelloSDK的接口结束会话,SIP会话状态变为断开连接,另一种是热线电话主动挂机,SIP会话状态变为断开连接。当SIP会话状态变为断开连接时,向板卡发送IPC协议-17(StopPlay),板卡收到后,停止监听线程,语音通话结束,并播放忙音(由于新版本数字导播系统的需求,已经不再播放忙音而改为静音)。
如图10所示,为电话外呼的原理图。对于电话外呼功能,需要完成拨号行为以及对电话拨号内容的检测并将电话号码发送给数字导播客户端(DDClient)处理。具体实现流程见附图。
当SIP会话状态为空闲时,板卡话机摘机并发送IPC协议-3(OffHook),SIP代理进程收到后SIP会话状态变为拨号,而后向板卡发送IPC协议-12(PlayDialTone),板卡收到后播放0类型的拨号音。然后话机开始进行按键拨号,每当板卡检测到通道内的一个DTMF按键信息,会向SIP代理进程发送字符形式的IPC协议-22(DTMF)信息,SIP代理进程接收到后,记录下按键信息并开启计时继续接收。超时或接收到”#”字符时,向终端控制进程发送带有所有按键字符信息的IPC协议-20(Call),终端控制进程收到后再向导播服务器发送外呼请求。
由于数字导播系统需求,接听功能采取话机全部振铃的方式,摘机开始通话。如果有处于等待接听状态的话机,不振铃直接开始通话。于是当终端控制进程需要执行接听操作时,首先得到所有话机的状态,如果存在等待接听状态的话机,直接接通该话机,对应SIP代理进程的会话状态变为连接,流程同图9。如果不存在该类话机,则终端控制进程会向所有返回过IPC协议-27(AccountInfo)的SIP代理进程发送IPC协议-31(WaitAnswer),SIP代理进程再发消息给对应的板卡话机振铃。若有话机摘机,终端控制进程收到IPC协议-3(OffHook)后向其他SIP代理进程发送IPC协议-32(StopWait),SIP代理进程再发消息给对应的板卡话机停止振铃,而接听的话机对应的SIP号码发送给导播服务器请求接听。
为了配合数字导播系统实现业务功能,SIP代理进程和板卡控制进程也扩展了IPC协议内容,增加了终端控制进程对板卡话机和SIP代理进程的监视,SIP账号的获取,异常处理等。

Claims (10)

1.SIPHelloSDK与语音板卡的通话系统,其特征在于服务器与话机之间依次设有SIP代理模块和板卡控制模块;
SIP代理模块:将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;
板卡控制模块:接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块。
2.按权利要求1所述的SIPHelloSDK与语音板卡的通话系统,其特征在于所述SIP代理模块包括多个SIP代理进程;板卡控制模块包括多个坐席通道;每个坐席通道与每个话机连接,并与一个SIP代理进程对应。
3.按权利要求2所述的SIPHelloSDK与语音板卡的通话系统,其特征在于所述SIP代理进程将来自服务器的语音数据发送至对应的坐席通道语音端口;坐席通道将监听到的语音数据存入环状缓冲区,并连续由多个放音缓冲读出通过话机放音,同时接收话机的录音存入录音缓冲、并发送给SIP代理进程的语音端口;SIP代理进程将接收的语音数据发送至服务器。
4.按权利要求1所述的SIPHelloSDK与语音板卡的通话系统,其特征在于所述SIP代理模块和板卡控制模块之间还进行信息数据的传输。
5.SIPHelloSDK与语音板卡的通话方法,其特征在于包括:
SIP代理模块将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;
板卡控制模块接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块。
6.按权利要求5所述的SIPHelloSDK与语音板卡的通话方法,其特征在于所述SIP代理模块包括多个SIP代理进程;所述板卡控制模块包括多个坐席通道;每个坐席通道与每个话机连接,并与一个SIP代理进程对应。
7.按权利要求6所述的SIPHelloSDK与语音板卡的通话方法,其特征在于所述SIP代理进程将来自服务器的语音数据发送至对应的坐席通道语音端口;坐席通道将监听到的语音数据存入环状缓冲区,并连续由多个放音缓冲读出通过话机放音,同时接收话机的录音存入录音缓冲、并发送给SIP代理进程的语音端口;SIP代理进程将接收的语音数据发送至服务器;所述SIP代理进程或坐席通道所传输的语音数据通过udp端口方式传输。
8.按权利要求5所述的SIPHelloSDK与语音板卡的通话方法,其特征在于所述SIP代理模块和板卡控制模块之间还进行信息数据的传输。
9.按权利要求8所述的SIPHelloSDK与语音板卡的通话方法,其特征在于所述信息数据包括电话控制信息,状态信息与初始化信息。
10.按权利要求9所述的SIPHelloSDK与语音板卡的通话方法,其特征在于所述所述信息数据通过udp端口方式传输。
CN201410639674.6A 2014-11-13 2014-11-13 SIPHelloSDK与语音板卡的通话系统和方法 Active CN105592023B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410639674.6A CN105592023B (zh) 2014-11-13 2014-11-13 SIPHelloSDK与语音板卡的通话系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410639674.6A CN105592023B (zh) 2014-11-13 2014-11-13 SIPHelloSDK与语音板卡的通话系统和方法

Publications (2)

Publication Number Publication Date
CN105592023A true CN105592023A (zh) 2016-05-18
CN105592023B CN105592023B (zh) 2018-12-07

Family

ID=55931241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410639674.6A Active CN105592023B (zh) 2014-11-13 2014-11-13 SIPHelloSDK与语音板卡的通话系统和方法

Country Status (1)

Country Link
CN (1) CN105592023B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1039700A1 (en) * 1999-03-26 2000-09-27 Nortel Networks Limited Network device application programming interface
CN2726229Y (zh) * 2004-07-28 2005-09-14 沈逸林 网络媒体话机终端
US20060266843A1 (en) * 2002-11-04 2006-11-30 David Flattin Microcircuit card comprising means for publishing its computer objects
CN102065076A (zh) * 2010-10-26 2011-05-18 中国电子科技集团公司第二十八研究所 基于sip的区域地空电台话音组网系统及其实施方法
CN102404462A (zh) * 2010-09-08 2012-04-04 北京商路通信息技术有限公司 一种用于电话外拨系统的呼叫进程分析方法和设备
CN203278969U (zh) * 2013-05-10 2013-11-06 杭州上杭通讯设备有限公司 Ip网络录音服务器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1039700A1 (en) * 1999-03-26 2000-09-27 Nortel Networks Limited Network device application programming interface
US20060266843A1 (en) * 2002-11-04 2006-11-30 David Flattin Microcircuit card comprising means for publishing its computer objects
CN2726229Y (zh) * 2004-07-28 2005-09-14 沈逸林 网络媒体话机终端
CN102404462A (zh) * 2010-09-08 2012-04-04 北京商路通信息技术有限公司 一种用于电话外拨系统的呼叫进程分析方法和设备
CN102065076A (zh) * 2010-10-26 2011-05-18 中国电子科技集团公司第二十八研究所 基于sip的区域地空电台话音组网系统及其实施方法
CN203278969U (zh) * 2013-05-10 2013-11-06 杭州上杭通讯设备有限公司 Ip网络录音服务器

Also Published As

Publication number Publication date
CN105592023B (zh) 2018-12-07

Similar Documents

Publication Publication Date Title
CN1855910B (zh) 基于Web的统一通信系统和方法以及Web通信管理器
CN101123647B (zh) 一种通信方法、系统和业务控制功能实体
CN102082884A (zh) 一种基于3g的音视频协作方法及系统
CN107592429B (zh) 一种多席位多媒体调度系统
CN109728994B (zh) 通话方法、装置及计算机可读存储介质
CN104137523A (zh) 一种实现会议接入的方法、设备和系统
CN101360213B (zh) 可视电话业务中来电应答前主叫音视频传输的方法和装置
GB2560441B (en) Automatically delaying playback of a voice message at a captioning device
CN102055857B (zh) 基于包交换的数字多路导播系统的控制方法
CN101521702B (zh) 多媒体个性化呼叫方法及通信终端
WO2015014174A1 (zh) 实现回铃播放的方法、装置和回铃业务系统
CN100568898C (zh) 一种基于ParlayAPI的多媒体呼叫中心系统
CN201491170U (zh) 基于PSTN和Internet的多媒体通信系统
CN102625000B (zh) 一号通业务中实现彩铃业务的方法和一号通业务服务器
KR100272593B1 (ko) 랜 전화 시스템
CN105592023A (zh) SIPHelloSDK与语音板卡的通话系统和方法
CN101123637B (zh) 智能电话终端、通话记录装置、同步通话记录的方法及系统
US7609286B2 (en) Method and apparatus for video conferencing
CN102143350A (zh) 一种视频电话会议系统
CN113572749A (zh) 一种基于VoLTE的视频呼叫方法和系统
CN202004895U (zh) 一种视频电话会议系统
CN208094697U (zh) 视频会议系统
CN101568008A (zh) 视频消息播放的模块、系统、用户设备与方法
CN110113371B (zh) 一种会话管理系统及会话管理服务器
CN103457912A (zh) 互动式语音应答ivr业务的接入方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant