Re: CIMD tariff classes
Pekka Ahmavuo <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
Hello Anders, > > I know this has been discussed before, but has anybody taken the effort > to implement tariff classes for CIMD? If not, I need to do it. > > (I know this is a CIMD only thing, as almost all other SMSCs don't > support extra billing information. What would be the right way to > implement a thing like this? Maybe extending the msg structure, allowing > it to contain billing information that can be used by all SMSCs... ?) > > Thanks, > > -- > Anders Lindh > FlyerOne Ltd from the url: http://www.netland.fi/kannel/gateway-tariff-19-10.tar.gz you can find Oct 19th cvs kannel with my tariff class changes. I believe it should be relatively easy to update it to the latest cvs. Please test it extensively before taking it into production. I have had some problems with one installation, and I am not sure if it was because of bugs in my code, bugs in the rest of the kannel or if there was something wrong with the Linux installation (a Debian development version). Let me know if you find any bugs from my code. Fixes are wellcome. Please let me know also if you dont have any problems. When I sure enough that my code is relatively bug-free I will commit the changes into the cvs. >From below you can find some info about my tariff class changes. br, Pekka Ahmavuo Netland Oy ---------- Here is what I have done so far regarding the cimd2 tariff class. First some backgrounds: Two parameters are involved in setting the billing information, the "tariff class" and "service description". (Altough this may be specific to Finnish operator Radiolnja. Please comment if you know that some other CIMD2 operator treats he billing info in some other way). Tariff class defines how much the message from the application to the mobile costs the receiver (i.e. how much the client pays). Tariff class has predefined integer values, for example, SMS with tariff class 4 costs the client 1,42 FIM. When the tariff class is set, the service description should be also set to zero. If service description set to 1,the message if free to the client and a fee is charged from the application. Some examples: Message from the application to the mobile: tariff class: 4 service description: 0 => mobile pays 1.42 FIM Message from the application to the mobile: tariff class: 4 service description: 1 => application pays 0.60 FIM + VAT The implementation: I have added cimd2_tariff_class and cimd2_sdesc-paramaters to the sendsms-interface and corresponding X-Kannel-CIMD2-Tariff-Class and X-Kannel-CIMD2-Service-Description HTTP-headers. Setting the the HTTP-headers requires that sms-service group variable x-accept-kannel-headers is true. If a message with a tariff class is splitted into several SMSs, the service description is set to 1 for other than the first SMS, meaning that only the first SMS is billed from the customer and the application pays the rest of the SMSs. (For example, the client pays the same fee of a picture message regardless if it is split into two or three SMSs.) TODO: - Should the application be able to set different tariff class/service description values for splitted SMSs? - Should we add config file variables for setting default tariff class/service description values? Btw, treating the SMSC specific paramaters like the common paramaters leads to a quite ugly impelementation. Smsbox.c that was obviously meant to be generic becomes now polluted with SMSC specific code. I still think that some kind of generic mechnism for adding the SMSC specific paramaters would lead to cleaner architecture and would make our lifes easier. Even if you think that SMSC specific parameters must be static members of Mgs.sms-struct, could you still consider of some kind of hooks for function pointers or some other mechanism for separating the SMSC specific code from smsbox.c?