Dentro del Mundo de las redes y telefonía cada día suena más el termino IPPBX, y cuando ese termino es nombrado, lo primero que se asocia es Asterisk.
Asterisk es una completa plataforma de telefonía IP, o voz sobre IP (VoIP), con todas las aplicaciones de una PBX tradicional, pero con la flexibilidad de poder desarrollar aplicaciones extras según las necesidades que vallan surgiendo.
La ventaja de utilizar Asterisk, frente a una PBX tradicional, o cualquier otra solución IPPBX como un Call Manager de Cisco. Es que es un proyecto Open Soure y su descarga es totalmente gratuita, y puede ser instalado en cualquier servidor o computador con arquitectura x86. Nunca está demás decir que Asterisk tiene que ser compilado sobre Linux. Los mismos desarrolladores recomiendan usar las distribuciones Debian, RedHat, Fedora o CentOS.
A pesar que cualquier mortal pensaría que con la introducción anterior la siguiente parte tendría que ser una guia de instalación de Asterisk. Pero no, me da flojera y lo más probable es que otro día lo haga, así que por esta vez, se dará un salto más o menos largo, y tal como muestra el titulo de la entrada, se les mostrará como interconectar una plataforma Asterisk que trabaja en el mundo IP con conmutación de paquetes, con la red publica de telefonía (PSTN) que es un mundo totalmente aparte que su base está armada en circuitos conmutados.
Antes de continuar, hay que aclarar algo muy importante. Aunque Digium te ofrezca un software gratuito, ellos no son desarrolladores de software y hardware que viven de la Fé, por lo que su negocio está en vender soluciones prearmadas como Switchvox, o tarjetas con interfaces análogas o digitales PCI o PCI express, para que tu mismo desarrolles tu solución VoIP, pero soltando el chin-chin por la tarjetita.
Aún así, es una solución confiable y escalable en comparación con las típicas IPPBX chinas y económica frente a soluciones enterprise.
Bueno, al grano.
Anteriormente nombré unas tarjetas PCI o PCI express que son conectadas al pc o servidor. Estas son las tarjetas que son utilizadas para conectar el mundo IP con el analogo.
Para esta guía utilizaré la obsoleta TDM400P, una tarjeta con cuatro ranuras e interfaces para conectar modulos FXS o FXO. Para una corta referencia a muy nivel de usuario, les puedo decir que un puerto FXS sirve para conectar teléfonos, citofonos o Fax análogos. Mientras que la interfaz FXO sirve para conectar la línea que llega directamente desde el proveedor a la central, y de ahi derivarla a un anexo o cola de espera, según sea lo deseado.
Por lo tanto, para conectar nuestro Asterisk con la red pública, utilizaremos una interfaz FXO.
Sin más preambulos, una imagen de la tarjeta:
Las tarjetas rojas, son modulos FXO, mientras que las verdes son FXS.
Para que entiendan con más fácilidad lo que vamos a hacer les haré un “monito”:
Ahora que está todo más claro, comencemos con el fierro.
En primera instanacia, hay que descargar un software que digium que reconoce las tarjetas y crea sus modulos correspondientes para que sean reconocidos por Asterisk. Los programas a descargar son, DAHDI Linux y DAHDI tools, en caso que vallas a instalar una tarjeta E1 o T1, tienes que descargar las librerias correspondientes, las puede reconocer por el nombre libpri.
Cuando descargues DAHDI Linux y DAHDI tools, verás que los archivos están comprimidos en tar, por ello debes descomprimirlos con el siguiente comando:
tar zxvf <archivo>
En primera instancia tienes que compilar DAHDI Linux, para ello entra a la carpeta recien creada a raiz de la descomprensión anterior, y tipea los siguientes comandos:
make
make install
A continuación, entra a la carpeta de DAHDI tools y compilalo:
./configure
make
make install
make config
*Nota: Si tienes Fedora, puede encontrarte con la sorpresa que no tienes las fuentes de tu sistema base y DAHDI no podrá ser instalado. Si llegas a tener ese problema, pega la siguiente línea en la consola yum install kernel-devel-2.6.25-14.fc9.i686. El comando puede variar según tu versión de Fedora.
Si todo salió bien DAHDI detectará automáticamente tu Hardware, en el caso que no haya sido el caso, revisa éste sitio para ver si tu hardware es compatible.
La configuració de dahdi es prácticamente automática. Lo primero que debes hacer es ejecutar directamente el comando dahdi_cfg y luego dahdi_genconf. De esa forma generas y creas los archivos de configuración en los archivos correspondientes. Si te fijas, dentro de cada archivo creado podrás notar el comentario “do not hand edit”. Sin embargo dentro del archivodahdi-channels.conf tendrás que modificar los callerid y context según tu red telefónica.
Es importante diferenciar que Asterisk no toma los archivos de configuración generados por DAHDI, sino que es otro totalmente aparte llamado chan_dahdi.conf. Para que Asterisk pueda interpretar la configuración generada tienes que copiar la configuración del archivo dahdi-channels.conf o simplemente dentro de chan_dahdi.conf utilizar agregar la línea #include dahdi-channels.conf.
Olvidé indicar que dentro del archivo dahdi-channels.conf podrás ver algo asi:
; Span 1: WCTDM/4 “Wildcard TDM400P REV I Board 5″ (MASTER)
;;; line=”1 WCTDM/4/0″
signalling=fxo_ls
callerid=”Channel 1″ <4001>
mailbox=4001
group=5
context=from-internal
channel => 1
callerid=
mailbox=
group=
context=default;;; line=”2 WCTDM/4/1″
signalling=fxo_ls
callerid=”Channel 2″ <4002>
mailbox=4002
group=5
context=from-internal
channel => 2
callerid=
mailbox=
group=
context=default;;; line=”3 WCTDM/4/2″
signalling=fxo_ks
callerid=”Channel 3″ <4003>
group=0
context=from-internal
channel => 3
callerid=
group=
context=default;;; line=”4 WCTDM/4/3″
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 4
callerid=
group=
context=default
Si te fijas bien, las líneas se identifican por canales, tanto desde las puertas FXS, como de las FXO. En el archivo, puedes identificar fácilmente los canales FXS y FXO por su señalización, si el canal es FXS señaliza FXO (fxo_ks), mientras que una interfaz FXO señaliza FXS (fxs_ls).
Como dije anteriormente, lo más probable es que tengas que modificar el archivo de configuración, según tus reglas de marcado y red telefónica, ya que como te puedes dar cuenta, DAHDI sin siquiera consultarlo asigna un número de anexo dentro del rango 4000 a las puertas FXS.
Ya está casi todo listo, solo falta configurar algunas reglas de marcación básicos en el extensions.conf.
Las reglas de marcado de los canales FXS se configuran uno a uno, a diferencia de SIP que puedes configurar solo una regla y luego juegas con la variable EXTEN. Esto es porque cada línea tiene un unico canal por el cual salir.
Por ejemplo, para enrutar las llamadas hacia el anexo 4001 que se encuentra en el canal 1, se debe crear la siguiente regla de marcado en el archivo extensions.conf
exten =>4001,1,DIAL(DAHDI/1)
exten =>4001,2,Hangup()
Para que se entienda un poco el formato, si el anexo estaría en el canal dos, la primera línea tendria que cambiar a DAHDI/2.
Luego para realizar llamados salientes por la interfaz FXO, que está configurada por el canal 4, deberias crear la siguiente regla:
exten=>_9X.,1,DIAL(DAHDI/4/${EXTEN:1})
exten=>_9X.,2,Hangup()
De esta forma, para salir por la línea FXO, hay que anteponer el 9, y luego marcar la numeración de destino deseada.
Para recibir las llamadas entrantes por la línea conectada a la interfaz FXO es un poco complejo. Por defecto todas las llamadas entrantes desde un canal FXO, entra por la extensión “s”, por lo que tienes que crear un contexto por cada línea FXO que tienes en tu Asterisk.
El siguiente ejemplo muestra un contexto llamado “FXO” que enruta las llamadas entrantes del canal FXO, al anexo 4001, que corresponde al canal FXS 1.
[FXO]
exten =>s,1,DIAL(DAHDI/1)
exten =>s,2,Hangup()
Como puedes imaginarte, si creas un contexto al canal FXO, tienes que modificar el contexto asociado en el archivo dahdi-channels.conf.
Eso es todo, como puedes ver no es muy complejo, si tienes dudas solo preguta e intentaré responder a la brevedad. De todas formas, una vez que éstes configurando Asterisk con DAHDI, todo te será mucho más claro.
Saludos.
Mallasero.-