1、增值短消息服务平台的设计与实现摘 要 本文首先介绍了短消息业务和平台的概念,参考中国移动的CMPP协议和有关规范, 给出了一个短消息增值服务平台的设计实现方案和实现方法。对整个平台的通信机制,业务处理,后台管理,数据库设计等关键问题,进行了重点论述。关键词 CMPP协议;短消息;短消息网关;SP0 引言 随着中国一跃成为世界上最大的移动通信市场,手机短信以它通信费用低廉,双向传输,通信质量可靠,速度快等显着优点受到了越来越多人的青睐,手机短信已被称为“第四媒体”。除了大量使用的手机用户之间的点对点短信业务之外,从信息平台到手机用户的短信信息服务业务也在快速发展,该业务已经成为广大用户及时方便地
2、获取信息的一种手段。1 有关短消息,短消息业务及短消息服务平台 SMS(ShortMessagingService),是最早的,但仍是现在火爆全球的文本短消息服务;EMS增强信息服务,是(SMS)的新版本,支持发送简单的图像、声音和动画等信息;MMS多媒体短信服务,是目前短信技术开发最高标准的一种,支持多媒体功能,需要或3G的网络来支持它的运转。本增值短消息服务平台的软件设计使用Visual C+作为前台开发工具,SQL Server 2000作为后台数据库,是一个是以手机为应用基础、以前台页面为操作界面,具有丰富增值服务内容的完整的、大规模短信息处理的系统。通过这个平台可以向中国移动、中国联
3、通和小灵通等用户提供发送短信息、定制、点播/订阅、答题,积分福彩,投票 / 竞猜等短信服务,具体应用如电视、电台媒体开展互动业务;报纸、杂志媒体提供新闻服务;气象台、彩票中心、交警提供资讯、商场开展客户调查及促销活动服务等。为简单起见,本文只讨论其中基于中国移动短信网关的系统开发与实现。2 CMPP协议的介绍 CMPP协议,全称是中国移动通信互联网短信接口协议,其规定了以下三个方面的内容:业务提供者与互联网短信网关(ISMG)之间的接口协议;互联网短信网关之间的接口协议;互联网短信网关和汇接网关(GNS)之间的接口协议。图1 互联网短信网关组网结构CMPP协议主要提供以下两类业务操作:短信发送
4、MO 操作:手机用户为起始端;短信接收MT操作:手机用户终止端;CMPP协议和HTTP,FTP,SMTP等协议一样,处于TCP/IP网络模型的应用层,它以TCP/IP协议作为底层通信承载。SP与ISMG之间进行信息交互式可以采用长连接或短连接两种方式。本短消息服务平台所采用的连接方式为长连接,即: SP与ISMG以C/S方式建立连接时,在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发送链路检测包以维持连接。3 系统的结构和功能模块图 系统的层次结构 本短消息服务平台,在典型的网络条件下,具有稳定可靠、处理能力高、组网能力强、系统管理方便、使用灵活等
5、特点,能够满足功能性、稳定性、效率性的要求,同时,该系统拥有强大的后台管理功能和业务处理能力,从而为业务的可持续发展以及用户快速准确获取信息,创造了条件。 整个平台的组成分为四个层次:硬件、网络、通信层:包括支持系统运行的所有服务器、客户机及网络设备、通信链路以及存储设备、输入输出设备等硬件;操作系统层:基于硬件平台之上,提供基本的系统调用及网络通信功能;应用开发层:在操作系统之上的应用开发环境,包括软件开发工具数据库等;应用软件层:面向业务应用,使业务信息化和自动化,用户通过它进行业务上需要的信息处理、信息存储和信息传送等工作,是与操作人员直接相连的部分。 系统结构示意图介绍 系统主要由通信
6、模块,业务处理模块,后台管理模块和数据库部分组成,其软件结构示意图如图2所示:图2 系统软件结构示意图系统支持协议、SGIP、SMGP、SMPP协议。包括MO接收及MT下行的处理,通信程序的编写完全按照协议进行开发。 4 短消息服务平台通信模块的设计 通信模块是短消息服务平台的主要模块,它是SP和各基础网络运营商网关之间的一条高质量的传输通道,负责接收和响应用户请求。该模块主要是通过多线程机制来处理由SP发送到短消息网关的消息和接收由短消息网关发送的消息。通信模块涉及到以下几个重要线程:消息发送线程,消息接收线程,业务处理线程,链路维持线程以及监控线程,其中监控线程作为主线程,是由MFC程序自
7、动创建的主线程,用于创建和监控上述几个辅助线程。通信双方以C/S方式(SP作为客户端,ISMG作为服务器端)建立TCP连接,由函数SP_Connect_ISMG (char IsmgIp 16,unsigned short IsmgPort)实现,该函数封装了TCP/IP的Socket连接建立的过程,其中参数IsmgIp和工IsmgPort分别为短消息网关的IP地址和端口号,然后需要建立CMPP连接以实现SP和ISMG之间的短消息通信,该操作的目的是SP向ISMG注册成为一个合法SP的身份,由函数CMPP_Connect()来实现。至此,双方建立了基于TCP/IP的CMPP应用层连接。 该模块
8、用两个缓冲队列来放置消息,它们分别是用来存放由网关发送的消息接收队列;存放SP发送到网关的消息发送队列。为了让多个线程可以互斥地从收发缓冲队列中存取数据包,必须遵循:当缓冲队列已满时,不能继续接收短信,所有消息接收线程或者MT业务处理线程必须等待;当缓冲队列为空时,不能继续取出短信,所有MO业务处理线程或者消息发送线程必须等待。本通信模块通过使用临界区和信号量技术处理了多线程之间的同步问题。图3 通信模块工作流程图短消息队列及其指针定义typedef struct cmpp_head unsigned longTotalLength;/*消息总长度*/ unsigned longCommand
9、Id;/* 命令或响应类型*/ unsigned longSequenceId;/*消息流水号,顺序累加,步长为1*/ CMPP_HEAD;/*CMPP消息头*/typedef struct cmpp_packet CMPP_HEAD Pk_head; Char DataCMPP_PKG_SIZE; /*消息体*/ unsigned long Seqid;/*统一消息流水号*/ CTime Time;/*写入消息队列时间*/ BOOL Sourse;/*消息类型判断(即为MO还是MT消息*/ CMPP_PACKAGE;/*消息的结构*/CMPP_PACKAGE m_SmSendMAX_SM_S
10、END/ 发送短消息队列CMPP_PACKAGE m_SmRecvMAX_SM_RECV /接收短消息队列 int m_nSendIn/发送队列的输入指针int m_nSendOut /发送队列的输出指针int m_nRecvIn/接收队列的输入指针int m_nRecvOut/接收队列的输出指针其中将短消息存入短消息队列由函数PutRecvMessage实现:void PutRecvMessage(CMPP_PACKAGE * pparam, int nCount) .for (int i = 0; inCount; i+) .memcpy(&m_SmRecvm_nRecvIn, ppara
11、m, sizeof(CMPP_PACKAGE);m_nRecvIn+;if (m_nRecvIn = MAX_SM_RECV) m_nRecvIn = 0;pparam+;.从接收短消息队列中取出一条短信由函数GetRecvMessage实现:BOOL GetRecvMessage(CMPP_PACKAGE * pparam) .EnterCriticalSection(&m_csRecv);if (m_nRecvOut != m_nRecvIn) .memcpy(pparam, &m_SmRecvm_nRecvOut, sizeof(CMPP_PACKAGE);m_nRecvOut+;if
12、(m_nRecvOut = MAX_SM_RECV) m_nRecvOut = 0;. LeaveCriticalSection(&m_csRecv);.5 系统业务处理模块的设计 该模块主要实现各种具体的短信业务,通过对MO消息进行业务分类解析、业务规则处理,直至生成下行MT等结果。图4 业务处理模块流程图 系统将根据用户编辑的短信,判断MO类型,如果是用户点播类服务,根据点播命令和点播内容对数据库中关系记录进行查询,将查询结果生成一条短信排入到输出队列。其他类型服务以次类推。例如用户若定制股票信息:编辑短信息定制代码50代码发送短信平台特服号回馈信息至用户手机。举例:用户定制600001的
13、股票信息,在编辑短信息时输入50600001,按发送键,输入9688,将短信息发送,系统判断为定制类服务,进行定制类服务处理,完成定制类业务的关系记录,并将信息发送给用户。用户将在每交易日的9:40、11:35、15:10收到600001的行情报价和动态股评,18:40收到该股的盘后评述。6 后台管理模块的设计 后台管理系统对合作企业和所有开展的业务进行管理,并提供各种必须的功能。其结构示意图如图5所示:图5 后台管理系统结构示意图 系统管理提供与系统管理相关的所有管理功能,包括公有信息的维护等;通过系统管理功能,管理员可以对整个平台实现相应的设置、定义数据、处理系统信息。具体的说,可以实现机
14、构的管理、权限的管理、业务的管理、以及公共信息管理等功能。 业务管理 业务的基本信息、命令、计费的管理,是业务的管理中心,包括业务配置、业务审核和业务生效等功能,以流程化的形式实现业务全过程的管理。本短消息服务平台典型的业务管理包括通用定制管理和点播/订阅管理。 用户管理模块 是对手机用户的个人信息进行管理的模块,主要包括:用户个人信息,如姓名、手机号、个人爱好等。用户定制信息,如定制内容、发送时间、发送方式;用户信息的分析。 记费管理 计费方式分为两种:包月制、计次制。包月、计次的费用根据不同的栏目可以人工调整。每发送一条信息都要把相关记录写入日志数据库,用来计费以及将来查询使用。日志中应包
15、含用户的手机号码、信息的计费类别、信息发送时间等。根据日志统计用户的费用,同时要把数据上传到移动、联通或电信计费中心,进行对帐。 积分管理 主要包括积分福彩管理和答题积分管理。用户参加该平台开展的互动节目时,可以获得积分,当积分达到指定的标准时,可参加抽奖活动。 日志管理模块 日志管理模块主要提供详细的系统日志管理功能,如已成功发送到中国移动、中国联通等短信网关的日志,通过中国移动、中国联通短信网关已成功发送到SP的日志等。具体包括:信息及节目变更日志,短信收发日志,系统运行日志,系统维护日志。 客服管理 提供客服人员方便地进行终端用户的信息查询,协助及时处理投诉和咨询。 群发管理 支持群发组
16、的号段生成,文件导入,定时群发等多样化的群发。 7 数据库模块的设计 本短消息服务平台采用SQL Server 2000作为后台数据库。SQL Server 2000是一个功能完备的正规数据库管理系统,支持开发的引擎、标准的SQL语言、扩展的特性(如复制、OLAP、分析)等功能, 安全性高、稳定性好, 能支持大量数据的存储。前台使用基于OLE DB 的ADO 接口访问数据库, 能统一访问多种关系和非关系数据库, 并有多种编程接口, 访问速度快、可扩展性好、运行性能高、容易使用。数据库系统是实现系统运行数据的存取、应用用户数据的存取及日志对帐数据的数据服务。主要包括:系统运行中数据的存取,这是对
17、应于具体应用的运行中数据,这部分数据通过数据库的库交换数据方式,保存系统运行中的中间数据并实现向具体的服务进程提供数据服务;应用用户数据的存取,这是对应于具体应用的应用数据。例如,信息定制的手机用户的信息、具体应用的费用信息;用户的信息统一保存在内容数据库中,后台管理人员可以通过管理界面完成信息栏目的添加、删除、修改等操作,每日更新的信息由后台管理人员在内容编辑器中录入。日志对帐数据的存储,这是系统运行的日志信息及用于与移动网络运营商计费系统对帐的系统运行的费用数据的存储,并向应用端提供数据服务。部分数据库表(1)短消息接收表 用于存储从短消息网关接收的短信记录;(2)定时短消息发送表 用于存
18、储短消息平台定时发送的短信;短消息发送表 用于存储即时发送短信以及定时到点可立即发送的短信 ;用户基本信息表 记录用户的手机号码,姓名,兴趣爱好等;系统管理员表 记录管理员的认证信息,用来验证系统管理员的身份;定制表 记录手机用户定制的各种服务信息;点播表 记录手机用户点播的各种服务信息;日志表 记录系统发送和接收短信的历史纪录;含敏感内容消息表 记录用户和系统管理员提交的含有敏感字段的短信日志;费率表 记录不同的业务对应的具体资费;日志与网关对应表 存储日志类型和不同运营商网关协议中的SMS资费对应关系;系统信息表 存储固定的系统信息,如口令提示和使用帮助等;8 结论 本短消息服务平台系统支持多运营商,可以同时接入多家移动、联通或电信,只需添加配置即可,无须做系统结构、代码改动;支持多业务服务,系统实行模块化的设计,方便新业务的开发。该平台目前已经成功应用于实际的短消息增值业务,与中国移动,联通等网关的连接均具有较好的稳定性,能够满足系统通信应用的要求,使用效果良好。参考文献1 互联网短信网关接口协议 中国移动通信公司2 短消息网关系统接口协议中国联合通信公司3 谢希仁. 计算机网络. 电子工业出版社4 潘爱民. Visual C+ 技术内幕.清华大学出版社