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(a)gmail.com <mailto:renemontilva@gmail.com>> wrote:
Hi Carlos
kamailio version 4.1
El 11/05/2014 21:32, "Carlos Ruiz Díaz"
<carlos.ruizdiaz(a)gmail.com <mailto:carlos.ruizdiaz@gmail.com>>
escribió:
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva
<renemontilva(a)gmail.com <mailto:renemontilva@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(a)gmail.com
<mailto:carlos.ruizdiaz@gmail.com>> wrote:
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva
<renemontilva(a)gmail.com
<mailto:renemontilva@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(a)gmail.com
<mailto:carlos.ruizdiaz@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(a)gmail.com
<mailto:carlos.ruizdiaz@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(a)gmail.com
<mailto:renemontilva@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(a)gmail.com
<mailto:carlos.ruizdiaz@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(a)gmail.com
<mailto:renemontilva@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(a)lists.sip-router.org
<mailto: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
<tel:%2B52%2055%203048%203303>
_______________________________________________
SIP Express Router (SER) and
Kamailio (OpenSER) - sr-users
mailing list
sr-users(a)lists.sip-router.org
<mailto: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(a)lists.sip-router.org
<mailto: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
<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(a)lists.sip-router.org
<mailto: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(a)lists.sip-router.org
<mailto: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 <tel:%2B52%2055%203048%203303>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) -
sr-users mailing list
sr-users(a)lists.sip-router.org
<mailto: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(a)lists.sip-router.org
<mailto: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 <tel:%2B52%2055%203048%203303>
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users
mailing list
sr-users(a)lists.sip-router.org
<mailto: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(a)lists.sip-router.org <mailto: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(a)lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users