Jun 10 2007

sms 发送 wap push的方法和格式(转载)

Published by 松松 at 10:02 am under SMS技术

wap push格式00 'SMSC Len。用手机上设置短信中心号码

51 'submit type

00 'SMS_TP_Message_Reference type

0B '对方电话的长度

A1 'Number type

13175639296F6 '电话号码:13573629696

00 'SMS_TP_PID

F5 'SMS DCS

A744 'SMS available date

0B05040B8423F00003030101 'Wap Push Header 1

29060603AE81EA8DCA 'Wap Push header 2

02

05 '-//WAPFORUM//DTD SI 1.0//EN

6A 'UTF-8

00

45 '>si

C6 '>indication

08 '>action=signal-high

0C 'href="http://

03 '字符串开始

687474703A2F2F3231382E35392E3133382E35343A32303030 'URL: http://218.59.138.54:2000

00 'URL 字符串结束

01 '

03 '内容描述字符串开始

'这里就是显示给用户的内容,用utf-8编码。

9A6C5EF6671D '内容描述:马延朝

00 '内容描述字符串结束

01 '>/indication

01 '>/si

可以只能显示很少的汉字,请高手指点怎么分包发送更多的汉字?

一下方法是经过验证的。

TrxID =一个随机数

fullStr = "0605040B8423F0" & TrxID & "0601AE"

fullStr = fullStr & "02056A0045C6080C03"

fullStr = fullStr & StrToHex(TheURL, 2)

fullStr = fullStr & "001103" & "0102"

fullStr = fullStr & "40494400080AC307" & Format(Now, "yyyymmddhhmmss")

fullStr = fullStr & "10C304" & "20990101" & "0103"

fullStr = fullStr & StrToHex(MServiceName, 2) & "000101"

分段发送的

例如 URL:wap.gd.monternet.com/?userType=B&serviceID=04020028 提示信息:神秘激情地带,江湖儿女情长神秘激情地带,江湖儿女情长神秘激情地带,江湖儿女情长

第一包:

0B05040B8423F0000355020155060403AE81EA02056A0045C60C037761702E67642E6D6F6E74657

26E65742E636F6D2F3F75736572547970653D42267365727669636549443D303430323030323800

070103E7A59EE7A798E6BF80E68385E59CB0E5B8A62CE6B19FE6B996E584BFE5A5B3E68385E995BF

E7A59EE7A798E6BF80E68385E59CB0E5B8A62C

第二包:

0B05040B8423F00003550202E6B19FE6B996E584BFE5A5B3E68385E995BFE7A59EE7A798E6BF80E6

8385E59CB0E5B8A62CE6B19FE6B996E584BFE5A5B3E68385E995BF000101 ,解释可参考WDP WSP,我就不具体说了

0B是头的总长度

05040B8423F0是固定的,表示接下来是一个WAP PUSH

分包的关键是0003550201,对应GSM 03.40里9.2.3.24.1,00表示是Concatenated Short Messages,03是长度,55是reference number,楼主在这儿固定编码会有问题的,如果同时下发两条这样的多包短信给同一个手机,手机就区分不开了,02表示分成2个短信发送,01是当前包的序号。

一个扩展包wappush包是这么构成的

WDP + WSP + SI/SL

如果长度超常(短信一个包的Content不要超过140)

就要分解成

WDP1 + (WSP+SI/SL)的part 1

WDP2 + (WSP+SI/SL)的part 2

...

WDPN + (WSP+SI/SL)的part N

如单包

WDP: 06 05 04 0B 84 23 F0

WSP: ...

SI/SL:...

双包是

第1包

WDP: 0B 05 04 0B 84 23 F0 00 03 01 02 01

Part1: ...

// 00 - UDH IE Tag

// 03 - UDH SAR IE Length

// 01 - Refrence

// 02 - Total Packet

// 01 - Current Packet

第2包

WDP: 0B 05 04 0B 84 23 F0 00 03 01 02 02

Part2:...

WDP参考相关文档。

=====================================================

首先,构造一个Push消息体:

02

05 '-//WAPFORUM//DTD SI 1.0//EN

6A 'UTF-8

00

45 '>si

C6 '>indication

08 '>action=signal-high

0C 'href="http://

03 '字符串开始

这里就是url从"http://"以后的那部分的每个字符的ASCII码

00 '字符串结束

0A 'created=

C3 '时间

07 '7个字节,也可以是04,下面就只需要年月日就可以了

20 03 01 01 00 00 00 '年,月,日,时,分,秒,格式如何一看就明白吧。

10 'si_expires=

C3 '时间

07 '跟上面一样

20 04 01 01 00 00 00

01 '

03 '字符串开始

这里就是显示给用户的内容,用utf-8编码。

utf-8编码,英文字符直接用ascii码;中文如果unicode是(二进制)abcdefgh ijklmnop,

那么utf-8就会变成1110abcd 10efghij 10klmnop

00 '字符串结束

01 '>/indication

01 '>/si

有了Push消息体之后,需要在前面增加一个Push PDU

81 'transaction id (connectionless WSP)

06 'pdu type (06=push)

06 'Headers len

03 AE 81 EA 'content type: application/vnd.wap.sic; charset=utf-8

8D 'content-length

XX '这里就是Push消息体的长度。如果消息体长度小于128,那么就要加上128。例如是93个字节,那么需要填入DD

'至于大于127怎么处理,按照协议好像应该是这样,例如原来的二进制abcdefgh,那么就要弄成两个字节:

'1000000a 1bcdefgh,但是尝试还没成功

在然后,还要在前面增加一个UDH

06 'User Data Header Length (6 bytes)

05 'UDH Item Element id (Port Numbers)

04 'UDH IE length (4 bytes)

0B 84 'destination port number

23 F0 'origin port number

如果所有这些加起来大于140个字节,那么就需要修改UDH头,分成两条短消息串联。但是没有尝试成功。

发送的时候,udhi=1,pid=0,dcs=4

Nokia 3650/7650肯定OK,motorola t720肯定ok,siemens 3118,3618肯定不行,其他的还没尝试。

同样的技术可以用来发送mms通知、fundown的铃声图片。

需要解决的问题:长于127字节/两条短信的时候该怎么办。

One Response to “sms 发送 wap push的方法和格式(转载)”

  1. alex CHINA Windows XP Internet Explorer 7.0 on 17 Jun 2008 at 9:17 pm

    谁可以 移动网关 发送 WAP PUSH呢

    我有大量单子

    要求:能单独测试的 一手网关渠道

    联系QQ:454753912

    电话:15922448931

    [回复]

Trackback URI | Comments RSS

Leave a Reply