SMIAS系统CMPP30接口使用手册(ANSI C)

更新时间:2023-11-01 13:56:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SMIAS 短信网关系统 CMPP30接口使用手册

(ANSI C V2.1)

东软集团有限公司中间件技术分公司

2003年10月

东软集团有限公司中间件技术分公司

地址:沈阳市和平区三好街84-2号 电话:(024)83665567 传真:(024)23782821 Email:

版权声明

Short Message Internet Access Solution(SMIAS)的版权归东软集团有限公司中间件技术分公司所有。未经东软集团有限公司中间件技术分公司的书面准许,不得将本规范的任何部分以任何形式、采用任何手段(电子的或机械的,包括照相复制或录制)、或为任何目的,进行复制或扩散。

? Copyright 东软集团有限公司中间件技术分公司。版权所有,翻制必究。

?

是东软集团有限公司的注册商标。

I

前 言

Short Message Internet Access Solution(SMIAS)是结合中国移动通信总公司的“梦网计划”应运而生的一套基于短信的移动互联网应用解决方案。

本系统提供了面向服务提供商(ASP或ICP)的开发接口,服务提供商可以使用这些接口API实现与中国移动各省移动通信公司SMIAS系统的接入。

I

阅读指南

本部分主要讨论本手册的目标、阅读对象、手册的组织结构。 〖手册目标〗

本手册是SMIAS (Short Message Internet Access Solution)短信网关系统SP接入子系统通信接口 C API的使用指南。它详细介绍了SP-SMIAS网关之间的通信流程,通信协议,以及通信接口C API的数据结构,以及函数调用方法。

SP可以通过本手册的说明,与SMIAS短信网关系统进行正确的通信,以提供服务。 〖阅读对象〗

本手册面向的主要对象是准备接入SMIAS短信网关系统的SP的开发人员。 〖手册构成〗

本手册由如下章节组成: ?

概述

对SMIAS系统的总体概述

? 通信流程

描述了SP接入SMIAS网关的通信流程,以及注意事项

? 通信协议

以表格的方式描述了SP与SMIAS网关通信的各种通信包的包格式,方便与SP在与SMIAS网关通信时的跟踪调试。

? C API使用说明

描述了C API的数据结构,数据类型的含义,以及各个接口函数的调用方法。

【注意】的意思是请读者注意那些需要注意的事项。

【警告】的意思是请读者千万注意某些事项,否则将造成错误。

I

目 录

第1章 概述 ............................................................................................................................. 1

1.1 网关结构 ............................................................................................................................. 1 第2章 接口操作 ..................................................................................................................... 1

§2.1 SP连接类型 ....................................................................................................................... 1 §2.2 操作类型 ........................................................................................................................... 1

§2.2.1 SP到SMIAS的操作类型 ..................................................................................... 1 §2.2.2 SMIAS网关到SP的操作类型 ............................................................................. 2 §2.2.3 双向操作类型 ........................................................................................................ 2 §2.3 SP操作流程 ....................................................................................................................... 3 第3章 通信协议 ..................................................................................................................... 1

§3.1 阅读说明 ........................................................................................................................... 1 §3.2 消息体格式 ....................................................................................................................... 2

§3.2.1 Login 消息体 ...................................................................................................... 2 §3.2.2 Login Response消息体 ..................................................................................... 2 §3.2.3 Logout 消息体 .................................................................................................... 3 §3.2.4 Logout Response消息体 ................................................................................... 3 §3.2.5 Submit 消息体 .................................................................................................... 4 §3.2.6 Submit Response消息体 ................................................................................... 6 §3.2.7 Deliver 消息体 .................................................................................................. 7 §3.2.8 Deliver Response消息体 ................................................................................. 9 §3.2.9 Cancel 消息体 .................................................................................................. 10 §3.2.10 Cancel Response消息体 ............................................................................... 10 §3.2.11 Active消息体 ................................................................................................. 10 §3.2.12 Active Response消息体 ............................................................................... 10 第4章

ICP接口函数说明 ............................................................................................ 11

§4.1接口函数中数据类型的定义 .......................................................................................... 11 §4.2 ICP接口函数描述 ........................................................................................................... 11 附录

1 附录一

附录二

应答状态码表及消息命令字表............................................................... 1 代码样例 .................................................................................................. 4

I

SMIAS短信网关系统ICP接口使用手册(ANSI C V2.1)

