Asterisk: La Central Telefónica de Código Abierto

ASTERISK

Historia y Origen

Creada por Mark Spencer en 1999, Asterisk es una centralita telefónica (PBX) en software bajo licencia GPL que se ejecuta en Linux y utiliza el lenguaje C. Jim Dixon contribuyó al proyecto escribiendo un driver para una tarjeta Mitel 89000C sobre FreeBSD. Posteriormente, Mark Spencer creó su propia tarjeta llamada «Tormenta» y desarrolló la tecnología ZAPATA (Zapata Telephony Project). Finalmente, Mark Spencer y Jim Dixon unieron esfuerzos en un nuevo modelo de negocio y fundaron Digium como proveedor de servicios y productos de hardware y software para Asterisk.

Ventajas de Asterisk

  • Reducción de costos.
  • Control completo del sistema de telefonía.
  • Plan de discado flexible y potente.
  • Ambiente de desarrollo fácil y rápido.
  • Corre bajo Linux y es Código Abierto.

Canales

Un canal es una conexión que conduce una llamada entrante o saliente en el sistema Asterisk. La conexión puede venir o salir hacia telefonía tradicional analógica o digital o VozIP. Asterisk soporta una serie de canales, los más importantes son:

  • H.323, IAX2, SIP, MGCP: Protocolos VoIP
  • Console: GNU Linux OSS/ALSA sound system.
  • Zap: Líneas analógicas y digitales

API de canales

La API de canales sirve para controlar todas las llamadas del sistema, sean Voz IP, analógicas o cualquier otra tecnología, permitiendo desarrollar nuevos canales. Algunos canales para la red pública son:

  • chan_zap -> Digium Zaptel
  • chan_ss7 -> Digium con señalización SS7

Codecs

Los CODECs son utilizados por Asterisk para digitalizar la voz y ofrecer un ancho de banda adecuado a los entornos de trabajo (LAN, WAN). Asterisk soporta varios codecs, entre los principales:

  • G.711 (ulaw / alaw) -> 64 Kbps
  • G.726 -> 32 Kbps
  • G.729 -> 8 Kbps (Necesita adquisición de licencia)
  • GSM -> 12 – 13 Kbps

API de Traducción de Codec

Controla la traducción de CODECs entre participantes en una comunicación. Se pueden implementar codecs nuevos.

Aplicaciones

Para que Asterisk pueda conectar llamadas de entrada o salida, utilizar el buzón de voz, conferencia, etc., necesita ejecutar aplicaciones. Es posible desarrollar nuevas aplicaciones mediante AGI (Asterisk Gateway Interface) utilizando lenguajes como C, C++, perl, php, java, etc.

Archivos

Asterisk soporta algunos tipos de archivos que utiliza para tocar audio como: mp3, wav, GSM, etc. Controla el formato de archivos que pueden ser controlados por el sistema.

Protocolos Soportados

Entre los principales protocolos soportados por Asterisk se encuentran:

  • SIP
  • H.323
  • MGCP
  • IAX
  • SCCP (Cisco Skinny)

Protocolo IAX2: (Inter-Asterisk eXchange protocol)

Creado por Mark Spencer para la señalización de VoIP en Asterisk, este protocolo crea sesiones internas que pueden utilizar cualquier códec que pueda transmitir voz o vídeo. IAX esencialmente provee control y transmisión de flujos de datos multimedia sobre redes IP; es extremadamente flexible y puede ser utilizado con cualquier tipo de dato, incluido vídeo.

El Dialplan

El Dialplan funciona como una «tabla de enrutado». Cada número que marca una extensión va al dialplan, y ahí se decide qué hacer. Se organiza por contextos, extensiones y prioridades.

Sintaxis:

exten => extensión, prioridad, aplicación

La «extensión» puede ser cualquier cosa, no solo números. Se utilizan «patrones de marcado» para las extensiones.

Prioridades

Las prioridades sirven para decidir el orden de las acciones al entrar en el dialplan. Pueden utilizarse números o la prioridad «n», que va sumando 1 automáticamente.

Extensiones y Contextos

Las extensiones se agrupan en contextos. Cada dispositivo SIP, IAX o entrada de ZAP se define para un contexto. Un dispositivo solo puede «llamar» a los números que tiene definidos en el contexto en el que está. Un contexto puede incluir a otro.

Aplicación Dial

La aplicación Dial permite realizar una llamada a un dispositivo. Su formato más sencillo es:

Dial(Tecnología/dispositivo,tiemout,opciones)

Donde opciones puede ser:

  • t: Permitir que el usuario llamado transfiera la llamada.
  • T: Permitir que el llamante transfiera la llamada.
  • r: Generar un tono de ring artificial.
  • w: Permite al usuario llamado grabar la llamada.
  • W: Permite que el llamante grabe la llamada

Aplicación Goto

Permite realizar saltos dentro del dialplan. Se pueden realizar saltos en base a prioridad o etiqueta, extensión y prioridad (o etiqueta), o contexto, extensión y prioridad (o etiqueta).

Archivo Sip.conf

El archivo sip.conf define la configuración de los dispositivos SIP. Se pueden definir diferentes secciones para cada dispositivo, con opciones como type, secret, context y host.

Variables

Al igual que la variable DIALSTATUS, hay muchas variables en el entorno de Asterisk, como EXTEN (contiene el número marcado) y CONTEXT (contiene el contexto actual). Las variables se pueden «recortar» y se soportan expresiones básicas.

Aplicación Record

Permite grabar un fichero de sonido. Se puede utilizar %d en el nombre del fichero para utilizar un índice auto-incremental y evitar sobreescribir grabaciones.

Voicemail

El sistema de voicemail permite enviar la llamada a un buzón. Se configura en el archivo voicemail.conf y se pueden definir diferentes buzones para cada usuario.

Aplicación GotoIfTime

Realiza un salto condicional, dependiendo de la hora. Resulta muy útil en IVRs, para determinar si nos encontramos en horario de oficina o no.

Bifurcación Condicional

La aplicación GotoIf permite tomar decisiones dentro del dialplan, enviando la llamada a un destino u otro dependiendo de una expresión evaluada.

Aplicación Background

Similar a Playback, pero puede ser interrumpida si el usuario marca un dígito.

Para una lista completa de las aplicaciones disponibles:

*CLI> core show applications

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.