[SR-Users] CNXCC PrePaid module

Rene Montilva renemontilva at gmail.com
Tue May 13 21:35:57 CEST 2014


Hi Carlos

i've tested, works perfect, muchas gracias hermano!


On Mon, May 12, 2014 at 11:27 PM, Carlos Ruiz Díaz <
carlos.ruizdiaz at gmail.com> wrote:

> Get the latest updates, by cloning the repository and
> recompiling/reinstalling it.
>
> $ git clone git://git.sip-router.org/kamailio kamailio
>
> Regards,
> Carlos
>
>
> On Mon, May 12, 2014 at 2:21 PM, Rene Montilva <renemontilva at gmail.com>wrote:
>
>> Hi carlos,
>>
>> sorry my ignorance, where is it the master link?
>>
>> the test with only integers works perfect
>>
>>
>> On Sun, May 11, 2014 at 10:48 PM, Carlos Ruiz Díaz <
>> carlos.ruizdiaz at gmail.com> wrote:
>>
>>> Yep, assignment failed because the variables contain floating point
>>> values and Kamailio does not handle well this kind of precision.
>>>
>>> I patched the module to add the check before initiating the call, it is
>>> in master.
>>>
>>> As a way of testing your code, replace those values with integer ones,
>>> like 5 and 6, and check if the call is actually terminated or even
>>> initiated. This will give you a quick diagnosis of your routing script.
>>>
>>> Regards,
>>> Carlos
>>>
>>>
>>> On Sun, May 11, 2014 at 9:04 PM, Rene Montilva <renemontilva at gmail.com>wrote:
>>>
>>>> Hi Carlos
>>>>
>>>> kamailio version  4.1
>>>> El 11/05/2014 21:32, "Carlos Ruiz Díaz" <carlos.ruizdiaz at gmail.com>
>>>> escribió:
>>>>
>>>>  What Kamailio version are you using?
>>>>>
>>>>>
>>>>> On Sat, May 10, 2014 at 9:33 PM, Rene Montilva <renemontilva at gmail.com
>>>>> > wrote:
>>>>>
>>>>>> Hi Carlos
>>>>>>
>>>>>> kamailio config:
>>>>>>
>>>>>> log("L_INFO", "saldo:$var(credit) y seg:$var(cost_per_sec) ");
>>>>>>
>>>>>>
>>>>>> if($var(cost_per_sec) > $var(credit)) {
>>>>>>
>>>>>>                 sl_send_reply("402","payment required");
>>>>>>                 exit;
>>>>>>         }
>>>>>>
>>>>>>
>>>>>> if (!cnxcc_set_max_credit("$var(client)",
>>>>>> "$var(credit)",
>>>>>> "$var(cost_per_sec)",
>>>>>> "$var(i_pulse)",
>>>>>> "$var(f_pulse)")) {
>>>>>>
>>>>>>         sl_send_reply("503", "something's wrong in the server");
>>>>>>         exit;
>>>>>>
>>>>>>         }
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> i got this by syslog
>>>>>>
>>>>>> $var(credit) = "0.0005";
>>>>>> $var(cost_per_sec) = "0.0006";
>>>>>>
>>>>>>
>>>>>>
>>>>>> #$var(credit) = $dbr(ra=>[0,0]); # 30$ of credit
>>>>>> #$var(cost_per_sec) = $dbr(ra=>[0,1]); # 1$ per sec
>>>>>>
>>>>>> $var(i_pulse) = "1"; # 1$ to establish the call
>>>>>> $var(f_pulse) = "1"; # 1$ per second
>>>>>>
>>>>>> if (!cnxcc_set_max_credit("$var(client)",
>>>>>> "$var(credit)",
>>>>>> "$var(cost_per_sec)",
>>>>>> "$var(i_pulse)",
>>>>>> "$var(f_pulse)")) {
>>>>>>         sl_send_reply("402", "Sin saldo PAPA");
>>>>>>         xlog("Error setting up credit control");
>>>>>>         exit;
>>>>>>         }
>>>>>>
>>>>>>
>>>>>>
>>>>>> /usr/sbin/kamailio[13336]: INFO: <script>: Setting up money based
>>>>>> credit control
>>>>>> /usr/sbin/kamailio[13336]: INFO: <script>: saldo:0.0005 y seg:0.0006
>>>>>> /usr/sbin/kamailio[13336]: WARNING: <core> [rvalue.c:1016]:
>>>>>> rval_get_int(): automatic string to int conversion for "0.0005" failed
>>>>>> /usr/sbin/kamailio[13336]: WARNING: <core> [rvalue.c:1920]:
>>>>>> rval_expr_eval_int(): rval expression conversion to int failed
>>>>>> (707,17-707,17)
>>>>>> /usr/sbin/kamailio[13336]: WARNING: <core> [rvalue.c:1016]:
>>>>>> rval_get_int(): automatic string to int conversion for "0.0006" failed
>>>>>> /usr/sbin/kamailio[13336]: WARNING: <core> [rvalue.c:1920]:
>>>>>> rval_expr_eval_int(): rval expression conversion to int failed
>>>>>> (707,19-707,36)
>>>>>>
>>>>>>
>>>>>> it still established the call
>>>>>>
>>>>>>
>>>>>> with the function, kamailio doesn't evaluate the variable
>>>>>>
>>>>>> if($var(cost_per_sec) > $var(credit)) {
>>>>>>
>>>>>>                 sl_send_reply("402","payment required");
>>>>>>                 exit;
>>>>>>         }
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, May 9, 2014 at 4:41 PM, Carlos Ruiz Díaz <
>>>>>> carlos.ruizdiaz at gmail.com> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Fri, May 9, 2014 at 3:52 PM, Rene Montilva <
>>>>>>> renemontilva at gmail.com> wrote:
>>>>>>>
>>>>>>>> these are the values before the function call:
>>>>>>>>
>>>>>>>>  /usr/sbin/kamailio[24933]: INFO: <script>: saldo:0.0005000000 y
>>>>>>>> seg:0.000666666666666667
>>>>>>>>
>>>>>>>
>>>>>>> You are printing then before the assigment.
>>>>>>>
>>>>>>> *xlog("L_INFO", "saldo:$dbr(ra=>[0,0]) y seg:$dbr(ra=>[0,1]) ");*
>>>>>>>
>>>>>>> use
>>>>>>>
>>>>>>> *xlog("L_INFO", "saldo:$var(credit) y seg:$var(cost_per_second) ");*
>>>>>>>
>>>>>>> I just run a test with your values, and they did work.
>>>>>>>
>>>>>>> $var(credit) = "0.0005";
>>>>>>> $var(cost_per_second) = "0.0006";
>>>>>>>
>>>>>>> *if (!cnxcc_set_max_credit("$var(client)",....*
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> this function doesn't work, maybe are the long value:
>>>>>>>>
>>>>>>>> *if ($var(credit) < $var(cost_per_second)) {*
>>>>>>>> *        sl_send_reply("402", "payment required");*
>>>>>>>> *        exit;*
>>>>>>>> *}*
>>>>>>>>
>>>>>>>
>>>>>>> Did not get that, what does not work?
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Fri, May 9, 2014 at 3:48 PM, Carlos Ruiz Díaz <
>>>>>>>> carlos.ruizdiaz at gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Oops, correction:
>>>>>>>>>
>>>>>>>>>  *if ($var(credit) < $var(cost_per_second)) {*
>>>>>>>>> *        sl_send_reply("402", "payment required");*
>>>>>>>>> *        exit;*
>>>>>>>>> *}*
>>>>>>>>>
>>>>>>>>> By the way, please inform of your results after doing your tests.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Carlos
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Fri, May 9, 2014 at 3:17 PM, Carlos Ruiz Díaz <
>>>>>>>>> carlos.ruizdiaz at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> "i_pulse" and "f_pulse" are direct translations of the Spanish (I
>>>>>>>>>> noticed you speak it) phrases "pulso inicial" and "pulso final", which I
>>>>>>>>>> don't think have the same meaning in English. Updating the docs and using
>>>>>>>>>> the proper terminology are pending matters on this module.
>>>>>>>>>>
>>>>>>>>>> Both values represent the initial and interim costs of the call,
>>>>>>>>>> in your case, it is being billed second by second (1:1), subtracting "0.000666666666666667"
>>>>>>>>>> every second from a pool of credit that is equal to "0.0006500000
>>>>>>>>>> ".
>>>>>>>>>>
>>>>>>>>>> The message that's being shown, looks like a precision loss
>>>>>>>>>> error, which is unlikely because I used numbers even smaller than yours.
>>>>>>>>>> Please print the values of $var(credit) and $var(cost_per_sec)
>>>>>>>>>> before calling the cnxcc function.
>>>>>>>>>>
>>>>>>>>>> Furthermore, you should also consider checking your values before
>>>>>>>>>> passing them to the function. For example:
>>>>>>>>>>
>>>>>>>>>> *1. check if the credit is greater than the cost per second,
>>>>>>>>>> *before*.*
>>>>>>>>>>
>>>>>>>>>> *if ($var(credit) > $var(cost_per_second)) {*
>>>>>>>>>> *        sl_send_reply("402", "payment required");*
>>>>>>>>>> *        exit;*
>>>>>>>>>> *}*
>>>>>>>>>>
>>>>>>>>>> There's no reason to call the function when the conditions are
>>>>>>>>>> not met. Cnxcc will authorize the call and hang it immediately (1 second
>>>>>>>>>> later).
>>>>>>>>>>
>>>>>>>>>> I may need to add this check myself inside the module.
>>>>>>>>>>
>>>>>>>>>> *2. make sure you are rejecting the call in case of module's
>>>>>>>>>> error. *
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> *if (!cnxcc_set_max_credit("$var(client)",     "$var(credit)",
>>>>>>>>>> "$var(cost_per_sec)",     "$var(i_pulse)",*
>>>>>>>>>>
>>>>>>>>>> *    "$var(f_pulse)") { *
>>>>>>>>>>
>>>>>>>>>> *        sl_send_reply("503", "something's wrong in the server");
>>>>>>>>>> *
>>>>>>>>>>
>>>>>>>>>> *        exit; *
>>>>>>>>>> *}*
>>>>>>>>>>
>>>>>>>>>>  Regards,
>>>>>>>>>> Carlos
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, May 9, 2014 at 2:45 PM, Rene Montilva <
>>>>>>>>>> renemontilva at gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Carlos
>>>>>>>>>>>
>>>>>>>>>>> This my kamailio config:
>>>>>>>>>>>
>>>>>>>>>>> #!ifdef CNXCC_MONEY
>>>>>>>>>>> sql_query("ca", "select * from
>>>>>>>>>>> billing.sel_customer_credit('pepe','xxxxxxx","ra");
>>>>>>>>>>>
>>>>>>>>>>> xlog("L_INFO", "Setting up money based credit control");
>>>>>>>>>>>
>>>>>>>>>>> if($dbr(ra=>rows)> 0){
>>>>>>>>>>> xlog("L_INFO", "saldo:$dbr(ra=>[0,0]) y seg:$dbr(ra=>[0,1]) ");
>>>>>>>>>>>
>>>>>>>>>>> $var(credit) = $dbr(ra=>[0,0]); # 30$ of credit
>>>>>>>>>>> $var(cost_per_sec) = $dbr(ra=>[0,1]); # 1$ per sec
>>>>>>>>>>> $var(i_pulse) = "1"; # 1$ to establish the call
>>>>>>>>>>> $var(f_pulse) = "1"; # 1$ per second
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> }
>>>>>>>>>>>
>>>>>>>>>>> sql_result_free ("ra");
>>>>>>>>>>>
>>>>>>>>>>> # if only one call is established, that call should last 9
>>>>>>>>>>> seconds.
>>>>>>>>>>>
>>>>>>>>>>> if (!cnxcc_set_max_credit("$var(client)",
>>>>>>>>>>> "$var(credit)",
>>>>>>>>>>> "$var(cost_per_sec)",
>>>>>>>>>>> "$var(i_pulse)",
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> And this are the values by syslog info
>>>>>>>>>>>
>>>>>>>>>>> INFO: <script>: saldo:0.0006500000 y seg:0.000666666666666667
>>>>>>>>>>> ERROR: cnxcc [cnxcc_mod.c:1425]: set_max_credit(): credit value
>>>>>>>>>>> must be > 0: 0.000000
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Fri, May 9, 2014 at 3:08 PM, Carlos Ruiz Díaz <
>>>>>>>>>>> carlos.ruizdiaz at gmail.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>>
>>>>>>>>>>>> Can you paste the code you are using, with the values that each
>>>>>>>>>>>> variable contain at the moment of initiating the call?
>>>>>>>>>>>>
>>>>>>>>>>>> Regards,
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, May 9, 2014 at 2:35 PM, Rene Montilva <
>>>>>>>>>>>> renemontilva at gmail.com> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi list
>>>>>>>>>>>>>
>>>>>>>>>>>>> I don't understand prepaid logic calculation, because when my
>>>>>>>>>>>>> credit is 0 or lees than cost per second, the call is established equal
>>>>>>>>>>>>>
>>>>>>>>>>>>> $var(i_pulse) and $var(f_pulse) how this works????
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>>>>>>>>>>>>> mailing list
>>>>>>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Carlos
>>>>>>>>>>>> http://caruizdiaz.com
>>>>>>>>>>>> http://ngvoice.com
>>>>>>>>>>>> +52 55 3048 3303
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>>>>>>>>>>>> mailing list
>>>>>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>>>>>>>>>>> mailing list
>>>>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Carlos
>>>>>>>>>> http://caruizdiaz.com
>>>>>>>>>> http://ngvoice.com
>>>>>>>>>> +52 55 3048 3303
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Carlos
>>>>>>>>> http://caruizdiaz.com
>>>>>>>>> http://ngvoice.com
>>>>>>>>> +52 55 3048 3303
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>>>>>>>>> list
>>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>>>>>>>> list
>>>>>>>> sr-users at lists.sip-router.org
>>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Carlos
>>>>>>> http://caruizdiaz.com
>>>>>>> http://ngvoice.com
>>>>>>> +52 55 3048 3303
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>>>>>>> list
>>>>>>> sr-users at lists.sip-router.org
>>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
>>>>>> list
>>>>>> sr-users at lists.sip-router.org
>>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Carlos
>>>>> http://caruizdiaz.com
>>>>> http://ngvoice.com
>>>>> +52 55 3048 3303
>>>>>
>>>>> _______________________________________________
>>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>>>> sr-users at lists.sip-router.org
>>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>>
>>>>>
>>>> _______________________________________________
>>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>>> sr-users at lists.sip-router.org
>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>>
>>>>
>>>
>>>
>>> --
>>> Carlos
>>> http://caruizdiaz.com
>>> http://ngvoice.com
>>> +52 55 3048 3303
>>>
>>> _______________________________________________
>>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>>> sr-users at lists.sip-router.org
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>>
>>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>
>
> --
> Carlos
> http://caruizdiaz.com
> http://ngvoice.com
> +52 55 3048 3303
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140513/03b05ae2/attachment.html>


More information about the sr-users mailing list