[SR-Users] CNXCC PrePaid module
Daniel-Constantin Mierla
miconda at gmail.com
Mon May 12 09:33:16 CEST 2014
reply to wrong thread by mistake -- ignore previous message in the
context of this discussion.
On 12/05/14 09:30, Daniel-Constantin Mierla wrote:
> Hello,
>
> if you look to remove the users from location, then you can use:
>
> kamctl ul rm USERID
>
> Cheers,
> Daniel
>
> On 12/05/14 05:18, Carlos Ruiz Díaz 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 <mailto: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 <mailto: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 <mailto: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
>> <mailto:carlos.ruizdiaz at gmail.com>> wrote:
>>
>>
>>
>>
>> On Fri, May 9, 2014 at 3:52 PM, Rene Montilva
>> <renemontilva at gmail.com
>> <mailto: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
>> <mailto: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
>> <mailto: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
>> <mailto: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
>> <mailto: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
>> <mailto: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
>> <mailto: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
>> <tel:%2B52%2055%203048%203303>
>>
>> _______________________________________________
>> SIP Express Router (SER) and
>> Kamailio (OpenSER) - sr-users
>> mailing list
>> sr-users at lists.sip-router.org
>> <mailto: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
>> <mailto: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
>> <tel:%2B52%2055%203048%203303>
>>
>>
>>
>>
>> --
>> Carlos
>> http://caruizdiaz.com
>> http://ngvoice.com
>> +52 55 3048 3303 <tel:%2B52%2055%203048%203303>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio
>> (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> <mailto: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
>> <mailto: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 <tel:%2B52%2055%203048%203303>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) -
>> sr-users mailing list
>> sr-users at lists.sip-router.org
>> <mailto: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
>> <mailto: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 <tel:%2B52%2055%203048%203303>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
>> mailing list
>> sr-users at lists.sip-router.org
>> <mailto: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 <mailto: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
>
> --
> Daniel-Constantin Mierla -http://www.asipto.com
> http://twitter.com/#!/miconda -http://www.linkedin.com/in/miconda
--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140512/b09c5e0c/attachment.html>
More information about the sr-users
mailing list