SP接入API使用指南.docx

上传人:b****4 文档编号:24099250 上传时间:2023-05-24 格式:DOCX 页数:17 大小:69.21KB
下载 相关 举报
SP接入API使用指南.docx_第1页
第1页 / 共17页
SP接入API使用指南.docx_第2页
第2页 / 共17页
SP接入API使用指南.docx_第3页
第3页 / 共17页
SP接入API使用指南.docx_第4页
第4页 / 共17页
SP接入API使用指南.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

SP接入API使用指南.docx

《SP接入API使用指南.docx》由会员分享,可在线阅读,更多相关《SP接入API使用指南.docx(17页珍藏版)》请在冰豆网上搜索。

SP接入API使用指南.docx

SP接入API使用指南

 

SP接入API使用指南

 

版本:

1.2

 

深圳市傲天信息技术有限公司

深圳市高新科技园南区科技南十路深圳国际技术创新研究院二楼A座

邮政编码:

518057

电话:

86-755-26727239

 

本文档描述了SP接入API的使用说明,供使用人员参考。

第一章概述2

1.1系统简介2

1.2系统设计原则3

1.3术语说明3

第二章系统结构4

2.1结构说明4

2.2系统结构图4

2.3系统应用环境5

2.4系统开发环境5

第三章接口函数说明6

3.1函数说明格式6

3.2数据结构定义6

3.2.1Deliver包结构6

3.2.2Report包结构6

3.2.3MTResponse结构7

3.2.4Submit错误结构7

3.3函数功能介绍8

3.3.1Startup(系统初始化函数)8

3.3.2Submit(下发消息函数)9

3.3.3Deliver(Deliver包处理函数)11

3.3.4Report(Report包处理函数)11

3.3.5MTResponse(MTResponse包处理函数)11

3.3.6取包函数12

 

第一章概述

本章首先简要介绍了傲天公司的短信网关平台(MUSESMG),然后描述了API的设计目标及原则。

1.1系统简介

MUSESMG(短信网关)为SP提供了一个具有全网互连功能的短消息接入平台,为电信运营商、SP开展全国性的短消息业务提供了承载功能,借助这个通道,SP可以向手机用户提供短消息增值服务。

随着短消息增值业务的不断发展,越来越多有着丰富特色的SP希望尽快接入到该平台上,为广大的手机用户提供各种应用,同时也使自己获得可观的利益。

由于SP与网关平台之间相连是采用SGIP协议来实现的,SP必须在熟悉SGIP协议的前提下才能进行开发,这样就增加了开发难度,也延长了SP接入的时间。

基于这种情况,傲天公司凭借自己在网关开发及协议理解方面的优势,开发了这套API。

通过使用API,SP在不熟悉协议的情况下也可以快速的开发自己的服务程序,将更多的精力放在自己的业务流程处理上,从而在短时间内创造效益。

1.2系统设计原则

●模块化

系统的功能设计按流程的要求实行模块化,以利于系统的开发和对系统的理解、使用。

●稳定性

性能稳定,能满足每秒发送/接受100条短信的要求。

●灵活性

系统结构应具有伸缩性,配置灵活。

●实用性

系统应处理好网络连接及协议封装,做到与业务无关。

1.3术语说明

SPServiceProvider,内容提供商

SMGShortMessageGateway,联通管理人员的短消息网关,SMG之间的通讯协议

采用SGIP

SGIPShortMessageGatewayInterfaceProtocol,本协议所描述的短消息网

关接口协议,用于完成在SMG和SP之间、SMG和SMG之间短消息的发

送、接收和转发功能,以及SMG和GNS之间路由表的同步功能

SMSCShortMessageServiceCenter,短消息中心

MO由手机用户提交的短消息

MT由手机用户接收的短消息

DeliverSMG用Deliver命令向SP发送MO消息

SubmitSP用Submit命令向SMG提交MT消息

