skip to Main Content

Guia de Asterisk – Arquitectura de Asterisk PBX

Empecemos por lo básico, un pequeño repaso de las partes de Asterisk y el para que de ellas

AsteriskArchitecture
Tomada del sitio web: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Architecture%2C+The+Big+Picture

Asterisk está basado en módulos, los cuales son componentes cargables que proveen una funcionalidad especifica, tales como driver de canal (chan_pjsip.so por ejemplo) o un recurso que nos permita conectarnos a una tecnología externa (tal como func_odbc.so). Los módulos de Asterisk son cargados al inicio basados en los parámetros definidos en el archivo /etc/asterisk.modules.conf

A continuación, explicaremos algunas de las categorías de módulos que contiene Asterisk

Aplicaciones

Las aplicaciones de Dialplan son usadas en extensions.conf (el archivo para establecer las reglas de marcado), proporcionan las funcionalidades de llamada al sistema. Un ejemplo es la aplicación Dial(), la cual es responsable de realizar las conexiones salientes hacia recursos externos.

Aplicaciones de Dialplan Populares

NombrePropósito
app_cdrEscribe los registros de CDR
app_confbridgeProvee la capacidad de conferencias
app_dialUsado para conectar canales entre si (hacer llamadas)
app_echolos ecos recibieron el audio de vuelta al canal de origen, puede ser útil para demostrar latencia
app_mixmonitorGraba ambos lados de una llamada (transmisión y recepción) y luego los mezcla en un único archivo
app_stasisPasa el control de la llamada a una aplicación ARI

Módulos de Puenteo

Los controladores de puente son utilizados por la arquitectura de puente en Asterisk y proporcionan varios métodos para unir los medios de llamada entre los participantes en una llamada.

Aplicaciones de Puenteo Populares

NombrePropósito
bridge_sofmixrealiza una multiplexación simple, como sería necesario en una gran sala de conferencias (múltiples participantes). Utilizado por app_confbridge
bridge_builtin_featuresRealiza puentes cuando se utilizan funciones de usuario integradas (como las que se encuentran en features.conf)

Módulos de grabación de detalles de llamadas

Se pueden guardar CDRs en un archivo (por defecto), una base de datos, un servidor RADIUS, o syslog

Aplicaciones de CDR Populares

NombrePropósito
cdr_adaptive_odbcPermite escribir CDRs atravez de un framework de ODBC con la capacidad de agregar campos personalizados
cdr_csvEscribe CDRs a disco como un archivo CSV
cdr_customEscribe CDRs a un archivo CSV, pero permite agregarle campos adicionales

Módulos Channel Event Logging

CEL proveen un mayor control sobre los reporte de actividades de llamada. Requieren más cuidado en la planificación de nuestro dialplan, y no significa que va a funcionar automáticamente.

Aplicaciones de CDR Populares

NombrePropósito
cel_customCEL a disco(archivo)
cel_managerCEL aAMI
cel_odbcCEL to ODBC

Controladores de canal

Todas las llamadas desde el exterior de Asterisk pasan por un controlador de canal antes de llegar al núcleo, y todas las llamadas salientes pasan por un controlador de canal en su camino hacia el dispositivo externo. Cada controlador de canal es especifico para el protocolo o tipo de canal que soporta (SIP, PJSIP, ISDN, etc). El modulo de canal funciona como un Gateway para el core de Asterisk

Controladores de Canal Populares

NombrePropósito
chan_bridgeUsado internamente por la aplicación ConfBridge(); no debería utilizarse directamente
chan_localProvee el mecanismo para tratar una porción del dialplan como un canal
chan_multicast_rtpProvee conexión a flujos multicast RTP
chan_pjsipControlador de canal SIP

Traductores de Codec

Los traductores de códecs (usualmente llamados transcoders) permiten a Asterisk convertir formatos de flujo de audio entre llamadas

Traductores de Codec Comunes

NombrePropósito
codec_alawEl codec A-law PCM es usado alrededor del mundo en conexiones PSTN (excepto CANADA/USA). Este codec (junto con ulaw) debería estar habilitado en todos los canales
codec_g729Es un codec popular si se busca la compresión (y el uso de CPU no es un problema), pero impone un mayor consumo de CPU, agrega latencia a las llamadas, reduce la calidad de manera mínima, y no va a reducir el overhead de ninguna manera
codec_g722Codec de Audio de Banda Ancha
codec_gsmPosee una calidad de sonido muy pobre

Interpretadores de Formato

Los interpretadores de formato realizan una función similar a los traductores de codec, pero hacen su trabajo en archivos en lugar de canales, y manejan más que solo audio. Si guardamos las grabaciones en distintos formatos a la vez (como WAV, GSM, etc). Asterisk va a determinar el formato de menor coste a usar cuando un canal necesite reproducir esa grabación

Los módulos de formato de archivo tienen nombres de archivo que se parecen a format_xxxxx.so, como format_wav.so y format_jpeg.so

Interpretadores de Formatos más utilizados

  • format_g723
  • format_g726
  • format_gsm
  • format_h264
  • format_ilbc
  • format_jpeg
  • format_pcm
  • format_sln
  • format_wav_gsm
  • format_wav

Funciones de Dialplan

Las funciones de dialplan son algo similares a las aplicaciones de dialplan, pero en lugar de trabajar en un canal o llamada en particular, simplemente recuperan o establecen una configuración particular en un canal, o manipulan el texto. Por ejemplo, una función de dialplan podría recuperar la información del identificador de llamadas de una llamada entrante, filtrar algún texto o establecer un tiempo de espera para la entrada de la persona que llama.

