Nuestro segundo escenario es el resultado de añadir al Escenario A un nuevo canal de comunicaciones. El objetivo es incluir en la red privada anterior un canal hacia la red telefónica tradicional (RTB). Para ello, es necesario añadir a la PBX una interfaz hacia la red telefónica.
En este ejemplo proponemos el uso de una tarjeta PCI TDM400P de Digium con un puerto FXO. Como recordarás la tarjeta TDM400P es un interfaz al que se le pueden incluir hasta cuatro módulos FXS/FXO. El uso de un módulo FXO te permitirá conectar la PBX a una línea telefónica analógica.
Los pasos necesarios para poner en funcionamiento el interfaz TDM son cuatro.
Paso 1: Insertar la tarjeta PCI El primer paso es conectar la tarjeta PCI de mediotamaño en una de las ranuras libres de tu placa madre. Asegúrate que el conector de tipo molex (12/5 volt) del interfaz TDM está conectado a la fuente de alimentación de tu ordenador. La tarjeta TDM recibe corriente a través de un conector hembra conocido como molex (es el mismo tipo de conector de 4hilos con el que se alimentan los discos duros IDE). Si tu fuente de alimentación no tiene un conector macho disponible tendrás que añadir un divisor de corriente (power splitter).
Paso 2: Instalar los controladores del dispositivo El segundo paso es asegurarse que los controladores del dispositivo están disponibles (se compilaron correctamente y están cargados). Ejecuta el comando #lsmod, deberías ver el controlador wctdm cargado. Observa que el controlador wctdm depende del zaptel que a su vez depende del crc_ccitt.
# lsmod zaptel 191748 7 wctdm crc_ccitt 2304 3 hisax,zaptel,irda
Paso 3: Configurar la tarjeta TDM400P con la utilidad ztcfg El tercer paso es configurar el dispositivo. Los controladores wctdm han sido diseñados para funcionar con una combinación cualquiera de módulos FXS y FXO. Para indicar al controlador que estamos usando un módulo del tipo FXO en el primer puerto de la tarjeta editamos el fichero /etc/zaptel.conf con la configuración más básica:
fxsls=1 loadzone=us ; loadzone=es para España defaultzone=us ; defaultzone=es
La primera línea fxsls=1 significa que estamos usando señalización FXS del tipo Loopstart en el puerto 1. Recuerda que un módulo FXO necesita señalización FXS.
La segunda y tercera línea del fichero de configuración indican el tipo de “tonos” usados en la línea. El sonido y cadencia de los tonos de marcado o de línea ocupada varían de un país a otro.1)
Usamos ztcfg, una utilidad de configuración de dispositivos zaptel que se instala como parte del código fuente de Asterisk o el paquete zaptel. Ejecutamos /sbin/ztcfg para cargar y ejecutar el fichero de configuración /etc/zaptel.conf.
Al ejecutar la utilidad deberías obtener el siguiente resultado:
# ztcfg -vv Zaptel Configuration ========================= Channel map: Channel 01: FXS Loopstart (Default) (Slaves: 01) 1 channels configured.
Paso 4: Configurar Asterisk para usar el equipamiento Zapata El cuarto y último paso es configurar Asterisk para que reconozca y use la tarjeta interfaz TDM. Esto creará un nuevo canal de comunicaciones. Editamos el fichero de configuración /etc/asterisk/zapata.conf de la forma:
[channels] usecallerid=yes hidecallerid=no callwaiting=no threewaycalling=yes transfer=yes echocancel=yes echotraining=yes context=incoming_pstn signalling=fxs_ls channel => 1
Las tres últimas líneas del fichero zapata.conf son las más importantes para una configuración básica. La línea context=incoming_pstn indica que todas las llamadas entrantes por el canal de RTB se asociarán a ese contexto. Las siguientes dos líneas indican el tipo de señalización: fxs_ls (FXS con Loopstart) y que las llamadas llegan por el canal/puerto 1 de la TDM, channel ⇒ 1.
Una vez que tengas configurado este nuevo tipo de canal (TDM zapata) sólo te queda decidir cómo gestionar las llamadas entrantes y salientes de la RTB.
En nuestro segundo escenario decidimos que el comportamiento ideal para las llamadas entrantes desde la RTB es el siguiente: una vez que una llamada entra por la línea analógica, queremos que se descuelgue un sistema automático de atención por tonos (IVR). El sistema (nuestro Asterisk) preguntará por la extensión deseada, una vez que el número de extensión se introduzca por el terminal (tonos DTMF) la llamada se encaminará a una de las extensiones.
La idea principal es permitir compartir un sólo número de la RTB con todas las extensiones. Esta “inteligencia” se implementa en el fichero extensions.conf. Añadimos una nueva sección (contexto) [incoming_pstn] de la siguiente forma:
[incoming_pstn]
exten => s,1,Answer() ; Contestamos la llamada entrante
exten => s,2,DigitTimeout(10) ; Configuramos los valores máximos para
; introducir el número de extensión
exten => s,3,ResponseTimeout(20)
exten => s,4,Background(vm-extension) ; Un mensaje de voz pregunta: ¿extensión?
exten => i,1,Goto(incoming_pstn,s,1) ; Repetir preguntar si extensión inválida
exten => t,1,Hangup() ; Colgar
include => internal_calls ; Pone a disposición todas las extensiones internas
Nota: la versión final completa del fichero extensions.conf está disponible en la Section 7.3.
Para que cada uno de los teléfonos IP puedan usar la línea analógica de salida creamos un nuevo contexto [outgoing_calls].
[outgoing_calls]
exten => _0.,1,Dial(Zap/1/${EXTEN:1})
exten => t,1,Hangup()
La extensión especial “_0.” significa que para alcanzar la RTB se debe empezar marcando el numero “0”. La orden Dial() crea el puente entre la llamada IP desde los terminales y el canal analógico Zap/1 (canal 1). Por último ${EXTEN:1} significa que el número que se marcará por el canal analógico es el número marcado desde los terminales internos IP sin el primer dígito. En nuestro caso se quita el “0” inicial al marcar por la RTB.
Una vez que hemos creado un nuevo contexto en el plan de marcado [outgoing_calls], es necesario que los terminales tengan acceso a la extensión de salida. La manera más fácil de conseguirlo es añadir una línea del tipo include ⇒ outgoing_calls al final del contexto [internal_calls]
include => outgoing_calls