基于CMPP3.0的企业短信网关API设计

news/2024/5/17 19:50:55 标签: api, 互联网, 中国移动, query, mobile, tcp
摘 要 CMPP(中国移动点对点协议)规定了移动梦网短信业务开展过程中各网元(包括ISMG、GNS和SP)之间的消息类型和定义,本文讲述基于CMPP3.0标准的企业短信网关设计,支持CONNECT,SUBMIT,DELIVER,QUERY,CANCEL,TERMINATE消息。

  关键词 短信 短信网关CMPP SP ISMG

  1 引言

  随着短信息业务的快速发展,短信息已经成为手机用户最经常使用的业务之一。除了大量使用的手机用户到手机用户的点对点短信业务之外,从信息平台到手机用户的短信信息服务业务也在快速发展,该业务已经成为广大用户及时方便地获取信息的一种手段。在广大服务提供商(SP)的支持下,用户可以采用短信点播或网站定制的方式得到大量有用信息,SP也能通过提供有偿信息服务而获得收益。

  然而手机用户和SP的交互必须通过基于CMPP的短信网关。CMPP(China Mobile Peer to Peer)中国移动点对点协议,目前为3.0版本,是中国移动通信集团公司发布,规定了移动梦网短信业务开展过程中各网元(包括ISMG、GNS和SP)之间的消息类型和定义,规定了以下三方面的内容:1)业务提供商与互联网短信网关之间的接口协议;2)互联网短信网关之间的接口协议;3)互联网短信网关与汇接网关之间的接口协议。

  文章组织如下:第2节分析介绍了CMPP3.0;第3节分析设计企业短信网关API;第4节给出了SP的发展趋势,最后对全文进行总结。

  2 CMPP3.0

  2.1网络结构

  如图1所示:


图1 互联网短信网关组网结构

  如图1所示,互联网短信网关(ISMG)是业务提供商(SP)与移动网内短信中心之间的中介实体,互联网短信网关一方面负责接收SP发送给移动用户的信息和提交给短信中心。另一方面,移动用户点播SP业务的信息将由短信中心通过互联网短信网关发给SP。另外,为了减轻短信中心的信令负荷,互联网短信网关还应根据路由原则将SP提交的信息转发到相应的互联网短信网关。互联网短信网关通过向汇接网关(GNS)查询的方式获得网关间的转发路由信息。

  另外,ISMG还必须与数据业务管理平台DSMP进行连接,在业务流程中对用户、业务以及定购关系等进行鉴权并对业务进行批价。

  CMPP协议主要提供以下两类业务操作:

  (1)短信发送(Short Message Mobile Originate,SM MO)

  (2)短信接收(Short Message Mobile Terminated,SM MT)

  2.2 CMPP协议栈

  CMPP协议以TCP/IP作为底层通信承载,具体结构由图2所示:


图2 CMPP协议栈

  2.3 通讯方式

  各网元之间共有两种连接方式:长连接和短连接。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发链路检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对CMPP消息的发送。

  现阶段,要求ISMG之间必须采用长连接的通信方式,建议SP与ISMG之间采用长连接的通信方式。

  2.4 CMPP涉及的端口号

端口号 应用
7890 长连接(SP与网关间)
7900 短连接(SP与网关间)
7930 长连接(网关之间)
9168 短连接(短信网关与汇接网关之间)

  2.5交互过程中的应答方式

  在SP与ISMG之间、SMSC与ISMG之间及ISMG之间的交互过程中均采用异步方式,即任一个网元在收到请求消息后应立即回送响应消息。举例如图3所示:


图3 异步交互方式示意图

  3 企业短信网关设计

  企业短信网关API必须实现CMPP3.0中业务提供商(SP)与互联网短信网关(ISMG)间的消息定义所规定的七个操作。

  ⑴ SP请求连接到ISMG(CMPP_CONNECT)操作

  CMPP_CONNECT操作的目的是SP向ISMG注册作为一个合法SP身份,若注册成功后即建立了应用层的连接,此后SP可以通过此ISMG接收和发送短信。ISMG以CMPP_CONNECT_RESP消息响应SP的请求。

  ⑵ SP或ISMG请求拆除连接(CMPP_TERMINATE)操作

  CMPP_TERMINATE操作的目的是SP或ISMG基于某些原因决定拆除当前的应用层连接而发起的操作。此操作完成后SP与ISMG之间的应用层连接被释放,此后SP若再要与ISMG通信时应发起CMPP_CONNECT操作。

  ISMG或SP以CMPP_TERMINATE_RESP消息响应请求。

  ⑶ SP向ISMG提交短信(CMPP_SUBMIT)操作

  CMPP_SUBMIT操作的目的是SP在与ISMG建立应用层连接后向ISMG提交短信。

  ISMG以CMPP_SUBMIT_RESP消息响应。

  ⑷ SP向ISMG查询发送短信状态(CMPP_QUERY)操作

  CMPP_QUERY操作的目的是SP向ISMG查询某时间的业务统计情况,可以按总数或按业务代码查询。ISMG以CMPP_QUERY_RESP应答。

  ⑸ ISMG向SP送交短信(CMPP_DELIVER)操作

  CMPP_DELIVER操作的目的是ISMG把从短信中心或其它ISMG转发来的短信送交SP,SP以CMPP_DELIVER_RESP消息回应。

  ⑹ SP向ISMG发起删除短信(CMPP_CANCEL)操作

  CMPP_CANCEL操作的目的是SP通过此操作可以将已经提交给ISMG的短信删除,ISMG将以CMPP_CANCEL_RESP回应删除操作的结果。

  ⑺ 链路检测(CMPP_ACTIVE_TEST)操作

  本操作仅适用于通信双方采用长连接通信方式时用于保持连接。

  以下为CMPPAPI实现的java部分代码

