Plantillas en archivos de configuración de Asterisk, una buena forma de ahorrar tiempo!!



Esto sobre todo va para los que les encanta modificar directamente los archivos de configuración de Asterisk (como yo) en lugar de usar una GUI (Graphic User Interface). Sabemos que casi toda la sintaxis dentro de los archivos de configuración del PBX va de la siguiente manera:

[parte]
variable=valor

Normalmente en diferentes archivos, como el sip.conf (el que usaremos como ejemplo) cada que declaramos un nuevo usuario tenemos que repetir secciones de código para cada entrada, como por ejemplo:

[usuario1]
username=usuario1
context=entrantes
callerid="Nombre Apellido" <1101>
host=dynamic
nat=no
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
mailbox=1101@default
callgroup=1
pickupgroup=1

[usuario2]
username=usuario2
context=entrantes
callerid="Nombre Apellido" <1102>
host=dynamic
nat=no
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
mailbox=1102@default
callgroup=1
pickupgroup=1

Vemos que gran parte del código se comparte entre el usuario1 y usuario2, y si tenemos alguna instalación con más de 50 extensiones pues la administración de estos archivos se vuelve algo complicada. Aquí es donde los templates de archivos de configuración vienen a ayudarnos de la siguiente manera: detectamos la mayor parte del código que se vaya a compartir y la declaramos al principio de nuestro archivo como una sección independiente, es decir:

[usuariogeneral]
context=entrantes
host=dynamic
nat=no
canreinvite=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
callgroup=1
pickupgroup=1

Y así mismo podemos mandar llamar dicha sección y que la use como template en la declaración de cada nuevo usuario que creemos, es decir:

[usuario1](usuariogeneral)
username=usuario1
callerid="Nombre Apellido" <1101>
mailbox=1101@default

[usuario2](usuariogeneral)
username=usuario2
callerid="Nombre Apellido" <1102>
mailbox=1102@default

Vemos aquí que sólo estamos declarando los valores que van cambiando en cada usuario, pero lo demás lo podemos dejar en un solo template. Así logramos reducir en gran medida el código utilizado en nuestros archivos de configuración.

Algunas cosas extras: la sección que dimos de alta "usuariogeneral" se puede usar como sección independiente, es decir, sin ser tratada como template. Para evitar ésto sólo basta con agregar un signo de admiración entre paréntesis después del nombre de la sección:

[usuariogeneral](!)
...

De esta manera evitamos el acceder la sección de manera directa dentro de nuestro plan de marcado, y así sólo podra ser usada como template.

También es posible mandar llamar más de un template dentro de la declaración de algún usuario separando por comas cada uno de los templates:

[usuario1](usuariogeneral,nat)
...

Esto nos ayuda si tenemos alguna sección en un template en particular, y otra sección de la declaración en otro template, y así ayuda a dar de alta usuario de manera más rápida. Supongamos que en el ejemplo anterior tenemos un template "usuariogeneral" con los datos más generales de un usuario, como el tipo de codec, host y tipo de DTMF, y dentro del template "nat" tenemos lo referente a cuando el usuario debe de ser configurado detrás de un NAT, es decir nat=yes. canreinvite=no, etc., y de la misma manera podemos tener un template llamado "nonat" con los datos cuando no se tenga detrás de NAT.

Espero les sea útil.

0 comentarios: