Asterisk: Crea tu propia centralita virtual

Asterisk es un módulo de software libre que nos permite crear una centralita telefónica propia. Se trata de un módulo pre-establecido que permite comunicaciones de voz de forma flexible y económica, y su licencia GPL permite que otras compañías lo usen de forma adaptada para sus propios proyectos, creando así lo que se denominan open source pbx. Diversas empresas de software para call centers se basan hoy en día en Asterisk para sus soluciones comerciales. Hablaremos de este software en los próximos artículos, pero primero, sentemos las bases.
Historia
Mark Spencer, un joven estudiante de ingeniería informática estadounidense, creó a finales de la década de los 90 una empresa dedicada al desarrollo en Linux. Por circunstancias personales, Spencer se vio limitado a la hora de obtener una centralita para su proyecto, así que decidió crear su propio software para desarrollar una centralita telefónica.
De este modo nació Asterisk, un módulo programado en C que procuraba una manera de crear una centralita telefónica de bajo coste. Intentando dar solución a su propio problema, encontró un nicho de mercado que no estaba explotado, así que decidió cambiar de nombre su empresa, creó Digium, y se dedicó a desarrollar Asterisk.
Características
Asterisk corre en distribuciones de Linux, y por tanto se sirve también de la potencia de este tipo de sistemas operativos como plataforma. El desarrollo que inició Spencer supuso una revolución en las comunicaciones, tanto en telefonía tradicional como en la emergente voz IP (telefonía a través de internet).Muchas de las características de Asterisk eran inaccesibles de forma económica hasta entonces. Por ejemplo:
• Buzón de voz
• Llamada en conferencia
• IVR (respuestas automatizadas de voz)
• Distribución automática de llamadas
El módulo no sólo permite todo esto, sino que además permite programar en su propio lenguaje todo tipo de algoritmos para dirigir las llamadas, haciendo de la solución una plataforma robusta aunque flexible para cualquier desarrollador.
Multitud de protocolos fueron desarrollados y son soportados por Asterisk, por ejemplo el famoso protocolo SIP (Session Initiation Protocol) que permite el enlace mediante software de las llamadas, así como diversos protocolos de encriptación y compresión de la voz para poder permitir la multiplexación de los canales.
En resumen, la enorme versatilidad de Asterisk hace que sea capaz de integrar comunicaciones tradicionales a través de PSTN y canales de VoIP, y gestionar troncales físicos (como los archiconocidos primarios), así como estructuras lógicas como protocolos SIP y centralitas virtuales situadas en cualquier otro tipo de hosting web. A continuación veremos la arquitectura básica de una estructura basada en esta tecnología.
Arquitectura básica de Asterisk
Bajo estas líneas podemos apreciar los elementos básicos de una arquitectura en Asterisk
Asterisk tiene un núcleo o “core” que es su base funcional y estructural. Este núcleo se encargará de interactuar con el resto de módulos accesorios, y además cargará los llamados “asterisk dialplan“, que son los algoritmos que definirán el comportamiento de nuestra red telefónica.
Llamadas y Canales
El principal cometido de Asterisk es, obviamente, efectuar llamadas. Y para ello, necesita canales por dónde enviar esas llamadas. Aunque típicamente entendemos como “llamada” la comunicación entre dos teléfonos a través de la red telefónica tradicional, en Asterisk podemos tener una variedad más amplia de canales:
- Un teléfono móvil contactando a un softphone a través de Asterisk.
- Un teléfono efectuando llamadas a varios terminales en conferencia.
- Un teléfono llamando a una aplicación de software (como un IVR, un buzón de voz, etc)
En este caso, y aunque un teléfono es el terminal más conocido y evidente para ejemplificar, a través de un canal podemos contar con otros actores que no sean necesariamente terminales telefónicos tradicionales, como por ejemplo un sistema de alarma o un disparador de mensaje masivo de voz.
Canales en Asterisk
Los canales se crean en Asterisk usando los llamados “channel drivers”. Éstos se dedican a servir a la comunicación entre dispositivos diversos, como señalamos antes. Los canales pueden actuar de puente para otros canales, así como ser afectados por aplicaciones y funciones diversas. Los canales pueden actuar entre diferentes módulos al mismo tiempo.
Resumen: Puntos clave
En definitiva, en Asterisk tenemos una enorme variedad de opciones, en constante crecimiento gracias al carácter de software libre que permite que otras compañías o individuos puedan desarrollar sobre la base establecida por Mark Spencer.
Los puntos clave a recordar son:
- Asterisk es un software libre con licencia GPL, por tanto podemos desarrollar ampliaciones a partir de esa base.
- Corre sobre sistemas basados en unix, se puede instalar sobre distintas distribuciones.
- La plataforma nos permite manejar llamadas con tecnologías de voz sobre IP
- Podremos interactuar con protocolos e interfaces varios: primarios, tarjetas de comunicaciones diversas (Sangoma, etc.), o protocolos de comunicaciones (SIP, H323…).
Este es un resumen sobre lo que esta tecnología puede hacer. La ventaja del uso de este tipo de tecnologías es el abaratamiento de costes, dado que no necesitamos un hardware complejo para soportar esta estructura.