Dear development community,
We have many web applications using Kannel to send and receive SMS. We are
using MySQL as a Delivery Report (DLR) external storage.
Some of our applications use mass SMS sending (sometimes more than 30
thousand SMS are sent at one time).
Our SMS operator has alerted us to the fact that there is too much traffic
being processed in our connections, both outbound and inbound.
The outbound part is obviously our applications, but the inbound part is
what caught us by surprise.
Although our applications are requesting only DLR's in case of delivery
failure (notification type = 2), Kannel is requesting also DLR's for
delivery success (notification type = 3 (2 + 1)). This is documented in the
source code as:
/* if delivery reports are asked, lets ask for them too */
/* even the sender might not be interested in delivery or non delivery
*/
/* we still need them back to clear out the memory after the message */
/* has been delivered or non delivery has been confirmed */
We think that this behavior is only required when using internal DLR
storage.
We are thinking of changing Kannel's source code to use the same
notification type what our applications are requesting. This will result in
DLR's records of delivered SMS being kept in the database forever. We then
can use an SQL script to delete these records.
This way we are reducing inbound traffic in about 80 to 90%, that will
result in an huge increase on delivery speed.
Has anyone had this problem before? Is there already a solution to this
issue?
Is this solution the right approach to solve this issue?
Thank you for your help.
Best regards,
Richard Spencer