[OpenSER-Users-ES] Parallel Forking con telefonos no registrados

Gustavo Mistrinelli gmistrinelli at gmail.com
Sun Mar 16 03:12:02 CET 2008


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 at dominio.com":
>
> Tabla "location":
>  - username: pepe
>  - domain: dominio.com
>  - contact: sip:666555444 at 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?revision=2802&view=markup
>
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




More information about the Users-es mailing list