Arnar,

From what you show it looks like you have asked for a mask of 2, which means it will only pass failures to you. If you set your mask value to 31 you will get all DLRs

Regards

Ben
On 12 Jul 2007, at 16:27, Arnar Gestsson wrote:

Hi Ben,

thanks for this, however, this seems to solve the matter regarding ts but I seem to have issues with the mask now, i.e. my smsc seems only return dlr of type=1, i.e.

2007-07-12 17:23:37 [22958] [6] DEBUG: DLR[internal]: Adding DLR smsc=smppconn, ts=88389666, src=Arnar, dst=4520617605, mask=2, boxc=


2007-07-12 17:23:43 [22958] [6] DEBUG: SMPP[smppconn] handle_pdu, got DLR 2007-07-12 17:23:43 [22958] [6] DEBUG: DLR[internal]: Looking for DLR smsc=smppconn, ts=88389666, dst=Arnar, type=1 2007-07-12 17:23:43 [22958] [6] DEBUG: DLR[internal]: Ignoring DLR message because of mask type=1 dlr->mask=2 2007-07-12 17:23:43 [22958] [6] ERROR: SMPP[smppconn]: got DLR but could not find message or was not interested in it id<88389666> dst<Arnar>, type<1>

do you know why this is?

BR. Arnar

On Thu, 2007-07-12 at 15:45 +0100, Ben Suffolk wrote:
Hi Arnar,


Have a look at the msg-id-type option in the user guide under SMPP, it is for this exact issue :-)


Regards


Ben



On 12 Jul 2007, at 15:35, Arnar Gestsson wrote:

Hi guys,

I've been dealing with an SMSC using SMPP protocol. What happens is that Kannel is not able to correlate the DR with the submitted SMS. It's because the Comverse SMSC sets the timestamp in hex format when the submit is done but when the delivery report is sent it comes as a decimal string possibly with zero padding, i.e.

submit_sm phase:
Adding DLR smsc=smppconn, ts=13bc6b1, src=yyyyy, dst=xxxx, mask=19, boxc=KANNELSMSC

dlr phase:
    Looking for DLR smsc=smppconn, ts=0020694705, dst=xxxx, type=1

and subsequently it states that it doesn't find the message associated with the id!! I've in a quick and dirty manner fixed this by using mysql as a dlr storage so the select and the delete from dlr are now like this

sql = octstr_format("SELECT %s, %s, %s, %s, %s, %s FROM %s WHERE % s='%s' AND (%s='%s' or %s=conv('%s', 10,16));", octstr_get_cstr(fields->field_mask), octstr_get_cstr(fields->field_serv), octstr_get_cstr(fields->field_url), octstr_get_cstr(fields->field_src), octstr_get_cstr(fields->field_dst), octstr_get_cstr(fields->field_boxc), octstr_get_cstr(fields->table), octstr_get_cstr(fields->field_smsc), octstr_get_cstr(smsc), octstr_get_cstr (fields->field_ts), octstr_get_cstr(ts), octstr_get_cstr(fields->field_ts), octstr_get_cstr(ts));

sql = octstr_format("DELETE FROM %s WHERE %s='%s' AND (%s='%s' or %s=conv('%s',10,16)) LIMIT 1;", octstr_get_cstr(fields->table), octstr_get_cstr(fields->field_smsc), octstr_get_cstr(smsc), octstr_get_cstr (fields->field_ts), octstr_get_cstr(ts), octstr_get_cstr(fields->field_ts), octstr_get_cstr(ts));


This is as stated quick and dirty but solves my problem right now. What I would like to know is if others are stumbling into the same problem and also if some sort of more elegant solution shouldn't be included into kannel, possibly with configuration directive, thus instead of or-ing use conv only when needed.

BR. Arnar


Arnar Gestsson
Amivox ehf.
aeBeat: arnargestsson
Phone: +4520617605
Email: [EMAIL PROTECTED]
------------------------------
Non-intrusive voice messaging


Arnar Gestsson
Amivox ehf.
aeBeat: arnargestsson
Phone: +4520617605
Email: [EMAIL PROTECTED]
------------------------------
Non-intrusive voice messaging

Reply via email to