Funciones de Dialplan Útiles

NombrePropósito
func_audiohookPermite que las llamadas sean grabadas luego de ser transferidas
func_blacklistEscribe/lee la lista negra en astdb
func_calleridObtiene/Establece los parámetros de configuración de finalización de llamadas para los canales
func_cdrObtiene/Establece la variable CDR
func_channelObtiene/Establece información de canal
func_curlUsa cURL para obtener data de una URI
func_devstateObtiene el estado de un dispositivo
func_envIncluye FILE(), STAT(), y ENV(); realiza acciones a nivel de S.O
func_hangupcauseObtiene/Establece información de hangupcause de un canal
func_odbcPermite al dialplan integrarse con fuentes ODBC
func_shellRealiza operaciones a nivel del Shell de Linux y devuelve resultados
func_vmcountRetorna la cantidad de mensajes de voicemail en el folder de un usuario particular

Módulos de PBX

Son módulos periféricos que proveen mejoras en el control y mecanismos de configuración. Por ejemplo, pbx_config es el modulo que carga el tradicional dialplan de Asterisk.

Módulos de PBX

NombrePropósito
pbx_configSin este módulo Asterisk no puede leer extensions.conf
pbx_dundiRealiza lookups de datos en sistemas remotos Asterisk
pbx_realtimeProvee funcionalidad relacionadas a la ARI (Asterisk Realtime Architecture)
pbx_spoolproporciona soporte de cola de salida en relación con los archivos de llamadas de Asterisk

Módulos de Recursos

Los recursos brindan funcionalidad a Asterisk a la que se puede recurrir en cualquier momento durante una llamada, incluso mientras otra aplicación se está ejecutando en el canal. Los recursos se utilizan normalmente como eventos asincrónicos, como reproducir música en espera cuando una llamada se pone en espera o realizar el estacionamiento de llamadas.

Integración de Calendario

Puedes leer y escribir información de calendario desde el dialplan. También se pueden originar llamadas basadas en entradas de calendario

Módulos de integración con calendario

NombrePropósito
res_calendarHabilita la integración base con sistemas de calendarización
res_calendar_caldavPermite características para que res_calendar se conecte a calendarios via CalDAV
res_calendar_exchangePermite características para que res_calendar se conecte a calendarios MS Exchange
res_calendar_icalendarPermite características para que res_calendar se conecte a calendarios de Apple/Google iCalendar

Existen otros módulos de recurso disponibles que no encajan en las listan anteriores, se omitirán para no alargar la información

Módulos Extra (Add-on)

Los módulos adicionales son módulos desarrollados por la comunidad con diferentes derechos de uso o distribución de los del código principal. Se guardan en un directorio separado y no se compilan ni instalan de forma predeterminada. Para habilitar estos módulos, use la utilidad de configuración de compilación menuselect

Módulos Extra

NombrePropósito
chan_ooh323Permite realizar y recibir llamadas VoIP utilizando el protocolo H.323
format_mp3Permite que Asterisk reproduzca archivos MP3
res_config_mysqlUtiliza una base de datos MySQL como backend de configuración en tiempo real

Estructura de Archivos

Archivos de Configuración

Los archivos de configuración de Asterisk incluyen extensions.conf, pjsip.conf, modules.conf y docenas de otros archivos que definen parámetros para los diversos canales, recursos, módulos y funciones que pueden estar en uso. Estos archivos se encontrarán en /etc/asterisk.

Módulos

Están ubicados en el folder /usr/lib/asterisk/modules.

La Biblioteca de Recursos

Hay varios recursos que requieren fuentes de datos externas. Por ejemplo, la música en espera (MOH) no puede suceder a menos que tenga algo de música para reproducir. Las indicaciones del sistema también deben almacenarse en algún lugar del disco duro. La carpeta /var/lib/asterisk es donde se almacenan las indicaciones del sistema, los scripts AGI, la música en espera y otros archivos de recursos.

Carpeta Spool

La carpeta spool es donde Linux almacena archivos que van a cambiar con frecuencia o que serán procesados por otros procesos en un momento posterior. Por ejemplo, en Linux, los trabajos de impresión y los correos electrónicos pendientes normalmente se escriben en la cola hasta que se procesan.

Para Asterisk, la carpeta spool se utiliza para almacenar elementos transitorios como mensajes de voz, grabaciones de llamadas, archivos de llamadas, etc.

La carpeta spool de Asterisk se encontrará en el directorio /var/spool/asterisk.

Logging

Asterisk es capaz de generar varios tipos diferentes de archivos de registro. La carpeta /var/log/asterisk es donde se escriben elementos como registros de detalles de llamadas (CDR), eventos de canal de CEL, registros de depuración, registros de cola, mensajes, errores y otros resultados.

El Dialplan o Plan de Marcado

El dialplan es el corazón de Asterisk. Todos los canales que llegan al sistema pasarán por el plan de marcación, que contiene el script de flujo de llamadas que determina cómo se manejan las llamadas entrantes.

Versionamiento de Asterisk

Para seguir el versionamiento del momento de Asterisk pueden visitar el siguiente link: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Versions

Esto es todo para nuestro primer artículo en la Guía de Asterisk

Latest Articles
Subscribe To Our Newsletter

Don't get left out of the loop, make sure you subscribe to our newsletter below so you can be notified of our latest insights, tips, tutorials, sales and more!

Discussion
Back To Top