JTAPI. El API de Telefonía para Java

9
30484

En mi vida profesional estuve varios años trabajando en el departamento de investigación y desarrollo de una empresa de telefonía. En este tutorial, voy a brindar al lector
con conocimientos básicos de JTAPI una serie de ejemplos que le orienten y sirvan de base para realizar sus pruebas en su plataforma telefónica.

Este tutorial no es teórico, en caso de querer aprender acerca de este tema, recomiendo que se lea la especificación pues es bastante clara y fácil de comprender.

Introducción

En el mundillo Java, JTAPI es a la telefonía lo que JDBC es a las bases de datos.

Al igual que JDBC, JTAPI es una especificación (no una implementación) definida por Sun para el desarrollo de aplicaciones CTI en el lenguaje de programación Java.

¿Para que sirve JTAPI?

Su principal uso se da en aquellos entornos donde se requiere una programación de sistemas telefónicos. Por ejemplo, en los centros de llamadas a través
de los cuales las empresas realizan tareas de atención al cliente, telemarketing, etc.

¿Qué puedo hacer con JTAPI?

Entre otras muchas cosas podrá hacer las siguientes tareas:

  1. Realizar llamadas.
  2. Contestar llamadas.
  3. Capturar llamadas que están sonando en un determinado terminal.
  4. Realizar conferencias.
  5. Realizar transferencias tanto directas como indirectas.
  6. Realizar llamadas predictivas.
  7. Retener llamadas.
  8. Redireccionar llamadas.
  9. Recuperar llamadas retenidas.
  10. Obtener información de las llamadas en curso.
  11. Asociar datos a llamadas.
  12. Gestionar grupos de teleoperadores (agentes).
  13. Logar/deslogar a agentes en grupos.
  14. Gestionar las rutas por las que pasará la llamada.
  15. Gestionar la pantalla y el teclado de los dispositivos telefónicos.

Estructuración de JTAPI

JTAPI está estructurado en los siguientes paquetes:

  1. Core
  2. CallControl
  3. CallCenter
  4. Phone

Paquete Core

Bajo este paquete se incluyen las clases que aportan la funcionalidad básica que debe implementar un sistema telefónico para decir que implementa JTAPI.

  1. Realizar, finalizar y contestar llamadas.
  2. Obtener el estado en el que se encuentran el proveedor, las llamadas, los componentes de la llamada.
  3. Obtener los terminales y direcciones que forman parte del dominio del entorno telefónico.
  4. 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.

Ejemplo: Realización de una llamada telefónica.

Ejemplo: Descolgado automático de todas las llamadas que suenen en un terminal.

Paquete CallControl

Este paquete extiende el paquete Core, permitiendo la siguiente funcionalidad:

  1. Transferencia de llamadas tanto directas como indirectas.
  2. Realizar conferencias.
  3. Redireccionar llamadas.
  4. Descolgar llamadas que están sonando en otro terminal.
  5. Realizar llamadas de consulta.
  6. Agregar un terminal a una conferencia ya establecida.
  7. Retener y recuperar llamadas.
  8. Estados más finos sobre llamadas, terminales, conexiones, direcciones, etc.
  9. Información del número de teléfono de todos los interlocutores de la llamada.

Ejemplo: Realizar una llamada y transferirla a otro puesto.

Ejemplo: Conferencia de llamadas.

Paquete CallCenter

Este paquete extiende el paquete Core, permitiendo la siguiente funcionalidad:

  1. Operaciones con grupos de agentes (consultar y modificar).
  2. Obtener información de llamdas por grupo de agentes (teleoperadores, etc.).
  3. Consultar estados de agentes.
  4. Asociar datos (objetos) a llamadas.
  5. Realizar llamadas predictivas (muy usado en marcadores automáticos).

Ejemplo: Dar de alta a un agente en un grupo.

Ejemplo: Realizamos una llamada telefónica y le asociamos información de negocio.

Paquete Phone

Este paquete extiende el paquete Core, permitiendo la siguiente funcionalidad:

  1. Consultar y modificar la pantalla, el volumen y los indicadores luminosos de un terminal.
  2. Pulsar los botones del teclado del terminal.
  3. Monitorizar los cambios en la pantalla y detectar pulsaciones de las teclas.

Ejemplo: Pulsación de teclas.

Referencias

  • Especificación JTAPI
  • Introducción a JTAPI (PDF en Inglés)

Conclusiones

Comparada con otras APIs de teléfonia, desde mi punto de vista JTAPI gana por goleada en sencillez debido a su diseño orientado a objetos y portabilidad entre plataformas.
En su última versión (1.4) no le falta de nada, eso sí, cada proveedor de telefonía puede o no implementar lo que dice la especificación, para ello primeramente se debería
de preguntar por las capacidades del mismo en relación a cada clase (getCapabilities()).

Un saludo, espero que os haya resultado de ayuda.

Carlos García Pérez. Creador de MobileTest, un complemento educativo para los profesores y sus alumnos.

cgpcosmad@gmail.com

9 Comentarios

  1. Hola que tal, me gustaría saber la forma en que puedo identificar cuando una llamada se ha contestado satisfactoriamente, o cuando el destinatário no ha contestado la llamada?.
    Por cierto, los anteriores ejemplos me parecen muy buenos para las personas como yo que hemos comenzado con la paquetería JTAPI.
    Graicas.

  2. Hola \\\»Vainilla\\\».

    Si la implementación de JTAPI realizada por el proveedor y la linea (digital) lo permiten.. podrás registrar un oyente y detectar el evento que indique el cambio de estado apropiado…

    Saludos

  3. Carlos, cordial saludo:

    Me presenta el siguiente error en el momento de ejecutar la aplicación:

    javax.telephony.JtapiPeerUnavailableException: JtapiPeer: DefaultJtapiPeer could not be instantiated.

    Gracias por tu ayuda.

    Manuel

  4. Tengo una pregunta cómo identificar llamadas con jtapi????
    Porque me pidieron que hiciera eso y no tengo idea de cómo hacerlo.
    Utilizo Netbeans y Java.
    Por favor una ayuda no me vendría mal.

  5. Hola
    Quiero desarrollar una aplicacion en la que pueda identificar el numero de la extension emisora, y grabar la conversacion. Alguna luz sobre como puedo hacer esto con JTAPI?.
    Como conecto el codigo con el telefono (Como es la comunicacion entre el telefono y el codigo java, por serial, usb…etc)?

    Gracias por tu colaboracion.

  6. Hola, disculpa
    necesito desarrollar una aplicacion en la q se tendra q identificar el numero entrante, con eso ya podria hacer el resto del trabajo, porfavor me podrias decir si es posible esto con JTAPI.
    gracias de antemano

  7. Hola. Disculpe la molestia pero quiero pedirte ayuda en algo. Soy nueva programando y tengo que realizar un proyecto en .NET y pues quiero saber si esta libreria la puedo utilizar en .NET o tengo que buscar otra y como la puedo implementar

Dejar respuesta

Please enter your comment!
Please enter your name here