您好,欢迎来到年旅网。
搜索
您的当前位置:首页接口使用说明文档

接口使用说明文档

来源:年旅网
中国移动短信网关 SP端接口使用手册

China Mobile Shot Message Gateway Interface for SP Manual

作者:沈岗2004年1月版本:V1.2

日期:

一、 CMSMIF.CMPPApp

简要说明:

该类采用CMPP协议(V2.0)实现了SP端与移动短信网关的连接处理。

本类中,采用长连接方式与ISMG通讯。通信双方以客户-服务器方式建立TCP连接,用于双方信息的相互提交。当信道上没有数据传输时,通信双方应每隔时间C发送链路检测包以维持此连接,当链路检测包发出超过时间T后未收到响应,立即再发送链路检测包,再连续发送N-1次后仍未得到响应则断开此连接。参数C、T、N可通过属性配置。

消息发送时采用并发方式,即发送一条消息不等待网关回复确认,继续向网关发送短信,这样发送消息速度非常快,完全取决于网关的处理速度及网络速度。为避免消息丢失,同时采用了滑动窗口流量控制,窗口大小可通过属性设置。

消息接收、网络断开等采用事件触发方式,不需应用程序轮询,在此接口基础之上编程方便。

类中运用了多线程技术,如一条线程处理发送网络包,而另一条线程处理从网关上接收网络包,其他还有一些线程处理检测包、网络连接情况监测等,使程序思路明确、执行效率很高、运行非常稳定。 (一) 属性

1. ActiveInterval

说明:检测包发送时间间隔,单位:毫秒。默认值为120000,即120秒。为上述类说明中的C参数。 2. MaxNetworkPackSize

说明:与ISMG通讯时最大网络包大小,单位:字节。默认值为512Byte。 3. MaxRetryTimes

说明:网络超时最大重发次数,单位:次。默认值为3次。为类说明中的N。 4. OverTime

说明:网络包发送超时时间,单位:毫秒,超过此值还未收到回复则重发。默认值为60000,即60秒。为类说明中的T。 5. QueueLength

说明:网络队列大小,单位:个,默认值为20。为类说明中的滑动窗口大小,以控制发送流量。

(二) 方法

1. ConnectToIsmg

方法说明:

连接到远程短信网关ISMG上,只有连接到远程短信网关上,才可进行短信收发操作。

在本操作中,自动初始化本地Socket,以连接到指定IP服务器的指定端口上。

声明原型:int ConnectToIsmg(string ServerIP,int Port,string SP_ID,string Secret,string SN) 参数说明:

ServerIP:远程短信网关服务器的IP地址,如211.138.200.51

Port:远程短信网关服务器的端口号,如70

SP_ID:企业服务代码

Secret:连接认证码,由中国移动与源地址实体事先商定。

SN:本软件的使用许可序列号。无效的序列号仅可在2004年8月份前试用。如需继续使用需与本软件作者联系,E-mail:hurry_sg@hotmial.com。

返回值:整型,连接成功返回0,初始化端口失败返回-1,连接网关失败返回-2,序列号无效试用到期无法继续使用返回-3。 2. DisConnectWithIsmg

方法说明:断开与远程短信网关的连接。在此方法中同时释放与远程连接的Socket。

声明原型:int DisConnectWithIsmg() 返回值:成功返回0,失败返回负值。 3. SendMessage

方法说明:向指定手机发送短消息。

在此函数中,如发送的消息超过最大短信字符数(140Byte),则自动分条发送。同时支持群发,超过最大群发数时(100条),则自动分批次发送。

声明原型:

(1) int SendMessage(string Src_Id,string Service_Id,string

Msg_src,string Dest_terminal_Id, string Msg_content) (2) int SendMessage(string Src_Id,string Service_Id,string

Msg_src,string Dest_terminal_Id, string Msg_content,byte Msg_Fmt) 参数说明:

Src_Id:源号码,SP的服务代码或前缀为服务代码的长号码,该号码最终在用户手机上显示为短消息的主叫号码。

Service_Id:业务类型,是数字、字母和符号的组合。 Msg_src:企业代码。

Dest_terminal_Id:接收短信的手机号码。群发时多个手机号码之间有逗号或分号隔开。

Msg_content:消息内容,长度大于最大短消息长度时,自动分条发送。 Msg_Fmt:消息编码格式。

0:ASCII串

