首页> 中国专利> 一种基于SIP协议的VoIP通信系统及其通信方法

一种基于SIP协议的VoIP通信系统及其通信方法

摘要

本发明提供一种基于SIP协议的VoIP通信系统及其通信方法,该系统包括用户接口模块、主状态控制模块、通信管理模块;主状态控制模块分别与用户接口模块和通信管理模块通信连接;通信管理模块又包含网络初始化模块、呼叫控制模块、网络消息监测模块和注销模块。本发明还提供了一种基于该通信系统的通信方法,使得本发明中的基于SIP协议的VoIP通信系统,被安装于智能终端,并通过网络与Web服务器,MySql服务器,Asterisk服务器互联,从而实现和同一个网络中的智能语音合成识别、多协议即时消息、短信、Email等服务的有机融合。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-02-10

    未缴年费专利权终止 IPC(主分类):H04L29/06 授权公告日:20121114 终止日期:20141217 申请日:20091217

    专利权的终止

  • 2012-11-14

    授权

    授权

  • 2010-08-18

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20091217

    实质审查的生效

  • 2010-06-23

    公开

    公开

说明书

技术领域

本发明涉及一种VoIP技术在融合通信领域的应用,特别是运行于智能终端上的VoIP语音业务。

背景技术

长期以来,人们都在关注着如何进行长距离语音通信。在过去的一百多年,我们都依赖公共电话网PSTN(Public switched Telephone Network)来进行话音通讯。当两个地点进行通话时,就有一条固定的线路分配给这对话的双方,这条线路虽然可能还存在多余的频宽,但其它信息却不能同时传递。当出现数据通信业务时,这种基于电路交换的通信方式逐渐暴露出其资源利用效率和可靠性低的缺陷。

不仅如此,语音与数据综合业务的出现也给传统的电路交换提出了更高的要求。随着网络技术的发展,大多数应用软件都在不可避免地发展,这就要求Web服务器必须具有与用户进行数据、语音和视频图像交互的能力,而这势必要求语音和数据业务相融合。

从价格上来看,由于长途通信在电话网上的高额收费,人们希望能利用因特网的低成本特性来完成相同的业务。

以分组的形式传送语音数据的VoIP(Voice Over Internet Protocol)技术是我们多年使用的电路交换电话技术的一个重要替代品。其基于分组网的重要特性解决了资源利用的问题,同时也给语音通信业务带来了更低的成本。VoIP技术集成了语音和数据应用,所提供的新业务为运营商们带来了更大的市场效益。VoIP是Voice over InternetProtocol的缩写,也即是常说的IP电话,指的是将模拟的语音信号经过压缩、与编码之后,以数据封包的形式在IP网络中进行传输。VoIP的基本原理是:通过语音的压缩算法对语音数据进行压缩处理,然后把这些语音数据按TCP/IP标准进行打包,经过IP网络把数据包送至接收地,再经过解压处理后,恢复成原来的语音信号,从而达到由互联网传送语音的目的。这种语音传输方式有着设备费用低、话音和数据集成、带宽要求低、IP的广泛应用性等特点,市场前景广阔。

VoIP技术的实现需要依托一系列技术,这些技术包括各种网络协议,即TCP/IP协议、负责信令控制的SIP协议、与SIP密切相关的会话描述协议(SDP),负责语音传输的RTP协议等。其中SIP协议由于其自身的种种优势,成为了主流VoIP信令协议。

VoIP技术上的演进大致可分为三个发展阶段:

第一阶段:1996年到1999年。在这一阶段,VoIP技术和应用的的主要特点是:在应用上,主要是在企业网、互联网上小规模地提供初级的语音通信,通话质量无法保证。这期间使用的信令控制协议主要是H.323v1/v2、MGCP等,不与电信网互通或者通过企业网关作为用户接入电信网络。

第二阶段:1999年到2005年。在这一阶段,商业应用模式逐渐发展成熟,市场上逐渐出现了可以提供组建大规模商用VoIP长途业务网的厂商,为公众提供有服务质量保证的长途话音通信服务。采用的主要协议为H.323v4+H.248,可与传统电信网实现网间互联互通。同时,H.323协议的诸多问题开始显现出来,无法满足企业级市场的应用需求。如结构复杂、成本高、对多点用户的支持差等。

第三阶段:从现在开始是VoIP发展的第三阶段。为了得到更普及的应用,这个阶段一方面要解决第二个阶段遇到的问题并进一步改进服务品质,另一方面要引入更多的新功能、新业务。问题的改进主要是以下几个方面的工作:

