Vamos a tener un pequeño instructivo de cómo instalar
Asterisk en CentOS pero con la salvedad de que no utilizaremos tarjeta
FXO (Foreign Exchange Office), la cual se utiliza regularmente para
conectar nuestra PBX a una PSTN mediante una línea análoga. En
consecuencia, la PBX que configuraremos, nos servirá únicamente para una
red local y, si abrimos los puertos correspondientes en nuestro modem
DSL, podremos accesarla desde Internet.
Instalando Asterisk PBX
Desde la
página oficial de Asterisk podemos descargar el fuente necesario para su
compilación e instalación, pero no sin antes instalar los paquetes
necesarios para su compilación y la de otros componentes, que para este
tutorial no son necesarios, como dadhi-linux y dadhi-tools en CentOS.
# yum install -y gcc ncurses-devel libtermcap-devel kernel-devel gcc-c++ openssl-devel newt-devel zlib-devel unixODBC-devel libtool makeAhora nos dirigimos a /usr/src para descargar el fuente de Asterisk 1.6.2.19:
# cd /usr/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.19.tar.gz
# tar xzvf asterisk-1.6.2.19.tar.gz
# cd asterisk-1.6.2.19
# ./configure
# make
# make install
# make config
# make samples
Configurando Asterisk PBX
El archivo
extensions.conf es la parte central de toda la configuración, dado que
es donde se define el dialplan de Asterisk. Se compone de 4 partes
principales: contextos, extensiones, prioridades y aplicaciones. El
dialplan se divide en secciones denominadas contextos, que están
rotuladas y contienen un grupo de extensiones. Los contextos se definen
colocando su nombre entre corchetes ([]). Este nombre puede contener
caracteres alfanuméricos además del guión y el guión bajo. Por ejemplo:
[interno]
Todas las instrucciones son parte del contexto hasta que el próximo contexto es definido. Existen dos contextos especiales:
[general] (variables predefinidas) [globals] (variables no predefinidas)Una extensión es una instrucción que será seguida por Asterisk, luego de ser disparada por una llamada entrante o bien por dígitos discados en un canal, definida en el marco de un contexto. La sintaxis de una extensión es la siguiente: exten => nombre,prioridad,aplicación()
exten => 101,1,answer()Extensions (start): Es una extensión especial que es utilizada si una llamada entra a un contexto sin una extensión destino específica (por ejemplo una llamada en un puerto FXO); la llamada trata de entrar automáticamente a la extensiones.
[interno] exten => s,1,answer()Una extensión puede tener varios pasos, denominados prioridades. Las prioridades comienzan con 1 y se ejecutan en orden numérico. Si no existe la prioridad N+1, Asterisk no salta a la siguiente prioridad (N+2). Cada prioridad ejecuta una única aplicación. Por ejemplo:
exten => 101,1,Answer() exten => 101,2,Hangup()Prioridades sin numerar
Asterisk introduce el uso de la prioridad n (next). Cada vez que Asterisk encuentra una prioridad n, toma el número de la prioridad anterior y le suma 1. Simplifica el proceso de escritura del dialplan, evitando tener que volver a numerar las prioridades al insertar una prioridad para la misma exten. Por ejemplo:
exten => 103,1,Answer() exten => 103,n,hago algo exten => 103,n,Hangup()Nota como el orden numérico (1,2,3,etc) es reemplazado por la letra n.
Aplicaciones
Las aplicaciones realizan una acción determinada en el canal actual, controlando el comportamiento de la llamada y del sistema en sí. Algunos ejemplos son:
answer(): contesta una llamada hangup(): cuelga una llamada dial(): realiza una llamada saliente playback(): reproduce un archivo de sonidoCiertas aplicaciones requieren del pasaje de parámetros, estos se incluyen dentro de los paréntesis, separados por coma “,”.
Un Dialplan simple
Basándome en los conceptos anteriores y otros del libro de Asterisk, he creado este Dialplan sencillo y fácil de entener su funcionamiento.
Configuración del fichero extensions.conf (Todo esto va al final del fichero):
[FRATERNEO] ;Las extensiones del usuario 500. exten => 500,1,Answer( ) ;Costumbre de que asterisk conteste la llamada exten => 500,n,Dial(Sip/500) ;llamando al usuario 500 exten => 500,n,Voicemail(500@default,u) ;usuario no disponible exten => 500,n,Voicemail(500@default,b) ;usuario ocupada exten => 500,n,Hangup() ;Otra buena costumbre que asterisk finalice proceso ;Las extensiones del usuario 510. exten => 510,1,Answer( ) exten => 510,n,Dial(Sip/510) exten => 510,n,Voicemail(510@default,u) exten => 510,n,Voicemail(510@default,b) exten => 510,n,Hangup() ;Las extensiones del usuario 520. exten => 520,1,Answer( ) exten => 520,n,Dial(Sip/520) exten => 520,n,Voicemail(520@default,u) exten => 520,n,Voicemail(520@default,b) exten => 520,n,Hangup() ;Las extensiones del usuario 530. exten => 530,1,Answer( ) exten => 530,n,Dial(Sip/530) exten => 530,n,Voicemail(530@default,u) exten => 530,n,Voicemail(530@default,b) exten => 530,n,Hangup()Configuración del fichero sip.conf (Todo esto va al final del fichero):
[500] context=FRATERNEO ;El contexto que hablamos en el Extensions.conf callerid="Claudio" <500> ;Identificador de llamada secret=500 ;Contraseña mailbox=500@fraterneo ;Correo de Voz, y esta en el contexto por FRATERNEO type=friend host=dynamic canreinvite=no call-limit=4 callgroup=1 pickupgroup=1 disallow=all allow=gsm allow=g729 allow=ulaw allow=alaw [510] context=FRATERNEO callerid="Jose" <510> secret=510 mailbox=510@fraterneo type=friend host=dynamic canreinvite=no call-limit=4 callgroup=1 pickupgroup=1 disallow=all allow=gsm allow=g729 allow=ulaw allow=alaw [520] context=FRATERNEO callerid="Ignacio" <520> secret=520 mailbox=520@fraterneo type=friend host=dynamic canreinvite=no call-limit=4 callgroup=1 pickupgroup=1 disallow=all allow=gsm allow=g729 allow=ulaw allow=alaw [530] context=FRATERNEO callerid="Dario" <520> secret=530 mailbox=530@fraterneo type=friend host=dynamic canreinvite=no call-limit=4 callgroup=1 pickupgroup=1 disallow=all allow=gsm allow=g729 allow=ulaw allow=alaw
Es sumamente importante no tocar el resto del fichero ya que todo está
comentado y viene por defecto como ejemplo con sus comentarios y
explicaciones.
Ahora procedemos a iniciar el servicio asterisk, hacer que cargue
automáticamente al incicio y recargar el el Dialplan para que funcione
con la configuración que hemos agregado.
# service asterisk start # chkconfig asterisk --level 345 on
Para entrar a la consola de Asterisk lo haremos con el comando asterisk -rv
(aunque podemos agregar muchas "v" para que sea más "verboso", es
decir, nos de más información de lo que está pasando en Asterisk).
# asterisk -rvvvvvvvvvvvvv
>localhost*CLI> dialplan reload
Solo nos
queda esta parte de configurar los teléfonos. Estos pueden ser
SoftPhones (aplicación) o teléfonos físicos que soporten el protocolo
SIP. Un ejemplo de SoftPhone lo es Ekiga, en el cual podemos configurar
una cuenta SIP.
Finalmente si abrimos los puertos de nuestro modem DSL que Asterisk utiliza,
podremos accesar fuera de nuestra red local y configurar clientes
amigos desde Internet. En este enlace pueden ver una lista de comandos del CLI de Asterisk.
Espero les sea de gran utilidad y aprendizaje. Cualquier sugerencia o corrección se las agradeceré en los comentarios!
No hay comentarios:
Publicar un comentario