SMPP data_sm implementation for MT messages

Michael Zervakis michael at
Fri Nov 27 13:00:45 CET 2009

Data_sm PDU cannot contain a short_message field. Actually data_sm 
contains only TLVs and instead of "short_message" field we should use 
TLV "message_payload" to send text. As a result text=xxxx is obsolete 
when sending data_sm PDU. If we use data=xxxx what would be the value of 
data since all necessary data will be included in "meta-data=?smpp?"  ?


>-----Original Message-----
>From: Alejandro Guerrieri [mailto:aguerrieri at]
>Sent: Friday, November 27, 2009 12:04 PM
>To: Michael Zervakis
>Cc: devel at
>Subject: Re: SMPP data_sm implementation for MT messages


 >What about using "data=xxxx" instead of "text=xxxx" ?


 >Alejandro Guerrieri

 >aguerrieri at




 >On 27/11/2009, at 10:00, Michael Zervakis wrote:


 >> Data_sm can be used as an alternate of submit_sm when transmitting 

 >> optional parameters (meta-data) and some carriers require the use of 

 >> data_sm for MT charging applications.

 >> Since Kannel is not implementing this feature it's a good idea to 

 >> start a discussion on how this could be implemented.


 >> First of all it's obvious that "static int send_messages()" at gw

 >> \smsc\smsc_smpp.c must be able to differentiate msgs that need to be 

 >> sent as data_sm.

 >> I can think of two ways to achieve this:

 >> 1) Alter MSG definition to inlcude a new parameter that defines type 

 >> of message Data or normal SMS

 >> Possible ways to use the new parameter could be the following

 >> /cgi-bin/sendsms?from=1111&to=2222&<new parameter>=data&meta-data=?

 >> smpp?key=value

 >> /cgi-bin/senddata?from=1111&to=2222&meta-data=?smpp?key=value

 >> 2) Leave MSG definition untouched and use meta-data to mark msg as 

 >> data

 >> /cgi-bin/sendsms?from=1111&to=2222&meta-data=?smpp?<new 

 >> parameter>=data&key=value


 >> Finally a new function has to be defined at gw\smsc\smsc_smpp.c to 

 >> build data_sm pdu from msg for example "static SMPP_PDU 

 >> *dmsg_to_pdu(SMPP *smpp, Msg *msg)"

 >> and function "static int handle_pdu()" at gw\smsc\smsc_smpp.c has to 

 >> be modified to include a case for data_sm_resp PDU.


 >> Any comments?



More information about the devel mailing list