public final class CMPPAPI
{
 …….
 public CMPPAPI()
 {
  ….. //初始化,完成SP请求连接到ISMG(CMPP_CONNECT)操作
 }
 public int CMPPSendSingle(…)
 {
  …..//发送短信,完成SP向ISMG提交短信(CMPP_SUBMIT)操作
 }
 public int CMPPSendBatch(…)
 {
  …..//群发短信
 }
 public int CMPPQuery(…)
 {
  …..//查询短信流量,完成SP向ISMG发起删除短信(CMPP_CANCEL)操作
 }
 public int CMPPDeliver(…)
 {
  …..//接受短信,完成ISMG向SP送交短信(CMPP_DELIVER)操作
 }
 public int CMPPCancel(..)
 {
  …..//取消短信,完成SP向ISMG发起删除短信(CMPP_CANCEL)操作
 }
 public int CMPPActiveTest(..)
 {
  …// 检查ISMG短信网关是否提供服务,链路检测(CMPP_ACTIVE_TEST)操作
 }
 public int CMPPAnalyzeStatusReport(..)
 {
  …..//分析状态报告内容
 }
}

  4 结束语

  当前短信业务蓬勃发展,移动数据业务将成为运营商的重要收入来源,移动互联网用户数大幅增长。

  CMPP作为中国移动网关与服务提供商(SP)之间的交互协议,在SP技术发展中具有重要的作用。本文深入分析CMPP3.0协议的结构和底层通讯方式,给出实现CMPP3.0的企业短信网关API,为SP接入移动短信业务提供实现方法。

  但本文也存在一些不足,CMPP3.0是一个复杂的协议,也是互联网短信网关的接口协议,作者将继续对CMPP3.0的研究,进一步深化本文的工作。

 

http://www.niftyadmin.cn/n/1415284.html

相关文章

Please ensure that adb is correctly located at……问题解决方案

遇到问题描述: 运行android程序控制台输出 [2013-10-13 16:45:50 - ] The connection to adb is down, and a severe error has occured. [2013-10-1316:45:50 - ] You must restart adb and Eclipse. [2013-10-1316:45:50 - ] Please ensure that adb is cor…

Kafka彻底删除topic

kafka默认仅做删除标记,并没有真实删除,若要真实删除topic 方法一:修改配置文件server.properties并进行重启 server.properties添加:delete.topic.enabletrue,然后重启 删除测试 # 创建topic > ./bin/kafka-to…

delphi 7的TSeverSocket和TClientSocket组件哪里去了

TClientSocket 本来是D5默认安装的,但是D7使用的Indy组件后,就没有默认安装了,如果你喜欢这个组件,可以在D7的安装目录bin文件夹找到dclsockets70.bpl组件包,安装上去就OK了.rtl70.bpl是TCientSocket和TServerSocket必需的运行包.

FastAPI学习-Form数据 文件请求

接收From数据需要安装第三方模块:pip install python-multipart 字段参数 Form使用方法与Query Path Cookie一样,但需要引入Form模块 from fastapi import FastAPI, Formapp FastAPI()app.post("/login/") async def login(*, username: s…

机器学习中的Embeddings是什么

嵌入已经渗透到数据科学家的工具包中,并极大地改变了 NLP、计算机视觉和推荐系统的工作方式。然而,许多数据科学家发现它们过时且令人困惑。更多的人在不了解它们是什么的情况下盲目地使用它们。在本文中,我们将深入探讨嵌入是什么、它们如何…

第一次实验报告

中国人民公安大学 Chinese people’ public security university 网络对抗技术 实验报告 实验一 网络侦查与网络扫描 学生姓名 王磊 年级 2015级 区队 二区 指导教师 高见 信息技术与网络安全学院 2018年9月19日 实验任务总纲 2018—2019 学年 第 一 学期 一、实验…

如何在rootscope 获取angular ui的tab子域 scope 也叫子域暴露

2019独角兽企业重金招聘Python工程师标准>>> 可以 通过 在tab上 定义 ng-init"$parent.tabscopethis”; 然后在 tab 的父级scope 中便能找到 tabscope 数组 有多少个tab就有多少个子域 这算是子域暴露的一种方法 转载于:https://my.oschina.net/u/1040928/blo…

FastAPI学习-错误处理

FastAPI针对错误的处理有以下几种方式: 默认异常处理 使用Exception模块,注意:返回使用raise,而不是return from fastapi import FastAPI, HTTPExceptionapp FastAPI()items {"foo": "The Foo Wrestlers"…