服务品质:这是由PSIN过渡到VoIP、IPPBX取代PBX的最基本的要求。这里的服务品质,主要是要求系统可以保证达到语音传输的最低延迟时间(40毫秒)和QoS等。

高可用性:虽然VoIP已成必然趋势,但与传统的PSIN相比,在成熟度、稳定性、可用性、可管理性,乃至可扩展性等方面仍需加强。

开放性及兼容性:面对企业级市场,VoIP当前的最大课题之一就是如何在开放架构下,能够达到各家VoIP产品或解决方案的互通与兼容,以及IP电话与传统电话的互通性。

现阶段,VoIP信令协议大体上可分为三种,即(1)H.323网守(CK),沿袭LAN上多媒体会议通信协议,提供呼叫控制、呼叫管理和会议功能等;(2)MGCP媒体网关控制协议,控制媒体网关状态并指示它们传送媒体到指定地址;(3)SIP,用客户/服务器分布式呼叫控制和能力协商。SIP同HTTP和SMTP一样,是一种基于文本的协议。许多程序员都非常了解这个协议。他们发现SIP协议非常简单并且很容易排除故障。H.323协议是用二进制代码编写的,没有丰富经验和开发工具的程序员都不熟悉这个协议。SIP是一个应用层的协议,以其小巧而且使用简便的特点,正在获得越来越广泛的使用。

发明内容

发明目的:本发明提出一种新一代融合通信解决方案,主要涉及一种基于SIP协议的VoIP通信系统及其通信方法。

技术方案:

本发明为实现上述发明目的,采用如下技术方案:

一种基于SIP协议的VoIP通信系统,包括用户接口模块、主状态控制模块、通信管理模块;主状态控制模块分别与用户接口模块和通信管理模块通信连接;其中:

用户接口模块负责界面的显示,对用户输入的响应和电话薄功能的实现;

通信管理模块以SIP协议栈为基础,负责信令的交互,建立和终止会话;

主状态控制模块用于接收用户接口模块和通信管理模块所发送来的消息,对消息进行解析,并根据解析的结果进行主状态的切换;同时发送消息通知用户接口模块和通信管理模块,使它们做出相应的操作。

本发明的VoIP通信系统的通信管理模块包含网络初始化模块、呼叫控制模块、网络消息监测模块和注销模块;其中:

网络初始化模块:完成协议栈的初始化,并在初始化完成后,向服务器进行注册;呼叫控制模块:负责发起呼叫、接听来电、挂机;

网络消息监听模块:循环等待网络侧的SIP消息;当收到网络侧发来的SIP消息,对消息进行回复和解码,同时通过消息投递通知主状态控制模块,使之完成状态的切换;

注销模块:负责在应用程序退出之前,向服务器请求注销用户,并释放占用的所有资源。

一种基于本发明的通信方法,包括如下步骤:

1)启动用户接口模块进程,初始化全局变量,创建用户主界面,显示对话框;

2)分别创建主状态控制模块与用户接口模块和通信管理模块之间的管道,用于进程间通讯。

3)启动主状态控制模块进程,连接数据库,取出存于数据库中的用户信息,将用户信息显示在界面上;

4)进入消息循环状态,等待用户操作或者管道消息;

5)当有用户操作或有管道消息时,响应用户的操作或响应管道消息,并将用户操作的消息或管道消息发送至通信管理模块;

6)启动通信管理模块进程;

7)进入消息循环,等待管道消息;

8)当有管道消息时,通信管理模块将管道消息发送至主状态控制模块,主状态控制模块根据管道消息,进行系统主状态的变迁;

9)主状态控制模块发送管道消息给用户接口模块和通信管理模块;

10)通信管理模块进程启动后,首先创建子线程;

11)通信管理模块子线程监听并处理网络侧消息;

12)通信管理模块主线程向Asterisk服务器注册;

13)通信管理模块主线程进入消息循环,等待管道消息;

14)通信管理模块主线程根据收到管道消息,做拨号、挂机等操作;

15)通信管理模块发送管道消息给主状态控制模块。

有益效果:

本发明中的基于VoIP通信系统,被安装于智能终端,并通过网络与Web服务器,MySql服务器,Asterisk服务器互联,从而实现和同一个网络中的智能语音合成识别、多协议即时消息、短信、Email等服务的有机融合。

附图说明

