Hi Bakko,
But do you get some error on startup or what is the exact problem ?
Regards,
Bogdan-Andrei Iancu
OpenSIPS Founder and Developer
http://www.opensips-solutions.com
On 12/12/2012 04:42 PM, Bakko wrote:
Hello,
maybe I resolved this configuration. My escenario:
- load balancing environment
- some clients register to opensips with a softphone and IP change.
- some clients sending only INVITE to Opensips and Asterisk Servers
authenticate the INVITE.
Configuration:
I created a new table on Opensips database with this fields:
IP
Max calls permitted
company name
On both Opensips configuration I created a shared profile dialog:
Opensips 1
#### DIALOG module
loadmodule "dialog.so"
modparam("dialog","cachedb_url","redis://localhost:6379/")
modparam("dialog", "default_timeout", 21600)
modparam("dialog", "profiles_with_value", "calls/s")
Opensips2
loadmodule "dialog.so"
modparam("dialog","cachedb_url","redis://localhost:6380/")
modparam("dialog", "default_timeout", 21600)
modparam("dialog", "profiles_with_value", "calls/s")
On both record route:
record_route();
setflag(1); # do accounting
if (load_balance("1","voip/s")) {
set_dlg_profile("calls/s","$si");
get_profile_size("calls/s","$si","$avp(size)");
avp_db_query("select canales from canales where
IP='$si'","$avp(calls)");
if($retcode == 1){
xlog("L_INFO", "Canales activos = $avp(size) Canales
disponibles = $avp(calls) $si\n");
if($avp(size) <= $avp(calls)){
xlog("L_INFO", "Llamada de $fu a $tu para $du
\n");
route(RELAY);
exit;
}
else {
xlog("L_INFO", "Se ha superado el numero de
canales disponibles [$avp(size)/$avp(calls)]\n");
route(2);
exit;
}
}
xlog("L_INFO", "Llamada de $fu a $tu para $du \n");
route(RELAY);
exit;
}
route[RELAY] {
if (!t_relay()) {
xlog("L_ERR", "route [RELAY]\n");
sl_reply_error();
};
exit;
}
route[2] {
xlog("desviando la llamada a contexto Opensip - extension
canales\n");
rewriteuri("sip:[email protected]");
forward();
exit;
}
The logic:
when Opensips receive a INVITE set the profile size for the
originating IP and get the profile size saving the value on the
$avp(size) variable, then check the database to looking for for the IP
on the INVITE. If IP exist, the function return 1 and save the max
channels value on the $avp(calls) variable. If $avp(size) is <=
$avp(calls) opensips route the call to one of Asterisk servers else
process route(2). In process route[2] rewrite the URI and send the
calls to one of Asterisk Servers where on context opensip, extension
canales, a prompt announce to caller "no more channels availables" and
hangup the call.
With this configuration I can share between the two opensips servers
the MAX calls over IP permitted.
Maybe there is some syntax error on the script. Any suggestion?
Regards
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users