El caso concreto es que recibo una cabecera PAI, que por ejemplo puede ser:
P-Asserted-Identity: <sip:9991...@88.99.4.10>
y de ahí me interesa sacar: 999111222
Lo comento porque sé que se puede jugar con expresiones regulares y tal en el
dialplan, pero es bastante guarrete. Igual hay algo mejor.
Gracias.
--
Iñaki Baz Castillo
i...@in.ilimit.es
Bueno, lo dicho, que no existe nada apropiado pero a base de guarrear:
exten => _+XXXX.,1,Set(PAI=${SIP_HEADER(P-Asserted-Identity)})
exten => _+XXXX.,n,Set(PAI=${CUT(PAI,"<",2)})
exten => _+XXXX.,n,Set(PAI=${CUT(PAI,"@",1)})
exten => _+XXXX.,n,Set(PAI=${CUT(PAI,":",2)})
exten => _+XXXX.,n,Set(CALLERID=<${PAI}>)
y ya...
~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
No te compliques la existencia ...
exten => _X.,n,Set(UCLID=${CUT(CUT(SIP_HEADER(P-Asserted-Identity),@,1),:,2)})
exten => _X.,n,Set(CALLERID(number)=${UCLID})
exten => _X.,n,Set(CALLERID(name)=${UCLID})
Además es más rápido que lo tuyo .. ;-P
--
Saludos.
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.
ok
Lo único, comento que tanto tu solución como la mía tienen un problema, y es
que el Display Name puede contener "<, >, @" y machacarnos el invento.
Menos mal que soy yo quien setea el PAI en el proxy y lo hago sin
DisplayName ;)
Gracias.
Hombre, pero ya podía tener Asterisk una función para parsear URI's...
Gracias elio, pero esa función no sirve para parsear una SIP uri :(
~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
Iñaki Baz Castillo
i...@in.ilimit.es
Jejeje, idem ... eso es parte del dialplan de nuestros mg, los PAI
vienen "limpitos" desde los proxy.
Y esta una línea más rápido :)
Raúl Alexis Betancor Santana escribió:
--
-
-------------------------------------
Germán Aracil Boned
Director de Sistemas
Zoon Suite S.L.
www.zoonsuite.com
963146030 - General
963146031 - Asistencia de incidencias
963146032 - FAX
-------------------------------------
-
Si os interesa y recaudamos fondos me curro yo una :) jejeje
Iñaki Baz Castillo escribió:
--
Yo me inclino por una aplicacion/funcion integrada en dialplan. No
requiere parchear asterisk, simplemente el fichero app_funcion.c lo
dejamos caer en /asterisk/apps/ luego hacemos un ./configure ./make
menuconfig para verificar que está marcado, y a compilar.
Además de tener acceso a todas las variables del dialplan, poder crear y
en definitiva hacer lo que quieras sin practicamente límites, este
programa sería pequeño y consumiría muy pocos recursos y memoria.
Igual me he lanzado .. Ya me veo escribiendolo.. Si es que esto es vicio
y lo demás tonterías.
Elio Rojano escribió:
> Hazte un AGI, entre las variables que le pasas puedes tratar las cadenas
> como mejor te parezca y luego devolverlo a Asterisk en una variable.. :)
>
> 2008/6/10 Iñaki Baz Castillo <i...@in.ilimit.es <mailto:i...@in.ilimit.es>>:
>
>
> El Monday 09 June 2008 21:59:14 Elio Rojano escribió:
> > http://www.voip-info.org/wiki/index.php?page=Asterisk+func+sippeer
>
> Gracias elio, pero esa función no sirve para parsear una SIP uri :(
>
>
> ~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
> En el servidor Asterisk:
> ~$ ngrep -d any -P ' ' -W byline -T port 5060
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> --
> Iñaki Baz Castillo
> i...@in.ilimit.es <mailto:i...@in.ilimit.es>
>
>
>
>
>
> --
> http://www.sinologic.net/
> Además de tener acceso a todas las variables del dialplan, poder crear y
> en definitiva hacer lo que quieras sin practicamente límites, este
> programa sería pequeño y consumiría muy pocos recursos y memoria.
>
> Igual me he lanzado .. Ya me veo escribiendolo.. Si es que esto es vicio
> y lo demás tonterías.
Sería una gran contribución y haría a Asterisk más potente y flexible en SIP.
Por desgracia mi C está muy oxidado pero si quieres te puedo "motivar" y
además ayudar en cómo se debe parsear un SIP URI, me conozco la teoría al
dedillo puesto que estoy haciendo un parser SIP en Ruby XD
Si te animas coméntame ;)
Con eso en principio no necesito nada más, pero si así fuese preciso, te
iba a incordiar un rato jejee ;)
Venga cuentanos.. a ver si alguien más se le ocurre alguna funcionalidad
relacionada.
Iñaki Baz Castillo escribió:
--
Hay varias cabeceras SIP que incluyen un SIP URI, así que debería ser
flexible. Creo que ya tiene cierta dificultad puesto que las SIP URIs tienen
bastante faena (username, password, host, puerto, headers, parameters...)
~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
Iñaki Baz Castillo
i...@in.ilimit.es
Una especie de Proxy SIP, muy elemental que lo único que haga es filtrar
los paquetes SIP entre varias máquinas y el.
Algo que no conteste nada, ni error en login por ejemplo cuando traslade
el registro a la máquina que toque. Guardándose como un router las
asociaciones de direcciones de clientes y nodos a quienes ha trasladado
el registro o invite.
Del mismo modo, todos los equipos con asterisk, envian sus paquetes SIP
al mismo sitio, que traduce y envía al cliente oportuno.
Un servicio capaz de bannear una ip durante un periodo de tiempo,
avisando de la situación, cuando alguien intenta logearse con un pass
erróneo 3 o 5 veces..
Capaz de garantizar que las peticiones SIP, cumplan con determinado
perfil para iniciar una respuesta.
Sé que me vais a decir.. OpenSer, pero yo hablo de algo muy simple y
pequeño, con otras políticas SIP. A mi me gustaría llamarlo router SIP.
Seguro que algo hay por ahí..
P.D. Tarde aburrida, no para de llover.
Iñaki Baz Castillo escribió:
--
> Del mismo modo, todos los equipos con asterisk, envian sus paquetes SIP
> al mismo sitio, que traduce y envía al cliente oportuno.
>
> Un servicio capaz de bannear una ip durante un periodo de tiempo,
> avisando de la situación, cuando alguien intenta logearse con un pass
> erróneo 3 o 5 veces..
Eso lo hace el módulo 'pike' de OpenSer.
> Capaz de garantizar que las peticiones SIP, cumplan con determinado
> perfil para iniciar una respuesta.
¿Qué perfil? ojo que existen unos cuantos RFC's sobre estos temas (SIP
preconditions).
> Sé que me vais a decir.. OpenSer, pero yo hablo de algo muy simple y
> pequeño, con otras políticas SIP. A mi me gustaría llamarlo router SIP.
OpenSer = Open SIP Express Router
Es que es lo que tú dices, y puede ser tan simple como la configuración que le
apliques :)
> Seguro que algo hay por ahí..
Sí, y se llama... XDD
~~~~~~ uso de NGREP (captura traza SIP) ~~~~~~
En el servidor Asterisk:
~$ ngrep -d any -P ' ' -W byline -T port 5060
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
Iñaki Baz Castillo
i...@in.ilimit.es