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

文档序号:9828203阅读:776来源:国知局
SIPHelloSDK与语音板卡的通话系统和方法
【技术领域】
[0001] 本发明涉及一种SIPHelloSDK与语音板卡的通话系统和方法,具体地说是一种通 过SIP代理模块和板卡控制模块交互完成语音通话和电话控制的系统和方法。
【背景技术】
[0002] 语音板卡通信以近几年发展迅速的微机语音处理技术为基础,基本思想是在微机 平台上集成各种功能的语音处理卡,完成通信接口、语音处理、传真处理、坐席转接等功能, 再结合外部的计算机网络实现各种应用系统的需求,具有结构简单,易于维护的特性。
[0003] -般来说,这种语音板卡通信都是直接通过语音板卡向服务器发送和接收语音来 实现的,比如本发明中所用到的三汇语音板卡中就存在直接与市话线接口的能力。但是这 种方式受语音卡厂商的限制,耦合度紧密,不易扩展,功能性不高。

【发明内容】

[0004] 为解决上述问题,本发明的目的在于提供一种将SIPHello SDK和语音板卡结合 的新的语音通话方法,能实现基于SIP协议的语音交互及通话控制。该种方式将语音的采 集与传输分成两个模块,通过某种自定义协议进行信息的交互,具有高度可扩展性,耦合度 低,可以扩展SIP功能和较为复杂的电话控制功能,并可以开启多个SIP终端实现多路控 制。
[0005] 为实现上述目的,本发明采用的技术方案是=SIPHelloSDK与语音板卡的通话系 统,服务器与话机之间依次设有SIP代理模块和板卡控制模块;
[0006] SIP代理模块:将来自服务器的语音数据发送至板卡控制模块,同时接收来自板 卡控制模块的语音数据并发送至服务器;
[0007] 板卡控制模块:接收SIP代理模块的语音数据并通过话机放音,同时接收来自话 机的录音并发送至SIP代理模块。
[0008] 所述SIP代理模块包括多个SIP代理进程;板卡控制模块包括多个坐席通道;每 个坐席通道与每个话机连接,并与一个SIP代理进程对应。
[0009] 所述SIP代理进程将来自服务器的语音数据发送至对应的坐席通道语音端口;坐 席通道将监听到的语音数据存入环状缓冲区,并连续由多个放音缓冲读出通过话机放音, 同时接收话机的录音存入录音缓冲、并发送给SIP代理进程的语音端口;SIP代理进程将接 收的语音数据发送至服务器。
[0010] 所述SIP代理模块和板卡控制模块之间还进行信息数据的传输。
[0011] SIPHelloSDK与语音板卡的语音通话方法,包括:
[0012] SIP代理模块将来自服务器的语音数据发送至板卡控制模块,同时接收来自板卡 控制模块的语音数据并发送至服务器;
[0013] 板卡控制模块接收SIP代理模块的语音数据并通过话机放音,同时接收来自话机 的录音并发送至SIP代理模块。
[0014] 所述SIP代理模块包括多个SIP代理进程;所述板卡控制模块包括多个坐席通道; 每个坐席通道与每个话机连接,并与一个SIP代理进程对应。
[0015] 所述SIP代理进程将来自服务器的语音数据发送至对应的坐席通道语音端口;坐 席通道将监听到的语音数据存入环状缓冲区,并连续由多个放音缓冲读出通过话机放音, 同时接收话机的录音存入录音缓冲、并发送给SIP代理进程的语音端口;SIP代理进程将接 收的语音数据发送至服务器;所述SIP代理进程或坐席通道所传输的语音数据通过UdP端 口方式传输。
[0016] 所述SIP代理模块和板卡控制模块之间还进行信息数据的传输。
[0017] 所述信息数据包括电话控制信息,状态信息与初始化信息。
[0018] 所述所述信息数据通过udp端口方式传输。
[0019] 本发明具有以下有益效果及优点:
[0020] 1.本发明将语音的采集与传输分成两个模块,通过自定义协议进行信息的交互, 耦合度低,具有高度可扩展性,可以扩展SIP功能和较为复杂的电话控制功能,并可以开启 多个SIP终端实现多路控制。
[0021] 2.继承了 SIPHelloSDK和特定语音卡的特点,集中各自的优势,通话清晰,抗干扰 能力强,可扩展性强。
【附图说明】
[0022] 图1是本发明的系统模型结构示意图;
[0023] 图2是进程间通信的端口模型示意图;
[0024] 图3是语音通信的端口模型示意图;
[0025] 图4是板卡控制进程先启动、SIP代理进程注册成功后的初始化流程图;
[0026] 图5是SIP代理进程先注册成功、板卡控制进程启动后的初始化流程图;
[0027] 图6是语音通话过程的流程图;
[0028] 图7是录音缓冲区原理图;
[0029] 图8是放音缓冲区原理图;
[0030] 图9是电话接听功能流程图;
[0031] 图10是电话外呼功能流程图。
【具体实施方式】
[0032] 本发明的系统是由SIPHelloSDK与语音板卡组成的语音通话系统,如图1所示, SIP代理模块(SIPAgent)是若干封装了 "SIPHelloSDK. dll"API的SIP代理,用于和其他 SIP终端之间的语音交互。板卡控制模块(CardManager)是封装了"SHP_A3.dll"API的基 于三汇语音板卡的驱动控制程序,主要负责控制话机的行为及状态,接收话机的行为及状 态,以及对话机进行内存录音,放音的操作。其中SIP代理模块包括多个SIP代理进程,板 卡控制模块包括多个坐席通道(Channel),每个坐席通道与一个话机连接,并与一个SIP代 理进程对应。
[0033] 如图2所示,SIP代理进程注册到服务器上与服务器上其他SIP终端进行语音交 互,而SIP代理进程与对应的坐席通道通过语音udp端口进行语音交互。如图3所示,SIP 代理进程与板卡控制进程通过基于Udp的进程间通信协议(IPC协议)进行相关业务信息, 电话控制信息,状态信息与初始化信息的交互,同时SIP代理进程还会与其他控制进程进 一步交互,如图中的终端控制进程。语音数据和信息数据传输的接口是不同的接口。
[0034] 上文中提到的进程间通信协议(IPC协议),是为了实现SIP代理模块与板卡控制 模块的信息交互而制定的协议,具有良好的业务扩展性,可以实现自定义的需求,比如模块 初始化以及电话业务逻辑等。IPC协议是通过Udp来传输相关信息的,每一个进程都监听自 己进程的端口并向其他关联进程的端口发送信息。
[0035] 启动关联进程时,一个进程首先启动,检测所有进程的默认端口是否被占用,如果 占用将测试选取未被占用端口作为其他进程的启动参数,开启守护进程。
[0036] 详细的IPC协议定义见下表。
[0037] 表一 IPC协议表

