osecvs 视频会议系统设计(二):VOIPGateway设计

来源:互联网 发布:我的世界自瞄辅助js 编辑:程序博客网 时间:2024/06/03 18:38


设计目标

通过增加VOIP网关进行相应的协议装换,在现有SmartMeeting的基础上提供和PSTN网络进行互通的能力。

功能描述  

A.       SmartMeeting视频会议中具备呼出权限的人员可以通过VOIP网关邀请第三方普通电话用户和手机用户参加当前的会议。

B.       安装有SmartMeeting视频会议客户端软件并且具备合法权限的用户可以通过VOIP网关和普通电话用户和手机用户进行音频交流。

设计原则

技术先进性:系统的遵循高起点、严要求,必须具有技术上的先进性和前瞻性。对于系统架构,各种业务模型的设计充分虑今后业务发展的需要,包括于各种新的业务需求的提出和新规则的制定。

集中管理性:按运营中心统一规划建设的原则。

       统一性:系统设计与建设要从系统的业务管理规范、数据接口、数据存储标准、系统的结构和实现的功能等方面保证全网的统一性。


1.系统信令描述

1.        VOIPGateway信令

预定义:

#define VOIP_GATEWAY_BASEMSG  0x9001

#define VOIP_GATEWAY_ERROR

1)  上线验证

功能描叙:

    VOIPGateway启动的时候发送给ChargeGateway进行效验。

        信令流向:

    VOIPGateway ->  ChargeGateway

信令ID:

         #defineVOIP_GATEWAY_VERIFY VOIP_GATEWAY_BASEMSG+0x0001

信令结构:

名称

字段名

类型

长度

备注

IP地址

szIP

Char

16

 

密码

szPWD

Char

16

 

2)  验证用户

功能描叙:

        VOIPGateWay发送此信令到ChargeGateway验证用户是否有呼叫普通电话的权限。

信令流向:

         VOIPGateway -> ChargeGateway

信令ID:

#defineVOIP_GATEWAY_USERAUTH VOIP_GATEWAY_BASEMSG+0x0002

信令结构:

名称

字段名

类型

长度

备注

用户ID

nUserID

int

4

 

用户密码

szPWD

Char

16

 

呼叫类型

bType

Byte

1

呼叫类型,1为会议中(来自MCU)的呼叫,0为客户端的呼叫

会议ID

nConfID

Int

4

bType为1时有效

 

3)  打开音频通道

功能描叙:

     VOIPGateway验证通过后发送该信令到呼叫端打开音频通道,VOIPGateway在相应的音频通道打开后呼叫电话终端。

       信令流向:

         VOIPGateway -> Client

VOIPGateway-> MCU

信令ID:

#define VOIP_GATEWAY_OPENCHNL VOIP_GATEWAY_BASEMSG+0x0003

信令结构:

名称

字段名

类型

长度

备注

IP地址

dwIPAddr

int

4

 

端口

nPort

UINT

4

 

4)  关闭音频通道

功能描叙:

     通知呼叫方关闭音频通道,一般是在呼叫电话失败或者挂断后发送。

信令流向:

         VOIPGateway -> Client

VOIPGateway-> MCU

信令ID:

     #define VOIP_GATEWAY_CLOSECHNL  VOIP_GATEWAY_BASEMSG + 0x0004

信令结构:

5)  呼叫结果

功能描叙:

     在VOIPGateway验证后或者呼叫电话后发送给呼叫方。如果呼叫失败的话,此信令之前会发送VOIP_GATEWAY_CLOSECHNL到客户端。

信令流向:

         VOIPGateway -> Client

VOIPGateway-> MCU

信令ID:

     #define VOIP_GATEWAY_CALLRESULT VOIP_GATEWAY_BASEMSG + 0x0005

信令结构:

 在包头的Status中指明呼叫的结果

0:呼叫成功。

VOIP_GATEWAY_ERROR+0x0001:无法呼叫H.323终端(地址错误或者对方拒绝)

VOIP_GATEWAY_ERROR+0x0002:没有开通电话呼叫业务

VOIP_GATEWAY_ERROR+0x0003:账户的余额不够

VOIP_GATEWAY_ERROR+0x0004:系统超出最大连接数。

其他错误码待定

6)  电话挂断

功能描叙:

     通话中如果电话方挂断或者帐户余额不足,发送此信令到呼叫方,同样,此信令之前会发送VOIP_GATEWAY_CLOSECHNL到客户端

信令流向:

         VOIPGateway -> Client

VOIPGateway-> MCU

