iax_custom.conf
Aquí debemos definir la configuración de la troncal; como dundi va a hacer todo el trabajo de enviar la cadena exacta de como contactarlos solo creamos un usuario que recibe las llamadas autenticadas de la nube DUNDi:
En SRV01 y en SRV02[dundi]
type=user
dbsecret=dundi/secret
context=ext-local
; Podemos restringir ciertos codecs para mejorar la calidad de voz, o dar prioridad al ancho de banda (con gsm o g729)
; disallow=all
; allow=ulaw
extensions.conf
Para lograr la integración con freePBX debemos modificar un poco el contexto "from-internal" que es el contexto que usa freePBX para las extensiones.
Teniendo en cuenta que cuando un numero no es encontrado en el plan de marcado local se usa el contexto [bad-number] es alli donde debemos modificar y la configuración debe ser exactamente la misma en los tres servidores:
En el archivo extensions.conf buscamos la sección:[from-internal]
include => from-internal-xfer
include => bad-number
y comentamos la lineainclude => bad-number poniendo un punto y coma adelante asi: ;include => bad-number
y agregamos la lineainclude => dundi-priv-lookup
que es un contexto que crearemos luego en el archivo extensions_custom.conf, quedando asi:[from-internal]
include => from-internal-xfer
;include => bad-number
include => dundi-priv-lookup
extensions_custom.conf
Aqui definimos los contextos personalizados para que dundi mapee nuestra extensiones, asi como una macro para hacer las busquedas en otros equipos (lo que evita loops) y la sentencia para redirigir las llamadas (swith).
Debemos añadir las siguientes lineas al final del archivo extensions_custom.conf en los dos servidores:; ********************************************
; CONFIGURACION PARA DUDNi
[dundi-priv-canonical]
; Aqui incluimos el contexto que contiene las extensiones.
include => ext-local
; Aqui incluimos el contexto que contiene las colas de atención o queues.
include => ext-queues
[dundi-priv-customers]
; Si tenemos clientes (o revendemos servicios) podemos listarlos aqui
[dundi-priv-via-pstn]
; Aqui podemos incluir el contexto con nuestras troncales hacia la PSTN,
; si queremos que los demas equipos puedan usar nuestras troncales
; include => outbound-allroutes
[dundi-priv-local]
; En este contexto unificamos los tres contextos, este lo podemos usar como
; contexto de la troncal iax de dundi
include => dundi-priv-canonical
include => dundi-priv-customers
include => dundi-priv-via-pstn
[dundi-priv-lookup]
; Este contexto se encarga de hacer la busqueda de un numero por dundi
; Antes de hacer la busqueda definimos apropiadamente nuestro caller id.
; ya que si no tendremos un caller id como "device<0000>".
exten => _X.,1,Macro(user-callerid)
exten => _X.,n,Macro(dundi-priv,${EXTEN})
exten => _X.,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?100)
exten => _X.,n,Goto(bad-number,${EXTEN},1)
exten => _X.,100,Playtones(congestion)
exten => _X.,101,Congestion(10)
[macro-dundi-priv]
; Esta es la macro que llamamos desde el contexto [dundi-priv-lookup]
; Tambien evita que hayan loops en las consultas dundi.
exten => s,1,Goto(${ARG1},1)
switch => DUNDi/priv
; ********************************************
Aplicar la configuración
Para que los cambios se hagan efectivos podemos ejecutar el comando:asterisk -rx "restart when convenient"
o si no queremos esperar:asterisk -rx "restart now"
Resumen
Ahora cada extensión que creemos desde freePBX se añadirá al contexto [ext-local] el cual esta incluido en dundi-priv-canonical que va a usar dundi para indicar que extensiones tenemos localmente.
Si nosotros tenemos la extensión responderemos con los datos para la comunicación hacia esa extensión; esos datos a su ves los interpreta el servidor que esta preguntando y usa la función switch que pusimos en el archivo extensions_custom.conf para comunicarse con la extensión local.
Añadir nuevo comentario