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

文档序号:9828203阅读:来源:国知局
缓冲3中,然后分配给放音缓冲3放音任务,并设置下一 次回调函数。对于录音缓冲区,当录音缓冲1完成录音操作后,回调函数会将录音缓冲1中 的语音数据发送到SIP代理进程的语音端口,然后分配给录音缓冲3录音任务,并设置下一 次的回调函数。
[0046] 当板卡收到SIP代理进程发送的IPC协议-16(StartPlaY)之后,开启线程监听对 应坐席通道的端口的SIP代理进程发送来的语音数据,开始进行通话。
[0047] 当语音数据从其他SIP终端发送到SIP代理进程,再由SIP代理进程发送给对应 坐席通道的语音端口时,板卡对应端口监听到语音数据,并记录远端(SIP代理进程)的IP 地址和端口。其中收到的语音数据存入环状缓冲区中。环状缓冲区开始接收一定数据后, 会触发响应的事件通知(BufferNotice),从而开启兵兵内存的录音和放音。首先从环状缓 冲区取出一部分语音数据分别存入放音缓冲1和放音缓冲2中,然后依次分配给两个放音 缓冲区放音任务,接着依次分配给录音缓冲1和录音缓冲2录音任务,由于回调函数在每次 任务开始时已经设置,语音交互开始。因为三个缓冲区是互不干扰的,会出现1 一 2 - 3 - 1 - 2 - 3 - 1 - 2 - 3……交替工作的情况,提高了多线程读写效率。
[0048] 环状缓冲区是一种数据结构用于表示一个固定尺寸、头尾相连的缓冲区,适合缓 冲数据流。在此模型模型中加入环状缓冲区可以解决现实网络传输速率不稳定而造成的语 音流丢失等问题,降低由于过快或过慢的写入缓冲区速率对语音信号的影响。
[0049] 如图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),板卡收到后,停止监听线 程,语音通话结束,并播放忙音(由于新版本数字导播系统的需求,已经不再播放忙音而改 为静音)。
[0050] 如图10所示,为电话外呼的原理图。对于电话外呼功能,需要完成拨号行为以及 对电话拨号内容的检测并将电话号码发送给数字导播客户端(DDClient)处理。具体实现 流程见附图。
[0051] 当SIP会话状态为空闲时,板卡话机摘机并发送IPC协议-3 (OffHook),SIP代理 进程收到后SIP会话状态变为拨号,而后向板卡发送IPC协议-12 (PlayDialTone),板卡 收到后播放0类型的拨号音。然后话机开始进行按键拨号,每当板卡检测到通道内的一个 DTMF按键信息,会向SIP代理进程发送字符形式的IPC协议-22 (DTMF)信息,SIP代理进程 接收到后,记录下按键信息并开启计时继续接收。超时或接收到" #"字符时,向终端控制进 程发送带有所有按键字符信息的IPC协议-20 (Call),终端控制进程收到后再向导播服务 器发送外呼请求。
[0052] 由于数字导播系统需求,接听功能采取话机全部振铃的方式,摘机开始通话。如果 有处于等待接听状态的话机,不振铃直接开始通话。于是当终端控制进程需要执行接听操 作时,首先得到所有话机的状态,如果存在等待接听状态的话机,直接接通该话机,对应SIP 代理进程的会话状态变为连接,流程同图9。如果不存在该类话机,则终端控制进程会向 所有返回过IPC协议-27 (AccountInfo)的SIP代理进程发送IPC协议-31 (WaitAnswer), SIP代理进程再发消息给对应的板卡话机振铃。若有话机摘机,终端控制进程收到IPC协 议-3 (OffHook)后向其他SIP代理进程发送IPC协议-32 (StopWait),SIP代理进程再发 消息给对应的板卡话机停止振铃,而接听的话机对应的SIP号码发送给导播服务器请求接 听。
[0053] 为了配合数字导播系统实现业务功能,SIP代理进程和板卡控制进程也扩展了 IPC协议内容,增加了终端控制进程对板卡话机和SIP代理进程的监视,SIP账号的获取,异 常处理等。
【主权项】
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端口方式传输。
【专利摘要】本发明涉及SIPHelloSDK与语音板卡的通话系统,服务器与话机之间依次设有SIP代理模块和板卡控制模块;SIP代理模块:将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;板卡控制模块:接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块。方法包括:SIP代理模块将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡控制模块的语音数据并发送至服务器;板卡控制模块接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机的录音并发送至SIP代理模块本发明将语音的采集与传输分成两个模块,通过自定义协议进行信息的交互,耦合度低,具有高度可扩展性,可以扩展SIP功能和较为复杂的电话控制功能,并可以开启多个SIP终端实现多路控制。
【IPC分类】H04M7/00, H04L29/06
【公开号】CN105592023
【申请号】CN201410639674
【发明人】于碧辉, 贾军营, 王率, 孙建伟, 杨海波, 于波, 王卫
【申请人】中国科学院沈阳计算技术研究所有限公司
【公开日】2016年5月18日
【申请日】2014年11月13日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1