El 3CX Voice Application Designer permite acceder a web services de una manera muy sencilla. Solo es necesario ingresar el URI, el nombre del web service a invocar y eventualmente los parámetros que queremos enviarle.
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 “WebServiceTest”.
Nuestra aplicación solicitará el ingreso de un código de cliente, el cual será validado utilizando un web service. 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 “Web Services Interaction” 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 “URI” ingrese el URI donde se encontrará alojado el web service, por ejemplo http://localhost:8080/ValidationWebService.asmx. Este URI será invocado desde la PC donde se encuentra instalado 3CX Phone System, por lo que en caso de utilizar localhost, tenga en cuenta que se intentará acceder a ese equipo. No es necesario ingresar el valor con comillas, ya que se trata de una constante (no es posible utilizar expresiones aquí).
- En el campo “Web Service Name” ingrese el nombre del web service a ejecutar, por ejemplo “ValidatePIN”. No es necesario ingresar el valor con comillas, ya que se trata de una constante (no es posible utilizar expresiones aquí).
- El valor de 30 segundos para el Timeout puede dejarse o cambiarse si se lo considera conveniente.
- Finalmente debemos agregar un parámetro a la lista de parámetros: el PIN ingresado por el usuario. Este parámetro será enviado al web service. 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 que tenemos el componente de acceso al web service 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 “validateWebServiceResult”, 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, el web service 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 mediante el Expression Editor:
EQUAL(validatePIN.Result,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.
Implementando el web service
En este caso implementaremos el web service utilizando C# sobre Visual Studio 2008, aunque pueden utilizarse otras herramientas. Para eso abra Visual Studio 2008 y vaya a “File -> New -> Project”, seleccione “Visual C# -> Web -> ASP .NET Web Service Application”. Ingrese el nombre del web service “ValidationWebService”. Renombre el web service agregado por defecto de “Service1” a “ValidationWebService”. Modifique el método “HelloWorld” para que se llame “ValidatePIN”, retorne un valor entero y reciba un string con el PIN ingresado. El código debería quedar de la siguiente forma:
[WebService(Namespace = “http://tempuri.org/”)]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class ValidationWebService : System.Web.Services.WebService
{
[WebMethod]
public int ValidatePIN(string customerPIN)
{
return customerPIN == “1234567890” ? 1 : 0;
}
}
Con esta implementación, el web service validará al PIN “1234567890”, y rechazará a cualquier otro PIN.
Tenga en cuenta que para invocar al web service, el VAD envía una solicitud web mediante el método POST. Si el web service es creado con el .NET framework, como en este ejemplo, en caso de que sea necesario accederlo en forma remota (por ejemplo, si 3CX Phone System se encuentra corriendo en la computadora A y el web service se encuentra corriendo en la computadora B), entonces necesitará habilitar explícitamente el protocolo HTTP POST en el archivo de configuración “web.config” del web service. Esto puede hacerse agregando los siguientes parámetros de configuración:
<configuration>
<system.web>
<webServices>
<protocols>
<add name=”HttpPost”/>
</protocols>
</webServices>
</system.web>
</configuration>
Esto es así ya que ese protocolo por defecto se encuentra solamente habilitado para los accesos desde la misma máquina.







