[SR-Users] CNXCC PrePaid module

Rene Montilva renemontilva at gmail.com
Thu Nov 27 22:46:10 CET 2014


Hi Carlos

is there any different issue with kamailio 4.2.1, because i have the same
error, you solved above, i got the same error with float value
/usr/sbin/kamailio[13336]: WARNING: <core> [rvalue.c:1016]: rval_get_int():
automatic string to int conversion for "0.0005" failed

and with the basic value, it doesn't close the call after 4 seconds

$var(credit) = "4"; # 30$ of credit
$var(cost_per_sec) = "1"; # 1$ per sec

$var(i_pulse) = "1"; # 1$ to establish the call
$var(f_pulse) = "1"; # 1$ per second



On Tue, May 13, 2014 at 3:05 PM, Rene Montilva <renemontilva at gmail.com>
wrote:

> 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/20141127/3ca001c2/attachment.html>


More information about the sr-users mailing list