3:短信写卡操作 4:二进制信息 8:UCS2编码 15:含GB汉字 声明原型1时,Msg_Fmt默认为15,此时最大消息长度为70,无论是否包含汉字。 返回值:发送成功时返回大于0的流水号,失败时返回负值。

(三) 事件

1. OnDisConnected

说明:与网关ISMG断开事件 事件参数类: System.EventArgs 事件参数成员:标准.net事件参数。 2. OnNetworkError

说明:网络错误事件,一般为网络连发N次后仍未收到回复 事件参数类:NetworkErrorEventArgs

事件参数成员:

int TotalLength,Command,Sequence; byte[] Message,MessageBody; int ErrorCode;

//出错代码:1:网络包超时,2:发送队列满,3:发送消息到ISMG出错 3. OnRecieveMessage

说明:从网关收到消息事件

事件参数类:RecieveMessageEventArgs

string MobileNumber,SPNumber,MessageContent,Service; //分别对应为:手机号,特服号,消息内容,服务代号

long MsgId; //消息标识,由网关产生,可以用来唯一标识某一条短信 int Sequence;

byte[] MessageBody;

4. OnRecieveSubmitMessageResp

说明:收到网关发来的发送短消息确认事件

事件参数类:RecieveSubmitMessageRespEventArgs 事件参数成员:

int Sequence; //消息发送流水号

int Result; //发送消息结果:0:成功发送,小于0则为失败

long MsgId; //消息标识,由网关产生,可用于标识唯一某条短信。

5. OnRecieveStateRpt

说明:收到ISMG发来的状态报告事件。

SP端成功向网关提交一条短信后,稍后会收到服器发来的短信发送状态的报告信息,以判断短信是否成功发送到手机上。 事件参数类:RecieveStateRptEventArgs 事件参数成员:

long Msg_Id;//消息标识,该值与发送消息确认事件中的Msg_Id值相同。 string Stat,Dest_terminal_Id;

// Stat:状态信息,说明详见后表,Dest_terminal_Id:发送消息的手机号。

DateTime Submit_time,Done_time; int SMSC_sequence; byte[] MessageBody; State含义对应表: Message State DELIVERED EXPIRED DELETED UNDELIVERABLE ACCEPTED Final Message States DELIVRD EXPIRED DELETED UNDELIV ACCEPTD Description Message is delivered to destination Message validity period has expired Message has been deleted. Message is undeliverable Message is in accepted state(i.e. has been manually read on behalf of the subscriber by customer service) Message is in invalid state Message is in a rejected state UNKNOWN REJECTED UNKNOWN REJECTD

6. OnRespQuery

说明:查询消息状态回复事件 事件参数类:ResQueryEventArgs

事件参数成员:(说明参见CMPP协议) int Sequence; DateTime Time; byte Query_Type; string Query_Code;

int MT_TLMsg,MT_Tlusr,MT_Scs,MT_WT,MT_FL,MO_Scs,MO_WT,MO_FL;

(四) 使用步骤

1. 调用ConnectToIsmg()来连接到远程网关。

2. 调用SendMessage()来向网关发送一条消息,返回消息流水号Sequence。 3. 继续调用SendMessage()发送消息„„。

4. 从网关接收到发送消息确认信息,自动触发OnRecieveSubmitMessageResp事

件,事件参数中的Msg_Id、Sequence,其中Sequence与SendMessage()方法匹配出具体的消息,将Msg_Id保存到该消息上。

5. 网关根据消息发送情况,向SP提交发送消息状态报告,自动触发

OnRecieveStateRpt事件,根据状态报告参数中的Msg_Id标识某消息是否成功送达手机。注意该事件一般在手机收成功收到短消息后触发,所以该事件经常在调用SendMessage后很长时间后才触发,如正常一般在10秒钟左右,但有时会在几分钟甚至在几个小时后才会触发。

6. 如接收到网关发来的短消息,则触发OnRecieveMessage事件,消息内容、手

机号码、发送的特服号均在事件参数中提供了。 7. 调用DisConnectWithIsmg()断开与网关的连接。 8. 如在连接到网关后,因故发生网络故障则会触发OnNetworkError事件,一般发

生在一个消息包重发N次后还未成功,或其他网络情况。

9. SP与网关服务器断开连接后,会触发OnDisConnected事件。不管是SP主动

提出中断、还是网关提出中断、或者因网络错误中断连接均会触发OnDisConnected事件。

