HT503 como SIP TRUNK en Asterisk con PJSIP

Hace algunos días configuré un Grandstream HT503 como puerta de enlace FXO con Asterisk. Este ATA permite marcar directamente a la extensión SIP donde se registra el FXO, sin embargo esto significaba que no podría marcar de manera transparente números locales (e.g. tendría que marcar 9 para llamadas “externas”), o que al hacerlo, se escuchara siempre el tono de discado antes de enlazar la llamada (usando Dial para rediscado en extensions.conf).

Para evitar lo anterior y poder usar el HT503 como un troncal SIP, para redirigir las llamadas de manera transparente, hubo que realizar la siguiente configuración. Esto es utilizando Asterisk 14 y PJSIP, no encontré nada (en inglés ni en español) que explicara cómo realizar la configuración utilizando PJSIP, así que lo comparto.

Configuración pjsip.conf

[ht503fxo]
type=aor
contact=sip:HT503_IP:5062

[ht503fxo]
type=endpoint
context=internal
disallow=all
allow=ulaw
aors=ht503fxo,EXT_FXO,EXT_FXS

[ht503fxo]
type=identify
endpoint=ht503fxo
match=HT503_IP

Algunas notas sobre la configuración:

HT503_IP: Debe ser la IP asignada al Grandstream (puerto WAN o LAN, dependiendo su configuración).

EXT_FXO: La extensión asignada al puerto FXO. Únicamente necesario si se está registrando la extensión con el servidor.

EXT_FXS: La extensión asignada al puerto FXS.

En varias partes encontré información sobre el usuario SIP del puerto FXO, que debía ser el utilizado para autenticarse con el SIP trunk, pero esto resultó no ser necesario (por eso no hay secciones tipo auth en la configuración). Registrar el FXO en nuestro asterisk con su propia extensión es opcional.

Algo que sí es importante configurar en el HT503: Port FXO -> Channel Dialing -> Stage Method (1/2), elegir 1. Si no se especifica esta configuración, las llamadas no serán redirigidas por el HT503 y no podremos realizar llamadas al exterior de manera transparente.

Una vez realizados los ajustes anteriores, podemos marcar directamente al exterior utilizando la siguiente configuración para nuestras extensiones.

Configuración extensions.conf

[internal]
; números como 030, 070, etc. se van por el HT503
exten => _XXX,1,Dial(PJSIP/${EXTEN}@ht503fxo,25)
exten => _XXX,n,Hangup()

; números de más de 5 elementos, se van automáticamente por el HT503
exten => _XXXXX.,1,Dial(PJSIP/${EXTEN}@ht503fxo,25)
exten => _XXXXX.,n,Hangup()

Artículo original: http://devpower.org/blog/configurar-grandstream-ht503-como-sip-trunk-en-asterisk-con-pjsip/