4、下行短信发送WebService、下行短信发送服务 -功能详细设计 --短信平台
3、 下行短信发送WebService
开发一个WebService,供第三方系统调用,用于发送短信。WebService接收数据后,将信息存储入数据库的短信发送数据表中。
WebService参数包括:应用标识、手机号码(字符串数组类型)、短信内容、扩展码(3-8位数字)、优先级(数字1至5)、定时发送时间(可null为即时发送)、发送人ID(内部机构人员管理系统的ID)、发送人全路径。
同时开发另一个WebService,与原有旧系统接口完全相同,用于调用旧短信平台的第三方系统无缝切换到新短信平台。
Webservice实现如下:
- /// <summary>
- /// 发送短信服务
- /// 成功:返回MsgGroup,格式为"success:" + MsgGroup
- /// 异常:返回异常信息
- /// </summary>
- /// <param name="appCode">应用标识</param>
- /// <param name="mobiles">手机号</param>
- /// <param name="smsContent">短信内容</param>
- /// <param name="addSerial">扩展码</param>
- /// <param name="smsPriority">优先级</param>
- /// <param name="isMo">是否允许回复</param>
- /// <param name="scheduleTime">定时时间</param>
- /// <param name="sendUserId">发送人</param>
- /// <param name="sendUserFullPath">发送人全路径</param>
- /// <returns></returns>
- [WebMethod]
- public string SendSMSWithSuccess(string appCode, string[] mobiles, string smsContent, string addSerial, int smsPriority = , bool isMo = true, DateTime? scheduleTime = null, string sendUserId = "", string sendUserFullPath = "")
- {
- //执行校验和入库
- string result = …
- return result;
- }
其中MsgGroup为移动要求提供的32位的唯一编码,后续返回的提交报告、状态报告都以此为对应依据。
WebService内部逻辑首先是校验,包括应用是否注册、号码数量、号码组是否包括重复号码、号码是否具有非法字符、扩展码长度等内容。然后将校验过的数据存入数据库。
下行短信数据表:
SMS_MT_DATA_INFO 短信信息表 |
|||||
字段代码 |
字段名称 |
字段类型 |
可空 |
标识 |
主键 |
MSG_GROUP |
批次号 |
varchar(32) |
N |
N |
Y |
APP_CODE |
应用标识 |
varchar(64) |
N |
N |
N |
MOBILES |
手机号码组 |
varchar(max) |
N |
N |
N |
SMS_CONTENT |
短信内容 |
varchar(max) |
N |
N |
N |
ADD_SERIAL |
扩展码 |
varchar(32) |
Y |
N |
N |
SMS_PRIORITY |
优先级 |
int |
N |
N |
N |
IS_MO |
是否需要上行 |
bit |
N |
N |
N |
SCHEDULE_TIME |
定时时间 |
datetime |
Y |
N |
N |
SEND_USER_ID |
发信人 |
varchar(36) |
Y |
N |
N |
SEND_USER_FULL_PATH |
发信人全路径 |
varchar(512) |
Y |
N |
N |
CREATE_TIME |
创建时间 |
datetime |
N |
N |
N |
SMS_MT_DATA_HIS_INFO 短信信息历史表 |
|||||
字段代码 |
字段名称 |
字段类型 |
可空 |
标识 |
主键 |
MSG_GROUP |
批次号 |
varchar(32) |
N |
N |
Y |
APP_CODE |
应用标识 |
varchar(64) |
N |
N |
N |
MOBILES |
手机号码组 |
varchar(max) |
N |
N |
N |
SMS_CONTENT |
短信内容 |
varchar(max) |
N |
N |
N |
ADD_SERIAL |
扩展码 |
varchar(32) |
N |
N |
N |
SMS_PRIORITY |
优先级 |
int |
N |
N |
N |
IS_MO |
是否需要上行 |
bit |
N |
N |
N |
SCHEDULE_TIME |
定时时间 |
datetime |
Y |
N |
N |
SEND_USER_ID |
发信人 |
varchar(36) |
Y |
N |
N |
SEND_USER_FULL_PATH |
发信人全路径 |
varchar(512) |
Y |
N |
N |
CREATE_TIME |
创建时间 |
datetime |
N |
N |
N |
SEND_RESULT |
返回状态 |
int |
N |
N |
N |
SEND_TIME |
发送时间 |
datetime |
N |
N |
N |
HAS_MO |
是否有回复 |
bit |
N |
N |
N |
4、 下行短信发送服务
一个WindowsService,定时访问数据库,若有数据则调用云MAS组件发送短信,然后将发送过的短信移入短信发送历史数据表。
由于云MAS平台需要登录后使用,登录只能进行一次,因此需要对SDK进行单例模式的封装。
移动云MAS平台内部有一定的处理逻辑,具体的我也不知道,猜测如下:首先接收数据后移动对短信信息进行审核,然后将审核过的短信提交到内部的发送系统,此过程会产生提交报告;内部判定如果是移动的手机号,则由自己的系统发送短信,此处会有白名单限制,白名单之外的短信无法发送,如果是联通或电信手机号,则调用相应的接口交由相应系统发送短信,此时移动自己的白名单无效,此过程会产生状态报告。
HTTP版本中云MAS平台和Http客户端数据交互流程如下,供参考。
4、下行短信发送WebService、下行短信发送服务 -功能详细设计 --短信平台的更多相关文章
- day80:luffy:短信sdk接入&点击获取验证码&注册功能的实现&Celery实现短信发送功能
目录 1.短信sdk接入 2.前端点击获取验证码效果 3.注册后端接口实现 4.注册-前端 5.Celery 6.Celery完成短信发送功能 1.短信sdk接入 1.准备工作 1.下载云通讯相关的文 ...
- 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...
- HTTP协议中的短轮询、长轮询、长连接和短连接
HTTP协议中的短轮询.长轮询.长连接和短连接 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接 ...
- 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...
- 通过jmeter发送webservice接口请求
1.webservice接口地址:http://ip:port/...?wsdl 2.接口数据类型:<cuxGmiChukuRmaTrxV><salesrepId xmlns:xsi ...
- 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...
- Python3发送webservice请求
Python3使用suds-jurko库来发送webservice接口请求 导入请求webservice接口需要用到的包 pip install suds-jurko 第一步:导入所需要的包 from ...
- 浅淡Webservice、WSDL三种服务访问的方式(附案例)
Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...
- 关于wcf,webservice,webapi或者其他服务或者接口有什么区别 WCF、WebAPI、WebService之间的区别 【转载】HTTP和SOAP完全就是两个不同的协议 WebService学习总结(一)——WebService的相关概念
wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成.解析的事情webapi遵循是rest ...
随机推荐
- RN-进阶
ActivityIndicator 显示一个圆形的loading的提示符 react-native-tab-navigator npm install react-native-tab-navigat ...
- 一文洞悉Python必备50种算法!资深大牛至少得掌握25种!
一.环境需求 二.怎样使用 三.本地化 3.1扩展卡尔曼滤波本地化 3.2无损卡尔曼滤波本地化 3.3粒子滤波本地化 3.4直方图滤波本地化 四.映射 4.1高斯网格映射 4.2光线投射网格映射 4. ...
- C# 使用缓存数据模拟抢购
在所有的电商网站中,不乏大量的抢购,比如双十一,双十二等等,作为一名开发人员考虑最多的就是多并发以及高并发 废话少说,开始写代码.我用了C#的MemoryCache代替试下流行的各种缓存 商品测试 ...
- scrapy爬去京东书籍信息
# -*- coding: utf-8 -*- import scrapy import urllib import json from copy import deepcopy class JdSp ...
- 爬虫之requests
一.基本用法 1.GET请求 ①r=requests.get(url) --返回Response对象 def get(url, params=None, **kwargs): params={... ...
- PHP简单的长文章分页教程 附源码
PHP简单的长文章分页教程 附源码.本文将content.txt里的内容分割成3页,这样浏览起来用户体验很好. 根据分页参数ipage,获取对应文章内容 include('page.class.php ...
- 魔力Python——一些基本概念
1.I/O操作 I/O输入/输出(input/output)的缩写. 概念I/O系统,英文全称为“Input output system”,中文全称为“输入输出系统”,由输入输出控制系统和外围设备两部 ...
- CentOS6下4网口绑定双IP
1. 基础信息介绍 4个物理网口分别是:eth0,eth1(集成网卡),eth2,eth3(外置网卡) 其中, 内置网卡eth0和eth1绑定到bond0(192.168.224.2 ...
- GDI+_VB6_ARGB
在写一个用GDI+代替VB的Line函数的方法时,遇到了一个问题. GdipCreateSolidFill 参数 color [in]ARGB颜色,指定此实体画笔的初始颜色. brush [out]指 ...
- 1.express中间件的简介
express中间件的意思 1, 中间件是一个模块.在js中,模块意味着函数,所以中间件是一个函数.那么这个函数长什么样子? 这还要从中间件的功能说起,它拦截http 服务器提供的请求和响应对象,执行 ...