二、 CMSMGWCenter.CMSMGWCenter

简要说明:短信网关应用程序。

该类是在CMSMIF.CMPPApp类基础上,从数据库中获取要发送的短信将其发送到网关上,同时将从网关上接收到的消息存到数据库中。

其中数据库中与该短信网关相关的主要有两张表:tbl_SendSM及tbl_RecieveSM,前者存储要发送的短信,后者存储从网关上接收下来的短信。

注:目前数据库仅支持SQL Server 2000,但仅需适当改变即可支持其他类型的数据库。

(一) 方法说明

1. Start

方法说明:开始处理短信收发工作。

开始后,系统有一线程判断tbl_SendSM表中是否有新短消息需要发送,如有则调用CMSMIF.CMPPApp.SendMessage()进行发送。并分在收到“发送消息回复确认”事件及收到“消息发送状态包”事件中,设置短消息的状态位。

如从网关收到消息,则将消息写到数据库tbl_RecieveSM表中。

另还有一线程专门检测与网关连接情况,除SP主动与网关断开连接外,在收到“与网关断开连接”事件后自动再与服务器重新建立联接。 声明原型:

int Start(string dBConnectionString,string cMSMGateWayIP,int port,string sP_ID,string secret,string SN, bool saveWasteSM) 参数说明:

dBConnectionString:数据库连接字符串。如: user id=sa;data source=192.0.0.1; initial catalog=smscenter;password=。

cMSMGateWayIP:远程短信网关IP地址。 Port:远程短信网关端口号。 SP_ID:企业服务代码

Secret:连接认证码,由中国移动与源地址实体事先商定。 SN:本软件的使用许可序列号。无效的序列号仅可在2004年8月份前试用。如需继续使用需与本软件作者联系,E-mail:hurry_sg@hotmial.com。

SaveWasteSM:是否保存接收过来的垃圾短信。垃圾短信是指发到以本特服号开头的但未在tbl_SPInfo表登记注册的短信。True:保存,False:不保存。凡是垃圾短信,本接口会自动给发送方一个回复,指示“特服号无效”,要求其不要发送。

返回值:成功返回0,数据库登录失败返回-1,网关登录失败或序列号无效试用到期无法继续使用返回-2。 2. Pause

方法说明:暂停发送短信工作,但接收短信正常进行。 声明原型:void Pause() 3. Restart

方法说明:重新启动发送短信工作。 声明原型:void Restart() 4. Stop

方法说明:停止短信收发工作,并释放占用的各种资源。 声明原型:void Stop()

(二) 运行日志

运行日志默认情况下保存在C盘根目录下,如在注册表中SOFTWARE\\ShenG\\CMSMGateWay\\LogPath下维护了一个路径,则会保存在此目录下。

(三) 数据库结构

tbl_SendSM //发送的消息 [id] [bigint] IDENTITY (1, 1) , //消息标识 [mobile] [varchar] (20) , //手机号码 [spid] [varchar] (10) , //特服号 [content] [nvarchar] (200) , //消息内容

tbl_RecieveSM //接收到的消息 [id] [bigint] IDENTITY (1, 1), //ID号 [mobile] [varchar] (20), //手机号码 [spid] [varchar] (10) , //特服号 [content] [nvarchar] (200) , //消息内容 [recieveTime] [datetime] , //接收时间 [flag] [int] , //标记 0:新接收 1:已被其他程序处理 [service] [varchar] (20) , //服务代码 [remark] [varchar] (50) , //备注 [msgId] [bigint], //消息标识 [sequence] [int] //消息序列号

tbl_SPInfo //有效特服号列表 [spid] [varchar] (10) //有效的特服号 (四)

[preSendTime] [datetime] , //预计发送时间 [insertTime] [datetime] , //消息插入到数据库的时间 [flag] [int] ,

//标记 0:新消息 1:已提交到网关 2:收到网关的确认回复包 3:收到网关的状态包

[remark] [nvarchar] (50), //备注信息 [service] [varchar] (20) , //服务代码 [sentTime] [datetime], //消息发送时间 [doneTime] [datetime], //消息状态包接收时间 [msgId] [bigint], //消息标识,由网关产生 [sequence] [int], //序列号 [sendstat] [varchar] (10) , //消息发送最终状态,由状态包提供 [clientIp] [varchar] (30) //

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务