图1是本发明中的基于SIP协议的VoIP系统。

图2是主状态机状态转移图。

图3是本地用户去电流程图。

图4是本地用户拒接来电流程图。

图5是VoIP Phone应用程序的启动流程。

图6是VoIP Phone应用程序的系统架构。

具体实施方式

下面结合附图对本发明的技术方案进行详细说明:

1)Asterisk SIP服务器的构建:

本发明使用Asterisk软件实现SIP服务器。Asterisk是一个运行于Linux操作系统上的开源软件,它可以实现电路交换的电信网络设备和包交换的数据网络设备间的通信。将模拟电话通过电话线连接到SIP服务器的模拟接口插板卡上,并将该SIP服务器连接到局域网内。这样,网络用户就可以通过局域网,注册到SIP服务器上,从而与其他网络用户或者是模拟电话的用户进行通信。首先,在Linux操作系统上安装Asterisk软件。安装Asterisk之后,对它进行配置,也就是修改sip.conf和zaptel.conf这两个配置文件的内容,为网络用户和模拟电话用户建立账号,设计拨号规则。只有拥有了Asterisk账号的用户,才可以注册到SIP服务器上。注册之后,用户需要按照拨号规则来发起呼叫。其次,构建Asterisk服务器与统一通信录调度机制。

2)网络服务器的构建:

首先,在windows下使用VC6.0创建MFC AppWizard应用程序。该应用程序完成VoIP Phone的功能,包括注册,呼叫,接听。

接着,使用Inno Setup软件,将上一步中制作的MFC应用程序制作成setup.exe安装文件。

再次,在jsp网页中插入超链接,链接到上一步制作的setup.exe安装文件。

最后,在WEB服务器主机上安装Tomcat软件,将上一步中制作的jsp文件放入Tomcat的默认web路径。Tomcat就是本课题VoIP系统的网络服务器软件。

至此,用户可以通过IE浏览器,访问放置于Tomcat网络服务器上的jsp网页,并从该网页上下载安装VoIP Phone应用程序。

3)VoIP Phone应用程序的软件系统框架:

VoIP Phone的主要功能是实现通话,并提供给用户一个良好的操作界面。为此,本VoIP Phone应用系统分为三大模块,分别为用户接口模块、主状态控制模块、通信管理模块。用户接口模块负责界面的显示,对用户输入的响应和电话薄功能的实现。主状态控制模块是整个软件系统的中央控制模块,它接收用户接口模块和通信管理模块所发送来的消息,对消息进行解析,并以此进行主状态的切换。主状态控制模块还需要发送消息,通知用户接口模块和通信管理模块,使它们做出相应的操作。通信管理模块是整个话机系统的通信基础,它主要负责信令的交互,建立和终止会话,它以SIP协议栈为基础,并包含网络初始化模块、呼叫控制模块、网络消息监测模块和注销模块几个子模块。整个软件系统结构如图6所示。

本插件运行在Windows操作系统平台之上,使用系统给出的API进行开发。整个系统由三个线程构成,用户接口模块、主状态控制模块、通信管理模块各使用一个线程。

通信管理模块又包含两个线程,主线程负责与主状态控制模块的交互,子线程负责监听网络的SIP消息。三个线程之间通过消息投递来进行通信。

4)VoIP Phone应用程序的启动流程

启动流程说明:

1)启动用户接口模块进程,初始化全局变量,创建用户主界面,显示对话框;

2)分别创建主状态控制模块与用户接口模块和通信管理模块之间的管道,用于进程间通讯。

3)启动主状态控制模块进程,连接数据库,取出存于数据库中的用户信息,将用户信息显示在界面上;

4)进入消息循环状态,等待用户操作或者管道消息;

5)当有用户操作或有管道消息时,响应用户的操作或响应管道消息,并将用户操作的消息或管道消息发送至通信管理模块;

6)启动通信管理模块进程;

7)进入消息循环,等待管道消息;

8)当有管道消息时,通信管理模块将管道消息发送至主状态控制模块,主状态控制模块根据管道消息,进行系统主状态的变迁;

9)主状态控制模块发送管道消息给用户接口模块和通信管理模块;

10)通信管理模块进程启动后,首先创建子线程;

11)通信管理模块子线程监听并处理网络侧消息;

12)通信管理模块主线程向Asterisk服务器注册;

13)通信管理模块主线程进入消息循环,等待管道消息;

14)通信管理模块主线程根据收到管道消息,做拨号、挂机等操作;

