当前位置:文档之家› 接口使用说明文档

接口使用说明文档

中国移动短信网关SP端接口使用手册China Mobile Shot MessageGateway 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,stringSP_ID,string Secret,string SN)参数说明:ServerIP:远程短信网关服务器的IP地址,如211.138.200.51Port:远程短信网关服务器的端口号,如7890SP_ID:企业服务代码Secret:连接认证码,由中国移动与源地址实体事先商定。

SN:本软件的使用许可序列号。

无效的序列号仅可在2004年8月份前试用。

如需继续使用需与本软件作者联系,E-mail:hurry_sg@。

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

2.DisConnectWithIsmg方法说明:断开与远程短信网关的连接。

在此方法中同时释放与远程连接的Socket。

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

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

在此函数中,如发送的消息超过最大短信字符数(140Byte),则自动分条发送。

同时支持群发,超过最大群发数时(100条),则自动分批次发送。

声明原型:(1)int SendMessage(string Src_Id,string Service_Id,stringMsg_src,string Dest_terminal_Id, string Msg_content)(2)int SendMessage(string Src_Id,string Service_Id,stringMsg_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说明:从网关收到消息事件事件参数类:RecieveMessageEventArgsstring 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含义对应表: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:数据库连接字符串。

相关主题