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源代码,歪歪源代码
- osecvs 视频会议系统设计(二):VOIPGateway设计
- osecvs 视频会议系统设计(四): 监控服务设计
- osecvs 视频会议系统设计(一):白板数据传输
- osecvs 视频会议系统设计(三):Meeting 媒体控制协议设计
- osecvs 视频会议系统设计(三): 命令控制协议协议设计
- 数据库设计技巧(二)
- 设计文档[二]
- 设计模式汇总(二)
- 设计模式二:bridge
- 系统设计模式二
- 设计模式探索二
- JFreeReport报表设计(二)
- Undo/Redo设计(二)
- 系统架构设计(二)
- 端口扫描设计过程(二)
- SmartForms 之二--设计
- 权限管理设计二
- 设计思想二
- Windows环境下搭建Android
- MFC中实现画线的几种方法:
- memcached常见命令
- inifiles.ReadString 会丢失不可见字符
- grails 笔记
- osecvs 视频会议系统设计(二):VOIPGateway设计
- Learning MySQL 2 - 常用命令
- 最好的HTML 5编码教程和参考手册分享
- opencv需常用的小工程
- SQLServer : EXEC和sp_executesql的区别
- 基础语言-题目40(求最大公约数和最小公倍数)
- Codeforces Round #149 (Div. 2)
- 动态语句语法:EXEC\SP_EXECUTESQL语法(转载)
- 什么是窗口子类化