§2.2.2 SMIAS网关到SP的操作类型

?

Deliver (下发消息)

当SP以接收型或发送接收型连接正确登录SMIAS短信网关系统之后,SMIAS网关会通过此操作向SP主动下发MO消息。 ?

Login Response (登录应答)

SMIAS短信网关使用此操作回应SP的Login请求操作。 ?

Logout Response (退出应答)

SMIAS短信网关使用此操作回应SP的Logout请求操作。此项请求完成后,SMIAS短信网关会主动关闭网络连接。 ?

Cancel Response (取消应答)

SMIAS短信网关使用此操作回应SP的Cancel请求操作。

【警告】SMIAS短信网关以先进先出的原则将MO消息依次进行下发;SP在得

到一条MO消息之后必须回应一个应答;

§2.2.3 双向操作类型

?

Active Test (连接存活测试)

SP可以通过此操作来检测与SMIAS短信网关系统之间的网络连接是否正常。SMIAS短信网关也会通过此操作来检测与SP的网络连接是否正常。 ?

Active Test Response (连接存活测试应答)

SMIAS短信网关系统或SP使用此操作回应对方的Active Test请求操作。

【注意】当SP与SMIAS的某个网络连接在一段设定时间内没有任何消息包的

活动,网关会主动下发一个存活测试,如果SP端无应答,SMIAS短信网关系统将会主动关闭此网络连接。

2-4

第3章 通信协议

SMIAS ICP接口采用的是标准的CMPP30协议。

§3.1 阅读说明

Unsigned Integer Integer Octet String 无符号整数 整数,可为正整数、负整数或零 定长字符串,位数不足时,如果左补0则补ASCII表示的零以填充,如果右补0则补二进制的零以表示字符串的结束符 说明 消息头(所有消息公共包头) 消息体 字节数

项目 Message Header Message Body 字段名 Total_Length Command_Id Sequence_Id 4 4 4 类型 Unsigned Integer Unsigned Integer Unsigned Integer

描述 消息总长度(含消息头及消息体) 命令或响应类型 消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同) 2-1

SMIAS短信网关系统ICP接口使用手册(ANSI C V2.1)

§3.2 消息体格式

§3.2.1 Login 消息体 字段名 Source_Addr 字节数 属性 描述 源地址,此处为SP_Id,即SP的企业代码。 用于鉴别源地址。其值通过单向MD5 hash计算得出,表示如下: AuthenticatorSource = MD5(Source_Addr+9 字节的0 +shared secret+timestamp) Shared secret 由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月日时分秒,10位。 双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号),对于3.0的版本,高4bit为3,低4位为0 时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐 。 6 16 Octet String Octet String AuthenticatorSource Version 1 Unsigned Integer Unsigned Integer

Timestamp 4 §3.2.2 Login Response消息体

字段名 字节数 4 属性 Unsigned Integer 描述 状态 0:正确 1:消息结构错 2:非法源地址 3:认证错 4:版本太高 5~ :其他错误 ISMG认证码,用于鉴别ISMG。 其值通过单向MD5 hash计算得出,Status AuthenticatorISMG 16 Octet String 2-4

SMIAS短信网关系统ICP接口使用手册(ANSI C V2.1)

附录二 代码样例

#include #include #include

#include \

#define TRAND(limit,n) {struct timeval t;gettimeofday(&t,(void*)NULL);\\ (n)=rand_r((unsigned *)&t.tv_usec)%limit;}

