RE: SMPP data_sm implementation for MT messages
"Rene Kluwen" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
I did the same thing, a long time back already. Would be nice to add something like this to Kannel, because I keep getting requests for it. Some comments after just a quick glance: 1. If you add tlv's, first check if client version > 0x33. 2. My previous patch added the following v3.4 fields, based on the UDH of the message: - sar_msg_ref_num - sar_total_segments - sar_segment_seqnum - payload_type I am not really sure what is in msg->sms.meta_data. Would be nice if this also would automatically contain those fields, based on msg->udh. I can share the code for that. == Rene -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Michael Zervakis Sent: donderdag 22 juli 2010 18:02 To: [email protected] Subject: RE: SMPP data_sm implementation for MT messages Hi , This is a proposed implementation for sending data_sm PDUs that also enforces SMPP requirement for having sm_length=0 when using message_payload TLV. To send a data_sm PDU the sendsms request should be like meta-data?smsc-type=smpp_data_sm?. *msg_to_pdu() was replaced by two functions *msg_to_sm_pdu() and *msg_to_datasm_pdu() for submit_sm and data_sm() PDUs respectively and handle_pdu() got a new case for incoming data_sm_resp PDU. BR, Michael Zervakis -----Original Message----- From: Alexander Malysh [mailto:[email protected]] On Behalf Of Alexander Malysh Sent: Friday, November 27, 2009 5:04 PM To: Michael Zervakis Cc: Kannel Devel; Alejandro Guerrieri Subject: Re: SMPP data_sm implementation for MT messages where do you have message_payload extracted to user? that is simple: MT(data_sm) -> sendsms?text=ABC&metadata=?smpp?pdu_type=data_sm... -> data_sm.message_payload=ABC MT(submit_sm) -> sendsms?text=ABC... -> submit_sm.short_message=ABC MO(data_sm) -> data_sm.message_payload=ABC -> receivesms?text=ABC&metadata=?smpp?pdu_type=data_sm MO(submit_sm) -> submit_sm.short_message=ABC -> receivesms?text=ABC If user set for MT text=ABC&metadata=?smpp?pdu_type=data_sm&message_payload=XXX then it's undefined and we are free to choose which one to use and I would prefer to use text as message_payload... Hope that's clear. Thanks, Alexander Malysh Am 27.11.2009 um 15:21 schrieb Michael Zervakis: > > Let's assume that we follow Alex's recommendation "meta-data=?smpp?operation=data_sm&..." and if operation is omitted we use submit_sm as default. > > > We should clarify what should happen to "text=xxxx" if set and this should affect both submit_sm and data_sm operations as SMPP specs state that short_message and message_payload cannot coexist in a PDU (sm_length should be zero if message_payload is used). I can think of three cases here: > > 1) When "text" has a value and "message_payload" is not set. For submit_sm no need to change anything. For data_sm we append meta-data with message_payload and set the value of "text" to it (example: "text=XXXX&meta-data=?smpp?operation=data_sm"). > 2) When both "text" and "message_payload" have values. For submit_sm operation "text" value is set to null (so "sm_length" is set to 0 and we don't break specs) and we use the provided "message_payload" value. For data_sm operation we simply ignore "text" value. > > 3) When "message_payload" has a value and "text" is not set. Normal case doesn't break specs. > > > > > >> -----Original Message----- >> From: Alexander Malysh [mailto:[email protected]] On Behalf Of > Alexander Malysh >> Sent: Friday, November 27, 2009 3:32 PM >> To: Michael Zervakis >> Cc: [email protected]; [email protected] >> Subject: Re: SMPP data_sm implementation for MT messages > > >> Hi, > > >> why not just use metadata=?smpp?operation=data_sm&... ? > >> then you can check in smsc_smpp whether submit_sm or data_sm should be used. > > >> Whether you have to use message_payload or short_message is > implementation details that > >> should not be exported to user interface. > > >> Thanks, > >> Alexander Malysh > > >> Am 27.11.2009 um 13:00 schrieb Michael Zervakis: > > >> > 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:[email protected]] > >> >> Sent: Friday, November 27, 2009 12:04 PM > >> >> To: Michael Zervakis > >> >> Cc: [email protected] > >> >> Subject: Re: SMPP data_sm implementation for MT messages > >> > > >> > > >> > >What about using "data=xxxx" instead of "text=xxxx" ? > >> > > >> > >-- > >> > > >> > >Alejandro Guerrieri > >> > > >> > >[email protected] > >> > > >> > > > >> > > > >> > > > >> > >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? > >> > > >> > >> > >> > >> > >> > > >