El 3CX Voice Application Designer permite acceder a bases de datos de todo tipo de una manera muy sencilla. Existe soporte para SQL Server, Oracle y cualquier base de datos que permita ser accedida mediante ODBC, como es el caso de MySQL.
Pre-requisitos
Para poder acceder a una base de datos MySQL a través de ODBC es necesario instalar el driver ODBC para MySQL. El mismo puede descargarse desde el siguiente sitio, bajo la descripción “ODBC Driver for MySQL (Connector/ODBC)”: https://www.mysql.com/products/connector/
Una vez instalado es posible continuar con la creación del “System DSN”.
Creando el “System DSN”
El servicio que ejecuta el servidor web instalado para 3CX Phone System, ya sea IIS o Abyss, será el encargado de acceder a la base de datos cuando sea requerido por una aplicación creada con el VAD. Es por esto que la entrada ODBC deberá ser de tipo “System DSN”, de modo que sea visible por estos servicios.
Para crear la entrada “System DSN”, vaya a Inicio -> Herramientas Administrativas -> Fuentes de Datos (ODBC) y seleccione la solapa “System DSN”. Haga clic en el botón “Agregar”, y seleccione el driver “MySQL ODBC 5.1 Driver”. Luego presione “Finalizar”, e ingrese el nombre del “DataSource” y los datos de conexión a la base de datos.
Creando la aplicación con el VAD
En primer lugar es necesario crear un nuevo proyecto. Abra el VAD y vaya a “File -> New -> Project”, seleccione la carpeta donde desea alojarlo, y elija un nombre para el proyecto. En nuestro caso lo llamamos “MySqlTest”.
Nuestra aplicación solicitará el ingreso de un código de cliente, el cual será validado en la base de datos MySQL. Para esto agregue un componente de tipo “User Input” arrastrándolo desde la barra de herramientas hasta el Callflow, y renómbrelo a “requestPIN”. Configure los mensajes que reproducirá el componente para solicitar el PIN mediante la ventana de propiedades. Suponiendo que el código de cliente tiene 10 dígitos, configure las propiedades MinDigits y MaxDigits en el valor 10.
Cuando el usuario ingrese un valor de 10 dígitos válidos, la ejecución continuará en la rama “Valid Input” dentro del componente “requestPIN”. Ahí realizaremos la validación del código de cliente.
Para esto, agregue un componente de tipo “Database Access” arrastrándolo desde la barra de herramientas hasta la rama “Valid Input” mencionada. Renombre el componente a “validatePIN” y haga doble clic sobre el mismo para abrir la ventana de configuración del componente. Complete los campos de la siguiente forma:
- En el campo “Database Type” seleccione “ODBC”.
- En el campo “DataSource” ingrese el nombre que utilizó al crear el “System DSN”. Recuerde que este campo es una expresión, por lo que para ingresar un valor constante debe hacerlo con comillas simples.
- En los campos “User Name” y “Password” ingrese los datos de usuario y contraseña necesarios para conectarse a la base. Recuerde que estos campos son expresiones, por lo que para ingresar un valor constante debe hacerlo con comillas simples.
- Para el campo “Statement Type” utilizaremos “Scalar” ya que nos interesa obtener un único valor de la base de datos: la cantidad de registros de clientes que tienen ese código.
- El valor de 30 segundos para el Timeout puede dejarse o cambiarse si se lo considera conveniente.
- Antes de completar el campo “SQL Statement” debemos agregar un parámetro a la lista de parámetros: el PIN ingresado por el usuario. Este parámetro se utilizará luego al construir la sentencia SQL. En el nombre ingrese el valor “CustomerPIN”, y en el valor la expresión “requestPIN.Buffer”, es decir los dígitos ingresados por el usuario.
- Ahora sí, en el campo “SQL Statement” debemos ingresar el comando SQL que nos permitirá obtener la información requerida. Utilizaremos el botón a la derecha de este campo para insertar el valor del parámetro “CustomerPIN” en el lugar correspondiente. La sentencia SQL nos queda de la siguiente forma:
select count(*) from customers where id={0}
Ahora que tenemos el componente de acceso a la base de datos correctamente configurado, debemos evaluar el valor retornado por el mismo y tomar la decisión de aceptar o no al cliente. Para esto es necesario utilizar un componente de tipo “Conditional” de 2 ramas, una para el caso de validación exitosa y otro para el caso de error en la validación.
Agreguemos el componente arrastrándolo desde la barra de herramientas, y cambiemos el nombre por “validateDatabaseResult”, y renombremos las dos ramas como “success” y “error” para los casos de éxito y error en la validación respectivamente. El flujo principal debería verse como en la siguiente imagen:
Para que la rama “success” se ejecute, la base de datos debe retornar el valor 1 indicando que existe un registro con el código ingresado por el cliente, es decir que debe cumplirse la siguiente condición, la cual debe ser configurada para esa rama mendiante el Expression Editor:
EQUAL(validatePIN.ScalarResult,1)
Una vez configurada esta condición, solo resta agregar los mensajes a reproducir en cada caso (de éxito o de error), y transferir la llamada a un operador en el caso de validación exitosa.








