InicioApuntes Y MonografiasMira este Codigo Elastix con consulta Mysql

Mira este Codigo Elastix con consulta Mysql



Hola Gente T! hoy les comparto una configuración que tuve que realizar en el trabajo para una configuración que solicitaron por acá

les platico rápidamente cual fue el problema aquí en el área de tele-marketing y la solución que se le dio:

Cada cliente maneja un numero de referencia bancaria y marcan mucho al área de tele-marketing para solicitar su referencia entonces los agentes del call center están mucho rato contestando llamadas pero para la referencia y eso les quita mucho tiempo que se puede usar levantando pedidos
entonces surgió el problema como hacerlo vía sistema y que el cliente siempre obtenga su referencia entonces optamos por ponerlo en el conmutador como una opción en el ivr
para esto yo no tenia idea de que hacer he trabajo con elastix y aserisk pero no cosas tan avanzadas configuraciones básicas de conmutadores via E1, dahdi etc etc no digo mas del tema para no spoilear sobre el asunto

bueno procedí con el archivo que me enviaron el cual era un archivo en excel del cual se tenia que tomar la información para validar vía llamada la referencia que se le daría al cliente.
en el archivo se me manejaban 4 tipos de datos, id, cliente, referencia y numero verificador,
para el manejo de los datos en primer idea fue usar un archivo separado por espacios y realizar un script que hiciera una consulta en el archivo guardando en una variable el numero de cliente que se dígito en la llamada y devolver el mismo vía audio, como se realizo esto:

exten => XXXX,1,Answer()
exten => XXXX,n,Read(cliente,beep)
exten => XXXX,n,Playback(beep)
exten => XXXX,n,Sistem(cat /root/archivo.csv | grep ${cliente} | awk {'print 2'})

no pongo todo el código para no dejar el post tan grande pero que se hizo se contesta la llamada después se crea la variable cliente en donde se guardara el numero de cliente que se digita en la llamada y en el ultimo paso usa el comando para abrir el archivo con el comando cat después usa un filtro con grep buscando el valor guardado en la variable y por ultimo impimo la columna 2 que es el valor de referencia,
que paso pues no funciono solo nos arrojaba el numero 2 en texto entonces procedimos a buscar mas opciones este se descarto por que se tenían que dar derechos al usuario de asterisk para que pudiera manipular scripts dándole acceso al apartado de bin y esto no lo podemos hacer por que es dejar el sistema vulnerable,

bueno despues del rotundo fracaso empece a buscar otras opciones y me comento mi jefe que si lo queria hacer con mysql ya quelo trae integrado el asterisk no soy muy bueno en sql de hecho la verdad es que ya se me olvido lo que sabia hacer asi que me puse manos a la obra a aprender sql nuevamente o mejor dicho a recordar entonces que era lo primero que tenia que hacer:
una base de datos con 4 columnas una que fuera el id otra el cliente otra la referencia y la ultima el código verificador.
entonces entro al sql con el siguiente comando mysql --u=root --password=password

dentro reviso la base de datos con:
Show databases;
después creo la BD con:
create database banco;
después creo la tabla en este apartado hay que tener cuidado por que los datos a cargar son sensibles y los campos admiten ciertos datos dependiendo el formato que se valla a requerir en mi caso antepongo el 00000X para clientes muy antiguos, creo la tabla con:
create table referencia (id int not null primary key auto_increment, cliente int(15), referencia(15), numver(2));
Listo ya tengo la tabla y un archivo csv entonces busco como importart el csv a la tabla de la siguiente forma:

LOAD DATA
LOCAL INFILE '/root/refe.csv'
INTO TABLE location
FIELDS TERMINATED BY ';'
LINES TERMINATED BY 'n'
IGNORE 1 LINES;

se carga el archivo y listo ahora a realizar la consulta desde la consola del asterisk recordar que esto se tiene que hacer desde una llamada entonces vamos al archivo extensions_custom.conf ya que este conmutador es un elastix y para realizar estas configuraciones customizadas es necesario realizarlas en los archivos _custom por que si no el asterisk no entiende la configuración y truena el entorno web.

entro con vim al achivo y empiezo con la configuracion:
exten => XXXX,1,Answer()
exten => XXXX,n,Playback(cliente)
exten => XXXX,n,Read(numcliente,beep)
exten => XXXX,n,NoOp(${numcliente})
exten => XXXX,n,MYSQL(Connect connid localhost root password banco)
exten => XXXX,n,MYSQL(Query resultid ${connid} SELECT LPAD(Referencia,7,'0') from referencias where cliente = '${numcliente}')
exten => XXXX,n,MYSQL(Fetch fetchid ${resultid} res)
exten => XXXX,n,NoOp(${res})

en este código vemos como se contesta la llamada seguido entra una grabación que dice por favor digite su numero de cliente seguido de un beep que es la alarma para que puedan escribir se guarda en la variable numcliente seguido se asigna el comando NoOp que es no opere esto para no crear conflictos después hacemos la consulta esta consulta primero se conecta a la base de datos que corre de manera local seguido de usuario password y la db a utilizar, después realiza la consulta con un comando llamado LPAD el cual rellena la respuesta en dado caso de que se antepongan 000 los números y necesitamos el dato completo en mi caso todas las referencias son de 7 dígitos y se les anteponen 0 por que eso quedo así la consulta.

después abrí la boca y dije que no habíamos puesto un if que le dijera al usuario en dado caso de que haya tecleado algo mal y pues me toco investigar como hacerlo después de leer un poco encontré en un otro contexto en el conmutador el gotoif y lo tome como referencia y listo

y ya terminado el código quedo de la siguiente forma

exten => XXXX,1,Answer()
exten => XXXX,n,Playback(cliente)
exten => XXXX,n,Read(numcliente,beep)
exten => XXXX,n,NoOp(${numcliente})
exten => XXXX,n,MYSQL(Connect connid localhost root YW0ZSI6uliM5X+cwj banco)
exten => XXXX,n,MYSQL(Query resultid ${connid} SELECT LPAD(Referencia,7,'0') from referencias where cliente = '${numcliente}')
exten => XXXX,n,MYSQL(Fetch fetchid ${resultid} res)
exten => XXXX,n,NoOp(${res})
exten => XXXX,n,GotoIf($["${res}"=""]?b)
exten => XXXX,n,Playback(referencia)
exten => XXXX,n,SayDigits(${res})
exten => XXXX,n,MYSQL(Clear ${resultid})
exten => XXXX,n,MYSQL(Disconnect ${connid})
exten => XXXX,n,Hangup()
exten => XXXX,n(b),Playback(noexistecliente)
exten => XXXX,n,Goto(3)
exten => XXXX,n,MYSQL(Clear ${resultid})
exten => XXXX,n,MYSQL(Disconnect ${connid})
exten => XXXX,n,Hangup()


saludos a todos gente T!
Certificada:


Datos archivados del Taringa! original
0puntos
134visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Posts Relacionados

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

B
Blade21🇦🇷
Usuario
Puntos0
Posts3
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.