> 
> We dont really care. The ID is sent back to the application so the 
> unique ID is only of value to the application.
> 

This implies that the DR has to be uniquely routed back to the 
application, which presents its own challenges (see later). For
example, a broadcast model for propagating DRs back to the SMS
box is effectively ruled out. 

> Theres some work to be done on teh SMS box. The idea was to define a 
> keyword for every application. so if you have APP1 and APP2 sending 
> messages, the dlrs going back would have keywords like DLR_APP1 and 
> DLR_APP2 so they get sent back to the correspodning application. 
> Currently this is hardcoded to "DLR" but supposed to be changed soon.

That might work for multiple applications interfacing to a *single* 
SMS box. But what about multiple applications interfacing to multiple
SMS boxes ? In that case you need to store information about the
target SMS box in the DR struct to ensure correct routing from the BB
to the SMS box. 

> Well the problem is that the DR structure is still there when the 
> message has already been trashed. You dont want to keep the full 
> message for such a long time. That would betoo much waste of memory. 
> But I'll take a look at that code anway, I'm sure I can reuse some of 
> it. After all, its the same moment when those things happen.

No, what I mean is to use the Msg struct to wrap your dlr_wle from dlr.c
Adding something like the following to msg-decl.h;

MSG(dlr,
        {
                OCTSTR(smsc);
                OCTSTR(timestamp);      
                OCTSTR(destination);
                OCTSTR(keyword);
                OCTSTR(id);     
                INTEGER (mask);
        })

The advantage I see is that there is lots of code to manipulate
this struct and that the store supports it already.
 
> Assume you send out 1 million SMS a month and you have 7 days of 
> delivery reports being queued up, that would result in carrying 
> around 250'000 message structures. If we presume the message struct 
> is only 200 bytes that results in 50MB memory useage. The 
> applications I've seen who want to do delivery report where mainly 
> for billing issues. You want to be sure the message got there before 
> you bill it kind of thing. Or if it doesnt go through you want to 
> requeue it to another SMSC for example. In that case the DLR is sent 
> back to the application. Because the application has a unique key, it 
> can recreate the message again or it could reverse the billing charge 
> etc. etc. I dont think its up to kannel to handle the DLR so thats 
> why we dont need the message anymore.

Agree. Kannel should not cache a message purely for the purposes of DR
handling. That belongs to the application.



Reply via email to