Por Ing. Isaac Fernandez Baca
DISA (Direct Inward System Access)
Acceso directo al interior del sistema, el DISA permite a alguien llamar desde fuera de una central y obtener tono de marcado desde el interior del sistema, y así poder realizar llamadas como si estaría dentro. El DISA permite ponerle un contraseña la cual debe ser precedida de la tecla michi #. Si no se le pone contraseña, al llamar al numero DISA, se marca directamente.
Para este ejemplo vamos a configurar en una central Asterisk que al llamar de mi celular a un numero fijo de la central me brinde tono de marcado, así de esta manera puedo realizar llamadas internacionales desde mi celular, y la llamada es enrutada por el Asterisk por VoIP.
Mi celular es el 00511997090306 y el numero fijo que de la central asterisk es 005116666666 (Estos datos no son reales, solo son para el ejemplo)
Y ya que solo va aceptar llamadas desde mi celular, no necesito ponerle contraseña.
Debemos crear la ruta de ingreso Inbound route
Podemos hacerlo por freepbx o bien modificamos el archivo extension.conf o uno de sus dependientes
Acá definimos que cuando el numero 997090306 llame al numero 666666, se vaya al contexto custom-disa-isaacfernandezbaca
[ext-did]
….
exten => 511666666/997090306,1,Set(__FROM_DID=${EXTEN})
exten => 511666666/997090306,n,GotoIf($[ “${CALLERID(name)}” != ” ] ?cidok)
exten => 511666666/997090306,n,Set(CALLERID(name)=${CALLERID(num)})
exten => 511666666/997090306,n(cidok),Noop(CallerID is ${CALLERID(all)})
exten => 511666666/997090306,n,Goto(custom-disa-isaacfernandezbaca,s,1)
….
Luego declaramos el contexto custom-disa-isaacfernandezbaca en el el archivo extension.conf o uno de sus dependientes
En este contexto estamos declarando que espere 10 segundos para empezar el envío de tonos, luego seteamos el callerid con 516666666, esto para que cuando el Asterisk tarifique ubique esta llamada como hecha por ese anexo. Después la función DISA en la cual se declara que no lleva contraseña y que la llamada en curso use el contexto from-internal. Si no contesta, se corta.
[custom-disa-isaacfernandezbaca]
exten => s,1,Set(TIMEOUT(digit)=10)
exten => s,n,Set(TIMEOUT(response)=30)
exten => s,n,Set(REALCALLERIDNUM=511666666)
exten => s,n,Set(CALLERID(num)= 511666666)
exten => s,n,DISA(no-password|from-internal)
exten => s,n(end),Hangup
Finalmente para que se realice una correcta negociación de los tonos DTMF que se envía del celular, modificamos el archivo sip.conf o uno de sus dependientes
[general]
…
dtmfmode=auto
…
Referencias
http://www.voip-info.org/wiki-Asterisk+cmd+DISA
Hola Isaac, gracias por tus ayudas lo primero.
Después quisiera pedirte un poco de explicación más detallada sobre el artículo de disa, pq no consigo hacerlo funcionar y no soy un novato en Asterisk.
Creo que hay algun problema de contextos quizás, pero bueno a ver si me ayudas y lo solucionamos.
¿tu contexto [ext-did] es lo que al mio [internal] o es un contexto aparte que creaste y donde lo colocas?
El contexto [ext-did] basicamente es el contexto donde pones la entrada de las llamadas por la PSTN.
Cuando te llaman al 666 6666 por ejemplo y pasas las llamadas al anexo 102.
exten => _6666666,1,Answer()
exten => _6666666,1,Dial(SIP/102)
Eso es, ahora si quieres identificar que te esta llamando el 997090306 y si te llaman de ese celular mandar al anexo 103 seria asi
exten => _6666666/997090306,1,Answer()
exten => _6666666/997090306,1,Dial(SIP/103)
Bueno en mi caso.
Yo cree el DISA, le puse el passwrd de un usario, luego le configure el context. (Deje el internal como lo tenia default), una vez hecho esto no me dejaba realizar llamadas, entraba la llamada me daba tono pero luego marcara error. Y luego de varios intentos descubri que para marca era de esta forma.
1.- Marcas al DID del DISA
2.- Cundo escuchas e primer tono marcas la contraseña y el signo #
3.- te da nuevamente tono, en este caso para sacar llamadas tengo configurado el 9, por lo que se marca 9+numero que deseas+ esperas que pda contraseña +contraseña + #
Listo funciono. y esta funcionando muy bien.
Ahora el unico detalle es que desde algunos celulares no funciona, (pero de la mayoria si.
Bueno solo keria compartir algo pequeño que me paso. Espero que a alguien le funcione y le sirva.
Saludos
Hola Isaac:
He probado esta configuración y no consigo que funcione. Para aislar el problema he querido hacer primero que cuando llamen desde un determinado telefono movil a un determinado nº de la central, se pase la llamada a la extensión 101. Las demas llamadas que entren a la extensión 100.
Esta es la configuración de mi contexto de entrada.
[default]
[entrantes]
exten=> 99999/66666,1,Answer()
exten=> 99999/66666,n,Dial(Sip/101,60,Ttr)
exten=> s,1,Answer()
exten=> s,n,Dial(Sip/100,60,Ttr)
exten=> s,Busy
exten=> s,n,Hangup()
El 99999 es el nº de la centralita Asterisk y el 66666 es del teléfono movil.
Espero que me puedas ayudar.
Gracias de antemano.
Que tal queria preguntarte si has tenido problemas con el DTMF , en mi caso al marcar el numero luego del Tono del disa me lo duplica o captura un numero erroneo.
Probe poniendoen el zapata.conf agregando la linea relaxdtmf=yes, noc si habra q modificar algún otro parametro, lo de cambiar a inband en el sip.conf tampoco me funciona.
Saludos
Eduardo, Fijate en el log full que callerid del movil, y lo pones en tu conf, sino sale en el full miralo en /var/log/messages. Saludos Isaac
Marcel Pregunta a tu proveedor de telefonía como tienen configurado ellos para recibirte los DTMF, quiza sea RFC2833. Saludos, Isaac
holas
tengo una duda
tengo ya una disa trabajando bien
pero no se gravan las llamadas
hay modo de hacer que se graven tooodas las llamadas de la disa ?
por favor quien me puede ayuadar es que le grave un mensaje de la empresa al disa y ahora necesito que cuando llamen conteste la disa
gracias