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