Nota Aclaratoria.
Funciones en el dialplan extensions.conf
Leemos en DDBB. ()
GotoIf($[${ODBC_Objeto(${CALLERID(num)})}]?salto)
"Objeto" Ha de estar definido en func_odbc.conf, el dialplan pasa como Argumento "a" func_odbc.conf para la consulta de la variable que adquiere o toma "asterisk" en este caso el CALLERID(num)
Bien, que se ha de tener en func_odbc.conf,
Con esto lo que se pretende es preguntar a la DDBB si el numero de Tlf esta en ella.
Que es lo que se ha de tener en func_odbc.conf (lo que yo tengo)
[Objeto]
dsn=asterisk
readsql=SELECT COUNT(*) FROM Clientes WHERE Telefono='${SQL_ESC(${ARG1})}'
"Objeto" es el resumen de la instrucción sql, que permite el paso del Argumento tomado antes, de tal modo que "Objeto" va a "ejecutar" en dns=asterisk, esto ya lo tengo explicado, pero es el "conector" ya definido que permite comunicación con usa DDBB concreta mediante ODBC.
para dar la instrucción de leer en la tabla Clientes donde la columna Telefono = al Argumento.
Compararemos (Ojo GotoIf) ARG1 (de la DDBB)= con CALLERID(num) y si Coincide, pegaríamos el salto, de lo contrario continuaría la secuencia.
En realidad la secuencia SQL, lo que hace es entregar un valor de COUNT, osea dará el valor de la cantidad de veces que aparece el numero, pero para el GotoIf solo nos hace falta, 0 o distinto de 0, con ello nos vale para saltar o no. Con 0 no esta, no saltamos, con cualquier cosa distinta a 0 saltamos. Importante aclarar esto.
Aclarado
Tomando un valor desconocido para Asterisk.
Del mismo modo que podemos consulta valores en forma de variables, conocidas por Asterisk, y compararlas, podemos tomar valores y usarlos, como variables en Asterisk.
Ejemplo practico, queremos que en la llamada entrante se le pregunte por el numero de cliente y que en función de que cliente es, se le reenvié la llamada a una extensión concreta que a la practica sera el Comercial personal de ese cliente.
Como.
Tenemos tres cosas, 1º la DDBB, con una tabla y dos columnas. Una con el numero de cliente (NCliente) y otra con la extensión del comercial asignado (Next) a ese cliente.
2º la configuración en el Dialplan
3º la consulta del func_odbc.conf
Dialplan.
Set(Comercial=${ODBC_NExt(Next,${NCliente})})
Asignamos Set, como variable la llamamos Comercial, este llamara a NExt nosotros pasaremos como Argumento2 el NCliente que conocemos, y tomaremos Next, todo esto por medio de func_odbc.conf
En el func_odbc.conf
[NExt]
dsn=asterisk
readsql=SELECT ${ARG1} FROM user_mobile WHERE NCliente='${SQL_ESC(${ARG2})}'
Es esta linea SELECT el Argumento1 tomaremos ese valor de la columna Next, que tendra su "parejo" en el NCliente que pasamos como argumento, la variable tomada por el dialplan.
Todo ha de coincidir, errores al escribir los [] {} () es de lo mas normal, pero no podemos confundirnos en los nombres de las tablas, o los nombres de las columnas.
Estos son ejemplos que permiten una buena comprensión, para el uso de DDBB, con ASTERISK.
Continua leyendo "Asterisk ODBC Funciones Facil Facil." »