FreePBX | Register | Issues | Wiki | Portal | Support

Patron General con envio DTMF de dicho patron


(Alkbert) #1

Hola amigos, me gustaria comentarles en un proyecto en el cual estoy trabajando y se basa en dos freepbx, donde en el cual uno al recibir llamadas sea capaz de realizar follow-me hacia un ring-group y mandar un DTMF. Este DTMF sera el mismo numero al cual llamo desde el primer FreePBX. Por ejemplo, la extension 1000 llama a 0210298299, que hace follow-me a un ring group y luego al descolgar, mande el DTMF ‘’ 0210298299 ‘’. Para una extension es facil realizar esto y no tengo conocimiento de cuantas extensiones soporta FreePBX, puesto que deberia crear +200 000 con la caracteristica esta del DTMF. Se que por Bulk Handler, el modulo de FreePBX es posible optimizar esto, pero mi pregunta es:¿ Hay una forma de crear un patron especifico, que cuando se llame a cualquiera de esas extensiones ,ejemplo, 0210298299, que su patron sea _02XXXXXXXX, llame al ring group y al descolgado envie el DTMF ‘‘2XXXXXXXX’’, acorde con el numero?


(Alkbert) #2

Tengo una parte de la solución que sería, por ejemplo para una extesión, esto es en Config Edit File y en las Extension Custom se crea:

exten => 0210298299,1,D(local/9@from-internal,20,D(0210298299))

Lo ideal sería algo como esto:

exten => _02XXXXXXXX,1,D(local/9@from-internal,20,D(_02XXXXXXXX)), pero esto no puede ser posible puesto que debe especificarse en la opcion DTMF de Dial solo un numero. Lo ideal sería que fuese así, dado el numero que llamas es el DTMF que pasas. Lo otro es crear uno a uno, pero eso es engorroso.

Si tienen alguna idea de como " copiar automaticamente" el numero que llamas a la opción del Dial referido al DTMF, se los agradezco :smiley:


(Alkbert) #3

Parece que el caso va a ser crear multiples extensiones, por lo que esto queda casi ‘’ off-topic’’, lo cual mi pregunta cambia: que cantidad de extensiones soporta Asterisk/FreePBX? La idea detrás será crear codigo de ejecución(el cual estoy desarrollando) que realizará lo siguiente:

exten => 0210298299,1,D(local/9@from-internal,20,D(0210298299))
exten => 0210298230,1,D(local/9@from-internal,20,D(0210298230))

Y así consecutivamente, que será capaz de crear una expresión dado el número y lo agrege al string D(X). Les explico que tengo que poner casi 20 000 numeros y no(creo que no) usaremos Bulk Handler, sino que sera directamente en Custom Extensions, copiando aquí las expresiones, lo cual me cae la duda sobre la capacidad de Asterisk/FreePBX de asimilar la enorme cantidad de extensiones. Les adelanto que no serán más de 32 llamadas simultaneas entre los Asterisk/FreePBX. ¿ Alguna Idea … ?


(Gerardo Barajas) #4

Hola @Alkbert

Porque necesitas enviar tonos despues de contestar la llamada?


(Alkbert) #5

Hola gbarajas, necesito enviar tonos DTMF despues de contestar la llamada puesto que al “otro lado” tengo unas tarjetas PABX que solo reconocen tonos DTMF para poder enrutar la llamada, al numero que discaste. Es decir, que el DTMF debe coincidir con el numero al que quieres localizar. El “artilugio” que estamos empleando es crear en extensions_custom.conf la siguiente regla, por ejemplo:

exten => 0210298299,1,D(local/9@from-internal,20,D(0210298299))

Una vez que alguien llame a 0210298299, llama a un ring group con numero 9, que va a un troncal sip y hace llamadas a unas extensiones, que tengo conectadas cada una a las tarjetas. Las extensiones son un total de 32.

Pero la cosa es que tengo que declarar cada exten por extension, de ahi la pregunta si existia un patron de marcado que fuese coincidente con el DTMF a mandar. Si te fijas el numero al que hace referencia una vez que se contesta la llamada es al mismo al cual tu marcas, lo que mi pregunta inicial es que si existe una forma de que a cada # de extension se le asociase el mismo numero dtmf que se manda, una vez descolgada la tarjeta PABX. En un comentario anterior habia puesto que me encontraba desarrollando una aplicacion, la cual crea unas cadenas que imprimen el codigo de ejecucion en Asterisk. He creado alrededor de 250 extensiones “fantasmas”, por decirlo de alguna forma, puesto que no tienen un chan_sip asociado, que una vez que se llama a esa extension llama a un ring group que se asocia a un troncal sip de salida, ya que cada vez que se llama a la rotativa esta no contesta, aplica el ring group y usando hunt, llama a una extension conectada a la tarjeta PABX. Dicha tarjeta descuelga y al detectar el descolgado Asterisk, envia el DTMF usando la funcion D(). Lo anterior que te he explicado funciona .He observado el tamaño del archivo extensions_custom y no ha crecido mucho. La pregunta sale de cual es la cantidad maxima de extensiones que soportara Asterisk, en caso de no encontrar “un patron para un dtmf”.
Saludos


(Alkbert) #6

Escribi dos freepbx puesto que es un entorno de prueba. La realidad es mas complicado, puesto que las extensiones son analogicas, o sea, es un asterisk con tarjetas analogicas conectadas a unas tarjetas PABX, que por cierto, son FXO puesto que la tarjetas "Asterisk " son FXS.Saludos.


(Gerardo Barajas) #7

Y para un solo numero funciona?


(Alkbert) #8

De hecho, es así como tengo el fichero extensions_custom.conf

Y funciona de maravilla gracias a que Asterisk es muy flexible, puedo crear esta especie de extensiones(dialplan) y que ejecute esto(el Dial()). No se crean extensiones como tal, puesto que no tengo ninguna chan_sip asociada a estas extensiones.Saludos


(Gerardo Barajas) #9

Puedes dejarlo asi:

exten =_0200200XXX,1,D(local/9@from-internal,20,D(${EXTEN})))


(Alkbert) #10

Ok, pero solo si la extension es la misma, en mi caso no es exactamane igual si te fijas en la imagen que puse. ¿Podria usar Set() dentro de Dial, en aras de quitar el digito 0 del DTMF?


(Gerardo Barajas) #11

La variable ${EXTEN} te permite manejar offsets

De acuerdo con esto https://wiki.asterisk.org/wiki/display/AST/Manipulating+Variables+Basics podrias dejarla asi:

exten =_0200200XXX,1,D(local/9@from-internal,20,D(${EXTEN:1})))


(Alkbert) #12

Si desease quitar dos digitos seria entonces:
exten =_0200200XXX,1,D(local/9@from-internal,20,D(${EXTEN:2}))

Esto puede ser?


(Alkbert) #13

Un detalle, necesito que antes de mandar el dtmf espere una pausa. Lo uso con “w”, pero eso no lo vi en el ejemplo. Se puede añadir entonces?


(Gerardo Barajas) #14

Si, lo puedes añadir.
El ejemplo que puse es muy generico.


(Alkbert) #15

Buenas amigo. Me he leido la wiki_asterisk y al final logre generalizarlo, he aqui el final:

exten =_0200200XXX,1,D(local/9@from-internal,20,D(ww${EXTEN:2}))

Y funciono bien, lo he probado para varias extensiones y esta perfecto. Gracias.