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、下行短信发送服务 -功能详细设计 --短信平台的更多相关文章

  1. day80:luffy:短信sdk接入&点击获取验证码&注册功能的实现&Celery实现短信发送功能

    目录 1.短信sdk接入 2.前端点击获取验证码效果 3.注册后端接口实现 4.注册-前端 5.Celery 6.Celery完成短信发送功能 1.短信sdk接入 1.准备工作 1.下载云通讯相关的文 ...

  2. 误人子弟的网络,谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...

  3. HTTP协议中的短轮询、长轮询、长连接和短连接

    HTTP协议中的短轮询.长轮询.长连接和短连接 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接 ...

  4. 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...

  5. 通过jmeter发送webservice接口请求

    1.webservice接口地址:http://ip:port/...?wsdl 2.接口数据类型:<cuxGmiChukuRmaTrxV><salesrepId xmlns:xsi ...

  6. 谈谈HTTP协议中的短轮询、长轮询、长连接和短连接

    引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此最近经常会看一些源码.在研究一个项目的时候,源码里面用到了HTTP的长轮询.由于之前没太接触过,因此LZ便趁着这个机会,好好了解了一下HT ...

  7. Python3发送webservice请求

    Python3使用suds-jurko库来发送webservice接口请求 导入请求webservice接口需要用到的包 pip install suds-jurko 第一步:导入所需要的包 from ...

  8. 浅淡Webservice、WSDL三种服务访问的方式(附案例)

    Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...

  9. 关于wcf,webservice,webapi或者其他服务或者接口有什么区别 WCF、WebAPI、WebService之间的区别 【转载】HTTP和SOAP完全就是两个不同的协议 WebService学习总结(一)——WebService的相关概念

    wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成.解析的事情webapi遵循是rest ...

随机推荐

  1. C4.cpp

    结构可以同时存储int ,long double,共用体只能存储int,long,double 共用体能够存储不同的数据类型,但是同时只能存储一种数据类型,因此其长度为最大成员的长度 共用体的一个好处 ...

  2. http(数据格式)、postman(数组、id、断言) 小知识必看啊

  3. Monkey脚本API

    Monkey脚本API简介 LaunchActivity(pkg_name, cl_name):启动应用的Activity.参数:包名和启动的Activity. Tap(x, y, tapDurati ...

  4. mysql 聚集函数 count 使用详解(转载)

    本文将探讨以下问题 1.count(*) . count(n).count(null)与count(fieldName)2.distinct 与 count 连用3.group by (多个字段) 与 ...

  5. LeetCode100.相同的树

    给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1 ...

  6. eShopOnContainers 看微服务③:Identity Service

    引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问.那进行 API 级别信任决策的第一步就是身份认证——确定用户身份是否可靠. 在微服务场景中,身份认证通常统一处理.一般有两 ...

  7. asp.net core结合docker实现自动化获取源码、部署、更新

    之前入坑dotnet core,由于一开始就遇到在windows上编译发布的web无法直接放到centos上执行.之后便直接研究docker,实现在容器中编译发布.然后就越玩越大,后来利用git的ho ...

  8. 百度学术导入endnote出现choose an import filter解决

    一般情况,我们在百度学术搜索一篇文章, 点击引用,出来一个 点击EndNote,将下载好的.enw双击出现 百度了一些,可以不使用百度学术,用pubmed,点击citation. 发现一个解决办法.在 ...

  9. 使用events.EventEmitter 控制Node.js 程序执行流程

    使用events.EventEmitter 控制Node.js 程序执行流程 标题写的可能也不太对,大家领会精神: Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. ...

  10. Inno setup 操作注册表操作参数详解

    原文地址:http://www.dayanzai.me/inno-setup-tut.html [Registry] 段这个可选段用来定义一些你想用安装程序在用户系统中创建.修改或删除的注册表键/值. ...