Al tener varias sucursales u oficinas podemos ahorrar mucho dinero interconectando nuestros servidores de VoIP y realizando las llamadas entre sucursales a través de VoIP y no con llamadas tradicionales.

¡Comencemos!

Escenario

  • Servidor A con dirección IP 192.168.10.9
  • Servidor B con dirección IP 192.168.15.99

Ambos servidores deben estar configurados para recibir conexiones SIP externas a la red.

Configuración del servidor A

Vamos a editar nuestro archivo sip.conf y pegaremos las siguientes líneas (cambiando la dirección IP, el usuario y el secret):

register => servidorb:secret@192.168.15.99/servidora

[servidora]
type=friend
secret=xxxxxxxxx
context=from-internal
qualify=yes
host=dynamic
language=es
disallow=all
allow=gsm
allow=ulaw
allow=alaw

Configuración del servidor B

Igualmente vamos a editar nuestro archivo sip.conf y pegaremos las siguientes líneas (cambiando la dirección IP, el usuario y el secret):

register => servidora:secret@192.168.10.9/servidorb

[servidorb]
type=friend
secret=xxxxxxxxx
context=from-internal
qualify=yes
host=dynamic
language=es
disallow=all
allow=gsm
allow=ulaw
allow=alaw

Como siempre, después de cualquier modificación de los archivos de configuración debemos reiniciar nuestro servicio Asterisk:

service asterisk restart

Ya podemos verificar si nuestras troncales se registraron correctamente:

root*CLI> sip show peers
servidora/servidorb  192.168.15.99  D  5060  OK (34 ms)

Dialplan

Si todo salió bien, ahora vamos a configurar nuestro dialplan para hacer llamadas entre extensiones y llamadas troncalizadas por uno u otro servidor.

Vamos a editar nuestro archivo extensions.conf y agregaremos nuestro contexto.

Servidor A

exten => _9XXX,1,NoOp()
exten => _9XXX,n,Dial(SIP/servidorb/${EXTEN})
exten => _9XXX,n,Hangup()

En este contexto le indicamos a nuestro servidor que las llamadas de 4 dígitos que comiencen por 9 se troncalizarán al servidor B.

Servidor B

exten => _8XXX,1,NoOp()
exten => _8XXX,n,Dial(SIP/servidora/${EXTEN})
exten => _8XXX,n,Hangup()

En este contexto le indicamos a nuestro servidor que las llamadas de 4 dígitos que comiencen por 8 se troncalizarán al servidor A.

Llamadas salientes a través del otro servidor

Si queremos realizar llamadas desde el servidor A a través del servidor B, debemos agregar esta línea en nuestro contexto de salida. Esto es útil si los servidores están en países distintos y queremos aprovechar las líneas PSTN locales:

exten => _00507.,1,Dial(SIP/servidorb/${EXTEN})

Asumiendo que nuestro servidor B se encuentra en Panamá, podremos realizar llamadas desde el servidor A, ubicado en México, por medio de las troncales disponibles en el servidor B.