IMPLEMENTACIÓN DE JTAPI, PARA LA PLATAFORMA DHARMA DE DATAVOICE.
|
|
|
- Vicenta Tebar Montoya
- hace 10 años
- Vistas:
Transcripción
1 IMPLEMENTACIÓN DE JTAPI, PARA LA PLATAFORMA DHARMA DE DATAVOICE. 1. Introducción a JTAPI Qué es JTAPI? Qué puedo hacer con JTAPI? Ventajas de utilizar JTAPI Inconvenientes de utilizar JTAPI Qué versión del estándar JTAPI es implementada por DataVoice? 1.6. Donde puedo obtener extensa documentación del estándar JTAPI? 2. Estructuración de JTAPI 2.1. Paquetes que lo componen Paquete Core Introducción Ejemplos Realizar una llamada Contestar una llamada Nivel de implementación del estándar por parte de DataVoice Diferencias y comentarios de la implementación de DataVoice con respecto al estándar Paquete CallControl Introducción Ejemplos Transferir una llamada Conferenciar una llamada Descolgar una llamada en un terminal diferente del que está sonando el timbre Nivel de implementación del estándar por parte de DataVoice Diferencias y comentarios de la implementación de DataVoice con respecto al estándar Paquete CallCenter Introducción Ejemplos Número de agentes de todos los grupos de agentes Dar de alta a un agente en un grupo Asociar datos a una llamada Nivel de implementación del estándar por parte de DataVoice Diferencias y comentarios de la implementación de DataVoice con respecto al estándar Paquete Phone Introducción Ejemplos Observar el display de un puesto Subir el volumen del altavoz de un puesto Presionar las teclas de un puesto Nivel de implementación del estándar por parte de DataVoice Diferencias y comentarios de la implementación de DataVoice con respecto al estándar Instalación de los paquetes necesarios para desarrollar aplicaciones basadas en JTAPI Fichero de configuración para las aplicaciones clientes. 3. Instalación del servidor JTAPI Introducción Requerimientos necesarios para instalar el servidor Como ejecuto el servidor? 3.4. Cómo paro el servidor? 3.5. Puedo arrancar varios servidores? 4. Consejos de programación con JTAPI.
2 1. Introducción a JTAPI 1.1 Qué es JTAPI? JTAPI ( Java Telephony Application Programmming Interface ), es un interface de programación para desarrollar utilizando el lenguaje de programacion Java, aplicaciones de telefonía. 1.2 Qué puedo hacer con JTAPI? Con JTAPI puedo realizar todo tipo de aplicaciones CTI ( Computer Telephony Integration ), es decir aplicaciones que interactuen con una plataforma de telefonía para por ejemplo, realizar llamadas, transferir llamadas, conferenciar llamadas, controlar a los agentes de los grupos de agentes, realizar llamadas predictivas, etc. 1.3 Ventajas de utilizar JTAPI. Las aplicaciones JTAPI son portables entre plataformas de telefonía, es decir, una aplicación basada en JTAPI, funcionará en distintas plataformas de telefonía, sin tener si quiera que recompilar el código fuente. Además, las aplicaciones podrán ejecutarse en una gran variedad de entornos informáticos, es decir, funcionarán sobre diferentes sistemas operativos y arquitecturas. Sin tener que recompilar el código!. Imagine el ahorro de costes que supone para una empresa!. Una aplicación se escribirá una vez y podrá ser vendida a los clientes, independientemente de su entorno de ejecución. JTAPI, fue pensado por un grupo de expertos en CTI, dando como resultado un API potente y sencillo de aprender, por lo que en poco tiempo será capaz de realizar complejas aplicaciones de telefonía. Otra gran ventaja que aporta JTAPI, es un que dispondrá de toda la información en tiempo real. Por ejemplo, podrá saber cuantas llamadas hay en un determinado momento, cuantos agentes hay en un determinado grupo, que pone en el display de un puesto, cuantos agentes están trabajando en un determinado momento, etc. 1.4 Inconvenientes de utilizar JTAPI. Las aplicaciones basadas en JTAPI tiene el inconveniente de que al ser escritas en Java, pueden ser algo más lentas, al ser Java un lenguaje de programación interpretado ( no compilado ). Pero con las potentes máquinas actuales, no será un inconveniente suficiente para descartarlo. 1.5 Qué versión del estándar es implementado por DataVoice? Cómo la mayoría de los APIs y componentes en el mundo informático. Estos se van mejorando y/o completando en distintas versiones. DataVoice implementa la versión 1.3 de JTAPI, que es una completa y potente versión del estándar. 1.6 Donde puedo obtener extensa documentación del estándar JTAPI? A continuación, en este documento, se realizarán comentarios y observaciones de JTAPI, pero podrá disponer de una extensa documentación en distintos formatos en la siguiente dirección
3 2. Estructuración de JTAPI Cómo la mayoría de los APIs de programación, estos están estructurados en diferentes paquetes. Aportando cada uno de ellos servicios específicos. 2.1 Paquetes que lo componen. JTAPI está dividido en diferentes paquetes de los cuales DataVoice implementa los paquetes Core, CallCenter, CallControl y Phone. ( Los más importantes, y suficientes para la gran mayoría de aplicaciones ) Paquete javax.telephony.core Introducción Con este paquete podremos: A) Realizar, finalizar y contestar llamadas. B) Obtener el estado en el que se encuentran el proveedor, las llamadas, los componentes de la llamada. C) Obtener los terminales y direcciones que forman parte del dominio del entorno telefónico. D) Poner oyentes a las llamadas, terminales, proveedor, etc. para que se nos avise mediante la invocación de un método que ha sucedido algo. Por ejemplo la llamada a finalizado, o el proveedor ha dejado de estar en servicio Ejemplos
4 Realizar una llamada. import javax.telephony.*; public class RealizarLlamadaApp { public static void main(string[] args){ Provider prov; Terminal term; Call call; JtapiPeer peer; Connection[] connections; CallObserver callobsv; // Verificamos los argumentos. Deben ser dos números de teléfono. if ( args.length!= 2 ){ System.out.println("Formato:\"RealizarLlamadaApp <origen> <destino>\""); System.exit(1); // Obtenemos una instancia que implemente javax.telephony.jtapipeer. peer = JtapiPeerFactory.getJtapiPeer(null); // Obtenemos un proveedor que de el servicio. Por defecto Core. prov = peer.getprovider(null); // Instanciamos y configuramos los objetos necesarios para la llamada term = prov.getterminal(args[0]); call = prov.createcall(); // Realizamos una llamada connections = call.connect(term, term.getaddresses()[0], args[1]); // Finalizamos el proveedor prov.shutdown(); catch ( Exception e ){ System.out.println(e.toString()); // Terminamos la aplicación System.exit(0);
5 Contestar una llamada ////////////////////////////////////////////////////////////////////////////////////// //// Descuelga todas las llamadas que suenen en el puesto que se da como argumento import javax.telephony.*; import javax.telephony.terminalconnection; import javax.telephony.events.callev; import javax.telephony.events.termconnringingev; public class AnswerCallApp { public static void main(string args[]){ JtapiPeer peer = null; Provider prov = null; Terminal term = null; java.lang.string device = null; CallObserver mycallobserver = null; if ( args.length!= 1 ){ System.out.println("Formato \"AnswerCallApp <puesto>\"" ); System.exit(1); // Obtenemos la implementación javax.telephony.jtapipeer. peer = JtapiPeerFactory.getJtapiPeer(null); // Obtenemos un proveedor que de el servicio. Por defecto Core. prov = peer.getprovider(null); // Obtenemos el terminal del cual vamos a descolgar las llamadas. term = prov.getterminal(args[0]); mycallobserver = new MyCallObserver(); term.addcallobserver(mycallobserver); Thread.sleep(25000); // Descuelga las llamadas durante un tiempo term.removecallobserver(mycallobserver); catch ( Exception e ){ System.out.println( e.tostring() ); // Finalizamos el proveedor. prov.shutdown(); catch (Exception e){ // Salimos System.exit(0); class MyCallObserver implements CallObserver { // Implementación del método de la interfaz CallObserver public void callchangedevent(callev[] ev){ TerminalConnection tc; for ( int i = 0; i < ev.length; i++ ){ if ( ev[i].getid()!= TermConnRingingEv.ID ) continue; tc = ((TermConnRingingEv) ev[i]).getterminalconnection(); tc.answer(); catch ( Exception e ){ // Nunca se datá
6 Nivel de implementación del estándar por parte de DataVoice. DataVoice implementa completamente este paquete Diferencias y comentarios de la implementación de DataVoice con respecto al estándar. No hay diferencias entre la implementación realizada por JTAPI y el estándar. Lo único que debe saber el programador es que el mapa de objetos se va completando dinámicamente a medida que va transcurriendo el tiempo. Es decir, por ejemplo. Los puestos que forman parte del dominio del proveedor inicialmente cuando el servidor es arrancado estará vacío por lo que el método public Terminal[] getterminals() de la clase Provider devolverá null, pero a medida que pase el tiempo se irá completando. Un terminal sólo tiene una dirección y viceversa.
7 2.1.2 Paquete javax.telephony.callcontrol Introducción Con este paquete podremos, además de todo lo especificado en el paquete Core: a) Transferir llamadas ( Directas e indirectas ) b) Conferenciar llamadas c) Redireccionar llamadas. d) Descolgar llamadas que están sonando en otro terminal. e) Realizar llamadas de consulta. f) Añadir un puesto para que forme parte de una conferencia ya establecida. g) Retener llamadas h) Recuperar llamadas retenidas. Además dispondrá. A) Estados más finos sobre para las llamadas y sus componentes. B) Información sobre el número llamante y llamado de una llamada Ejemplos
8 Transferir una llamada ///////////////////////////////////////////////////////////////////////////////////// /// Ejemplo sobre transferencias. Pasos a seguir: /// - Realizamos una llamada del "662" al " " y esperamos un tiempo /// ( Suponemos que descuelga ) /// - Retenemos la llamada. /// - Realizamos una llamada del "662" al "648" /// - Realizamos la transferencia. import javax.telephony.*; import javax.telephony.events.*; import javax.telephony.callcontrol.*; import javax.telephony.callcontrol.events.*; public class TransferApp { public static void main(string[] args){ JtapiPeer peer = null; Provider prov = null; CallControlCall call = null; CallControlCall call2 = null; Terminal term = null; TerminalConnection[] tcs = null; Connection[] cons = null; peer = JtapiPeerFactory.getJtapiPeer(null); prov = peer.getprovider(null); term = prov.getterminal("662"); call = (CallControlCall) prov.createcall(); call.connect(term, term.getaddresses()[0], " "); // Esperamos unos segundos en los que debe descolgar. Thread.sleep(4000); // Suponemos que sólo hay una llamada activa en el terminal. call2 = (CallControlCall) prov.createcall(); tcs = call.getconnections()[0].getterminalconnections(); cons = call2.consult(tcs[0], "648"); call.settransfercontroller(call.getconnections()[0]. getterminalconnections()[0]); call2.settransfercontroller(call2.getconnections()[0]. getterminalconnections()[0]); call.transfer(cons[0].getcall()); Thread.sleep(1000); prov.shutdown(); catch ( Exception e ){ System.out.println(e.toString()); System.exit(0);
9 Conferenciar una llamada ////////////////////////////////////////////////////////////////////////////////// /// Este ejemplo realiza una llamada del "662" al " ". Luego /// realiza una llamada del "662" al "648" y pone en conferencia las dos llamadas. /// Muestra por pantalla los eventos que se reciben de las llamadas implicadas import javax.telephony.*; import javax.telephony.events.*; import javax.telephony.callcontrol.*; import javax.telephony.callcontrol.events.*; public class ConferenceCallsApp { ////////////////////////////////////////////////////////////////////////////// public static void main(string args[]){ JtapiPeer peer; Provider prov; CallControlCall call1, call2; Connection[] connections1; Connection[] connections2; TerminalConnection[] tcs; peer = JtapiPeerFactory.getJtapiPeer(null); prov = peer.getprovider(null); call1 = (CallControlCall) prov.createcall(); connections1 = call1.connect( prov.getterminal("662"), prov.getaddress("662"), "648"); Thread.sleep(1000); System.out.println("Realizando la segunda llamada"); call2 = (CallControlCall) prov.createcall(); connections2 = call2.connect(prov.getterminal("662"), prov.getaddress("662"), " "); Thread.sleep(1000); // Configuramos los controladores de conferencias call1.setconferencecontroller(connections1[0].getterminalconnections()[0]); call2.setconferencecontroller(connections2[0].getterminalconnections()[0]); ((CallControlTerminalConnection)call1.getConferenceController()).unhold(); call1.conference(call2); Thread.sleep(1000); call1.drop(); call2.drop(); prov.shutdown(); catch ( Exception e ){ System.out.println(e.toString()); System.exit(0);
10 Descolgar una llamada en un terminal diferente del que está sonando el timbre ///////////////////////////////////////////////////////////////////////////////////// /// Esta aplicación muestra el uso de CallControlTerminal.pickup(). ///Todas las llamadas que suenen en 662 serán pasadas al 648 durante 2 minuto. /// Las llamadas al 662 las hacemos a mano y deben ser llamadas que vengan de la calle. import javax.telephony.*; import javax.telephony.events.*; import javax.telephony.callcontrol.*; import javax.telephony.callcontrol.events.*; public class PickUpApp { public static void main(string[] args){ JtapiPeer peer; Provider prov; Address addr; CallObserver callobserver; peer = JtapiPeerFactory.getJtapiPeer(null); prov = peer.getprovider(null); callobserver = new MyCallObserver((CallControlTerminal) prov.getterminal("648")); addr = prov.getaddress("662"); addr.addcallobserver(callobserver); Thread.sleep(2 * 1000 * 60); prov.shutdown(); System.exit(0); catch ( Exception e ){ System.out.println(e.toString()); class MyCallObserver implements CallObserver { private CallControlTerminal term; public MyCallObserver(CallControlTerminal term) { this.term = term; public void callchangedevent(callev[] evlist) { Connection connection; for ( int i = 0; i < evlist.length; i++ ){ if (! (evlist[i] instanceof CallCtlConnAlertingEv) ) continue; connection = ((CallCtlConnAlertingEv) evlist[i]).getconnection(); if (! connection.getaddress().getname().equalsignorecase("662") ) continue; term.pickup(connection, term.getaddresses()[0]); catch ( Exception e ){ System.out.println(e.toString());
11 Nivel de implementación del estándar por parte de DataVoice. Los siguientes métodos de están soportados: - De la clase javax.telephony.callcontrol.callcontroladdress: - boolean CallControlAddress.getDoNotDisturb() - void CallControlAddress.setDoNotDisturb(boolean) - boolean CallControlAddress.getMessageWaiting() - void CallControlAddress.setMessageWaiting(boolean) - CallControlForwarding[]CallControlAddress.getForwarding() - void CallControlAddress.setForwarding(CallControlForwarding[]) - void CallControlAddress.cancelForwarding() - De la clase javax.telephony.callcontrol.callcontrolcall: - Connection CallControlCall.offHook(Address, Terminal) - void CallControlCall.setConferenceEnable(boolean) - void CallControlCall.setTransferEnable(boolean) - Connection CallControlCall.consult(TerminalConnection) - De la clase javax.telephony.callcontrol.callcontrolconnection: - void CallControlConnection.accept() - void CallControlConnection.reject() - void CallControlConnection.addToAddress(java.lang.String) - Connection CallControlConnection.park(java.lang.String) - De la clase javax.telephony.callcontrol.callcontrolterminal: - boolean CallControlTerminal.getDoNotDisturb() - void CallControlTerminal.setDoNotDisturb(boolean) - TerminalConnection CallControlTerminal.pickupFromGroup(java.lang.String, Address) - TerminalConnection CallControlTerminal.pickupFromGroup(Address) - De la clase javax.telephony.callcontrol.callcontrolterminalconnection: - void CallControlTerminalConnection.join() - void CallControlTerminalConnection.leave() Los siguientes estados no están soportados: - De la clase javax.telephony.callcontrol.callcontrolconnection: - OFFERED - DIALING - OFFERING - De la clase javax.telephony.callcontrol.callcontrolterminalconnection: - INUSE - BRIDGED
12 Diferencias y comentarios de la implementación de DataVoice con respecto al estándar. - Sobre un puesto se pueden tener simultáneamente 4 llamadas, una interna, dos salientes y una entrante. - En llamadas entrantes y salientes, los Connection de la llamada que representan al origen o distinto remoto respectivamente. Son representados por el enlace por el que la llamada entra. Por ejemplo si hay una llamada entrante desde el número de teléfono , que entra al entorno telefónico de DataVoice por el enlace 169, y va al puesto 662. Entonces la llamada tendrá dos Connection el 169, y el 662 y para obtener el número de teléfono llamante, se utilizará el método Call.getCallingAddress() - El comportamiento de JTAPI y de sus aplicaciones CTI, se seriamente afectadas en caso de llamadas salientes y entrantes por el tipo de líneas que se utilizan ( Digitales o Analógicas ). Y es que en líneas analógicas la red da menos eventos que informan a las aplicaciones. Por ejemplo en una llamada saliente si deseamos realizar alguna tarea cuando suene el timbre del destinatario, es muy probable que en muchos casos y dependiendo de la calidad de las líneas analógicas de la red, no se detecte esta situación, influyendo negativamente en las aplicaciones. Este problema no depende de JTAPI, y sucede con todos los API de programación. Y el correcto funcionamiento de las aplicaciones dependerá mucho de que el programador conozca este comportamiento para no asumir nada. - Sobre las transferencias: - No se puede realizar ningún tipo de transferencia de una llamada interna. - Sobre las conferencias: - Debido a que cada fabricante de centros de llamadas realiza las conferencias de formas muy distintas los unos de los otros. JTAPI al tener que estandarizarlas, e imponer un comportamiento común. Es complicado que se soporten completamente como impone. A continuación detallaremos el comportamiento del estándar que DataVoice cubre. Los terminales de DataVoice poseen un modo de funcionamiento llamado "Modo Conferencia" Que supone que cuando un terminal se encuentra en este modo, todas las llamadas que existan en el terminal formarán parte de la misma conferencia. Es decir el audio de todos los dispositivos remotos o locales de las diferentes llamadas se comparte y todos se escuchan. Además un terminal al salir del "Modo Conferencia" todas las llamadas dejan de estar en conferencia y dejan de escucharse los unos a los otros. Este comportamiento, es diferente del especificado por JTAPI, que no supone que todas las llamadas de un terminal tengan que estar conferenciadas, y tampoco define nada del "Modo conferencia" que es específico de DataVoice.
13 2.1.3 Paquete javax.telephony.callcenter Introducción Con este paquete podremos: a) Obtener los grupos de agentes. b) Añadir y eliminar agentes a los grupos de agentes. c) Obtener información sobre las llamadas que están en un grupo de agentes. d) Obtener el estado de los agentes. e) Asociar y recuperar datos a las llamadas. f) Obtener información sobre los enlaces que utiliza una llamada. g) Realizar llamadas predictivas Ejemplos
14 Número de agentes de todos los grupos de agentes import javax.telephony.*; import javax.telephony.events.*; import javax.telephony.callcenter.*; import javax.telephony.callcenter.evets.*; public class NumeroDeAgentesGrupo { //////////////////////////////////////////////////////////////////////////// public static void main(string[] args) { CallCenterProvider prov; JtapiPeer peer; ACDAddress[] acdaddresses; ACDAddressObserver observer; // Obtenemos una instancia de la implementación de // JtapiPeer de DataVoice. peer = JtapiPeerFactory.getJtapiPeer(null); // Obtenemos un proveedor que de el servicio CallCenter. prov = (CallCenterProvider) peer.getprovider("service=callcenter;server=localhost"); // Instanciamos el observer que se añadirá a todos los grupos // de agentes. observer = new MiACDAddressObserver(); // Obtenemos todos los grupos de agentes definidos. acdaddresses = prov.getacdaddresses(); System.out.println("CONFIGURANDO OBSERVERS. ESPERE..."); // Enlazamos el observer a todos los grupos. for ( int i = 1; i < acdaddresses.length; i++ ) acdaddresses[i].addobserver(observer); System.out.println("YA ESTA. "); // Observamos por la salida estandar los mensajes que se // producen del observer Thread.sleep(2 * 60 * 1000); // Finalizamos el proveedor prov.shutdown(); catch ( Throwable e ){ System.out.println(e.toString()); // Terminamos la aplicación System.exit(0); /////////////////////////////////////////////////////////////////////////////
15 //////////////////////////////////////////////////////////////////////////////////// /// Esta clase implementa la interfaz javax.telephony.callcenter.acdaddressobserver. /// Imprime por la salida estándar los cambios en el número de agentes que existen en /// cada grupo. class MiACDAddressObserver implements ACDAddressObserver { ///////////////////////////////////////////////////////////////////////////// //// Implementación del método definido en la interfaz ACDAddressObserver public void addresschangedevent(addrev[] eventos){ ACDAddress acdaddress = null; Agent[] agents = null; AgentTerminal a; // Solo imprimimos en número de agentes que hay en cada grupo cuando el // agente se de baja o de alta en un grupo. for ( int i = 0; i < eventos.length; i++ ){ if (! ((eventos[i] instanceof ACDAddrLoggedOnEv) (eventos[i] instanceof ACDAddrLoggedOffEv))) continue; // Obtenemos el grupo del agente. acdaddress = (ACDAddrEv)eventos[i]).getAgent().getACDAddress(); // Imprimimos el número de agentes que hay en el grupo. if ( (agents = acdaddress.getloggedonagents()) == null){ System.out.println("El grupo " + acdaddress.getname() + " no tiene agentes."); return; System.out.print("El grupo " + acdaddress.getname() + " tiene " + agents.length + " agentes. ( "); for ( int j = 0; j < agents.length-1; j++ ) System.out.print(agents[j].getAgentID() + ", " ); System.out.println(agents[agents.length-1].getAgentID() + ")"); catch (javax.telephony.methodnotsupportedexception e ){ // Nunca se dará, pues DataVoice lo soporta. ////////////////////////////////////////////////////////////////////////////
16 Dar de alta a un agente en un grupo. ////////////////////////////////////////////////////////////////////////////////// /// Da de alta al agente 630 en el grupo 200 trabajando en el puesto 662. import javax.telephony.*; import javax.telephony.callcenter.*; public class LogOnApp { public static void main(string[] args){ JtapiPeer peer = null; CallCenterProvider prov = null; AgentTerminal term = null; ACDAddress[] grupos = null; Agent agent = null; // Obtenemos una instancia de la implementación // de JtapiPeer de DataVoice. peer = JtapiPeerFactory.getJtapiPeer(null); // Obtenemos un proveedor que de el servicio CallCenter. prov = (CallCenterProvider) peer.getprovider("server=pccarlos;service=callcenter"); // Obtenemos los grupos grupos = prov.getacdaddresses(); // Obtenemos el terminal sobre el que el agente se dará de alta. term = (AgentTerminal) prov.getterminal("662"); // Hacemos que el agente pase a formar parte del grupo 200. agent = term.addagent(term.getaddresses()[0], grupos[200], Agent.READY, "630", null); // Finalizamos el proveedor. prov.shutdown(); catch ( Exception e ){ System.out.println( e.tostring() ); // Terminamos la aplicación System.exit(0);
17 Asociar datos a una llamada ///////////////////////////////////////////////////////////////////////////////////// //// Realiza una llamada desde el 663 al 662 y muestra durante unos segundos los //// eventos producidos al cambiarse la información asociada a una llamada. //// Esta información que se asocia son instancias de la clase Cliente. import javax.telephony.*; import javax.telephony.callcenter.*; import javax.telephony.callcenter.events.callcentcallappdataev; public class AssociateDataCallApp { public static void main(string[] args) { JtapiPeer peer; CallCenterProvider prov; CallCenterCall call; CallCenterCallObserver callobserver; Connection[] connections; // Obtenemos una instancia de la implementación de JtapiPeer de // DataVoice. peer = JtapiPeerFactory.getJtapiPeer(null); // Obtenemos un proveedor que de el servicio CORE. prov = (CallCenterProvider) peer.getprovider( "SERVICE=CALLCENTER;SERVER=localhost); // Solicitamos al proveedor una nueva llamada. call = (CallCenterCall) prov.createcall(); // Instanciamos el CallObserver que se enlazará a la llamada. callobserver = new MyCallCenterCallObserver(); // Enlazamos el CallObserver a la llamada. call.addobserver(callobserver); // Realizamos una llamada connections = call.connect(prov.getterminal("663"), prov.getaddress("663"), "662"); // Asociamos distintos datos a la llamada call.setapplicationdata(new Cliente(" ")); call.setapplicationdata(new Cliente(" ")); call.setapplicationdata(new Cliente(" ")); // Esperamos un tiempo para que de tiempo a imprimirse los cambios // de información de la llamada Thread.sleep(500); // Desenlazamos el CallObserver de la llamada call.removeobserver(callobserver); // Finalizamos el proveedor prov.shutdown(); catch ( Exception e ){ System.out.println(e.toString()); // Terminamos la aplicación. System.exit(0);
18 //////////////////////////////////////////////////////////////////////////////////// /// CallObserver que imprime por la salida estándar el cambio de los datos /// asociados a la llamada class MyCallCenterCallObserver implements CallCenterCallObserver { /////////////////////////////////////////////////////////////////////////// //// Implementamos el método de la clase CallObserver. public void callchangedevent(javax.telephony.events.callev[] events){ Cliente data; // Recorremos el array de eventos e imprimimos los eventos // CallCentCallAppDataEv for ( int i = 0; i < events.length; i++ ) { if (! (events[i] instanceof CallCentCallAppDataEv) ) continue; // Obtenemos los datos asociados a la llamada, que deben // ser una instancia de la clase Cliente. data = (Cliente) ((CallCentCallAppDataEv)events[i]).getApplicationData(); System.out.println( data.getdni() ); /////////////////////////////////////////////////////////////////////////////////////// /// Las instancias de esta clase son las que se enlazan en este ejemplo como datos a la /// llamada. class Cliente implements java.io.serializable { private java.lang.string dni; //////////////////////////////////////////////////////////////////////// /// Constructor public Cliente(java.lang.String dni){ this.dni = dni; //////////////////////////////////////////////////////////////////////// /// Devuelve el dni del cliente public java.lang.string getdni(){ return this.dni;
19 Nivel de implementación del estándar por parte de DataVoice. DataVoice no implementa la funcionalidad de las siguientes clases: - javax.telephony.callcenter.acdmanagerconnection. - javax.telephony.callcenter.routeaddress. - javax.telephony.callcenter.routecallback. - javax.telephony.callcenter.routesession. - javax.telephony.callcenter.acdmanageraddress. Los siguientes métodos no están soportados. - De la clase javax.telephony.callcenter.callcenterprovider: - ACDManagerAddress[] CallCenterProvider.getACDManagerAddresses() - RouteAddress[] CallCenterProvider.getRouteableAddresses() - De la clase javax.telephony.callcenter.acdaddress: - int ACDAddress.getQueueWaitTime() - int ACDAddress.getRelativeQueueLoad() - ACDManagerAddress ACDAddress.getACDManagerAddress() - De la clase javax.telephony.callcenter.acdconnection: - ACDManagerConnection ACDConnection.getACDManagerConnection() - De la clase javax.telephony.callcenter.agentterminal: - void AgentTerminal.setAgents(Agent[]) Diferencias y comentarios de la implementación de DataVoice con respecto al estándar. - El objeto que se va ha asociar a una llamada mediante el método CallCenterCall.setApplicationData( java.lang.object ) deben implementar la interfaz Serializable del paquete java.io. - Los datos que son asociados a las llamadas se asocian por valor y no por referencia, es decir, por ejemplo si dos aplicaciones tienen referencia a la misma llamada, y la primera asocia datos a la llamada y la segunda los lee, y la primera asocia de nuevo datos a la llamada, los datos que tiene la segunda aplicación no reflejan este cambio a no ser que los vuelva a pedir. - Estos datos sólo serán visibles en el entorno JTAPI. Por lo que no podrán ser recuperados o modificados usando otros APIs de DataVoice. - Hay definidos 256 grupos de agentes ( ACDAddress ) cuyos identificadores van desde 0 a 255. Además estos están definidos desde que la aplicación comienza. Es decir no se crean ni se eliminan de forma dinámica. - Un agente puede trabajar a lo sumo 4 grupos de agentes. - Sólo es posible obtener los grupos a los que pertenecen los agentes, cuando una vez arrancado el servidor, estos se dan de alta en algún grupo. Es decir por ejemplo, si el servidor se arranca hoy a las 15:00 y los agentes estaba trabajando desde las 8:00 entonces sólo tendremos referencia de los agentes que se den de alta en algún grupo a partir de las 15:00. - Cuando ponga oyentes a un ACDAddress ( Un grupo de agentes ), observará que si un agente está de alta en n grupos y se da de alta en otro nuevo. Entonces recibirá eventos ACDAddrNotReadyEv, ACDAddrLoggedOffEv de los grupos n grupos en los que estaba antes de recibir los eventos ACDAddrLoggedOnEv y ACDAddrReadyEv de los n grupos en los que estaba y del nuevo. - Cuando ponga oyentes a un AgentTerminal, observará que si un agente está de alta en n grupos y se da de alta en otro nuevo. Entonces recibirá eventos AgentTermNotReadyEv,
20 AgentTermLoggedOffEv de los grupos n grupos en los que estaba antes de recibir los eventos AgentTermLoggedOnEv y AgentTermReadyEv de los n grupos en los que estaba y del nuevo. - En llamadas predictivas, el connection origen se crea solamente cuando el destino descuelga. Esto puede suponer un problema sobre líneas analógicas, pues no siempre se detecta el descolgado. - En llamadas predictivas, el número de timbres que se deben producir antes de que la llamada se asuma cómo no contestada no es. Es decir, si indico que una llamada predictiva con 6 timbres no ha sido contestada, en realidad, se podrán dar un número de timbres aproximado, 5 o 7. - Los enlaces ( CallCenterTrunk ) son utilizados tanto para llamadas salientes como para entrantes. Por lo que el método int CallCenterTrunk.getType() para un mismo enlace, podrá devolver valores diferentes dependiendo si la llamada a la que está asociada es entrante o saliente.
21 2.1.4 Paquete javax.telephony.phone Introducción Con este paquete podremos: a) Obtener el display de un puesto. b) Obtener y configurar el volumen de un puesto. c) Obtener el estado de los Leds de un puesto. d) Simular la pulsación de los botones de un puesto Ejemplos Observar el display de un puesto ////////////////////////////////////////////////////////////////////////////////// /// Este ejemplo muestra durante unos segundos el display del puesto cuyo nombre /// se pasa como argumento import javax.telephony.*; import javax.telephony.phone.*; import javax.telephony.events.termev; import javax.telephony.phone.events.displayupdateev; public class PhoneTerminalDisplayApp { public static void main(string[] args){ JtapiPeer peer = null; Provider prov = null; Terminal term = null; TerminalObserver observer = null; if ( args.length!= 1 ){ System.out.println("Formato: PhoneTerminalDisplayApp <puesto>"); System.exit(1); peer = JtapiPeerFactory.getJtapiPeer(null); prov = peer.getprovider(null); term = prov.getterminal(args[0]); observer = new MyPhoneTerminalObserver(); term.addobserver(observer); Thread.sleep(30 * 1000); term.removeobserver(observer); prov.shutdown(); catch ( Exception e ){ System.out.println(e.toString()); System.exit(0); class MyPhoneTerminalObserver implements TerminalObserver { public void terminalchangedevent(termev[] ev){ for ( int i = 0; i < ev.length; i++ ){ if (! ( ev[i] instanceof DisplayUpdateEv) ) continue; System.out.println(((DisplayUpdateEv) ev[i]).getdisplay(0, 0));
22 Subir el volumen del altavoz de un puesto. ////////////////////////////////////////////////////////////////////////////////// /// Este ejemplo sube el volumen del Speaker del terminal local 662 al máximo. import javax.telephony.*; import javax.telephony.phone.*; public class UpVolumeFullApp { public static void main(string[] args){ JtapiPeer peer = null; Provider prov = null; PhoneTerminal term = null; ComponentGroup[] groups= null; Component[] c = null; // Obtenemos un proveedor que de el servicio Phone peer = JtapiPeerFactory.getJtapiPeer(null); prov = peer.getprovider("service=phone;server=localhost"); // Obtenemos el terminal local 662 term = (PhoneTerminal) prov.getterminal("662"); groups = term.getcomponentgroups(); for ( int i = 0; i < groups.length; i++ ){ if (! (groups[i].getdescription().equalsignorecase("phonespeaker")) ) continue; // Estamos en el grupo del Speaker c = groups[i].getcomponents()[0]; ((PhoneSpeaker) c.setvolume(phonespeaker.full); break; prov.shutdown(); catch ( Exception e ){ System.out.println(e.toString()); System.exit(0);
23 Presionar las teclas de un puesto. /////////////////////////////////////////////////////////////////////////////////// /// Este ejemplo muestra como realizar una llamada interna del 663 al 662 usando /// PhoneTerminal deja que suene durante un tiempo y luego finaliza la llamada. import javax.telephony.*; import javax.telephony.phone.*; public class PhoneTerminalPressKeyApp { private static void PressKey(Component[] botones, String buttonid){ PhoneButton btn; for ( int i = 0; i < botones.length; i++){ btn = (PhoneButton) botones[i]; if (! btn.getname().equalsignorecase(buttonid) ) continue; btn.buttonpress(); return; public static void main(string[] args){ JtapiPeer peer = null; Provider prov = null; Terminal term = null; ComponentGroup[] groups = null; Component[] botones = null; peer = JtapiPeerFactory.getJtapiPeer(null); prov = peer.getprovider("service=phone"); term = prov.getterminal("663"); groups = ((PhoneTerminal) term).getcomponentgroups(); for ( int i = 0; i < groups.length; i++ ){ if ( "PhoneButton".equalsIgnoreCase(groups[i].getDescription())){ botones = groups[i].getcomponents(); break; PhoneTerminalPressKeyApp.PressKey(botones, "<=>"); // Llamada Interna PhoneTerminalPressKeyApp.PressKey(botones, "6"); PhoneTerminalPressKeyApp.PressKey(botones, "6"); PhoneTerminalPressKeyApp.PressKey(botones, "2"); Thread.sleep(1000); PhoneTerminalPressKeyApp.PressKey(botones, "Disconnect"); prov.shutdown(); System.out.println("Fin del ejemplo"); catch ( Exception e ){ System.out.println(e.toString()); System.exit(0);
24 Nivel de implementación del estándar por parte de DataVoice. DataVoice no implementa la funcionalidad de las siguientes clases: - javax.telephony.phone.phonegraphicdisplay - javax.telephony.phone.phonehookswitch - javax.telephony.phone.phoneringer Diferencias y comentarios de la implementación de DataVoice con respecto al estándar. La especificación estándar de JTAPI para este paquete deja mucho que desear. Por lo que a continuación se detallará como está implementado este paquete por nuestra implementación. Los puestos devuelven en el método ComponentGroup[] PhoneTerminal getcomponentgroups() un array de ComponentGroup que se detalla a continuación: COMPONENTGROUP.GETDESCRIPTION() DESCRIPCIÓN DE LO QUE REPRESENTA EL GRUPO PhoneButton PhoneDisplay PhoneSpeaker PhoneLamp Representa el conjunto de botones del puesto. Representa el display del puesto. Representa el micrófono del puesto. Representa el conjunto de Leds del puesto Los botones de los puestos Dharma tienen unos identificadores únicos que debemos conocer para poder trabajar con ellos. IDENTIFICADOR DESCRIPCIÓN * Botón de rellamada. C D Botón de conferencia. Botón que permite la grabación de llamadas. 0 Botón cuya etiqueta es un 0. 1 Botón cuya etiqueta es un 1. 2 Botón cuya etiqueta es un 2. 3 Botón cuya etiqueta es un 3. 4 Botón cuya etiqueta es un 4. 5 Botón cuya etiqueta es un 5. 6 Botón cuya etiqueta es un 6. 7 Botón cuya etiqueta es un 7. 8 Botón cuya etiqueta es un 8. 9 Botón cuya etiqueta es un 9. Disconnect Botón que permite finalizar la comunicación.
25 F Botón para la activación de funciones. F1 Tecla de función F1. F2 Tecla de función F2. F3 Tecla de función F3. F4 Tecla de función F4. F5 Tecla de función F5. F6 Tecla de función F6. # Tecla de funciones especiales. Y cuya etiqueta es #. Inbound Tecla de la llamada entrante. <=> Tecla de llamada interna. Micro Mute Tecla de manos libres. Silenciador Outbound A Tecla de llamada saliente A. Outbound B Tecla de llamada saliente B. Alt T Volume Down Volume Up Tecla de altavoz. Tecla de transferencia. Tecla para bajar el volumen del puesto. Tecla para subir el volumen del puesto. Los Leds de los puestos Dharma tienen unos identificadores únicos que debemos conocer para poder trabajar con ellos. IDENTIFICADOR DESCRIPCIÓN Alt C Micro Led de Altavoz y Mute. Led de conferencia. Led del manos libre. <=> Led de llamada interna. Outbound A Led de llamada saliente A. Outbound B Led de llamada saliente B. F Lib Act Esp Disconnect Inbound Led de función Led de operador libre. Led de operador activado Led de llamada en espera. Led de finalización de la comunicación. Led de llamada entrante.
26 2.2 Instalación de los paquetes para desarrollar aplicaciones basadas en JTAPI. El fichero jtapi.jar ( Java Archive ) que contiene la especificación JTAPI podrá obtenerse en la siguiente dirección La implementación de JTAPI de DataVoice se encuentra en el fichero DVJtapiClient.jar que es suministrado. Una vez instalado los ficheros en un disco duro local o remoto, deberá configurar la variable de entorno CLASSPATH para que apunte a los ficheros jtapi.jar y DVJtapiClient.jar. Por ejemplo, en caso de una máquina Windows 9x y suponiendo que el paquete se encuentra en el directorio c:\windows\java\packages de la máquina. Esta variable de entorno puede ser configurada en el fichero c:\autoexec.bat de la siguiente manera: SET CLASSPATH=%CLASSPATH&;c:\windows\java\packages\DVJtapiCliente.jar. 2.3 Fichero de configuración de las aplicaciones clientes. Como podrá observar en las aplicaciones de ejemplo anteriores. En la instrucción cuya finalidad es pedir el proveedor adecuado. Provider JtapiPeer.getProvider(String) en muchos casos este parámetro es null. Pues bien en estos casos, o en los casos en el que el usuario no de explícitamente valores a todos los parámetros, estos son leidos de un fichero de configuración que debe existir en el directorio que indique la propiedad java.home y cuyo nombre es DVJtapi.conf. Nota: Podrá obtener este directorio mediante la siguiente aplicación: public class ObtenerJavaHomeDir { public static void main(string args[]){ System.out.println(System.getProperty("java.home") ); El formato del fichero es que en cada línea de este debe haber una propiedad, por ejemplo: SERVER=pcServidorJTAPI SERVICE=CallControl La propiedad SERVER indica a las aplicaciones clientes que no especifiquen explícitamente un valor para esta propiedad, que el servidor que les atenderá está ejecutándose en la máquina cuyo nombre o dirección IP está detrás del símbolo igual. ( En el ejemplo, pcservidorjtapi ) La propiedad SERVICE indica a las aplicaciones clientes que no especifiquen explícitamente un valor para esta propiedad, que el servicio que solicitan es el que se encuentra después del símbolo igual. (En el ejemplo CallControl ).
27 3. Instalación del servidor. 3.1 Introducción El servidor JTAPI de DataVoice, dará servicio a los clientes que lo soliciten. Será el que esté en contacto directamente con la plataforma de telefonía usando para ello una serie de componentes privados de DataVoice. 3.2 Requerimientos necesarios para instalar el servidor Debe ser instalado en máquinas que ejecuten un sistema operativo Windows de 32 bits, Windows 9x, 2000, NT, XP, etc. Deben estar conectado en Red y ser visibles por las máquinas en las que se vayan a ejecutar software CTI basado en Jtapi. Instalar los paquetes DVJTAPIServer.jar y jtapi.jar en un directorio que sea visible mediante la variable de entorno CLASSPATH. Instalar y registrar el componente DVSAPI2.ocx versión o superior. Para registrar este componente se deberá usar la aplicación regsvr32.exe que viene de serie con el sistema operativo. Y la forma de registrarlo es: "regsvr32 <rutaalficheroocx>" Por ejemplo: regsvr32 c:\windows\system\dvsapi2.ocx. Debiendo aparecer a continuación un cuadro de dialogo como el siguiente: 3.3 Cómo ejecuto el servidor? Para poner en marcha el servidor, debemos ejecutar el siguiente comando: jview DataVoice.jtapi.Servidor.StartJtapiServer [<CTIServerAddress>< CTIServerPort > ] CTIServerAddress: CTIServerPort: Nombre o dirección IP de la máquina en la que corre el servidor CTI. Puerto en el que está escuchando el servidor CTI. Una vez arrancado el servidor deberá aparecer una mensaje indicando que el servidor está correctamente arrancado. 3.4 Cómo paro el servidor? Una vez arrancado el servidor, pulsando la tecla 'S'. Este se para y las aplicaciones clientes realizarán la tarea que tengan programada para esta situación. 3.5 Puedo arrancar varios servidores? Se puede arrancar un servidor por máquina, por lo que si tenemos 5 máquinas con sistemas operativos Win32 podremos arrancar 5 servidores.
28 4. Consejos de programación con JTAPI. 1. Es importante que los observers y listeners añadidos a los objetos Address, ACDAddres, Call, Provider, Connection, TerminalConnection, Terminal, etc. se eliminen antes de que la aplicación termine. Pues mantendrán al servidor limpio y podrá ofrecer mejor servicio a las otras aplicaciones 2. Evitar los bucles cerrados, pues restarán valiosos recursos a las demás aplicaciones por hacer menos eficiente al servidor atendiendo a las continuas peticiones de dentro del bucle. Por ejemplo. Imagine que desea realizar una aplicación que finalice una llamada cuando el Connection destino de esta tenga el estado Connection.Alerting. Pues bien en vez de estar en un bucle similar al siguiente: Call call = null; Connection[] connections = null; connections = call.connect(...); while ( connections[1].getstate()!= Connection.Alerting ) ; connections[1].disconnect();... Es conveniente que añada un observer o listener al Connection destino y cuando se reciba el evento correspondiente finalice la llamada. 3. Poner siempre un listener u observer al Proveedor para que en caso de que esté deje de estar en estado de servicio, realizar un tratamiento adecuado.
SOFTPHONE GUÍA RÁPIDA
SOFTPHONE GUÍA RÁPIDA Octubre de 2013 CONTENIDO 1. GUIA SOFTPHONE...3 1.1. MENSAJES DE ERROR...7 SOFTPHONE Página 2 de 8 GUÍA SOFTPHONE Parámetros Iniciales: Esta opción se presenta sólo la primera vez
Práctica GESTIÓN Y UTILIZACIÓN DE REDES LOCALES. Curso 2001/2002. TCP/IP: protocolo TCP
Práctica 9 GESTIÓN Y UTILIZACIÓN DE REDES LOCALES Curso 2001/2002 TCP/IP: protocolo TCP Introducción Como se ha comentado en la práctica anterior, el protocolo UDP es muy sencillo de implementar, pero
Introducción al lenguaje Java
Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno
Modelo de Objetos Distribuidos
Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo
Internet Information Server
Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en
Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación
Vicerrectorado de Tecnologías de la Información y la Comunicación Conexión mediante Escritorio Remoto de Windows Última Actualización 16 de septiembre de 2013 Histórico de cambios Fecha Descripción Autor
Configuración del softphone X-Lite
Configuración del softphone X-Lite Agregar un usuario Cuando se ejecuta el softphone por primera vez, nos pide que configuremos una cuenta de usuario para poder realizar y recibir llamadas. Se abre la
En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX
COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor
AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7
Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos
MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I 75.35. Facultad de Ingeniería, UBA. Junio 2002. Cátedra: Pablo Cosso
MICQ Facultad de Ingeniería, UBA. Junio 2002 Trabajo Práctico Final Seminario de Ingeniería en Informática I 75.35 Cátedra: Pablo Cosso Alumno: Diego Fernando Montaldo 75.300 1 de 1 Introducción Este documento
WINDOWS 2008 5: TERMINAL SERVER
WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.
SERVIDOR DNS DINÁMICO EN WINDOWS 2000/2003 SERVER.
SERVIDOR DNS DINÁMICO EN WINDOWS 2000/2003 SERVER. 1. Introducción. El objetivo de un servidor DNS dinámico es integrar la funcionalidad del mismo junto a la de un servidor DHCP de forma que, cuando éste
Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX...
INDICE 1 Configuración previa...2 1.1 Configuración Internet Explorer para ActiveX...2 1.2 Problemas comunes en sistema operativo Windows...8 1.2.1 Usuarios con sistema operativo Windows XP con el Service
Curso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Instalación de ActivePerl en MS Windows
Instalación de ActivePerl en MS Windows Rubén Armañanzas Arnedillo [email protected] 26 de septiembre de 2002 1. Descarga de los ejecutables necesarios En primer lugar vamos a descargar los ficheros que
Trabajo TICO Unidad 2: Sistemas Operativos. Guillermo Jarne Bueno.
Un Sistema Operativo es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicación y los diferentes usuarios. Es un administrador de los recursos
RESOLUCIÓN DE INCIDENCIAS PROCURADORES
RESOLUCIÓN DE INCIDENCIAS PROCURADORES Información para el CAU: Acceso al aplicativo: Una incidencia que se ha dado mucho es que les salía la siguiente pantalla de error al acceder al aplicativo: Esta
Manual del Protocolo XML-RPC de Mensajería Negocios
Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...
RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
AGREGAR COMPONENTES ADICIONALES DE WINDOWS
INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución
Quitar de un Directorio Activo Un Servidor que es el Maestro de Operaciones En Windows 2000 Server y Windows Server 2003
Quitar de un Directorio Activo Un Servidor que es el Maestro de Operaciones En Windows 2000 Server y Windows Server 2003 Josep Ros Suprimir un Maestro de Operaciones de Directorio Activo Introducción La
Internet, conceptos básicos
Internet, conceptos básicos IP (INTERNET PROTOCOL) Toda computadora tiene un número que la identifica en una red, este número es lo que llamamos IP, una dirección de IP típica se ve de esta manera Direcciones
Programa de Ayuda EMCS Instalación Versión SQL Server Versión 1.0 - Marzo 2010
Programa de Ayuda EMCS Instalación Versión SQL Server Versión 1.0 - Marzo 2010 Programa de Ayuda EMCS Instalación Versión SQL Server Tabla de Contenido 1 INSTALACIÓN EN EL SERVIDOR...3 1.1 CREAR LA BASE
PS.Vending Almacén Pocket PC
Versión 1.0 Enero 2013 Autor: Pedro Naranjo Rodríguez www.psvending.es Contenido Qué es PS.Vending Almacén Pocket PC?... 3 Funciona PS.Vending Almacén Pocket PC independiente de PS.Vending?... 3 Requisitos...
Aprenda a configurar en el modo 3 el termostato universal modelo TDGH-B3
Aprenda a configurar en el modo 3 el termostato universal modelo TDGH-B3 TDGH-B3 Este termostato ha sido diseñado para 5 modos de funcionamiento distintos. Este curso les explica como funciona en el modo
MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD
MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...
Pruebas de unidad con JUnit
Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro
MACROS. Automatizar tareas a través del uso de las macros.
OBJETIVOS MACROS Definiciones Automatizar tareas a través del uso de las macros. Grabar Ejecutar Manipular macros. Tipos de Macros en Excel Introducción Las operaciones tradicionales que se pueden realizar
Teléfono SIP Aastra modelo 6731i CONTENIDO
Universidad Nacional Autónoma de México Instituto de Física Secretaria Técnica de Computo y Telecomunicaciones Servicios de telefonía Guía rápida de usuario Teléfono SIP Aastra modelo 6731i CONTENIDO Descripción
Programación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer [email protected] Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS
REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS Servicio DNS - 1 - Servicio DNS...- 3 - Definición... - 3 - Instalación... - 5 - Configuración del Servidor DNS...- 10 - - 2 - Servicio DNS Definición
GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)
APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I
Software Criptográfico FNMT-RCM
Software Criptográfico FNMT-RCM ÍNDICE 1. DESCARGA E INSTALACIÓN DEL SOFTWARE 2. EXPORTACIÓN DE CERTIFICADOS EN MICROSOFT INTERNET EXPLORER 3. IMPORTACIÓN DEL CERTIFICADO A LA TARJETA CRIPTOGRÁFICA -2-
Hostaliawhitepapers. Las ventajas de los Servidores dedicados. www.hostalia.com. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199
Las ventajas de los Servidores dedicados Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com A la hora de poner en marcha una aplicación web debemos contratar un servicio
MANUAL DE AYUDA MODULO TALLAS Y COLORES
MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3
GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS
GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS 1.- PLANTILLA DE PUBLICACIONES En este maestro crearemos la publicación base sobre la cual el programa generará
SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler
Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,
Firewall Firestarter. Establece perímetros confiables.
Firewall Firestarter Qué es un Firewall? Un muro de fuego (firewall en inglés) es una parte de un sistema o una red que está diseñada para bloquear el acceso no autorizado, permitiendo al mismo tiempo
MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)
MANUAL DE AYUDA SAT Móvil (Movilidad del Servicio Técnico) Fecha última revisión: Abril 2015 INDICE DE CONTENIDOS INTRODUCCION SAT Móvil... 3 CONFIGURACIONES PREVIAS EN GOTELGEST.NET... 4 1. INSTALACIÓN
Configuracion Escritorio Remoto Windows 2003
Configuracion Escritorio Remoto Windows 2003 Instalar y configurar servicio de Terminal Server en Windows 2003 Fecha Lunes, 25 diciembre a las 17:04:14 Tema Windows (Sistema Operativo) Os explicamos cómo
Recall SIP. Guía de Instalación y Configuración Versión 3.7
Recall SIP Guía de Instalación y Configuración Versión 3.7 INDICE 1- INTRODUCCION... 3 2- INSTALACIÓN DE RECALL SIP... 4 2.1 Instalación del Hardware...4 2.2 Instalación del Software...5 2.2.1 Instalación
TUTORIAL DE INSTALACIÓN PARA VIRTUALBOX
TUTORIAL DE INSTALACIÓN PARA VIRTUALBOX Oracle VirtualBox es una aplicación de código abierto (Open Source) permite crear una máquina virtual en nuestro ordenador de forma que podemos ejecutar un Sistema
8. Sentencia return y métodos
92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente
La central reproduce un sonido largo si los datos de configuración son almacenados de forma correcta, y dos sonidos cortos si hay un error.
Programación Básica de Alarma GSM Última modificación: 15 de Octubre de 2013 Antes de nada, queremos darle las gracias por adquirir en zoominformatica.com este producto, esperamos que cubra todas sus expectativas
(PHP y APACHE), y el programa de comunicación Skype, para controlar de manera
Capítulo 4. Llamada Telefónica En este capítulo se explicará la manera en que se configuraron las herramientas web (PHP y APACHE), y el programa de comunicación Skype, para controlar de manera dinámica
INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA
INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA TERMINAL SERVER TUTOR: JORGE CASTELLANOS MORFIN 19/02/2012 VILLA DE ALVARES, COLIMA Indice Introducción... 3 Objetivo... 3 Lista de Materiales... 3 Procedimiento...
TciSatSingleW32 Versión 3.1
http://www.tci.net.pe Página 1 de 19 TciSatSingleW32 Versión 3.1 http://www.tci.net.pe Página 2 de 19 Tabla de Contenidos 1. Introducción.... 3 2. Consideraciones al instalar... 3 3. Pantalla Principal...
Instalación de Microsoft Virtual PC
Instalación de Microsoft Virtual PC Virtual PC es un software de Microsoft que permite instalar varios sistemas operativos en la misma máquina, sin tener que reiniciar Windows y además de forma segura,
Accesibilidad web GUÍA FUNCIONAL
Accesibilidad web GUÍA FUNCIONAL 0 _ ÍNDICE 01_Introducción 02_Primeros pasos 03_Conceptos 04_Navegación por voz 05_Navegación por teclado 06_Navegación por sonido 07_Compatibilidad con lectores de pantalla
1. Creación del repositorio
FACULTADE DE INFORMÁTICA Departamento de Computación Tecnología de la Programación 2008-2009 Ingeniería Informática Práctica 1: Subversion Introducción El objetivo de esta práctica es aprender a manejar
GVisualPDA Módulo de Almacén
GVisualPDA Módulo de Almacén GVisualPDA es una aplicación para Windows Mobile 5/6 que amplía más aún las posibilidades de integración del software de gestión GVisualRec permitiendo estar conectados en
Portal Del Emisor MANUAL DEL USUARIO. Plataforma de Facturación Electrónica
Portal Del Emisor MANUAL DEL USUARIO Plataforma de Facturación Electrónica 1. Índice 1. Índice... 2 2. Descripción General... 3 2.1. Alcance... 3 2.2. Flujo de navegación... 4 2.3. Perfil del Usuario...
INSTALACIÓN DE MEDPRO
1 Estimado Cliente: Uno de los objetivos que nos hemos marcado con nuestra nueva plataforma de gestión, es que un cliente pueda instalar MedPro y realizar su puesta en marcha de forma autónoma. Siga paso
efactura Online La fibra no tiene competencia
Manual efactura Online La fibra no tiene competencia ÍNDICE efactura Online Interface de efactura Online Barra Superior Área de Trabajo. Pestañas Empresas Personalizar factura Clientes Facturar Crear una
Guía de acceso a Meff por Terminal Server
Guía de acceso a Meff por Terminal Server Fecha:15 Marzo 2011 Versión: 1.02 Historia de Revisiones Versión Fecha Descripción 1.00 03/07/2009 Primera versión 1.01 13/08/2009 Incorporación dominio 1.02 15/03/2011
Módulo 1 El lenguaje Java
Módulo 1 El lenguaje 1.1 Presentación de es un lenguaje de programación desarrollado por la empresa Sun Microsystems en 1991 como parte de un proyecto secreto de investigación llamado Green Proyect, con
15 CORREO WEB CORREO WEB
CORREO WEB Anteriormente Hemos visto cómo funciona el correo electrónico, y cómo necesitábamos tener un programa cliente (Outlook Express) para gestionar los mensajes de correo electrónico. Sin embargo,
Práctica 3ProgramacionRS232: Programación básica de la RS232
Práctica 3ProgramacionRS232: Programación básica de la RS232 1 Objetivos El objetivo de esta práctica es la iniciación del alumno en la programación de las comunicaciones en un entorno de desarrollo basado
Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta
Configuración de una red con Windows Aunque existen múltiples sistemas operativos, el más utilizado en todo el mundo sigue siendo Windows de Microsoft. Por este motivo, vamos a aprender los pasos para
Manual de Operación Teléfono IP AVAYA 1603
PRESENTACIÓN Esta guía ha sido diseñada por el Grupo Organización y Sistemas, para facilitar la consulta de las funciones del Teléfono IP 1603, por parte de los diferentes funcionarios de la Universidad
Manual de uso Básico del Equipo de Cómputo
2011 Manual de uso Básico del Equipo de Cómputo Este es un manual básico que consolida las guías prácticas de las actividades informáticas más frecuentes que se utilizan en el Ministerio de Educación.
Programación Orientada a Objetos. Java: Excepciones
Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España
INNOVATALK PBX (INNO-PBX) COMUNICACIONES UNIFICADAS Funcionalidades de instalación
INNOVATALK PBX (INNO-PBX) COMUNICACIONES UNIFICADAS Funcionalidades de instalación Departamento TI InnovaTalk SRL Inno-PBX-Asterisk Funcionalidades de instalación Página - 1 - ÍNDICE 1. INTRODUCCIÓN...
Explotación de Sistemas Informáticos IES Murgi 2006-2007 PRÁCTICA 9: SERVICIO WEB Y FTP DE INTERNET INFORMATION SERVICE
PRÁCTICA 9: SERVICIO WEB Y FTP DE INTERNET INFORMATION SERVICE Índice 1. Instalación...2 2. Administrar los sitios Web... 4 3. Crear un nuevo sitio Web... 4 4. Creación de directorios virtuales... 5 5.
Cuestionario: Programación en C y máscaras (II)
Este documento es un autotest de ayuda enmarcado en la asignatura Informática Industrial y corresponde al tema Programación en C, pero es abierto y puede servir para entender el funcionamiento básico de
Polycom IP 650. Guía de usuario. www.escaux.com
Polycom IP 650 Guía de usuario Contenido Vista general Opciones básicas Cómo hacer una llamada Cómo responder a una llamada Cómo terminar una llamada Cómo rehacer una llamada Cómo silenciar una llamada
REDES INFORMATICAS: Protocolo IP
REDES INFORMATICAS: Protocolo IP 1. PRINCIPIOS BÁSICOS DE IP El protocolo IP se basa en tres principios básicos: Un direccionamiento de los ordenadores. Un tipo de dato: el datragrama IP. Un algoritmo
DOCENTES FORMADORES UGEL 03 PRIMARIA
DOCENTES FORMADORES UGEL 03 PRIMARIA 1. Recursos y Aplicaciones del Servidor La página de inicio del servidor (http://escuela) contiene los enlaces a las aplicaciones instaladas en el servidor, un enlace
Instalación de FileZilla FTP Server
Instalación de FileZilla FTP Server [Ir a Página principal] El proceso de instalación es muy sencillo, solamente en algunos pasos tendremos que realizar acciones como elegir el tipo de instalación o de
Instalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.
1/21 Instalación Interfaz gráfico Requerimientos Proceso de instalación Pantalla de login Pantalla principal Descripción de los frames y botones Programación de Backups Botones generales Botones de programación
GedicoPDA: software de preventa
GedicoPDA: software de preventa GedicoPDA es un sistema integrado para la toma de pedidos de preventa y gestión de cobros diseñado para trabajar con ruteros de clientes. La aplicación PDA está perfectamente
COMPARTIR RECURSOS. Pag. 1 de 7
COMPARTIR RECURSOS Una de las ventajas de tener instalada una red local es que ésta nos permite compartir recursos, tales como ficheros, impresoras, lectores de CD-ROM, etc. Este sistema es ideal para
(decimal) 128.10.2.30 (hexadecimal) 80.0A.02.1E (binario) 10000000.00001010.00000010.00011110
REDES Internet no es un nuevo tipo de red física, sino un conjunto de tecnologías que permiten interconectar redes muy distintas entre sí. Internet no es dependiente de la máquina ni del sistema operativo
T3-Rondas V 1.1. Help-Pc, S.L. C/ Pintor Pau Roig, 39 L-5 08330 Premià de Mar Barcelona Tel. (93) 754 90 19 Fax 93 752 35 18 marketing@t2app.
T3-Rondas V 1.1 1 Indice 1 Requisitos mínimos 3 2 Instalación 3 2.1 Instalación del software 3 2.2 Instalación del terminal 4 3 Configuración Inicial 4 3.1 Crear terminales 5 3.2 Crear puntos de lectura
PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN
PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN Los protocolos de capa de aplicación de TCP/IP más conocidos son aquellos que proporcionan intercambio de la información
GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS
ARCHIVOS ANEXOS Son los documentos, hojas de cálculo o cualquier archivo que se anexa a las carpetas, subcarpetas, hallazgos u otros formularios de papeles de trabajo. Estos archivos constituyen la evidencia
Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation.
WINDOWS Windows, Es un Sistema Operativo. Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. Dentro de los tipos de Software es un tipo de software de Sistemas. Windows
Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...
Contenido Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp... 5 Introducción Es tiempo de hablar en detalle de lo que significa
VideoSoftPHONE Active Contact
VideoSoftPHONE Active Contact 1 ÍNDICE 1. CÓMO INSTALAR MI VIDEOSOFTPHONE SOFTWARE?... 1 1.1. REQUISITOS PREVIOS... 1 1.1.1. Requisitos del sistema... 1 1.1.2. Requisitos Software... 1 1.2. INSTALACIÓN...
Paso 2 Una vez se ha completado la instalación y ejecutado el programa, veremos esto
Configuración de FTP con Filezilla El uso de FTP facilitara la forma de trabajar con nuestro servidor, los programas de FTP son una alternativa mas practica al gestor de archivos de nuestro panel de control,
Implantar Microsoft Software Updates Service (SUS)
Implantar Microsoft Software Updates Service (SUS) Guía rápida de instalación Versión: 1.0 Autor: Paulino Insausti Barrenetxea Fecha: 15 de Junio de 2005 Licencia: CreativeCommons - ShareAlike Indice 1.Introducción...
MANUAL PARA EL AGENTE DOCUMENTO EXTERNO
MANUAL PARA EL AGENTE DOCUMENTO EXTERNO MANUAL WEBTOP Tabla de contenido 1. Introducción... 3 2. Configuración... 3 2.1. Instalación del complemento java... 3 3. Manejo de la aplicación... 4 3.1. Descripción
COMO CONFIGURAR DISA EN ELASTIX
En este manual se presenta el proceso de configuración del servicio DISA (Direct Inward System Access) en un sistema Elastix, DISA (Direct Inward System Access) permite que alguien que llama desde fuera
Curso de PHP con MySQL Gratis
Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este
Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.
Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la
UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO
www.ubs-systems.com Teléfono: 91 3681185 UNIDESYS UNIVERSAL BUSINESS SYSTEMS INSTALACIÓN NUEVO PUESTO DE TRABAJO Unidesys Versión 2011 1 CONTENIDO 1 INTRODUCCIÓN 3 2 FUENTES DE DATOS 4 3 INSTALACIÓN DEL
Universidad ORT - Arquitectura de Software. Requisitos
Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación
Máquinas Virtuales. FUNDAMENTOS DE SEGURIDAD Profesor: Luis Alfonso Jiménez Piedrahita. Qué es una máquina virtual?
Máquinas Virtuales Qué es una máquina virtual? En informática una máquina virtual es un software que emula a un computador y puede ejecutar programas como si fuera un computador real. Una característica
Toda base de datos relacional se basa en dos objetos
1. INTRODUCCIÓN Toda base de datos relacional se basa en dos objetos fundamentales: las tablas y las relaciones. Sin embargo, en SQL Server, una base de datos puede contener otros objetos también importantes.
Definiciones. Tema 21_Módulos Menú 1
Definiciones Un menú es una lista de opciones o de órdenes que forman parte de un mismo título, mediante los cuales se podrán seleccionar determinadas operaciones de la aplicación. El conjunto de todos
Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia
Cómo instalar fácilmente tu WordPress tras contratar un hosting en Hostalia Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com La puesta en marcha de WordPress es muy sencilla,
Cómo instalar el software de CRM Personas en un alojamiento web remoto
Cómo instalar el software de CRM Personas en un alojamiento web remoto No es el uso pretendido del programa. Usar bajo responsabilidad propia de manera experimental Índice de contenido Cómo usar el CRM
19. Packages o paquetes
Programación orientada a objetos con Java 201 19. Packages o paquetes Objetivos: a) Definir el concepto de paquete b) Interpretar el código fuente de una aplicación Java donde se utilicen paquetes c) Construir
5.2.- Configuración de un Servidor DHCP en Windows 2003 Server
5.2.- Configuración de un Servidor DHCP en Windows 2003 Server En este apartado vamos a configurar el servidor DHCP de "Windows 2003 Server", instalado en el apartado anterior. Lo primero que hemos de
Escritorio remoto y VPN. Cómo conectarse desde Windows 7
Escritorio remoto y VPN. Cómo conectarse desde Windows 7 Hay ocasiones en las que es necesario conectarnos a un equipo informático situado a mucha distancia de donde nos encontramos para realizar sobre
Instalación del Software Magaya
Instalación del Software Magaya INSTALACIÓN DEL SOFTWARE MAGAYA INTRODUCCIÓN A LA INSTALACIÓN DEL SOFTWARE MAGAYA Introducción a la Instalación del Software Magaya Este tema de instalación explica las
MODELO DE IMPLEMENTACIÓN
Capítulo 4 MODELO DE IMPLEMENTACIÓN 4.1 Introducción El Modelo de implementación utiliza el resultado del Modelo de diseño para generar el código final en el lenguaje de programación elegido [10]. Aunque
Thomson ST2022 y ST2030 VoIP Business Phone. Guía rápida de instalación y uso
Thomson ST2022 y ST2030 VoIP Business Phone Guía rápida de instalación y uso Bienvenido a BT icomms, nuestro servicio de comunicaciones unificadas. A partir de ahora, se beneficiará de las funciones de
