Declarar contextos en RealTime

Asterisk, RealTime 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.