Up until recently I have been using UDH info to control the Voicemail MWI on GSM CellPhones.
Of course, recently means just that - I was having difficulty with Windows Mobile based phones, they were not dealing very well with something in the message. Some sources say it was the 8-bit encoding, others say WM powered phones don't like UDH. I don't know, and I'm not getting much joy from Microsoft on this.
So... I decided to switch to sending messages encoded with the DCS of 0xC0 (1100-0000) and 0xC8 (1100-1000) to turn the Voicemail MWI OFF and ON respectively. I am also including the 'ms_msg_wait_facilities' and 'ms_number_of_messages' TLV's. According to the GSM spec DCS C0 & C8 are 'Discard' type messages.
From reading the SMPP spec I figured I'd need to set the sm_length to zero.
Tried that, SMPP gateway kicked me out (just dropped the connection), so I tried again, but this time added a 'message_payload' TLV with a content length of 0. Now the gateway doesn't drop me, but fails to respond (and the message never gets sent)
This brings me to the meat of the matter - If I add some text to the message (so the gateway will accept it) the MWI on the phone does indeed switch on/off, but the text content gets stored as a TXT message, which must be deleted -- unacceptable to me and my customers. I figure that some gateway along the path is seeing the text and OR'ing in the 'Store' bit (effectively converting the DCS to D0 or D8).
I have found that if I set the content to any SINGLE byte (doesn't really matter what the value is) then Nokia and Palm based devices (not checked others) drop the TXT and work ok... but the Windows phone goes and displays a 1-char TXT which must them be deleted.
First, an assumption: I assume that the 'content' portion of the message (whether the 'short_message' field or the 'message_payload' TLV) must be missing when the encoded message finally makes it to the phone in order for the phone to behave correctly - correct me if I'm wrong on this.
Now, the question: Does the SMPP specification allow sending of 'null' messages... i.e. messages with a payload of 0 bytes?
I can provide hex dumps of the messages I am sending if that would assist.
Thanks in advance,