ReportReport命令用于向SP发送一条先前的Submit命令的当前状态,或者用于向前转SMG

发送一条先前的Deliver命令的当前状态

第二章系统结构

本章描述了API内部的结构及应用、开发环境。

2.1结构说明

系统采用事件驱动的方式工作,当调用初始化函数Startup后,一系列线程组件开始运行,包括Submit发送线程、连接监听线程、Deliver接收和处理线程等。

当SP调用Submit函数时,Submit处理线程会自动生成Submit协议包并将该包发送给网关系统,同时接收网关返回的SubmitResponse,如果用户定义了Response处理函数,则触发Response事件,调用该函数。

当收到网关的Deliver或Report时,Deliver处理线程会自动触发相应事件,调用用户定义的业务处理函数。

2.2系统结构图

2.3系统应用环境

适用操作系统:

Windows98/NT/2000

适用开发工具:

VC5.0/6.0;VB6.0;C++Builder5.0/6.0;Delphi5.0/6.0

2.4系统开发环境

操作系统:

Windows2000

开发工具:

C++Builder6.0

第三章接口函数说明

3.1函数说明格式

每个函数按以下顺序进行介绍:

【函数功能】:

简要介绍函数所实现的功能。

【函数原型】:

给出该函数的标准C语言原型

【参数说明】:

给出每个参数的简要说明及输入、输出。

【使用说明】:

给出函数在使用时需要注意的问题。

3.2数据结构定义

下面给出函数调用中所用到的参数类型及结构定义,按照C语言进行解释。

其它语言的定义请参照使用范例。

TypedefunsignedcharUINT_1;

TypedefunsignedshortUINT_2;

TypedefunsignedintUINT_4;

3.2.1Deliver包结构

Typedefstructdeliverstr

{

UINT_4sequencenumber1;

UINT_4sequencenumber2;

UINT_4sequencenumber3;

charusernumber[22];

charspnumber[22];

UINT_1tp_pid;

UINT_1tp_udhi;

UINT_1messagecoding;

UINT_4messagelength;

charmessagecontent[160];

charlinkid[8];

}DeliverStr;

3.2.2Report包结构

Typedefstructreportstr

{

UINT_4sequencenumber1;

UINT_4sequencenumber2;

UINT_4sequencenumber3;

charusernumber[22];

UINT_1state;

UINT_1errcode;

}ReportStr;

3.2.3MTResponse结构

Typedefstructmtrespstr

{

UINT_4sequencenumber1;

UINT_4sequencenumber2;

UINT_4sequencenumber3;

UINT_1result;

}MTRespStr;

3.2.4Submit错误结构

当Submit发送不成功时,在Deliver处理中返回该结构

Typedefstructmterrorstr

{

UINT_4sequencenumber1;

UINT_4sequencenumber2;

UINT_4sequencenumber3;

interrortype;

/*1:

因为连接不上SMG网关系统,导致包超时;

2:

发送前发现该包超时;

3:

包发送失败且超过重发次数;

*/

intresult;

/*如果失败是因为对方回了错误的Response,则result中保留错

误的ResponseResult值,否则返回内部错误码:

负值。

-1非法登录

-2重复登录

-3登录类型错

-4登录过多

-5参数格式错

-6非法接收号码

-7消息ID错

-8信息超长

-32系统失败

*/

}MTErrorStr;

3.3函数功能介绍

3.3.1Startup(系统初始化函数)

【函数功能】

API初始化函数。

应用程序必须首先调用该函数。

【函数原型】

int__stdcallStartup(char*cLocalIp,

shortiLocalPort,

char*cSmgIp,

shortiSmgPort,

char*cLoginName,

char*cPassword,

intlSocketTimeOut,

intlMTTimeOut,

unsignedintiSrcNode,

intlMTThread,

intlMaxListNode,

intlMTMaxRetryTime,

intlMOThread,

void(*fProcessDeliver)(DeliverStrdeliver),

void(*fProcessReport)(ReportStrreport),

void(*fProcessResponse)(MTRespStrresponse),

void(*fProcessMTError)(MTErrorStrmterror));

【参数说明】

cLocalIp:

SP的IP地址(即应用程序所在机器的IP地址,且必须是公网IP)

iLocalPort:

SP作为服务器时的Socket监听端口

cSmgIp:

SMG的IP地址

cSmgPort:

SMG作为服务器时的Socket监听端口(由联通管理人员分配)

cLoginName:

SP作为客户端登录网关的用户名(由联通管理人员分配)

cPassword:

SP作为客户端登录网关的密码(由联通管理人员分配)

lSocketTimeOut:

Socket超时(秒)

lMTTimeOut:

Submit的超时,在超时的时间内,如果该MT没

有成功发送,则返回错误包MTErrorStr

iSrcNode:

SP节点编号(编号规则是3AAAAQQQQQ。

其中, AAAA表示四

位长途区号(不足四位的长途区号,左对齐,右补零。

可不填),QQQQQ

表示5位企业代码,由联通管理人员分配)

lMTThread:

Submit处理线程数

lMaxListNode:

最大待处理队列节点数

lMTMaxRetryTime:

Submit发送失败重试次数

lMOThread:

Deliver处理线程数

deliver:

用户定义的Deliver处理函数(为NULL时不处理Deliver包)

report:

用户定义的Report处理函数(为NULL时不处理Report包)

response:

用户定义的SubmitResponse处理函数(为NULL时不处理Submit

Response包)

mterror:

用户定义的错误处理函数(为NULL时不处理错误包)

返回参数:

0:

已经调用了Startup

1:

调用成功

-1:

调用失败

【使用说明】

该函数采用标准的Win32API调用(stdcall)。

声明外部函数时需加上stdcall修

饰符。

3.3.2Submit(下发消息函数)

【函数功能】

发送Submit包。

SP向手机用户下发消息时调用该函数。

【函数原型】

int__stdcallSubmit(char*spnumber,

char*chargenumber,

intuser_count,

char*usernumber,

char*corpid,

char*service_type,

UINT_1fee_type,

char*fee_value,

char*given_value,

UINT_1agent_flag,

UINT_1mo_flag,

UINT_1priority,

char*expire_time,

char*schedule_time,

UINT_1report_flag,

UINT_1tp_pid,

UINT_1tp_udhi,

UINT_1message_coding,

UINT_1message_type,

UINT_4message_length,

char*message_content,

char*reserve,

UINT_4*sequencenumber1,

UINT_4*sequencenumber2,

UINT_4*sequencenumber3)

【参数说明】

spnumber:

SP的接入号码(由联通管理人员分配)

chargenumber:

