短信接口
- 格式:doc
- 大小:128.00 KB
- 文档页数:12
Web Service接入模式Web Service 发送短信模式Web Service 路径:/WS/LinkWS.asmx系统提供8个接口: 注册接口Reg、更改密码接口UpdPwd、修改注册信息UpdReg、查询余额接口SelSum、发送信息接口Send、群发短信接口 BatchSend 、短信报告接口 GetReportSMS、接收短信Get注册接口Reg输入参数:参数说明类型LoginName代理商账号StringLoginPwd 代理商密码StringCorpName 企业名称StringLinkMan 联系人StringTel 联系电话StringMobile 联系人手机StringEmail 邮件StringMemo 其他备注StringCorpID 用户账号StringPass 用户密码String输出参数:输出返回值参数状态说明OK 注册成功错误文本失败C# 实例:try{Dxt.LinkWS LinkWs=new dxt.LinkWS();String ReS=LinkWs.Reg(LoginName, LoginPwd, CorpName, LinkMan, Tel, Mobile, Email, CorpID, Pass);if(ReS=="OK"){MessageBox.Show("注册成功" );}else{MessageBox.Show("注册失败!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );}更改密码UpPwd输入参数参数说明类型CorpID 帐号StringPwd 密码StringNewPwd 新密码String输出参数:输出返回值参数状态说明0 密码修改成功–1 账号未注册–2 其他错误–3 密码错误C# 实例:try{Dxt.LinkWS LinkWs=new Dxt.LinkWS();intUpdPwd=LinkWs.Reg(CorpID.Text.Trim(),Pwd.Text.Trim(),NewPwd.Text.Trim());if(ReS==0){MessageBox.Show("密码修改成功" );}else if(ReS==-1){MessageBox.Show("账号未注册" );}else if(ReS==-2){MessageBox.Show("其他错误!" );}else if(ReS==-3){MessageBox.Show("密码错误!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );修改注册信息 UpdReg输入参数:参数说明类型CorpID 账号String Pwd 密码String CorpName 企业名称String LinkMan 联系人String Tel 联系电话String Mobile 联系人手机String Email 邮件String Memo 其他备注String输出参数:输出返回值参数状态说明0 修改成功–1 账号未注册–2 其他错误–3 密码错误C# 实例:try{Dxt.LinkWS LinkWs=new dxt.LinkWS();ReS=LinkWs.UpdReg(CorpID.Text.Trim(),Pwd.Text.Trim(),CorpName.Text.Trim(),LinkMan.Text.Tr im(),Tel.Text.Trim(),Mobile.Text.Trim(),Email.Text.Trim(),Memo.Text.Trim());if(ReS==0){MessageBox.Show("成功修改注册信息" );}else if(ReS==-1){MessageBox.Show("帐号未注册!" );}else if(ReS==-2){MessageBox.Show("其他错误!" );}else if(ReS==-3){MessageBox.Show("帐号密码不匹配!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );查询余额SelSum输入参数参数说明类型CorpID 帐号StringPwd 密码String输出参数:输出返回值参数状态说明0 剩余条数–1 账号未注册–2 其他错误–3 密码错误C# 实例:try{Dxt.LinkWS LinkWs=new dxt.LinkWS();int ReS=LinkWs.SelSum(CorpID.Text.Trim(),Pwd.Text.Trim());if(ReS>=0)MessageBox.Show("还剩"+ReS.ToString()+"条" );}else if(ReS==-1){MessageBox.Show("帐号未注册!" );}else if(ReS==-2){MessageBox.Show("其他错误!" );}else if(ReS==-3){MessageBox.Show("帐号密码不匹配!" );}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );}发送短信 Send(返回状态报告ID)输入参数:参数说明类型CorpID 账号StringPwd 密码StringMobile 发送手机号码StringContent 发送内容(需要UrlEncode)StringCell 子号StringSendTime 定时发送时间String 2012/2/6 17:02:00 输出参数:输出返回值参数状态说明大于0的数字发送成功(得到大于0的数字、作为取报告的id)–1 账号未注册–2 其他错误–3 密码错误–4 手机号格式不对–5 余额不足–6 定时发送时间不是有效的时间格式–7 禁止10小时以内向同一手机号发送相同短信-10 需要审核的信息C# 实例:try{Dxt.LinkWS LinkWs=new Dxt.LinkWS();intReS=LinkWs.Send2(CorpID.Text.Trim(),Pwd.Text.Trim(),SendMobile.Text.ToString().Trim(),Sen dContent.Text.ToString().Trim(),"",SendTime.Text.ToString().Trim());if (ReS == 0){MessageBox.Show("发送成功!" );}else if(ReS==-1){MessageBox.Show("帐号未注册!") ;}else if(ReS==-2){MessageBox.Show("其他错误!") ;}else if(ReS==-3){MessageBox.Show("帐号密码不匹配!") ;}else if(ReS==-4){MessageBox.Show("手机号码不正确!") ;}else if(ReS==-5){MessageBox.Show("余额不足!") ;}else if(ReS==-6){MessageBox.Show("定时发送时间不是有效时间!") ;}else if(ReS==-7){MessageBox.Show("禁止10小时之内向同一手机发送相同内容") ;}}catch (.WebException WebExcp){MessageBox.Show("网络错误,无法连接到服务器!" );}群发短信 BatchSend(返回状态报告ID)输入参数:备注:相同内容的号码尽量一个包提交(一次性最多支持600个号码)。
快速上⼿短信服务——榛⼦云短信接⼝前⾔ ⼤家第⼀次使⽤短信服务应该都是⽤于学习,⽽阿⾥云、腾讯云...等⼤⼚的云服务审核⽐较严格,对于学习者⼤概率⽆法通过,于是在此提供⼀个⽆需审核即可使⽤的短信服务接⼝⽤于学习 —— 。
使⽤步骤1.注册账号2.创建短信模板注意:创建短信模板是⼈⼯审核,不会写可参考腾讯云、阿⾥云短信模板,由于是⼩公司,审核较慢,建议尽早创建。
创建完成后会⽣成⼀个模板 ID(templateId) 这就是本模板的标识,通过 templateId 使⽤该模板发送短信。
3.查看 AppId 和AppId 和 AppSecret ⽤于标识发送⽤户,注意不要泄露,防⽌被⾮法使⽤。
4.封装短信服务导⼊所需要的依赖1<dependency>2<groupId>com.zhenzikj</groupId>3<artifactId>zhenzisms</artifactId>4<version>2.0.2</version>5</dependency>封装 Sms ⼯具类1public class SendSms {2public static void send(String phoneNumber, String code) {3// 使⽤⾃⼰的 AppId 和 AppSecret4ZhenziSmsClient client = new ZhenziSmsClient("https://sms_", "XXXXXX", "XXXX-XXX-XXXX");5Map<String, Object> params = new HashMap<>();6params.put("number", phoneNumber);7// 修改为⾃⼰的templateId8params.put("templateId", "XXXX");9String[] templateParams = new String[1];10templateParams[0] = code;11params.put("templateParams", templateParams);12try {13String result = client.send(params);14System.out.println(result);15} catch (Exception e) {16e.printStackTrace();17}18}19}5.测试使⽤短信服务。
短信上行接口
一、程序调用地址:合作方提供
二、调用方式:
MO接口采用HTTP GET方式
IP:61.135.159.23和61.135.159.155和61.135.158.233(如需IP鉴权用此ip) 参数说明:字段及解释
1.mobile------手机号
2.send_time------用户上行时间(YYYY-MM-DD HH:MM:SS)
3.msg------------用户发送内容 (会做urlencode,GB2312)
4.linkid-----------内部参数,关联上下行的(如需要则提供,否则可以不用)
5.longnum---------上行长代码
6.feecode------------------- 资费(资费,以分为单位)
注:URLEncode:一般为地址栏中的中文字加密时使用,转换后,原明文的汉字将变成加密字符串,但可被浏览器识别。
因为上行内容中有可能有空格或者中文什么的,怕传输有问题,所以我们这边先做encode传输
短信MR接口
一、程序调用地址:合作方提供
二、调用方式:
MR接口采用HTTP GET方式
IP:61.135.159.23 (如需IP鉴权用此ip)
传递参数包括三个:
1. linkid 匹配下行用的linkid
2.mobile 手机号
3. status 状态报告(0成功,1失败) 成功入库返回OK。
专业 稳定 快捷 优惠短信接口收费标准现如今,大数据时代的到来为我们的生活了便捷。
我们在享受信息的方便时是否会问到,我们的信息是如何发送出去的?短信接口就起到了作用,那么,短信接口收费标准是什么?为此,安徽德能信息科技有限公司为大家总结了相关信息,希望能够为大家带来帮助。
首先让我们了解一下什么是短信接口,标准化SDK 软件开发包(短信接口)适应Basic 、C 、Java 等多种主流开发语言,适应Windows 、Linux 、Unix 等运行环境,彻底解决各个合作伙伴不同开发语言及开发环境的需求。
短信接口有两个方面的功能,一个是向SDK 二次开发的系统提供SDK 函数,这些函数包括及时发送短信函数、定时发送短信函数、接收短信函数、接收发送状态报告函数等,另一个是与短信群发平台通讯,收发短信息。
二次开发,简单的说就是在现有的软件上进行定制修改,功能的专业 稳定 快捷 优惠扩展,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。
根据不同的客户的需要,一些中小公司为客户根据需求在该平台上进行第二次有针对性的开发。
实现短信息的收发;与不同移动运营商系统的连接,由移动运营商将短信息发送到用户的手机。
专门为行业大中型企业定制,以数据库操作为基础,支持Oracle 、SQL Server 、DB2、Mysql 、Sybase 等目前主流数据库,方便快捷的与企业现有的CRM 、OA 、ERP 等业务应用系统无缝对接,封装了 CMPP2.0的短消息通讯协议,提高企业资料的安全性,降低开发周期和开发成本,轻松实现短消息网关的连接和企业的移动商务应用。
目前来说,短信平台的收费没一个统一的标准,各家公司的体制不一样,对外报价也不尽相同,合理的市场价格是在5分-7分。
安徽德能信息科技有限公司是移动、联通、电信三大运营商的战略合作伙伴,致力于为客户提供企业信息手机媒体应用服务,是移动商务服务商公司。
公司业务主要包括:手机移动营销发送、互动、二次接口开发!为平台提供内部信息的共享、交流、数据管理和挖掘等各类解决方案,包括:自动发送、订单提醒等!平台致力于开发通信、INTERNET等领域的信息服务项目,面向无线运营商、企业、及无线终端用户提供全套应用服务和技术解决方案,相继推出一系列无线互联应用产品及应用服务。
⽤于发短信,拨打电话的⽹站接⼝我使⽤了云之讯来作为我的通讯第三⽅,平台提供了详细的接⼝说明和资费说明。
到他们官⽹可以下载到C#的demo,在我开发的过程中发现他们的demo缺少了⼀个语⾳电话,根据他们的协议要,写了⼀个《云之讯语⾳通知协议》///<summary>///电话语⾔提醒///</summary>///<param name="toPhone">被叫号码,可以是正常⼿机号码、固定号码,被叫为座机时需要添加区号,如:0755********。
</param>///<param name="toSerNum">语⾳通知的被叫侧显⽰的号码。
可显⽰⼿机号码、400号码或固话。
查阅显号规则。
</param>///<param name="type">内容类型:0:⽂本;1:语⾳ID</param>///<param name="content">当type为0时:⽂本内容,平台负责将该内容转成语⾳,呼通指定号码后,播放该语⾳⽂件;当type为1时:表⽰语⾳ID(语⾳⽂件必须先上传)。
</param> ///<param name="playTimes">循环播放次数,1-3次,默认播放1次。
</param>///<returns>包体内容</returns>public string CallUpSomebody( string toPhone, string toSerNum,string type,string content,string playTimes){if (toPhone == null){throw new ArgumentNullException("toPhone");}try{string date = DateTime.Now.ToString("yyyyMMddHHmmss");// 构建URL内容string sigstr = MD5Encrypt(m_mainAccount + m_mainToken + date);string uriStr;string xml = (m_bodyType == EBodyType.EType_XML ? ".xml" : "");uriStr = string.Format("https://{0}:{1}/{2}/Accounts/{3}/Calls/voiceNotify{4}?sig={5}", m_restAddress, m_restPort, softVer, m_mainAccount, xml, sigstr);Uri address = new Uri(uriStr);WriteLog("CallBack url = " + uriStr);// 创建⽹络请求HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;setCertificateValidationCallBack();// 构建Headrequest.Method = "POST";Encoding myEncoding = Encoding.GetEncoding("utf-8");byte[] myByte = myEncoding.GetBytes(m_mainAccount + ":" + date);string authStr = Convert.ToBase64String(myByte);request.Headers.Add("Authorization", authStr);// 构建BodyStringBuilder data = new StringBuilder();if (m_bodyType == EBodyType.EType_XML){request.Accept = "application/xml";request.ContentType = "application/xml;charset=utf-8";data.Append("<?xml version='1.0' encoding='utf-8'?><voiceNotify>");data.Append("<appId>").Append(m_appId).Append("</appId>");data.Append("<to>").Append(toPhone).Append("</to>");data.Append("<type>").Append(type).Append("</type>");data.Append("<content>").Append(content).Append("</content>");data.Append("<toSerNum>").Append(toSerNum).Append("</toSerNum>");data.Append("<playTimes>").Append(playTimes).Append("</playTimes>");data.Append("</voiceNotify>");}else{request.Accept = "application/json";request.ContentType = "application/json;charset=utf-8";data.Append("{");data.Append("\"voiceNotify\":{");data.Append("\"appId\":\"").Append(m_appId).Append("\"");data.Append(",\"to\":\"").Append(toPhone).Append("\"");data.Append(",\"type\":\"").Append(type).Append("\"");data.Append(",\"content\":\"").Append(content).Append("\"");data.Append(",\"toSerNum\":\"").Append(toSerNum).Append("\"");data.Append(",\"playTimes\":\"").Append(playTimes).Append("\"");data.Append("}}");}byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());WriteLog("CreateSubAccount requestBody = " + data.ToString());// 开始请求using (Stream postStream = request.GetRequestStream()){postStream.Write(byteData, 0, byteData.Length);}// 获取请求using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) {// Get the response streamStreamReader reader = new StreamReader(response.GetResponseStream());string responseStr = reader.ReadToEnd();WriteLog("CreateSubAccount responseBody = " + responseStr);if (responseStr != null && responseStr.Length > 0){return responseStr;}}return null;}catch (Exception e){throw e;}}以上都提供了demo。
短信接口防刷思路
1. 记录发送短信的手机号码和发送时间,建立一个黑名单机制。
当某个手机号码发送短信的次数达到一定阈值或在短时间内发送短信的频率过高时,将该手机号码加入黑名单,禁止其继续发送短信。
2. 设置短信发送频率限制。
通过限制每个手机号码在一定时间内只能发送一定数量的短信,防止恶意刷短信。
对于频繁发送短信的手机号码,可以暂时禁止其继续发送短信,并进行人工审核。
3. 引入验证码验证。
在进行短信发送前,要求用户进行验证码验证,确保发送短信的是一个有效的用户。
验证码可以通过图形验证码、短信验证码等形式进行,提高安全性。
4. 加入IP地址筛选机制。
根据IP地址进行筛选,如果某个IP
地址频繁发送短信,则将该IP地址列入黑名单,禁止其继续
发送短信。
5. 引入机器学习和模型预测。
通过分析历史数据,训练机器学习模型来判断短信是否为垃圾短信或恶意刷短信,进一步提高短信防刷的准确性。
WEBSERVICES 接口说明1接口说明集团客户应用系统和应用插件通过此接口收发短消息。
WebService方式通信适配插件收到应用插件的发送请求后,通过MAS服务器基座中的SMS通信协议模块发送SMS;当从SMS通信协议模块收到SMS后,通过此接口将短消息发送给集团客户应用系统和应用插件。
2流程说明短消息接口包括发送和接收两个流程。
图5-4短消息发送流程示意图发送短信由应用系统或应用插件发起,通过sendSms操作实现。
在提交短信发送请求之后,应用侧可以主动获取短信发送状态(getSmsDeliveryStatus操作),或由WebService 方式通信适配插件通知应用侧短信发送状态(notifySmsDeliveryStatus操作)。
图5-5短消息接收流程示意图接收短信可以通过两种方式,一种是由应用侧发起(GetReceivedSms操作),WebService方式通信适配插件将所接收到的发往该应用的短信在响应中提交;第二种是由WebService方式通信适配插件通知应用侧有短信到达(notifySmsReception操作),短信内容包含在请求中。
3数据类型Deliverystatus含义:传送状态数据类型:枚举,定义如下:DeliveryI nformatio n含义:传送消息数据类型:结构。
定义如下:SMSMessage含义:短消息信息数据类型:结构。
定义如下:MessageFormat含义:消息编码类型数据类型:枚举。
定义如下:Sen dMethodType含义:发送选项数据类型:枚举。
定义如下:4接口定义4.1发送短消息操作:sen dSmssen dSms调用是由应用系统或插件发起,请求发送一条短消息到一个指定地址(或地址集合),该短消息由Message描述,目的地址由DestinationAddress描述。
对于可任意扩展服务代码的应用,应用可以通过ExtendCode填写应用内部的扩展码,MAS服务器需自动在其前面补充为该业务分配的长服务号码。
php与阿⾥云短信接⼝接⼊使⽤阿⾥云短信API,需要在控制台获取以下必要参数,其中需要⾃⼰⼿机验证+官⽅审核多次,尤其审核需要保持耐⼼。
1. accessKeyId 相当于你的个⼈账户密钥;2. accessKeySecret 与上是成对的;3. SignName 个⼈签名,在发出去的短信中,这个签名会显⽰在开头,类似【签名】亲爱的⽤户...... 这种格式,SignName需要通过提交审核;4.TemplateCode 模板代码,阿⾥云短信是⽆法完全⾃定义短信的,需要通过审核的模板,然后⾃⼰再替换掉模板中的变量,如模板:“您的验证码是${code}” ,code就是变量,使⽤时需设置变量值{"code":"12345"}(设置变量值的过程在demo中实现),短信发出去后变成:“您的验证码是12345”,每个通过审核的模板会提供⼀个模板代码;最新的阿⾥云短信接⼝,适⽤于阿⾥⼤于搬家以后的情况。
之前⼀直⽤阿⾥⼤于的短信接⼝,最近上项⽬时发现阿⾥⼤于悄悄地搬家到了阿⾥云!阿⾥云的SDK⽂件繁多,看得⼀头雾⽔!下⾯代码是最新的可适⽤于阿⾥云短信服务的类,亲测成功!<?php/*** 阿⾥云短信验证码发送类* @author Administrator**/class Sms {// 保存错误信息public $error;// Access Key IDprivate $accessKeyId = '';// Access Access Key Secretprivate $accessKeySecret = '';// 签名private $signName = '';// 模版IDprivate $templateCode = '';public function __construct($cofig = array()) {$cofig = array ('accessKeyId' => 'xxxxxxxxxxx','accessKeySecret' => 'xxxxxxxxxx','signName' => '你的签名','templateCode' => 'SMS_76510109');// 配置参数$this->accessKeyId = $cofig ['accessKeyId'];$this->accessKeySecret = $cofig ['accessKeySecret'];$this->signName = $cofig ['signName'];$this->templateCode = $cofig ['templateCode'];}private function percentEncode($string) {$string = urlencode ( $string );$string = preg_replace ( '/\+/', '%20', $string );$string = preg_replace ( '/\*/', '%2A', $string );$string = preg_replace ( '/%7E/', '~', $string );return $string;}/*** 签名** @param unknown $parameters* @param unknown $accessKeySecret* @return string*/private function computeSignature($parameters, $accessKeySecret) {ksort ( $parameters );$canonicalizedQueryString = '';foreach ( $parameters as $key => $value ) {$canonicalizedQueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value ); }$stringToSign = 'GET&%2F&' . $this->percentencode ( substr ( $canonicalizedQueryString, 1 ) );$signature = base64_encode ( hash_hmac ( 'sha1', $stringToSign, $accessKeySecret . '&', true ) );return $signature;}/*** @param unknown $mobile* @param unknown $verify_code**/public function send_verify($mobile, $verify_code) {$params = array ( //此处作了修改'SignName' => $this->signName,'Format' => 'JSON','Version' => '2017-05-25','AccessKeyId' => $this->accessKeyId,'SignatureVersion' => '1.0','SignatureMethod' => 'HMAC-SHA1','SignatureNonce' => uniqid (),'Timestamp' => gmdate ( 'Y-m-d\TH:i:s\Z' ),'Action' => 'SendSms','TemplateCode' => $this->templateCode,'PhoneNumbers' => $mobile,//'TemplateParam' => '{"code":"' . $verify_code . '"}''TemplateParam' => '{"time":"1234"}' //更换为⾃⼰的实际模版);//var_dump($params);die;// 计算签名并把签名结果加⼊请求参数$params ['Signature'] = $this->computeSignature ( $params, $this->accessKeySecret );// 发送请求(此处作了修改)//$url = 'https:///?' . http_build_query ( $params );$url = '/?' . http_build_query ( $params );$ch = curl_init ();curl_setopt ( $ch, CURLOPT_URL, $url );curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt ( $ch, CURLOPT_TIMEOUT, 10 );$result = curl_exec ( $ch );curl_close ( $ch );$result = json_decode ( $result, true );//var_dump($result);die;if (isset ( $result ['Code'] )) {$this->error = $this->getErrorMessage ( $result ['Code'] );return false;}return true;}/*** 获取详细错误信息** @param unknown $status*/public function getErrorMessage($status) {// 阿⾥云的短信乱⼋七糟的(其实是⽤的阿⾥⼤于)// https:///doc2/apiDetail?spm=a3142.7629140.1.19.SmdYoA&apiId=25450 $message = array ('InvalidDayuStatus.Malformed' => '账户短信开通状态不正确','InvalidSignName.Malformed' => '短信签名不正确或签名状态不正确','InvalidTemplateCode.MalFormed' => '短信模板Code不正确或者模板状态不正确','InvalidRecNum.Malformed' => '⽬标⼿机号不正确,单次发送数量不能超过100','InvalidParamString.MalFormed' => '短信模板中变量不是json格式','InvalidParamStringTemplate.Malformed' => '短信模板中变量与模板内容不匹配','InvalidSendSms' => '触发业务流控','InvalidDayu.Malformed' => '变量不能是url,可以将变量固化在模板中');if (isset ( $message [$status] )) {return $message [$status];}return $status;}}调⽤⽅法://⽣成验证码$mobile = 'xxxxxxx';$code = rand ( 1000, 9999 );//发送短信$sms = new Sms();//测试模式$status = $sms->send_verify($mobile, $code); if (!$status) {echo$sms->error;}。
中国移动通信
互联网短信网关接口协议
C h i n a M o b i l e P o i n t t o P o i n t
版本号:3.0.0
1通信方式 (3)
2消息定义 (4)
2.1 基本数据类型 (4)
2.2 消息结构 (4)
2.3 消息头格式(Message Header) (4)
2.4 集团用户(EC)与短信服务平台(SSP)间的消息定义 (4)
2.4.1 EC请求连接到SSP(SSP_CONNECT)操作 (4)
2.4.2 EC或SSP请求拆除连接(SSP_TERMINATE)操作 (6)
2.4.3 EC向SSP提交短信(SSP_SUBMIT)操作 (6)
2.4.4 SSP向EC提交短信(SSP_DELIVER)操作 (8)
2.4.5 SSP向EC提交账户余额(SSP_REMAIN_NOTIFY)操作 (9)
2.4.6 SSP向EC送交状态报告(SSP_REPORT )操作 (9)
2.4.7 链路检测(SSP_ACTIVE_TEST)操作 (11)
3 Command_Id定义 (11)
4API说明 (12)
1通信方式
通信双方以客户-服务器方式建立TCP连接,用于双方信息的相互提交。
当信道上没有数据传输时,通信双方应每隔时间C发送链路检测包以维持此连接,当链路检测包发出超过时间T后未收到响应,应立即再发送链路检测包,再连续发送N-1次后仍未得到响应则断开此连接。
参数C、T、N原则上应可配置,现阶段建议取值为:C=3分钟,T=60秒,N=3。
网关与EC之间、网关之间的消息发送后等待T秒后未收到响应,应立即重发,再连续发送N-1次后仍未得到响应则停发。
现阶段建议取值为:T=60秒,N=3。
消息采用并发方式发送,加以滑动窗口流量控制,窗口大小参数W可配置,现阶段建
议为16,即接收方在应答前一次收到的消息最多不超过16条。
拆除TCP连接
2消息定义
2.1 基本数据类型
2.2 消息结构
2.3 消息头格式(Message Header)
2.4 集团用户(EC)与短信服务平台(SSP)间的消息定义
EC为客户端,向作为服务器端的SSP发起连接请求,在通过身份验证之后EC与SSP 之间方可进行数据传输。
2.4.1 EC请求连接到SSP(SSP_CONNECT)操作
SSP_CONNECT操作的目的是EC向SSP注册作为一个合法EC身份,若注册成功后即建立了应用层的连接,此后EC可以通过此连接发送短信。
SSP以SSP_CONNECT_RESP消息响应SP的请求。
2.4.1.1 SSP_CONNECT消息定义(EC→SSP)
2.4.1.2 SSP_CONNECT_RESP消息定义(SSP→ EC)
2.4.2 EC或SSP请求拆除连接(SSP_TERMINATE)操作
SSP_TERMINATE操作的目的是EC或SSP基于某些原因决定拆除当前的应用层连接而发起的操作。
此操作完成后EC与SSP之间的应用层连接被释放,此后EC若再要与ISMG通信时应发起SSP_CONNECT操作。
SSP或EC以SSP_TERMINATE_RESP消息响应请求。
2.4.2.1 SSP_TERMINATE消息定义(EC→SSP或SSP → EC)
无消息体。
2.4.2.2 SSP_TERMINATE_RESP消息定义(EC→SSP或SSP → EC)
无消息体。
2.4.3 EC向SSP提交短信(SSP_SUBMIT)操作
SSP_SUBMIT操作的目的是EC在与ISMG建立应用层连接后向ISMG提交短信。
ISMG以SSP_SUBMIT_RESP消息响应。
2.4.
3.1 SSP_SUBMIT消息定义(EC→SPP)
2.4.
3.2 SSP_SUBMIT_RESP消息定义(SSP EC)
2.4.4 SSP向EC提交短信(SSP_DELIVER)操作
SSP_DELIVER操作的目的是SSP把从行业网关转发来的短信送交EC,EC以SSP_DELIVER_RESP消息回应。
2.4.4.1 SSP_DELIVER消息定义(SSP→EC)
2.4.4.2 SSP_DELIVER_RESP消息定义(EC → SSP)
2.4.5 SSP向EC提交账户余额(SSP_REMAIN_NOTIFY)操作
2.4.5.1 SSP_REMAIN_NOTIFY消息定义(SSP→EC)
2.4.5.2 SSP_REMAIN_NOTIFY_RESP消息定义(EC → SSP)
2.4.6 SSP向EC送交状态报告(SSP_REPORT )操作
2.4.6.1 SSP_REPORT消息定义(SSP→EC)
状态报告表示SSP已提交信息到行业网关
Stat字段定义
2.4.6.2 SSP_REPORT_RESP消息定义(EC→ SSP)
2.4.7 链路检测(SSP_ACTIVE_TEST)操作
本操作仅适用于通信双方采用长连接通信方式时用于保持连接。
2.4.7.1 SSP_ACTIVE_TEST定义(EC→ SSP或SSP→EC)
无消息体。
2.4.7.2 SSP_ACTIVE_TEST_RESP定义(EC → SSP或SSP→EC)无消息体。
3 Command_Id定义
中国移动通信集团公司发布
4API说明
详见API测试代码
中国移动通信集团公司发布。