Re: [PATCH] Pass meta-data from message to dlrs
Alexander Malysh <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
ahh alex, before you start to add meta_data to db storages please give me time to merge mysql-prepaid branch. Just update your cvs in 30-60min. Thanks, Alexander Malysh Am 04.09.2009 um 09:40 schrieb Alexander Malysh: > Hi Alex, > > if you add: > + Octstr *meta_data; > to dlr struct then you have add meta_data column to all storage > types :) otherwise don't add it. If you ask me, I would say, if you > add it for faked dlrs then you have > to add it to db storages as well. > > as to the points: > 1) +0 > 2) -1 because I don't see reason to add internal smpp sequence. this > is just one counter and will not add any useful information. > 3) ++1 :) > > Thanks, > Alexander Malysh > > Am 04.09.2009 um 01:08 schrieb Alejandro Guerrieri: > >> Ok, silly diff errors aside (I wasn't including dlr_p.h :P), here's >> the new patches also changing the error code format as Alex >> suggested. >> >> <kannel-dlr-meta-data.diff> >> <kannel-dlr-command-status.diff> >> >> Userguide patch coming later. >> >> Just a few more ideas to consider: >> >> 1. Adding one more called "dlr_status_text" with the text >> description from smpp_error_to_string(pdu- >> >u.submit_sm_resp.command_status). Not sure if it makes sense, this >> could be done at the application level with a simple table... >> >> 2. Adding one more called "dlr_sequence" with the sequence_number >> parameter. >> >> 3. Extending patch #1 adding the meta-data column on all DB >> implementations, so meta-data could be passed and stored on dlr's >> other than the first one generated by kannel. >> >> Regards, >> -- >> Alejandro Guerrieri >> [email protected] >> >> >> >> On 03/09/2009, at 23:33, Alexander Malysh wrote: >> >>> Hi Alex, >>> >>> first patch seems still broken: >>> + dlr->meta_data = (msg->sms.meta_data ? octstr_duplicate(msg- >>> >sms.meta_data) : octstr_create("")); >>> >>> we don't have meta_data in dlr struct. otherwise +1 >>> >>> second patch: >>> + if (msg->sms.meta_data == NULL) >>> + msg->sms.meta_data = octstr_create(""); >>> + meta_data_set_value(msg->sms.meta_data, "smpp", >>> octstr_imm("dlr_status"), >>> + octstr_format("%d", pdu- >>> >u.submit_sm_resp.command_status), 1); >>> + >>> >>> Would it it not better to have error code formated as smpp-tlv >>> group and as error message? >>> + octstr_format("0x%08lx", pdu- >>> >u.submit_sm_resp.command_status), 1); >>> >>> Thanks, >>> Alexander Malysh >>> >>> >>> Am 03.09.2009 um 21:13 schrieb Alejandro Guerrieri: >>> >>>> Oh, I see, I've attached the ~ backup file from vim. This are the >>>> right files, just in case: >>>> >>>> <kannel-dlr-command-status.diff> >>>> <kannel-dlr-meta-data.diff> >>>> >>>> -- >>>> Alejandro Guerrieri >>>> [email protected] >>>> >>>> >>>> >>>> On 03/09/2009, at 21:06, Alejandro Guerrieri wrote: >>>> >>>>> Oh, that must have filtered into the patch. Weird :P >>>>> >>>>> Sorry, it's safe to remove it. >>>>> >>>>> Regards, >>>>> -- >>>>> Alejandro Guerrieri >>>>> [email protected] >>>>> >>>>> >>>>> >>>>> On 03/09/2009, at 20:56, Gustavo Mohme C. wrote: >>>>> >>>>>> Hi Alejandro, >>>>>> I get this error after applying your patch. >>>>>> >>>>>> gw/dlr.c: In function ‘dlr_add’: >>>>>> gw/dlr.c:352: error: ‘struct dlr_entry’ has no member named >>>>>> ‘meta_data’ >>>>>> make: *** [gw/dlr.o] Error 1 >>>>>> >>>>>> After editing /gw/dlr_p.h and adding meta_data to the struct >>>>>> dlr_entry, it compiled with no complaints. Is this the correct >>>>>> thing to do? >>>>>> I was patching the latest kannel snapshot.... >>>>>> Thanks, >>>>>> Gustavo >>>>>> >>>>>> On Thu, Sep 3, 2009 at 3:39 AM, Alejandro Guerrieri <[email protected] >>>>>> > wrote: >>>>>> Hi, >>>>>> >>>>>> This is a set of two patches, though they're both very simple >>>>>> and could have been mixed, I've preferred to split to honor the >>>>>> rule of not mixing features in a single patch. >>>>>> >>>>>> Patch #1, kannel-drl-meta-data.diff allows meta-data to be >>>>>> passed when sending a message to come back into the "fake" dlr >>>>>> that kannel generates when the smsc accepts or rejects a >>>>>> message. It could be extended to work with the different dlr >>>>>> engines so the meta-data would be also passed on the >>>>>> intermediate and final dlr's delivered by the carriers (though >>>>>> it would require changes on the database structure to add a >>>>>> "meta_data" column of course. I'm not sure this would be >>>>>> needed, the dlr-url could be easily abused to pass application- >>>>>> specific parameters without much hassle. >>>>>> >>>>>> Patch #2, kannel-dlr-command-status.diff builds on top of patch >>>>>> #1 and creates a meta data value called "dlr_status" that comes >>>>>> back on the "fake" dlr generated by kannel (This was the real >>>>>> reason why patch #1 was created). The value there is the >>>>>> "command_status" value some people on the list needs to get >>>>>> from the submit_sm_resp PDU's. >>>>>> >>>>>> Example usage: >>>>>> >>>>>> On sendsms: >>>>>> >>>>>> http://localhost:13013/cgi-bin/sendsms?username=kannel&password=kannel&from=12345&to=12345678&smsc=mysmsc&text=Hello&dlr-mask=31&meta-data=%3Fsmpp%3Fmy_own_field%3D1234&dlr-url=http%3A%2F%2Flocalhost%2Fx%3Fdata%3D%25D >>>>>> >>>>>> Notes: >>>>>> >>>>>> meta-data is urlencoded version of: ?smpp?my_own_field=1234 >>>>>> dlr-url is urlencoded version of: http://localhost/x?data=%D >>>>>> >>>>>> So, after applying Patch #1, kannel would call the following url: >>>>>> >>>>>> http://localhost/x?md=%3Fsmpp%3Fmy_own_field%3D1234 >>>>>> >>>>>> The "md" parameter, once urldecoded would look like: >>>>>> >>>>>> ?smpp?my_own_field=1234 >>>>>> >>>>>> You can pass as many parameters as you want of course and they >>>>>> would be added to meta-data along with any other fields you've >>>>>> defined on your smpp-tlv groups, etc. >>>>>> >>>>>> So far so good, in fact you could pass this kind of stuff on >>>>>> regular url variables, but the goal of this patch was to allow >>>>>> to add stuff back from the smsc's response. >>>>>> >>>>>> Now, with patch #2 also applied, the url returned would be >>>>>> something like this: >>>>>> >>>>>> http://localhost/x?md=%3Fsmpp%3Fmy_own_field%3D1234%26dlr_status%3D69%26 >>>>>> >>>>>> The "md" parameter, once urldecoded would look like: >>>>>> >>>>>> ?smpp?my_own_field=1234&dlr_status=69& >>>>>> >>>>>> In this case, dlr_status gets loaded with submit_sm_resp's >>>>>> command_status which was: 69 = 0x00000045 (Submit Failed). >>>>>> >>>>>> The "sequence_number" could be added just as easily (not a bad >>>>>> idea imho). What do you think? "dlr_sequence" or "dlr_seq" >>>>>> would be ok? >>>>>> >>>>>> I'm writing the userguide patch if this goes forward of course. >>>>>> >>>>>> Comments? >>>>>> >>>>>> Regards, >>>>>> -- >>>>>> Alejandro Guerrieri >>>>>> [email protected] >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >