See this one: Example Service Indication XML is like this:
<?xml version="1.0"?> <!DOCTYPE si PUBLIC "-//WAPFORUM//DTD SI 1.0//EN" "http://www.wapforum.org/DTD/si.dtd"> <si> <indication href="http://www.xyz.com/email/123/abc.wml" created="1999-06-25T15:23:15Z" si-expires="2099-06-30T00:00:00Z"> You have 4 new emails </indication> </si> Decode that one to WBXML rule, so we have 02 05 6A 00 45 C6 0D 03 'x' 'y' 'z' 00 85 03 'e' 'm' 'a' 'i' 'l' '/' '1' '2' '3' '/' 'a' 'b' 'c' '.' 'w' 'm' 'l' 00 0A C3 07 19 99 06 25 15 23 15 10 C3 04 20 99 06 30 01 03 'Y' 'o' 'u' ' ' 'h' 'a' 'v' 'e' ' ' '4' ' ' 'n' 'e' 'w' ' ' 'e' '-' 'm' 'a' 'i' 'l' 's' 00 01 01 or 02056A0045C60D0378797A008503656D61696C2F3132332F6162632E776D6C000AC307199906251 5231510C304209906030103596F7520686176652034206E657720652D6D61696C73000101 detail 02 WBXML versi 1.2 05 SI 1.0 Public Identifier, 6A charset UTF-8 00 Length of table string=0x00 45 Tag <si> without attribute followed by content C6 Tag <indication> with attribute followed by content 0D code for attribute href="http://www." 03 String followed 'x','y','z', 00 String "xyz" ended by NULL (0x00) 85 string ".com/" 03 String followed 'e', 'm', 'a', 'i', 'l', '/', '1', '2','3', '/', 'a', 'b', 'c', '.', 'w', 'm','l', 00: String "email/123/abc.wml" ende dby NULL (0x00) 0A attribute "created=" C3 Penanda bahwa ada tipe data OPAQUE yang 07 Panjang = 7 bytes 19,99,06,25,15,23,15 Data opaque yang dimaksud. Data ini mengacu ke informasi tanggal "1999-06-25 15:23:15" 10 Kode untuk atribut "si-expires=" C3 data OPAQUE following 04 Length = 4 bytes 20,99,06,30 Opaq Data refer to this date: "2099-06-30 00:00:00" 01 END (end of attribute) 03 String followed 'Y','o','u',' ','h','a','v','e',' ','4', ' ','e','- ','m','a','i','l','s',00 String "You have 4 emails" ended by NULL (0x00) 01 END (of <indication>) ->tag </indication> 01 END (of <si>) -> tag </si> Then we need to append WSP Header 01060403AE81EA Detail: 01 Push ID 06 WSP PDU Type = Push 04 Length PDU Push WSP followed = 4 octet 03 Length of content type + header = 3 octet AE content type: application/vnd.wap.sic (originally value is 0x2E) Must be coded with OR rule with 0x80 0x2E = 00101110 0x80 = 10000000 ----------------------- OR 0xAE = 10101110 we got 0xAE 81 Header WSP 0x81 = 0x01 | 0x80, which is Accept-Charset EA Value of header Accept-Charset which is UTF 8 (hexa 0x6A). 0xEA = 0x6A|0x80 We also need to define header WDP Header WDP on SMS: 05040B8423F0 05 IEI (Application Port Schema Addressing, 16 bit) 04 Length IEI = 4 byte, yakni 4 byte yang mengikuti byte ini 0B84 Port WDP dest SMS = 0x0B84 (hexa) = 2948 (desimal) = WAP Push connectionless session service (client side) 23F0 Port WDP sender SMS = 0x23F0 (hexa) = Connectionless WAP Browser Proxy Server Totally 05040B8423F0 (WDP Layer) 01060403AE81EA (WSP Layer) 02056A0045C60D0378797A008503656D61696C2F3132332F6162632E776D6C000AC307199906251 5231510C304209906030103596F7520686176652034206E657720652D6D61696C73000101 we got this TP-UD sms 05040B8423F001060403AE81EA02056A0045C60D0378797A008503656D61696C2F3132332F61626 32E776D6C000AC3071999062515231510C304209906030103596F7520686176652034206E657720 652D6D61696C73000101 still under 140 octet right? so we can send it using 1 SMS only construct SMS like this 55010C9126582602680800F5A75A0605040B8423F001060403AE81EA02056A0045C60D0378797A0 08503656D61696C2F3132332F6162632E776D6C000AC3071999062515231510C304209906030103 596F7520686176652034206E657720652D6D61696C73000101 your WAP Push SMS is ready Good luck On 11/7/07, Diego Castillo <[EMAIL PROTECTED]> wrote: > > Hello, > > I'm using Kannel to send some wap push messages and I'd like to decode the > PDUs for troubleshooting. This is what I see in the Kannel logs: > > 2007-11-06 12:29:30 Sent SMS [SMSC:smsc-0] [SVC:ppg] [ACT:] [BINF:] > [from:...] [to:...] [flags:-1:1:-1:-1:0] > > [msg:72:0106246170706C69636174696F6E2F766E642E7761702E656D6E2B7762786D6C00AF > > 898DA1C393030D6A008507036F6D615F656D6E407961686F6F2E65730005C305200711061201 > ] [udh:7:...] > > So far I have been able to separate the headers ("010624" plus the next 36 > bytes) from the payload (which looks fine). However, I'm unable to decode > the last bytes from my headers, more precisely: "0xAF 0x89 0x8D 0xA1 0xC3 > 0x93". > > Has anyone experience on decoding such tokenised headers? > > Thanks in advance, > > > Diego > > > -- Regards, Ady Wicaksono Email: ady.wicaksono at gmail.com http://adywicaksono.wordpress.com/
