Ben Suffolk wrote:
Sunil,
The way it works is you specify a URL with each message that you send,
and you give a different uid with each URL. When the DLR is received
the URL that you specified is called. So you get the uid that you set
with the message. In addition you get any other variables you
requested, such as the status of the DLR with status=%d Have a look in
the manual under table 6-9 for a list of other variables you can
include in your DLR :-
http://www.kannel.org/download/1.4.1/userguide-1.4.1/userguide.html#AEN3463
Just noticed in my original post I missed out a ? between the php and
the status, so it should have been
http://localhost/dlr.php?status=%d&uid=1234
The problem still remain because kannel gives different sms-id for each
http request. e.g if you get status 4 first and then status 1 - these
two requests has different sms-id (%I) .
Internal kannel DLR use TS and SMSC to determine specific message:
static void dlr_mysql_remove(const Octstr *smsc, const Octstr *ts, const
Octstr *dst)
{
Octstr *sql;
debug("dlr.mysql", 0, "removing DLR from database");
sql = octstr_format("DELETE FROM %s WHERE %s='%s' AND %s='%s' LIMIT 1;",
octstr_get_cstr(fields->table),
octstr_get_cstr(fields->field_smsc),
octstr_get_cstr(smsc),
octstr_get_cstr(fields->field_ts), );
mysql_update(sql);
octstr_destroy(sql);
}
variable name is TS but it doesn't looks like Timestamp
Question is : how we can be 100% sure which dlr-url http request
correspond to which SMS ?
Is it possible to use internal message ts value (octstr_get_cstr(ts))
instead of current Timestamp (%T) ?
Regards
Cezary Siwek