Conectando dos Asterisk mediante el protocolo SIP
De Laboratorio de VoIP
En esta sección realizaremos un enlace troncal entre dos servidores Asterisk utilizando para ello el protocolo SIP. Supondremos que ambos servers se encuentran geográficamente separados, uno en la Ciudad de Monterrey y el otro en la Cd. de México, para darle un poco de realismo al ejercicio.
SIPphone(5XXX)<--->Asterisk_MTY<---------(Troncal SIP)-------->Asterisk_DF<--->SIPphone(3XXX)
Para tal propósito editaremos sólo un par de archivos de configuración Asterisk. Nos referimos a los archivos sip.conf y extensions.conf.
NOTA: Se considera que se ha configurado al menos una extension SIP en cada servidor Asterisk. De no ser así, refiérase a las secciones anteriores para aprender como dar de alta una extensión SIP.
Tabla de contenidos |
Editando el archivo sip.conf
El archivo sip.conf nos sirve para configuirar las características de los canales Asterisk que utilicen este protocolo. Deberemos primero definir una extensión de prueba para cada caso y, en segundo lugar, una extensión especial que nos servirá de enlace troncal. Aquí es donde le daremos características de troncal a nuestro canal.
Asterisk Mty
En el caso del servidor
[general] ;; Cadena de registro SIP ;; register => user[:secret[:authuser]]@host[:port][/extension] register => mx-mty:passwd@IP_host_DF/mx-df ;; Definición de extensión que servirá como troncal SIP [mx-df] type=friend secret=passwd context=df-incoming host=dynamic disallow=all allow=alaw allow=alaw allow=gsm ;; Extensión de prueba [5001] type=friend secret=5001 context=local-sip callerid="Nayeli" <5001> host=dynamic dtmfmode=rfc2833 nat=no careinvite=no disallow=all allow=ulaw allow=alaw allow=gsm
Asterisk DF
[general] ;; Cadena de registro SIP ;; register => user[:secret[:authuser]]@host[:port][/extension] register => mx-df:passwd@IP_host_MTY/mx-mty ;; Definición de extensión que servirá como troncal SIP [mx-mty] type=friend secret=passwd context=mty-incoming host=dynamic disallow=all allow=alaw allow=alaw allow=gsm ;; Extensión de prueba [3001] type=friend secret=3001 context=local-sip callerid="test-trunk" <3001> host=dynamic dtmfmode=rfc2833 nat=no careinvite=no disallow=all allow=ulaw allow=alaw allow=gsm
Editando el archivo extensions.conf
Ya hemos definido la troncal en ambos extremos, ahora es necesario decirle a Asterisk cuando hará uso de ella, es decir, configurar nuestro plan de marcación en el archivo extensions.conf.
NOTA: El uso de prefijos para toma de troncal es práctica común. Es en la regla de marcado en donde podemos apreciar como se usan.
Asterisk Mty
....
[df-incoming]
;; Se incluyen todas las extensiones dentro del contexto local-sip
include => local-sip
[local-sip]
;; Incluyendo este contexto, todas las extensiones dentro de local-sip
;; podrán hacer uso de la troncal SIP
include => df-outgoing
exten => _5XXX,1,Dial(SIP/${EXTEN},10,tT)
exten => _5XXX,2,Hangup()
[df-outgoing]
;; Regla de marcado para hacer llamadas salientes hacia DF por la troncal SIP
;; Note el uso de prefijos.
exten => _63XXX,1,NoOp(Llamada SIP saliente hacia Oficinas DF)
exten => _63XXX,n,Dial(SIP/mx-df/${EXTEN:1})
exten => _63XXX,n,Hangup()
....
Asterisk DF
....
[mty-incoming]
;; Se incluyen todas las extensiones dentro del contexto local-sip
include => local-sip
[local-sip]
;; Incluyendo este contexto, todas las extensiones dentro de local-sip
;; podrán hacer uso de la troncal SIP
include => mty-outgoing
exten => _3XXX,1,Dial(SIP/${EXTEN},10,Ttr)
exten => _3XXX,n,Hangup
[mty-outgoing]
;; Regla de marcado para hacer llamadas salientes hacia Mty por la troncal SIP
;; Note el uso de prefijos.
exten => _75XXX,1,NoOp(Llamada SIP saliente hacia Oficinas Mty)
exten => _75XXX,n,Dial(SIP/mx-mty/${EXTEN:1})
exten => _75XXX,n,Hangup()
....
¡¡Listo!!
Pruebas
Realizamos llamadas entre los extremos y el resultado fue el siguiente:
Llamada desde Mty hacia DF
Del lado de Mty
console_mty*CLI> dial 63001@df-outgoing
-- Executing [63001@df-outgoing:1] NoOp("Console/dsp", "Llamada SIP saliente hacia Oficinas DF") in new stack
-- Executing [63001@df-outgoing:2] Dial("Console/dsp", "SIP/mx-df/3001") in new stack
-- Called mx-df/3001
-- SIP/mx-df-08b81fd8 is ringing
-- SIP/mx-df-08b81fd8 answered Console/dsp
<< Console call has been answered >>
== Spawn extension (df-outgoing, 63001, 2) exited non-zero on 'Console/dsp'
<< Hangup on console >>
Del lado del DF
console_df*CLI>
-- Executing [3001@mty-incoming:1] Dial("SIP/mx-df-b770a470", "SIP/3001|10|Ttr") in new stack
-- Called 3001
-- SIP/3001-098fe4d0 is ringing
-- SIP/3001-098fe4d0 answered SIP/mx-df-b770a470
== Spawn extension (mty-incoming, 3001, 1) exited non-zero on 'SIP/mx-df-b770a470'
Llamada desde DF hacia Mty
Del lado del DF:
console_df*CLI>
-- Executing [75001@local-sip:1] NoOp("SIP/3001-b770a470", "Llamada SIP saliente hacia Oficinas Mty") in new stack
-- Executing [75001@local-sip:2] Dial("SIP/3001-b770a470", "SIP/mx-mty/5001") in new stack
-- Called mx-mty/5001
-- SIP/mx-mty-098fe4d0 is ringing
== Spawn extension (local-sip, 75001, 2) exited non-zero on 'SIP/3001-b770a470'
Del lado de Mty
console_mty*CLI>
-- Executing [5001@df-incoming:1] Dial("SIP/mx-mty-b751f628", "SIP/5001|10|tT") in new stack
-- Called 5001
-- SIP/5001-08b81fd8 is ringing
== Spawn extension (df-incoming, 5001, 1) exited non-zero on 'SIP/mx-mty-b751f628'
¡¡Listo!!
--g!0 13:57 2 jul 2008 (CDT)
