[SR-Users] CNXCC PrePaid module
Daniel-Constantin Mierla
miconda at gmail.com
Mon May 12 09:30:07 CEST 2014
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20140512/c01bcdee/attachment.html>
More information about the sr-users
mailing list