PJSIP es el stack de comunicaciones SIP moderno en Asterisk, reemplazando al antiguo chan_sip. Permite una gestión más flexible y segura de las extensiones y troncales, además de soportar múltiples dispositivos por extensión y nuevas funcionalidades. A continuación se explica en detalle cómo crear una extensión PJSIP y por qué es fundamental configurar correctamente los contextos para limitar el uso y asegurar la centralita.
A diferencia de chan_sip, PJSIP utiliza un enfoque modular en su archivo de configuración, pjsip.conf
. Cada extensión requiere varias secciones:
pjsip.conf
; Definición de la autenticación
[101-auth]
type=auth
auth_type=userpass
username=101
password=clave_segura
; Definición del AOR (Address of Record)
[101-aor]
type=aor
max_contacts=2
; Definición del endpoint
[101-endpoint]
type=endpoint
aor=101-aor
auth=101-auth
context=interno
disallow=all
allow=ulaw,alaw
En este ejemplo, la extensión 101 permite hasta dos dispositivos registrados simultáneamente gracias a max_contacts=2
.
extensions.conf
) y los contextos
El archivo extensions.conf
define cómo se enrutan las llamadas dentro de la centralita. Aquí es donde los contextos juegan un papel esencial. Un contexto es un bloque lógico que agrupa extensiones y reglas de marcado, permitiendo separar y limitar el acceso a funcionalidades sensibles (como llamadas externas).
[interno]
exten => 101,1,Dial(PJSIP/101)
exten => 102,1,Dial(PJSIP/102)
exten => 103,1,Dial(PJSIP/103)
Solo las extensiones incluidas en el contexto interno
podrán llamarse entre sí. Si una extensión necesita hacer llamadas externas, se debe crear un contexto aparte y controlar el acceso mediante la configuración de context
en la sección endpoint
de pjsip.conf
.
Configurar correctamente los contextos es crítico para:
; Contexto para llamadas internas
[interno]
exten => _1XX,1,Dial(PJSIP/${EXTEN})
; Contexto para llamadas externas (solo accesible para extensiones autorizadas)
[externo]
exten => _0.,1,Dial(PJSIP/${EXTEN}@trunk_sip)
En este ejemplo, solo las extensiones cuyo context
esté configurado como externo
podrán realizar llamadas fuera de la centralita. El resto de usuarios, en el contexto interno
, estarán limitados a llamadas entre extensiones.
Una vez configurados los archivos, es necesario recargar los módulos de Asterisk para aplicar los cambios:
asterisk -rx "core reload"
asterisk -rx "dialplan reload"
Posteriormente, puede verificarse el registro de las extensiones y realizar pruebas de llamada para asegurarse de que los contextos funcionan como se espera.
Crear una extensión PJSIP en Asterisk implica definir correctamente las secciones endpoint
, aor
y auth
en pjsip.conf
, y asociar cada extensión a un contexto adecuado en extensions.conf
. El uso correcto de los contextos es esencial para limitar el uso de la centralita, protegerla contra accesos no autorizados y organizar el flujo de llamadas de manera eficiente.