Kit de desarrollo de software IVMEsta es la página del kit de desarrollo de software (SDK) de IVM, el contestador telefónico automático. Debería ser usado por programadores quienes desean escribir sus propios complementos o usar el API de IVM. Este tema del SDK es de carácter avanzado. Para crear los sistemas IVR más comunes, no debería necesitar de ningún tipo de programación. Siga las instrucciones en el manual de IVM, compare los ejemplos de IVR y, de ser necesario, use uno de los complementos listos. Antes de intentar la escritura de un código, debería familiarizarse con:
Temas del kit de desarrollo de software IVM
Acerca de los complementosLos complementos IVM pueden ser usados para procesar información de una llamada recibida o para proporcionar información a una llamada (o ambos). Los ejemplos típicos son acceso a base de datos, autorización de tarjetas de crédito o detección de hardware pero existe un sinnúmero de posibilidades.Muchos complementos útiles que han sido creados por nuestros programadores están disponibles para ser descargados gratis en www.nch.com.au/ivm/es/plugins.html. Para más información sobre el uso de los complementos, consulte el manual de ayuda de IVM usando la página de complementos (ayuda->contenidos de ayuda). Escribir complementos IVMEsta documentación está dirigida a los programadores que deseen desarrollar sus propios complementos para IVM. Los complementos pueden ser escritos en cualquier lenguaje que pueda hacer una línea de comandos en consola de 32 bits ejecutable para Windows. Los ejemplos de abajo están escritos en C++ y Perl pero Delphi, VB y muchos otros lenguajes pueden ser adecuados. Un complemento es un ejecutable de línea de comandos en modo de consola. Se ejecuta como una canal anónimo por IVM cuando se abre un mensaje saliente. Las variables de llamada se pasan a los complementos como argumentos de línea de comandos. Por ejemplo, si crea un complemento llamado "plugin.exe" puede establecer que IVM abra "plugin.exe %linenumber% %cid% %variable1% %variable2%". Cuando se ejecuta un exe como un complemento, IVM espera que el complemento retorne (salga). El ejecutable del complemento debería volver cuando el mensaje saliente haya terminado de reproducirse. Si se deben de realizar más tareas que requieran más tiempo, su complemento debe crear/ejecutar otro proceso y salir. El valor devuelto puede ser cualquier número de variables que son enviadas ("printed") por el complemento a STDOUT en pares de datos de nombre en el formato usado por HTTP. Por ejemplo, "numbervariable=101&textvariable=Space+as+plus". Para más información, consulte los libros sobre secuencia de comandos cgi. Generalmente, el valor devuelto más útil es el nombre del mensaje saliente que debería reproducirse a continuación. Esta variable puede ser usada como el nombre del "ir a MS..." Ejemplos usando C++Este pequeño complemento devuelve un número al azar. Puede ser útil si desea que se reproduzcan distintos mensajes salientes a las llamadas entrantes de manera aleatoria.El complemento tiene dos argumentos opcionales. El primero determina el rango de los valores devueltos. El valor predeterminado es 10 que ofrece los resultados posibles de 0 a 9. El segundo es el nombre de la variable devuelta (predeterminado "rand"). #include <stdlib.h> #include <iostream> int main(int argc, char *argv[], char *[]) { cout << ((argc > 2) ? argv[2] : "rand"); cout << "="; int RandomModulus = (argc > 1) ? atoi(argv[1]) : 10; randomize(); cout << rand() % RandomModulus; } Ejemplos usando Perlprint @ARGV > 1 ? $ARGV[1] : "rand"; print "="; $RandomModulus = (@ARGV > 0) ? int($ARGV[0]) : 10; print (int(rand($RandomModulus))); Ejemplos usando Visual BasicNota: No se muestra la función GetRandomNumber aquí.Public Sub Main() Dim StdIO As clsStdIO Set StdIO = New clsStdIO StdIO.StdOut "rand=" & GetRandomNumber End Sub Ejemplos usando PHPPara ejecutar el complemento use:Ejecutable: C:\PHP\php.exe (o donde sea que instaló php - descargar desde www.php.net) Argumento 1: -q (evita el envío de encabezados HTTP ) Argumento 2: Argumentos 3+: Argumentos para pasar a una secuencia de comandos PHP Para comenzar, se puede usar una secuencia de comandos PHP simple como el siguiente: <?php if (argv[1] == 1234) { print NextOGM=CorrectPIN ; } else { print NextOGM=IncorrectPIN ; } ?> Luego establezca Argumento 3 a %PIN% por ejemplo (habiendo recolectado el PIN en esta variable en un mensaje saliente anterior) y establezca la opción para ir a MS& a %NextOGM%. Ejemplos usando JavaEste es un complemento similar al de C++ pero en java. Para usar un complemento java, java debe ser el nombre del complemento que la clase de compilación el primer argumento seguido por otros argumentos.public class RandNumGen { public static void main(String[] args) { Calendar cal = Calendar.getInstance(java.util.TimeZone.getDefault()); Random rand = new Random(); rand.setSeed(cal.getTimeInMillis()); int numberOfOptions = Integer.parseInt(args[0])+1; System.out.print("rand=" + rand.nextInt(numberOfOptions)); } } Depuración de complementosSi tiene problemas al intentar el uso de este complemento:
Servicios de desarrollo de complementosSi no puede escribir sus propio complemento (o no tiene tiempo), puede consultar uno de nuestros programadores asociados para que lo desarrollen por usted. Dependiendo de la complejidad, esto puede costar alrededor de $150 dólares estadounidenses. Para solicitar un presupuesto, visite www.nch.com.au/development/es. Si lo prefiere, puede consultar a un experto en IVM desde la conexión con expertos IVM www.nch.com.au/ivm/es/experts.html.Usar el API de IVMLa API de IVM es usada para permitir que otros programas controlen IVM ( a diferencia de los complementos donde IVM ejecuta otros programas).Necesita IVM versión 2,30 o superior para usar esta API. Todos los ejemplos y demostraciones de abajo se muestran en C++ pero esperamos que no tenga dificultades implementando las mismas funciones usando otros lenguajes (por ejemplo, Visual Basic). Los procedimientos a continuación usan un número de funciones API de Windows (p. ej., FindWindowEx, SendMessage etc.). Si necesita saber más sobre estas funciones y cómo usarlas, consulte la documentación de API de Microsoft Windows. Ejecutar IVMAntes que cualquier función de llamada pueda realizarse, IVM debe estar ejecutándose. La manera más fácil de hacerlo es establecer que IVM se ejecute automáticamente (vea 'configuraciones').Sin embargo, si por alguna razón necesita abrirlo desde su programa use WinExec, ShellExecute o CreateProcess para abrir: Envío de comandos a IVMLos comandos son enviados a la ventana principal de IVM. Primero necesita encontrar la ventana "IVM, contestador automático" usando FindWindowEx y luego usar SendMessage para enviarle un mensaje de comando de IVM (hex 7fff). Use un código como este:#define IVMAPI_WINDOWCAPTION "IVM Answering Attendant" #define WM_IVMAPI_COMMAND 0x7fff int IVMAPISendCommand(int iIVMCommand, LPARAM ExtraData) { HWND hwndIVM = FindWindowEx(NULL, NULL, NULL, IVMAPI_WINDOWCAPTION); if (hwndIVM == NULL) { // IVM not running. // Either attempt to run IVM // or spit out error message here... return 0; } return SendMessage(hwndIVM, WM_IVMAPI_COMMAND, iIVMCommand, ExtraData); } La mayoría de los comandos no usan parámetos ExtraData, así que también podemos definir: inline int IVMAPISendCommandSimple(int iIVMCommand) { return IVMAPISendCommand(iIVMCommand, 0); } Si el comando requiere de una cadena, debe usar un objeto Windows ATOM para pasar la cadena como se muestra en el siguiente código. Es importante resaltar que su código debe eliminar el ATOM usando GlobalDeleteAtom después que SendMessage vuelve. int IVMAPISendCommandString(int iIVMCommand, const char* szStringToSend) { ATOM atomExtraInfo = GlobalAddAtom(szStringToSend); int iReturnValue = IVMAPISendCommand(iIVMCommand, (LPARAM)atomExtraInfo); GlobalDeleteAtom(atomExtraInfo); return iReturnValue; } Comandos IVMAPICada comando tiene un número que es enviado a IVM usando uno de las funciones IVMAPISendCommand anteriores.inline int IVMAPIGetVersion() { return IVMAPISendCommandSimple(0); } // Devuelve la versión API actual que actualmente es 1. // Si devuelve 0 el IVM o API no está disponible. // Si devuelve 2 o más contáctenos por una documentación más actualizada. inline void IVMAPITurnOn() { IVMAPISendCommandSimple(1); } // Activa IVM (para que responda llamdas). inline void IVMAPITurnOff() { IVMAPISendCommandSimple(2); } // Desactiva IVM (para que no responda llamadas). inline void IVMAPISelectAnswerOGM(const char* szOGMName) { IVMAPISendCommandString(3, szOGMName); } // Selecciona la respuesta actual de MS predeterminada. inline void IVMAPIAddOutboundNumber(const char* szNumber) { IVMAPISendCommandString(4, szNumber); } // Añade otro número a llamar en la lista de llamadas salientes. // szNumber puede incluir el número a llamar // y variables adicionales para usar durante la llamada. // p. ej., 5551234567&msgid=666&customer=999 inline void IVMAPISetGlobalVariable(const char* szVariables) { IVMAPISendCommandString(5, szVariables); } // Establece las variables globales de IVM. Las variables están codificadas en el formato // variable=value&variable2=value2&variable3=value3 // p. ej., site=mainnch&SystemPromptsFolder=c:\defaultIVM Cambiar configuraciones de IVMTodas las configuraciones IVM están contenidas en el registro. Ejecute regedit.exe para ver las configuraciones 'sin procesar'. Para cambiar estas configuraciones desde dentro de su programa use el comando API de Windows RegSetValueEx.Añadiendo otras funciones al API de IVMSi necesita tener control de otras funciones de IVM desde su programa (que no se puede hacer sin un complemento), puede consultarnos para añadir la funcionalidad que necesita. Dependiendo de la complejidad, esto puede costar alrededor de $300 dólares estadounidenses. Para solicitar un presupuesto, visite www.nch.com.au/development/es.Opciones de la línea de comandosLas opciones de la línea de comandos son usadas para controlar la ejecución de IVM desde un archivo por lotes u otra aplicación. Son admitidas las siguientes opciones: -on -off -ogm ogmname -outbound nnnnnnnn -ogmoutboundanswer ogmname -ogmoutboundmachine ogmname -outboundlist filename filename -set variables Ejemplos: IVM.exe -ogm OGM1 -on IVM.exe -outbound 5551234567 IVM.exe phonesystem.ivr -on Otra informaciónSi tiene problemas para escribir una aplicación, visite www.nch.com.au/support/es.Ahora contamos con una lista de expertos en IVM en la nueva conexión con expertos de IVM www.nch.com.au/ivm/es/experts.html. Estos son profesionales de la informática quienes conocen cómo programar IVM y pueden ser consultados para que lo ayuden a configurar el sistema IVM complejo. Igualmente puede solicitar que sea añadido a la lista si es uno de esos profesionales. También ofrecemos servicios de desarrollo de software corporativo, si desea que lo hagamos o si necesita cambios más sustanciales en IVM. Los precios van desde $100 dólares estadounidenses por una función simple pero se pueden ver incrementados hasta los $10,000 o más por el desarrollo de una nueva versión completa de la aplicación. Solicite un presupuesto desde www.nch.com.au/development/es. También podemos personalizar y posicionar su marca en IVM con su logotipo e información por un pequeño cargo adicional (visite https://www.nch.com.au/reseller/es para más información). Puede distribuir el archivo de instalación de IVM con su software (pero no puede, bajo ninguna circunstancia, distribuir las claves de registro o tratar de perjudicar el sistema de registro). Consulte las condiciones de licencia de IVM (en el archivo de ayuda). Generalmente sus clientes comprarían IVM directamente a través de nosotros. Igualmente, proporcionamos fáciles condiciones de licencia si necesita distribuir versiones registradas de IVM. Visite https://www.nch.com.au/reseller/es bajo el título de licencia de software. |