[0040] SIP代理进程接收注册服务器发送的语音信息,并发送至板卡通道对应的端口,待 板卡读取后存入缓冲区经话机放音。同时接收板卡通道对应的端口的话机录音,并发送给 注册服务器。由此过程可知,该板卡通道端口对于语音交互的实现起至关作用。因此实现 初始化板卡的通道的对应SIP代理进程及对应端口,就可以实现语音交互。
[0041] 如图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代理进程已 知自己对应的坐席通道。
[0042] 每一个坐席通道都有对应的线程在监听端口,收到SIP代理进程发来语音消息的 同时,会获取到SIP代理进程对应的IP和端口,以便向其发送语音消息。
[0043] 如图6所示,为语音通话的流程图,图7为录音缓冲区原理图,图8为放音缓冲区 原理图。语音数据传输的具体方式如下所述:
[0044] 录音缓冲区和放音缓冲区各有3个,用来对通道话机进行录音和放音操作。每当 一个缓冲区完成录音和放音,或录音和放音任务被终止时,都会自定调用任务开始时设置 的回调函数。回调函数会分配给下一个缓冲区新的录音和放音任务。缓冲区工作的具体顺 序为3 - 2 - 1。
[0045] 例如,对于放音缓冲区,当放音缓冲1完成放音操作后,回调函数会从环状缓冲区 中取出一段新的语音数据存入放音
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1