信令ID:

     #define VOIP_GATEWAY_TELHANGUP  VOIP_GATEWAY_BASEMSG + 0x0006

信令结构:

在包头的Status中 定义挂断的原因

VOIP_GATEWAY_ERROR+0x0010:对方挂机

VOIP_GATEWAY_ERROR+0x0011:账户的余额不够

其他错误码待定

7)  开始计费

功能描叙:

     在VOIPGateway呼叫电话成功后立即发送给计费服务器开始计费。

信令流向:

         VOIPGateway -> ChargeGateway

信令ID:

     #define VOIP_GATEWAY_STARTCHARGEVOIP_GATEWAY_BASEMSG + 0x0007

信令结构:

名称

字段名

类型

长度

备注

用户ID

nUserID

int

4

 

电话号码

szE164

Char

21

 

计费时长

wTime

WORD

2

 

开始时间

szStartTime

CHAR

14

 

8)  停止计费

功能描叙:

     在VOIPGateway断开电话发送给计费服务器开始计费。

信令流向:

         VOIPGateway -> ChargeGateway

信令ID:

     #define VOIP_GATEWAY_STOPCHARGE VOIP_GATEWAY_BASEMSG + 0x0008

信令结构:

名称

字段名

类型

长度

备注

用户ID

nUserID

int

4

 

电话号码

szE164

Char

21

 

计费时长

wTime

WORD

2

 

停止时间

szStopTime

CHAR

14

 

9)  计费包

功能描叙:

     在VOIPGateway通话中定时发送给计费服务器。

信令流向:

         VOIPGateway -> ChargeGateway

信令ID:

     #define VOIP_GATEWAY_CHARGEPACKET   VOIP_GATEWAY_BASEMSG + 0x0009

信令结构:

名称

字段名

类型

长度

备注

用户ID

nUserID

int

4

 

电话号码

szE164

Char

21

 

计费时长

wTime

WORD

2

 

 

10) 心跳包

功能描叙:

     在VOIPGateway运行中定时发送给计费服务器。

信令流向:

         ChargeGateway   ->VOIPGateway

信令ID:

     #defineVOIP_GATEWAY_ACTIVEPACKET   VOIP_GATEWAY_BASEMSG+ 0x0010

 

2.        Client信令

预定义:

#define CLIENT_VOIP_BASEMSG

#define CLIENT_VOIP_ERROR

1)  Client呼叫电话

功能描叙:

    Client通过发送该信令到VOIPGateway呼叫普通电话用户。  

        信令流向:

    Client      ->  VOIPGateway

信令ID:

         #defineVOIP_GATEWAY_CLIENTCALL CLIENT_VOIP_BASEMSG+0x0001

信令结构:

名称

字段名

类型

长度

备注

用户ID

nUserID

int

4

 

密码

szPWD

Char

16

 

电话号码

szE164

Char

21

 

 

2)  Client挂断电话

功能描叙:

    Client通过发送该信令到VOIPGateway挂断电话。  

        信令流向:

    Client      ->  VOIPGateway

信令ID:

         #defineVOIP_GATEWAY_CLIENTHANGUP CLIENT_VOIP_BASEMSG+0x0002

信令结构:

3)  DTMF信号

功能描叙:

    Client通过发送该信令到VOIPGateway发送DTMF信号,主要用于分机拨号。

        信令流向:

    Client      ->  VOIPGateway

信令ID:

         #defineVOIP_GATEWAY_CLIENTDTMF CLIENT_VOIP_BASEMSG+0x0003

信令结构:

名称

字段名

类型

长度

备注

DTMF

cDTMF

Char

1

电话键盘上的数字和符号

 

3.        Mcu信令

预定义:

#define MCU_VOIP_BASEMSG

#define MCU_VOIP_ERROR

1)  MCU呼叫电话

功能描叙:

    MCU通过发送该信令到VOIPGateway呼叫普通电话用户。 

        信令流向:

    MCU     ->  VOIPGateway

信令ID:

         #defineVOIP_GATEWAY_MCUCALL MCU_VOIP_BASEMSG+0x0001

信令结构:

名称

字段名

类型

长度

备注

用户ID

nUserID

int

4

 

密码

szPWD

Char

16

 

电话号码

szE164

Char

21

 

会议ID

nConfID

Int

4

 

 

2)  MCU挂断电话

功能描叙:

    MCU通过发送该信令到VOIPGateway挂断电话。 

        信令流向:

    MCU     ->  VOIPGateway

信令ID:

         #defineVOIP_GATEWAY_MCUHANGUP MCU_VOIP_BASEMSG+0x0002

信令结构:

3)  DTMF信号

