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.ruizd...@gmail.com>wrote: > > > > On Fri, May 9, 2014 at 3:52 PM, Rene Montilva <renemonti...@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.ruizd...@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.ruizd...@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 >>>> <renemonti...@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.ruizd...@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 <renemonti...@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@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@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@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@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@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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users