附录
附录一
应答状态码表
SMIAS 返回的状态码表,见附表1。
状态码 0x00000000L 0x00000001L 0x00000002L 0x00000003L 0x00000004L 0x00000005L 0x00000010L 0x00000011L 0x00000012L 0x00000013L 0x00000014L 0x00000015L 0x00000016L 0x00000020L 0x00000021L 附录-1
状态 正确 其他错误 不合法的消息长度 不能识别的命令 同步错误 不合法的消息结构 不合法的SP ID 不合法的SP认证 不合法的绑定类型 已经正确BIND 超过最大允许连接数 尚未正确Bind 不支持的版本 不合法的消息模式 不合法的数据编码 SMIAS短信网关系统ICP接口使用手册(ANSI C V2.1)
0x00000022L 0x00000023L 0x00000024L 0x00000025L 0x00000026L 0x00000027L 0x00000028L 0x00000029L 0x0000002AL 0x0000002BL 0x0000002CL 0x0000002DL 0x0000002EL 0x0000002FL 0x00000030L 0x00000031L 0x00000032L 0x00000033L 0x00000034L 0x00000040 0x00000041 0x00000042 附录-2
不合法的服务类型 不合法的计费类型 不合法的日期格式 目标地址数量过多 短消息过长 不合法的msisdn 不合法的参数 没有目的地址 没有权限 找不到路由 系统错误 信息费过大 定时发送时间太大 不合法的信息费设置 不合法的源地址 不合法的计费用户类型 不合法的计费用户 群发目的用户重复 发送队列满 不合法的消息标识 包序号重复 包序号越界 第2章 接口操作
0x00000043L 找不到对应message id的短消息 超过速度限制 不合法的ISMG标识 不合法的目的网关 不合法的状态报告 不合法的服务ID 不合法的源网关 未知SMSC 未知LOCALE 未知ICP 0x00000044L 0x00000050L 0x00000051L 0x00000052L 0x00000053L 0x00000054L 0x00000055L 0x00000056L 0x00000057L
附表1 返回状态码
2-3
SMIAS短信网关系统ICP接口使用手册(ANSI C V2.1)
附录二 SMIAS短信网关系统SP接口对CMPP协议的扩展
为了更好的支持SP的业务,以及为了使协议更加合理,我们对CMPP协议做了以下扩展
和改动。 ? ? ?
使用32字节包头代替CMPP的16位包头,将命令状态放置在消息头中。
为了节省不必要的带宽占用(想一想100个目的地址的群发),使用变长串代替定长串。
连接请求包中我们增加了连接类型域。根据CMPP协议的定义,决定了一个SP只能与系统连接一次,而在实际的业务需求中,SP有可能会根据不同的服务,进行多次连接。所以,我们对CMPP做了如下扩展:在LOGIN时通知系统进行的是何种类型的连接,对于只接收型或发送接收型,只能进行一次连接;而对于只发型连接,可以进行多次连接。
在CMPPv1.1协议的定义中,提交请求中的消息标志号(message ID)由SP负责生成,为了使消息标志号唯一,ICP必须记录消息标志号的使用轨迹,这增加了SP维护消息标志号的负担。SMIAS的解决方案是:SP不需要生成消息标志号,当一条消息被提交给SMIAS系统以后,由SMIAS系统为其生成一个消息标志号,在应答包中返回给SP,以后SP可以根据这个消息标志号,对此条短消息进行Cancel 操作。CMPP v1.2也该为message ID由网关处负责生成,但生成规则却存在漏洞。
CMPP没有明确定义当群发时,当目的地址组中存在错误的手记号,或无法发送的手机号时,如何处理;SMIAS将错误的手机号在应答包中返回,同时指明错误原因,而将正确的手记号接受处理。
群发包支持最多255个目的号码(CMPP规定为100个,道理在哪儿?Is send buffer not enough?)
状态报告的格式不同(CMPP的状态报告格式过度依赖具体厂家的实现,很多属性的设置,对SP来说毫无意义或设置重复,仅仅对具体的网关实现算法有影响) CMPP v1.2将UDHI Indicator属性使用扩充一个byte来设置,(CMPP的一个重要特点是几乎不考虑带宽和可扩展性),SMIAS的解决方案是设置消息模式的第3位(从0
附录-4
?
?
? ? ?