Empecemos por lo básico, un pequeño repaso de las partes de Asterisk y el para que de ellas
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
Nombre | Propósito |
app_cdr | Escribe los registros de CDR |
app_confbridge | Provee la capacidad de conferencias |
app_dial | Usado para conectar canales entre si (hacer llamadas) |
app_echo | los ecos recibieron el audio de vuelta al canal de origen, puede ser útil para demostrar latencia |
app_mixmonitor | Graba ambos lados de una llamada (transmisión y recepción) y luego los mezcla en un único archivo |
app_stasis | Pasa 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
Nombre | Propósito |
bridge_sofmix | realiza una multiplexación simple, como sería necesario en una gran sala de conferencias (múltiples participantes). Utilizado por app_confbridge |
bridge_builtin_features | Realiza 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
Nombre | Propósito |
cdr_adaptive_odbc | Permite escribir CDRs atravez de un framework de ODBC con la capacidad de agregar campos personalizados |
cdr_csv | Escribe CDRs a disco como un archivo CSV |
cdr_custom | Escribe 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
Nombre | Propósito |
cel_custom | CEL a disco(archivo) |
cel_manager | CEL aAMI |
cel_odbc | CEL 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
Nombre | Propósito |
chan_bridge | Usado internamente por la aplicación ConfBridge(); no debería utilizarse directamente |
chan_local | Provee el mecanismo para tratar una porción del dialplan como un canal |
chan_multicast_rtp | Provee conexión a flujos multicast RTP |
chan_pjsip | Controlador 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
Nombre | Propósito |
codec_alaw | El 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_g729 | Es 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_g722 | Codec de Audio de Banda Ancha |
codec_gsm | Posee 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
Nombre | Propósito |
func_audiohook | Permite que las llamadas sean grabadas luego de ser transferidas |
func_blacklist | Escribe/lee la lista negra en astdb |
func_callerid | Obtiene/Establece los parámetros de configuración de finalización de llamadas para los canales |
func_cdr | Obtiene/Establece la variable CDR |
func_channel | Obtiene/Establece información de canal |
func_curl | Usa cURL para obtener data de una URI |
func_devstate | Obtiene el estado de un dispositivo |
func_env | Incluye FILE(), STAT(), y ENV(); realiza acciones a nivel de S.O |
func_hangupcause | Obtiene/Establece información de hangupcause de un canal |
func_odbc | Permite al dialplan integrarse con fuentes ODBC |
func_shell | Realiza operaciones a nivel del Shell de Linux y devuelve resultados |
func_vmcount | Retorna 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
Nombre | Propósito |
pbx_config | Sin este módulo Asterisk no puede leer extensions.conf |
pbx_dundi | Realiza lookups de datos en sistemas remotos Asterisk |
pbx_realtime | Provee funcionalidad relacionadas a la ARI (Asterisk Realtime Architecture) |
pbx_spool | proporciona 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
Nombre | Propósito |
res_calendar | Habilita la integración base con sistemas de calendarización |
res_calendar_caldav | Permite características para que res_calendar se conecte a calendarios via CalDAV |
res_calendar_exchange | Permite características para que res_calendar se conecte a calendarios MS Exchange |
res_calendar_icalendar | Permite 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
Nombre | Propósito |
chan_ooh323 | Permite realizar y recibir llamadas VoIP utilizando el protocolo H.323 |
format_mp3 | Permite que Asterisk reproduzca archivos MP3 |
res_config_mysql | Utiliza 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