Ahorrando prácticamente: Implantemos una centralita Asterisk
Voy a atreverme a publicar una serie de post con cómo implantar una centralita telefónica de bajo coste, y capaz de dar un servicio muy avanzado. Indicaros que no soy ningún experto en Asterisk, que es el software que vamos a utilizar, aunque he averiguado lo suficiente como para implantar mi propia centralita.
Os comento de dónde parto y a dónde quiero llegar. Dispongo de 4 líneas telefónicas analógicas (sí, de esas que tenéis en casa), que además están configuradas en salto (esto es, tengo 4 números de teléfonos asociados a estas 4 líneas. Llamando a uno de esos números obtengo una de las 4 líneas, y no tiene por qué haber una correspondencia unívoca. Así podría tener 4 llamadas distintas de 4 usuarios que han marcado el mismo número).
Quiero llegar a tener una centralita con operadora virtual (esa locución que se obtiene en algunos teléfonos: “Pulse 1 para…”), con buzones virtuales por cada extensión, y por supuesto libertad absoluta para configurar mis extensiones, grupos de extensiones…
A los que saben realmente de Asterisk: voy a montar algo muy sencillo y obvio. Pero, muy efectista y además práctico. Vamos a ello
Lo primero es el hardware. Tengo por ahí un Pentium III (sí, 3), con 256 megas de RAM (sí, 256 megas) y 20 gigas de disco duro (sí, un ordenador con más de 8 años…). Este ordenador será la centralita.
Pero debo conectarlo a la red telefónica (alguien debe recibir las líneas de la RTC), para lo cual, necesitaré una tarjeta adecuada. ¿Cuál? Las “clásicas” y de una calidad indudable son las Digium. Pero cuando empecé a montar esto, quería hacer una prueba, y para un prueba se me iban algo de precio. Así que elegí la OpenVox, que es un “clon” de las Digium hechas en China. Me quedé con la Openvox A400P. El coste de esta tarjeta se sitúa entorno a los 80 €.
De por sí la tarjeta “sirve para poco”, ya que hay que añadirle módulo adicional por cada línea telefónica que queramos gestionar. Estas tarjetas pueden llevar dos tipos de módulos que se distinguen por su color:
- Color rojo, son módulos FXO con señalización FXS (ojo que esto es lioso), y son los módulos que reciben una línea externa con tono de llamada, y no deben generar tensión eléctrica (los teléfonos convencionales se conenctan a líneas “externas”. Si vuestra centralita se conecta a la calle, necesitaréis estos).
- Color verde, son módulos FXS con señalización FXO. Imaginemos que nuestra centralita tiene una extensión a la que se conecta un fax. A la máquina de fax, la centralita “debe llamarlo” cuando se le pase un fax, es decir, generar tensión eléctrica en la línea. Para eso se utilizan los módulos verdes.
Vale. Llegados a este punto, y según mi configuración pincho 4 módulos rojos en la tarjeta A400P, de modo que así puedo recibir 4 llamadas desde la calle. E instalo esta tarjeta en un PC.
Ya tenemos la parte hardware. Vamos con la parte software. Vamos a instalar una distribución Linux que viene ya preconfigurada para detectar el hardware propio de Asterisk, ejecuta Asterisk y provee de un entorno prácticamente listo para configurar una centralita. Es Trixbox. Descargamos, y quemamos en un CD la última versión, arrancando el PC-centralita con este CD. La instalación es bastante sencilla, aunque en modo texto. No creo que merezca la pena entrar en comentarla.
Configuremos ahora TrixBox para que acepte nuestra tarjeta OpenVox. En general se autoconfigurará sola, pero vamos a indicar los pasos a realizar. La idea es utilizar el proyecto Zapata Telephony integrado con Asterisk.
Primero es conectarnos al PC con TrixBox. Para ello, reiniciando nuestro PC centralita nos indicará cómo. Básicamente en esta primera conexión estableceremos una sesión con el usuario root y la password indicada en la instalación.
Bien, estamos conectados. ¿Qué hacer ahora? La configuración de la centralita se almacena en /etc/asterisk. La configuración de la tarjetas y de zapata se almacena en /etc/zaptel.conf y es éste último fichero el que primero generaremos. ¿Cómo? Utilizando un programa de autodetección de tarjetas que trae TrixBox:
genzaptelconf
Este programa generará las configuraciones de /etc/zaptel.conf y /etc/asterisk/zapata-channels.conf
En mi caso particular, zaptel.conf tiene la siguiente forma
fxsks=1-4 loadzone= es defaultzone= es
Básicamente este fichero indica: Tenemos 4 canales de señalización FXS (el ks final indica un tipo especial de señalización, la más utilizada en España, KewlStart).
Ahora debemos hacer que esa configuración sea válida. Para ello, ejecutamos
ztcfg -vvvv
(Cuantas más “v” pongáis, más detalles tendréis de la salida del comando). Si todo va bien, obtendremos una salida como esta:
Zaptel Version: 1.4.12.1 Echo Canceller: OSLEC Configuration ====================== Channel map: Channel 01: FXS Kewlstart (Default) (Slaves: 01) Channel 02: FXS Kewlstart (Default) (Slaves: 02) Channel 03: FXS Kewlstart (Default) (Slaves: 03) 4 channels to configure.
Vamos a comprobar que tenemos la tarjeta configurada y que todo funciona ok. Le conectamos al PC centralita en la tarjeta OpenVox las 4 líneas telefónicas, y ejecutamos en la consola:
lszaptel
Y tendremos una salida así
### Span 1: WCTDM/0 "Wildcard TDM400P REV E/F Board 1" (MASTER) 1 FXO FXSKS (In use) 2 FXO FXSKS (In use) 3 FXO FXSKS (In use) RED 4 FXO FXSKS (In use)
Bien. Las líneas 1, 2 y 4, o hablando con más propiedad, los canales, 1, 2 y 4 están detectados por Zapata y además, están In use, lo que significa que se detecta la línea telefónica. Sin embargo, la línea 3, está en “rojo” que indica que no se ha detectado ninguna línea conectada. Si todo os ha funcionado bien, y tenéis todo conectado no aparece nada en RED.
Podemos obtener aún más detalle de si todo está ejecutado con las órdenes zttool, y ztmonitor. La primera, con un interfaz basado en ncurses ofrece información algo más visual de la tarjeta y canales detectados. La segunda permite monitorizar canales, incluso grabando “los sonidos” por cada canal, para su estudio desde el punto de vista de amplitud de las señales, ganancia, etc.
Vale… ahora toca configurar Asterisk, para ello utilizaremos una interfaz web, FreePBX. Pero eso lo dejo para otro post.