功能描叙:

    MCU通过发送该信令到VOIPGateway发送DTMF信号,主要用于分机拨号。

        信令流向:

    MCU     ->  VOIPGateway

信令ID:

         #defineVOIP_GATEWAY_MCUDTMF MCU_VOIP_BASEMSG+0x0003

信令结构:

名称

字段名

类型

长度

备注

DTMF

cDTMF

Char

1

电话键盘上的数字和符号

 

 

4.        ChargeGateway信令

预定义:

#define CHARGE_VOIP_BASEMSG

#define CHARGE_VOIP_ERROR

1)  上线验证结果

功能描叙:

    ChargeGateway发送给VOIPGateway的验证结果。

        信令流向:

    ChargeGateway   ->  VOIPGateway

信令ID:

    #define VOIP_GATEWAY_VERIFYRESP  CHARGE_VOIP_BASEMSG+0x0001

信令结构:

            验证结果在包头的status字段中

                            0—成功

                         CHARGE_VOIP_ERROR+0x0001---无此用户号

                CHARGE_VOIP_ERROR+0x0002---密码错误 

                CHARGE_VOIP_ERROR+0x0003---数据库错误。

2)  验证结果

功能描叙:

     ChargeGateway返回验证的结果给VOIPGateway。

信令流向:

        ChargeGateway ->VOIPGateway

信令ID:

#define VOIP_GATEWAY_AUTHRESULT GATEWAY_VOIP_BASEMSG+0x0002

信令结构:

名称

字段名

类型

长度

备注

用户ID

nUserID

int

4

 

           验证结果在包头的status字段中

                        0:成功 

                        CHARGE_VOIP_ERROR+0x0010:帐号不存在

                        CHARGE_VOIP_ERROR+0x0011:帐号欠费

                        CHARGE_VOIP_ERROR_0x0012:帐号过期失效

3)  计费结果

功能描叙:

     在VOIPGateway通话中定时发送给计费服务器。

信令流向:

         ChargeGateway   ->VOIPGateway

信令ID:

     #define  VOIP_GATEWAY_CHARGERESULT GATEWAY_VOIP_BASEMSG+0x0003

信令结构:

名称

字段名

类型

长度

备注

 

用户ID

nUserID

int

4

 

 

电话号码

szE164

Char

21

 

        在包头的Status中 定义计费状态:

0 :正常,不必发送此包

CHARGE_VOIP_ERROR+0x0020: 账户不存在

CHARGE_VOIP_ERROR+0x0021: 账户欠费

CHARGE_VOIP_ERROR+0x0022: 账户失效

 其他错误码待定

4)  心跳包回应

功能描叙:

     ChargeGateway返回给VOIPGateway的心跳包回应。

信令流向:

         VOIPGateway -> ChargeGateway

信令ID:

#define VOIP_GATEWAY_ACTIVEPACKETRESP   GATEWAY_VOIP_BASEMSG + 0x0004

 

1.2     系统信令流转

 

1.3    主要流程:

A.  系统初始化

  读取各类设置,包括最大支持连接数、Gatekeep地址、 Gatekeep帐号信息、计费服务器地址等;

  建立与计费服务器链路,等待成功与计费服务器连接;

  初始化H.323通道池,并将各个通道注册到Gatekeep,设置成功注册的通道为空闲状态,注册不成功的为错误状态;

  开启侦听端口;

  等待呼叫。

B.  建立呼叫

客户端或MCU连接到侦听端口,发送帐号信息;

通知计费服务器对指定帐号进行合法性效验;

    效验失败通知客户端,并断开呼叫;成功转下一步;

检查是否有H.323通道池是否有处于空闲状态的通道并分配给当前用户。

通知客户端建立音频通道;

检查音频通道建立是否成功,失败则通知客户端断开呼叫。

进行H.323呼叫;

    呼叫失败断开呼叫;

    通知计费服务器开始计费;

    通知呼叫端进行通话;

C.  断开呼叫

通知呼叫方关闭音频通道;

断开使用的H.323通道,设置状态为空闲;

通知计费服务器停止计费;

D.  实时计费

定时发送计费包给计费服务器;

计费服务器根据帐户实际情况发送正常包、断开包;

E.  系统关闭

  断开所有的呼叫;

  关闭所有的H.323通道;

  断开和计费服务器的连接;

    退出系统;



联系方式
QQ:1152597562
欲了解详细产品信息与费用请尽快与我沟通。






即时通讯源代码, im源码, im源代码 即时通讯全套源码,oseicq源码,QQ源代码,旺旺源代码,msn源代码,歪歪源代码

原创粉丝点击