15)通信管理模块发送管道消息给主状态控制模块。

5)VoIP Phone应用程序中通信管理模块的研究

通信管理模块是整个话机系统的通信基础,它主要负责信令的交互,建立和终止会话。它以OISP、EXOSIP、ORTP、Mediastream协议栈为基础,包含网络初始化模块、呼叫控制模块、网络消息监听模块和注销模块几个子模块。它包含两个线程,主线程负责与主状态控制模块的交互,子线程负责监听网络的SIP消息。

下面介绍各个模块的功能:

网络初始化模块,首先完成三个协议栈的初始化,并在初始化完成后,向服务器进行注册。注册完成后,本软电话就进入等待用户拨号或等待来电的空闲状态。

呼叫控制模块,负责发起呼叫、接听来电、挂机。

网络消息监听模块,是一个独立的线程,循环等待网络侧的SIP消息。一旦收到网络侧发来的SIP消息,就对消息进行回复和解码,同时通过消息投递通知主状态控制模块,使之完成状态的切换。

注销模块,负责在本应用程序退出之前,向服务器请求注销用户,并释放占用的所有资源。

下面介绍通信管理模块的工作流程。

通信管理模块是一个独立的线程,称为sip process。它由主状态控制模块建立,并通过消息投递与主状态控制模块进行通信。Sip process首先创建一个子线程,用于网络消息监听子模块。一旦子线程创建完成,sip process的主线程就调用网络初始化模块,完成协议栈的初始化,并向服务器进行注册。一旦注册完成,sip process的主线程就循环等待主状态控制模块发来的消息。现以本地用户去电,通话过后,本地用户挂机为例,说明sip process的工作流程,如图3所示。

在图3中,本地用户拨号时,sip process收到Message_Dial消息,调用sip_invite()发起呼叫。服务器回送消息EXOSIP_CALL_PROCEEDING和EXOSIP_CALL_RINGING,表示呼叫正在转接。被叫用户接听,服务器送来消息EXOSIP_CALL_ANSWERED,表示通话已建立。通话过后,本地用户挂机,sip process收到Message_HangUp消息,调用sip_call_terminate(),结束通话。服务器回送EXOSIP_CALL_RELEASED,表示通话资源已释放。

本地用户有来电,sip process将收到EXOSIP_CALL_INVITE消息。此时,sip process发生Message_Ring消息,提示本地用户是否接听呼叫。本地用户拒接来电的工作流程如图4所示。

6)VoIP Phone应用程序中主状态模块的研究

该模块是整个VoIP Phone软件系统的核心,控制着整个话机的状态变化与各个模块间的消息传输管理。其主要实现方式还是基于传统的状态机设计思想,即主状态控制模块接收其他模块发送来的消息,并驱动状态机产生状态的变迁,并在状态变迁的过程中产生动作,发送消息给其他模块,从而完成所需要的功能。

主状态控制模块的首要功能,是在用户接口模块和通信管理模块之间起着桥梁的作用。它通过消息投递和其它两个模块进行通信。传送的消息类型如下:

typedef enum

{

    Message_Quit,

    Message_Dial,

    Message_HangUp,

    Message_Key,//0-9,key value in″key″member

    Message_None,//used only for init,means no message

    Message_Ring,//sip to main to UI,a phone is coming

  Message_Closed,//sip to main,the call was hanged up by others

  Message_Answer//a coming has came,the user wants to pick it up

}MESSAGE_TYPE;

Message_Quit表示用户希望退出本应用程序,此时主状态机应关闭本应用程序的所有进程,清理占用的资源。

Message_Dial表示用户按下拨号键,希望打电话,或是接听来电。

Message_HangUp表示用户按下挂机键,可能是在通话过后挂断电话,或是拒绝一个来电。

Message_Key表示用户正在拨号,消息结构体的另一个字段将存储用户具体拨的是0-9哪个按键。

Message_None只用于初始化消息结构体。

Message_Ring表示有来电。

Message_Closed表示通话结束。

Message_Answer表示用户接听来电。

主状态机的另一个重要功能,就是根据收到的管道消息,进行主状态的切换。

主状态用一个enum类型来定义,具体如下:

typedef enum

{

  status_idle,//wait for user

  status_dial,//user is dialing number

  status_busy,//talking on phone

  status_recv//receive a call

}enum_main_status;

extern enum_main_status main_status;

主状态机的状态转移图如图2所示。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号