miércoles, 22 de enero de 2014

Asterisk en Fedora

Asterisk es una aplicación software que proporciona las funcionalidades de una central telefónica PBX. Entre estas funcionalidades tenemos: buzón de voz, música en espera, transferencia de llamadas, envío de mensajes de voz a email, etcétera.

En primer lugar instalaremos asterisk y algunos sonidos en español que pondremos a la centralita.

# yum install asterisk asterisk-sounds-core-es asterisk-sounds-core-es-gsm


Una vez que tenemos instalado asterisk, para activar el servicio basta con hacer un

# systemctl asterisk start


y si queremos que se inicia cada vez que arranquemos nuestra máquina

# systemctl enable asterisk


Pero antes de hacer esto conviene configurar el servidor, asterisk es un mundo en cuanto a configuraciones, nosotros vamos a hacer una muy básica, para la cual solo editaremos los archivos de configuración sip.conf y extensions.conf, ambos se encuentran en /etc/asterisk/

- En el archivo sip.conf se crearan los usuarios que utilizaran conexiones SIP.

- En el archivo extensions.conf se encontraran los planes de marcado (Dialplan) que asignaremos a cada usuario, estos planes de marcado se usan para gestionar las llamadas a extensiones, este archivo hace que asterisk se comporte como un conmutador.

Para añadir un usuario SIP. Añadimos al archivo de configuracion sip.conf las siguientes lineas:

[1000]                    ;Username
type=friend          ;Permite recibir y realizar llamadas.
secret=password      ;Contraseña
callerid=miID      ;Identificador del usuario
qualify=yes           ;Comprobación si es alcanzable.
nat=yes                 ;Si se conecta a través de una red con NAT.
host=dynamic       ;Si su IP es variable.
canreinvite=no
context=helloworld ;El contexto en el plan de marcado de esta extension

Para añadir el contexto nos vamos  al archivo de configuración extensions.conf y añadimos las siguientes lineas (por ejemplo, el hola mundo :)):

[helloworld]
exten => _[1-3]X,1,Answer()                  ;Responde a una llamada que esta sonando
exten => _[1-3]X,2,Playback(/usr/share/asterisk/sounds/es/hello-world) ;Reproduce sobre un canal activo un sonido.
exten => _[1-3]X,3,Hangup()                  ;Cuelga un canal activo

La sintaxis que se usa para añadir un contexto es:
[contexto]
exten => extension,prioridad,Aplicación(funciones)

Para las extensiones se pueden y deben usar patrones, recuerda Traductores, Compiladores e Interpretes y Teoria de Automatas. :D
En el ejemplo que puse antes, la extensión _[1-3]X, quiere decir que si marcamos dos dígitos y el primer dígito empieza por 1,2 y 3, sonará el Hola Mundo. :)

* Cada vez que editéis algo en extensions.conf  para que se efectuen los cambios en asterisk, basta con abrir un prompt y hacer un dialplan reload. El comando reload es para reiniciar el servicio y se realicen incluido los cambios que se efectuado en sip.conf

# asterisk -r
asterisk*CLI> dialplan reload
asterisk*CLI> reload


 
Como he dicho, esto es solo un ejemplo, Asterisk tiene mil funciones más, ya que es una centralita software bastante completa.

Ya solo nos falta buscar un cliente y probarlo, para ello tenemos varios, por ejemplo en Linux tenemos Ekiga o Linphone entre otros, y para Android Zoiper, por ejemplo. Una vez estemos registrados en el sistema marcamos 15 (por ejemplo) y la centralita nos pondrá el sonido "Hola Mundo".