付费号码(手机号码前加“86”国别标志;当且

仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由

usernumber代表的用户支付;如果为全零字符串

“000000000000000000000”,表示该条短消息产生的费用由SP支付。

user_count:

接收短消息的手机数量,取值范围1至100

usernumber:

接收该短消息的手机号,手机号码前加“86”国别标志,多个号

码间以“;”或“,”隔开

corpId:

企业代码(由联通管理人员分配)

service_type:

业务代码(由SP自己定义,如“笑话”定义为“XH”)

fee_type:

计费类型,定义如下:

1-对“计费用户号码”免费

2-对“计费用户号码”按条计信息费

3-对“计费用户号码”按包月收取信息费

4-对“计费用户号码”的收费是由SP实现

fee_value:

该条短消息的收费值,单位为分,由SP定义,取值范围0-99999,对于包月制收费的用户,该值为月租费的值

given_value:

赠送用户的话费,单位为分,由SP定义,取值范围0-99999,

特指由SP向用户发送广告时的赠送话费

agent_flag:

代收费标志(0:

应收1:

实收)

mo_flag:

引起MT消息的原因,定义如下:

0-MO点播引起的第一条MT消息;

1-MO点播引起的非第一条MT消息;

2-非MO点播引起的MT消息;

3-系统反馈引起的MT消息。

priority:

优先级0-9从低到高,默认为0

expire_time:

短消息寿命的终止时间

schedule_time:

短消息定时发送的时间

report_flag:

状态报告标记,定义如下:

0-该条消息只有最后出错时要返回状态报告

1-该条消息无论最后是否成功都要返回状态报告

2-该条消息不需要返回状态报告

3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告

tp_pid:

GSM协议类型

tp_udhi:

GSM协议类型

message_coding:

短消息的编码格式,定义如下:

0-纯ASCII字符串

3-写卡操作

4-二进制编码

8-UCS2编码

15-GBK编码

message_type:

信息类型(短信息填0)

message_length:

短消息内容的长度

message_content:

短消息的内容

reserve:

保留

sequencenumber1,sequencenumber2,sequencenumber3:

短消息序列号,由API

按协议规范生成,并返回

返回参数:

0:

队列满

1:

成功放入队列

-1:

插入队列失败

【使用说明】

该函数采用标准的Win32API调用(stdcall)。

声明外部函数时需加上stdcall修

饰符。

3.3.3Deliver(Deliver包处理函数)

【函数功能】

用户自定义的Deliver处理函数,作为指针传递给Startup。

用户可在此函数中根据

自己的业务来处理相应的Deliver包。

【函数原型】

void(*fProcessDeliver)(DeliverStrdeliver)

【参数说明】

deliver:

DeliverStr类型的参数。

【使用说明】

该函数采用标准的Win32API调用(stdcall)。

声明外部函数时需加上stdcall修

饰符。

该函数必须是线程安全的,其中访问的全局变量必须采用同步机制,如果SP使用

的开发工具为C++Builder或Delphi,对VCL的调用可采用发送消息的方式来同步

(SendMessage或PostMessage)。

用户在解包的时候需要根据短信编码格式MessageCoding来对消息内容MessageContent做相应的处理。

3.3.4Report(Report包处理函数)

【函数功能】

用户自定义的Report处理函数,作为指针传递给Startup。

用户可在此函数中自定

义如何处理网关返回的Report。

【函数原型】

void(*fProcessReport)(ReportStrreport)

【参数说明】

report:

ReportStr类型的参数。

【使用说明】

同Deliver处理函数。

3.3.5MTResponse(MTResponse包处理函数)

【函数功能】

用户自定义的MTResponse处理函数,作为指针传递给Startup。

用户可在此函数

中自定义如何处理网关返回的MTResponse。

【函数原型】

void(*fProcessResponse)(MTRespStrresponse)

【参数说明】

response:

MTRespStr类型的参数。

【使用说明】

同Deliver处理函数。

3.3.6取包函数

【函数功能】

用户手动从接收队列中取包,包括Deliver、Report、MTRespronse和MTError包。

【函数原型】

intDeliver(int*type,DeliverStr*DeliverStruct,ReportStr*ReportStruct,MTRespStr*RespStruct,MTErrorStr*MTErrorStruct)

【参数说明】

type:

返回包的类型

1-Deliver包

2-Report包

3-MTResponse包

4-Submit错误包

DeliverStruct:

返回的DeliverStr结构的包,当type=1时返回

ReportStruct:

返回的ReportStr结构的包,当type=2时返回

RespStruct:

返回的MTRespStr结构的包,当type=3时返回

MTErrorStruct:

返回的MTErrorStr结构的包,当type=4时返回

返回参数:

0:

取得最后一个包

1:

取得一个包

-1:

取包错误或未取到包

【使用说明】

该函数采用标准的Win32API调用(stdcall)。

声明外部函数时需加上stdcall修

饰符。

当用户不想采用事件触发机制取包,而是手动从接收队列中取包时调用此函数。

调用此函数时,必须将Startup函数中的IMOThread参数设置为0,同时将Deliver、

Report、Response和MTError参数设置为nil。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1