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????
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@gmail.comwrote:
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
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@gmail.comwrote:
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@gmail.comwrote:
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
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@gmail.comwrote:
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@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@gmail.comwrote:
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
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@gmail.comwrote:
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@gmail.comwrote:
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@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@gmail.comwrote:
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
these are the values before the function call:
/usr/sbin/kamailio[24933]: INFO: <script>: saldo:0.0005000000 y seg:0.000666666666666667
this function doesn't work, maybe are the long value: *if ($var(credit) < $var(cost_per_second)) {* * sl_send_reply("402", "payment required");* * exit;* *}*
On Fri, May 9, 2014 at 3:48 PM, Carlos Ruiz Díaz carlos.ruizdiaz@gmail.comwrote:
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@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@gmail.comwrote:
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@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@gmail.comwrote:
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
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva renemontilva@gmail.comwrote:
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@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@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@gmail.comwrote:
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@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@gmail.comwrote:
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
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@gmail.comwrote:
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva renemontilva@gmail.comwrote:
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@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@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@gmail.comwrote:
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@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@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
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva renemontilva@gmail.comwrote:
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@gmail.com> wrote:
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva renemontilva@gmail.comwrote:
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@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@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@gmail.comwrote:
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@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@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
Hi Carlos
kamailio version 4.1 El 11/05/2014 21:32, "Carlos Ruiz Díaz" carlos.ruizdiaz@gmail.com escribió:
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva renemontilva@gmail.comwrote:
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@gmail.com> wrote:
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva renemontilva@gmail.comwrote:
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@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@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@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@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@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
-- 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
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@gmail.comwrote:
Hi Carlos
kamailio version 4.1 El 11/05/2014 21:32, "Carlos Ruiz Díaz" carlos.ruizdiaz@gmail.com escribió:
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva renemontilva@gmail.comwrote:
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@gmail.com> wrote:
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva renemontilva@gmail.comwrote:
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@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@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@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@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@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
-- 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
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@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@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@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@gmail.com <mailto:carlos.ruizdiaz@gmail.com>> wrote: On Fri, May 9, 2014 at 3:52 PM, Rene Montilva <renemontilva@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
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@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@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@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@gmail.com <mailto:carlos.ruizdiaz@gmail.com>> wrote: On Fri, May 9, 2014 at 3:52 PM, Rene Montilva <renemontilva@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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
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@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@gmail.comwrote:
Hi Carlos
kamailio version 4.1 El 11/05/2014 21:32, "Carlos Ruiz Díaz" carlos.ruizdiaz@gmail.com escribió:
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva renemontilva@gmail.comwrote:
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@gmail.com> wrote:
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva renemontilva@gmail.comwrote:
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@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@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@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@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@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
-- 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
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@gmail.comwrote:
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@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@gmail.comwrote:
Hi Carlos
kamailio version 4.1 El 11/05/2014 21:32, "Carlos Ruiz Díaz" carlos.ruizdiaz@gmail.com escribió:
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva renemontilva@gmail.comwrote:
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@gmail.com> wrote:
On Fri, May 9, 2014 at 3:52 PM, Rene Montilva <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@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@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@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@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@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
-- 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
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@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@gmail.comwrote:
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@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@gmail.comwrote:
Hi Carlos
kamailio version 4.1 El 11/05/2014 21:32, "Carlos Ruiz Díaz" carlos.ruizdiaz@gmail.com escribió:
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva <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@gmail.com> wrote:
> > > > On Fri, May 9, 2014 at 3:52 PM, Rene Montilva < > 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@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@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@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@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@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
-- 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
-- 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
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@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@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@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@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@gmail.com wrote:
Hi Carlos
kamailio version 4.1 El 11/05/2014 21:32, "Carlos Ruiz Díaz" carlos.ruizdiaz@gmail.com escribió:
What Kamailio version are you using?
On Sat, May 10, 2014 at 9:33 PM, Rene Montilva < 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@gmail.com> wrote: > >> >> >> >> On Fri, May 9, 2014 at 3:52 PM, Rene Montilva < >> 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@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@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@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@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@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 > >
-- 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
-- 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