Saltearse al contenido

Presentación 4: La Arquitectura de Asterisk 22

El mapa interno de tu central y cómo orquestar cada componente

🧭 Presentación 4: La Arquitectura de Asterisk 22

Sección titulada «🧭 Presentación 4: La Arquitectura de Asterisk 22»

🧩 El Mapa Interno de tu Central de Comunicaciones

Sección titulada «🧩 El Mapa Interno de tu Central de Comunicaciones»

🎯 De Usuario a Arquitecto: ¿Por Qué Necesitamos un Mapa?

Sección titulada «🎯 De Usuario a Arquitecto: ¿Por Qué Necesitamos un Mapa?»

Hasta ahora, hemos instalado Asterisk. Puede parecer una “caja negra” que simplemente funciona. Pero para construir soluciones de producción robustas e integrar IA, debemos dejar de ser simples usuarios y convertirnos en arquitectos de comunicaciones.

La imagen que ves es nuestro mapa. Entenderla es la diferencia entre “editar un archivo de configuración” y “diseñar un flujo de llamadas”.

Diagrama de arquitectura de Asterisk: capas de red, hardware, sistema operativo y componentes de Asterisk

Figura: Visión general de la arquitectura de Asterisk 22


El diagrama se divide lógicamente en cuatro capas verticales, desde el mundo exterior hasta el corazón de Asterisk.

  1. Network (La Red): El mundo exterior. Aquí se originan y terminan las llamadas. Incluye la PSTN y los dispositivos de comunicación locales (teléfonos IP, softphones), además de servicios de apoyo (web, bases de datos).
  2. Hardware (La Capa Física): El equipamiento que conecta la red con nuestro servidor. Puede ser una NIC para tráfico IP o tarjetas de telefonía para líneas analógicas/digitales.
  3. Local OS (El Sistema Operativo): Nuestro Debian 13. Gestiona el hardware y provee los servicios base (p. ej. stack TCP/UDP).
  4. Asterisk Components (Caja de Herramientas): El ecosistema de módulos y componentes que conforman Asterisk.

⚙️ El Corazón de Asterisk: El Núcleo (Core)

Sección titulada «⚙️ El Corazón de Asterisk: El Núcleo (Core)»

El Core es el motor central. Orquesta a todos los demás componentes.

  • Carga de módulos: Lee modules.conf y habilita funcionalidades (drivers, apps, códecs).
  • Procesa la configuración: pjsip.conf, extensions.conf, etc.
  • Gestiona canales: Crea/monitorea/destruye canales de llamada.
  • Ejecuta el Dialplan: Busca contexto/extensión y aplica la lógica.
  • Base de tiempos: Sincroniza eventos y flujos de audio.

Analogía: el Core es el director de orquesta. No toca instrumentos, pero hace que todo suceda a tiempo.


Asterisk no entiende de forma nativa los protocolos de telefonía. Necesita “traductores”.

  • chan_pjsip.so (SIP moderno): Traduce SIP a eventos internos. En Asterisk 22 es el único driver SIP disponible.
  • chan_dahdi.so (TDM): Interfaz con hardware de telefonía analógica/digital (DAHDI).
  • chan_iax2.so (nativo Asterisk): Ideal para interconectar servidores Asterisk de forma eficiente.

🧠 El Cerebro Lógico: El Dialplan (extensions.conf)

Sección titulada «🧠 El Cerebro Lógico: El Dialplan (extensions.conf)»

Si el Core es el director, el Dialplan es la partitura de la llamada.

  • Corazón lógico: Define qué sucede cuando alguien marca.
  • Estructura: Contextos → Extensiones → Prioridades → Aplicaciones.
  • Función: Indica acciones como Dial(PJSIP/1002) para enrutar llamadas.

🔗 Conectores Externos: APIs (AGI, AMI, ARI)

Sección titulada «🔗 Conectores Externos: APIs (AGI, AMI, ARI)»

Donde Asterisk pasa de PBX a plataforma de desarrollo.

  • AGI (scripts síncronos): lógica externa sencilla y robusta.
  • AMI (eventos en tiempo real): monitoreo, CTI, control de llamadas.
  • ARI (REST/WebSockets): control total de canales, puentes y media. Ideal para IA en tiempo real.

  • Codecs y Formatos: codec_ulaw.so, codec_opus.so, format_wav.so, format_gsm.so.
  • Recursos: res_musiconhold.so para MOH, entre otros.
  • Reportes y Logging: cdr_odbc.so para CDR, cel_odbc.so para CEL.
  • Bases de Datos: res_odbc.so como puente genérico a PostgreSQL y otros.

  • Llegada: INVITE llega a NIC → OS → Asterisk.
  • Traducción: chan_pjsip valida y crea canal de entrada.
  • Decisión: Core consulta Dialplan por 1002 en el contexto apropiado.
  • Ejecución: Dial() establece la llamada.
  • Puente: Core crea un Bridge y une los canales.
  • Conversación: Flujo RTP bidireccional.
  • Registro: CDR/CEL capturan eventos.

Ahora extensions.conf deja de ser un archivo plano; es tu partitura. pjsip.conf no es solo una lista de usuarios; es el manual del traductor. Y las APIs son los puntos precisos donde puedes inyectar inteligencia en tiempo real.


🚀 Taller 5 - CallerID Dinámico con AGI y Python

Siguiente paso práctico: Implementaremos lógica externa con AGI en Python para ruletear dinámicamente el CallerID de salida, y modularizaremos el dialplan con #include.

👉 Ir al Taller 5: CallerID Dinámico con AGI y Python