Gracias Iñaki por la respuesta y las sugerencias debajo te comento
como lo solucione.
El Viernes, 14 de Marzo de 2008, Gustavo Mistrinelli
escribió:
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.
Olvídate del append_branch, es un coñazo usarlo bien para hacer parallel
forking.
Lo hice funcionar con el append_branch (dicho de paso concuerdo en que
es medio complicado de usar)
...
avp_db_load("$ruri/username", "*");
xlog("L_INFO", "Reading User Preferences of RURI=$ruri ");
if(is_avp_set("$avp(s:fork)/s") && !isflagset(28))
{
xlog("L_INFO", "Forking to '$avp(s:fork)' found
-M=$rm
RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
$ru = $avp(s:fork); # reemplazo el Request URI por el del fork
append_branch(); # genero un nuevo branch con el URI del fork
$ru = $ou; # vuelvo a poner el R URI como
estaba para que siga su curso como si nada.
};
..
Hay una forma muy muy simple: añade el móvil u otra extensión directamente en
la tabla "location" para el username y domain correspondiente.
NOTA: Si usas "db_mode" 1 ó 2 entonces mejor añades el usuario
vía "openserctl..." (que ataca directamente a memoria, donde busca OpenSer
los contactos de un AoR).
Ejemplo de llamada en paralelo a un móvil para "pepe(a)dominio.com".com":
Tabla "location":
- username: pepe
- domain:
dominio.com
- contact: sip:666555444@pstn_gateway:5060
- received: NULL
- expires: (en el 2050 XD)
- cflags: ninguno
- methods: [1]
[1]: Si usas "method_filter" en el módulo "usrloc" (¿o era el
"registrar"?)
asegúrate de añadir el método INVITE en "methods" (y de hecho no pongas el
MESSAGE ya que el gateway no losoporta). Los códigos están aquí:
http://openser.svn.sourceforge.net/viewvc/openser/trunk/parser/msg_parser.h…
Voy a probar lo que me dices, de momento con la solución que describi
arriba funciona a la perfección.
Saludos.
Saludos y muchas gracias por la ayuda!
--
Iñaki Baz Castillo
--
Gustavo Mistrinelli