Hola Gente, les comento lo que estoy intentando hacer, sin éxito por
ahora, a ver si me pueden dar una mano para solucionarlo o encararlo
de otra manera.
Hasta ahora he logrado que openser haga el parallel forking con los n
contacts que tenga registrado un usuario sin problemas.
Pero, lo que quiero implementar es una funcionalidad extra para que el
usuario pueda agregar un telefono (puede ser otra extension, el movil,
el telefono de la casa etc.) y que cuando lo llamen suene también en
ese nro.
Para esto lo que hago es utilizar la tabla usr_preferences y agregar
un registro que le defini type=fork.
Luego leo la preferencia, seteo un flag y hago un append_branch en el
on_branch si está seteado el flag cambio el $ruri de la llamada con el
valor del fork que puso el usuario y reseteo los valores.
Quisiera si pueden revisar un poco la lógica y me digan si estoy yendo
por el camino correcto o se hace de otra manera.
Les paso algunas partes del script que participan en este proceso.
route[1] { # Route relay Handler
if (!t_relay()) {
sl_reply_error();
};
return;
}
route[3] # invite route
{
...
...
avp_db_load("$ruri/username", "*");
xlog("L_INFO", "Reading User Preferences of RURI=$ruri ");
if(is_avp_set("$avp(s:fork)/s") && !isflagset(28))
{
setflag(28);
xlog("L_INFO", "Forking to '$avp(s:fork)' found -
M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
t_on_branch("1");
append_branch();
};
...
route(1);
}
branch_route[1]{
if (isflagset(28)) {
resetflag(28);
xlog("L_INFO", "GooSIP: Doing Forkting to
'$avp(s:fork)' found - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
avp_pushto("$ru", "$avp(s:fork)/g");
avp_delete("$avp(s:fork)/g");
route(1);
return;
}
}
Desde ya.. gracias a todos.
--
Gustavo A. Mistrinelli