void print_submit_packet(cmpp30icp_submit *pk) {

int i;

printf(\ msg_id : %llx\\n\ printf(\ pk_total: %d\\n\ printf(\ pk_number: %d\\n\ printf(\ registered: %d\\n\ printf(\ msg_level: %d\\n\ printf(\ svc_type: %s\\n\ printf(\ fee_utype: %d\\n\ printf(\ fee_user: %s\\n\ printf(\ fee_user_type: %d\\n\ printf(\ tp_pid : %d\\n\ printf(\ tp_udhi : %d\\n\ printf(\ data_coding: %d\\n\ printf(\ icp_id : %s\\n\ printf(\ fee_type: %s\\n\ printf(\ fee_code: %s\\n\ printf(\ validate: %s\\n\ printf(\ schedule: %s\\n\ printf(\ src_id : %s\\n\ printf(\ du_count: %d\\n\

附录-4

第2章 接口操作

for(i=0; idu_count; i++)

{ printf(\%s\\n\

pk->dst_addr+i*CMPP30_MAX_PSEUDO_LEN);

}

printf(\ dst_usr_type: %d\\n\ printf(\ sm_len : %d\\n\ printf(\ short_msg %s\\n\ printf(\ link_id : }

void print_deliver_packet(cmpp30icp_deliver *pk) {

cmpp30icp_status_report report; int

char base64_out[50];

memset(&report, 0, sizeof(cmpp30icp_status_report)); memset(base64_out, 0, sizeof(base64_out));

printf(\ msg_id : 0llu\\n\ printf(\ dst_addr: %s\\n\ printf(\ svc_type: %s\\n\ printf(\ tp_pid: %u\\n\ printf(\ tp_udhi:

%u\\n\

printf(\ data_coding: %u\\n\ printf(\ src_addr: %s\\n\

printf(\ src_user_type: %d\\n\ printf(\

%u\\n\

8

registered_delivery:

len = 0;

%s\\n\

i,

printf(\ sm_len: printf(\ link_id :

%u\\n\%s\\n\

if(!pk->registered_delivery){//收到的是mo消息

2-5

SMIAS短信网关系统ICP接口使用手册(ANSI C V2.1)

printf(\ short_msg: %s\\n\

}else{//收到的是状态报告

memcpy(&report.submit_date, CMPP30_DATE_TIME_LEN);

memcpy(&report.dest_id, CMPP30_MAX_PSEUDO_LEN);

附录-6

memcpy(&report.msg_id , pk->short_msg, sizeof(dpl_uint64_t)); printf(\

len += sizeof(dpl_uint64_t);

memcpy(&report.stat, pk->short_msg+len, 7); printf(\ stat: len += 7;

pk->short_msg+len,

%s\\n\状态报告中的状态

printf(\ submit_date: %s\\n\len += CMPP30_DATE_TIME_LEN;

memcpy(&report.final_date, pk->short_msg+len, CMPP30_DATE_TIME_LEN); printf(\ final_date: %s\\n\len += CMPP30_DATE_TIME_LEN;

pk->short_msg+len,

printf(\ dest_id: %s\\n\

if(pk->src_user_type){//源用户是伪码

(void)cmpp30icp_convert_src_addr_to_base64(base64_out, \\

report.dest_id);

第2章 接口操作

} }

}

printf(\

len += CMPP30_MAX_PSEUDO_LEN;

memcpy(&report.cdr_msg_id, pk->short_msg+len, sizeof(dpl_uint32_t));

dpl_status_t login_value_set(cmpp30icp_login *cl) {

dpl_status_t stat; time_t timestamp;

time(×tamp);

strncpy(cl->icp_id,\ strncpy(cl->icp_auth,\ cl->if_version = 0x12;

cl->icp_timestamp = timestamp;

return DPL_SUCCESS; }

dpl_status_t submit_value_set(cmpp30icp_submit *cs) {

dpl_status_t stat;

/* 具体每个域的值和含义见submit消息体 */ (void)cmpp30icp_submit_init(cs);

(void)cmpp30icp_submit_set_pk_total(cs, 1); (void)cmpp30icp_submit_set_pk_number(cs, 1);

2-7

SMIAS短信网关系统ICP接口使用手册(ANSI C V2.1)

(void)cmpp30icp_submit_set_registered_delivery(cs, 1);

(void)cmpp30icp_submit_set_msg_level(cs, 1);

(void)cmpp30icp_submit_set_svc_type(cs, \

(void)cmpp30icp_submit_set_fee_utype(cs, 2);

(void)cmpp30icp_submit_set_fee_user(cs,

\

(void)cmpp30icp_submit_set_tp_pid(cs, 1); (void)cmpp30icp_submit_set_tp_udhi(cs, 1);

(void)cmpp30icp_submit_set_data_coding(cs, 1);

(void)cmpp30icp_submit_set_icp_id(cs, \

(void)cmpp30icp_submit_set_fee_type(cs, \

(void)cmpp30icp_submit_set_fee_code(cs, \

strcpy(cs->validate, \ strcpy(cs->schedule, \

(void)cmpp30icp_submit_set_validate(cs, \ (void)cmpp30icp_submit_set_schedule(cs, \

(void)cmpp30icp_submit_set_src_term_id(cs, \

附录-8

本文来源:https://www.bwwdw.com/article/co22.html

Top