Just as a short comment to this DLR thread and possibly to give ideas;
as I have been tweaking with Kannel for a while (including some drastic
changes that were rejected on the list :) as one operation I planned one
way to implement delivery reports in Kannel
It is divided into following parts:
- sms-service or sendsms has 'delivery-reports' set to true
- when SMS is delivered to SMSC, delivery report is asked for,
and before even ACK from original delivery is written to
bb_store (thus eliminating original message) the sent message
is also written to separate report-file along with delivery report
'receipt' given by the SMSC
- whenever delivery report is returned from SMSC, that is written
to that same report-file
..any logic to match original message to received report is handled by
external program that reads that report-file. Kannel simply writes to it.
That external program can then re-send message if no report has been
issued (after a long time), or send a notification to other program or
whatever. Or it can be simply a small perl-script to extract delivered
messages so that they can be billed. Whatever is suitable.
Thus, the system would mean:
a) Kannel does not need to store any messages after they have been
successfully delivered to SMSC (complete original messages are only
stored in file, and disk is cheap..)
b) Kannel does not have any built-in logic to handle expiring reports
etc. (NOTE: however, I was thinking about a separate function to read
that report-file upon (HTTP) request and re-send messages that has
not received delivery report..)
c) (3rd party) applications only interested to get the message delivered
does not need to store any information; that external program will
handle re-send and/or only bill delivered messages
My original idea has delivery reports to be written into store-file
(bb_store) but then it would result in expanding file - now it keeps empty
as long as nothing goes wrong
--
&Kalle || http://iki.fi/rpr/