Abril 6, 2009
Asterisk, RealTime
Jose Maria
1 Comment
Y cuando al final creemos que lo hemos visto ya todo en asterisk, aparece el realtime…
En este caso hablamos de declarar un contexto. Algo tan sencillo de hacer en nuestro dialplan puede sacarnos de quicio si intentamos hacerlo en realtime, ya que directamente, no se puede. Solo es posible declarar el contexto en el dialplan, aunque luego lo desarrollemos en realtime.
Por ejemplo si queremos utilizar un contexto “mi_contexto” en realtime, primero debemos declararlo en el extensions.conf de la siguiente manera:
[mi_contexto]
switch => Realtime/mi_contexto@
Parece fácil ¿verdad? Lo es.
Pero en nuestro caso, estamos desarrollando una aplicación PHP que crea y destruye contextos de forma dinámica, por lo que no sabemos a priori cuantos contextos vamos a utilizar.
Tras releer varias veces los manuales y consultar varios foros, solamente hemos conseguido solucionarlo de la siguiente manera: Hemos declarado en extensions.conf 200 contextos (en nuestro caso es mas que suficiente con 200) y los hemos nombrado “contexto1”, “contexto2”, etc. :
[contexto1]
switch => Realtime/contexto1@
[contexto2]
switch => Realtime/contexto2@
...
[contexto200]
switch => Realtime/contexto200@
Nos aseguramos de esta forma que la aplicación podrá usar cualquier contexto de estos ya creados. Sabemos que no es la solución mas elegante, ni la mas eficiente, pero funciona. De todos modos si alguno de nuestros lectores conoce una solución mejor, será bien recibida.
Noviembre 4, 2008
Asterisk, RealTime
Jose Maria
No Comments
Recientemente hemos tenido que montar una distribución de Asterisk sobre un Debian Lenny, y todo ha ido sobre ruedas hasta que nos hemos puesto a montar los clientes SIP en realtime: resulta que al agregar un usuario a la base de datos del RT y loguearnos en el softphone, nos aparecia en la consola de asterisk una y otra vez:
[Nov 3 09:12:45] NOTICE[7266]: chan_sip.c:12335 handle_response_peerpoke: Peer ‘104′ is now Reachable. (3ms / 2000ms)
[Nov 3 09:12:45] NOTICE[7266]: chan_sip.c:12335 handle_response_peerpoke: Peer ‘104′ is now Reachable. (2ms / 2000ms)
[Nov 3 09:12:46] NOTICE[7266]: chan_sip.c:12335 handle_response_peerpoke: Peer ‘104′ is now Reachable. (2ms / 2000ms)
…
Este mensaje se repite cada 2 o 3 ms, para avisarte que te has registrado correctamente en tu extensión saturando toda la pantalla, y dejando la consola inutilizada.
Despues de un par de horas tirandonos de los pelos, recompilando Asterisk, cambiando de base de datos, cambiando de sofphone, y probando a poner servidor bocabajo (a punto estuvimos) dimos con el problema… ¡¡La variable “rtcachefriends” en el archivo sip.conf!!
Cuando la tenemos activa, es la que dice a Asterisk que debe meter a todos los usuarios creados en tiempo real en la caché interna donde se almacenan también los “friends” agregados por el archivo de configuración sip.conf. Digamos que cuando no está activa nuestro Asterisk es como el pececito Doris, solo ahora pierde la memoria cada 3 ms y vuelve a registrar una y otra vez al mismo usuario.
Así que ya sabeis niños, cuando trabajeis con usuarios en realtime, rtcachefriends=yes.