Mostrando entradas con la etiqueta GCWeb. Mostrar todas las entradas
Mostrando entradas con la etiqueta GCWeb. Mostrar todas las entradas

domingo, 23 de agosto de 2009

Nueva versión GCWEB 1.2.1

Ventana principal
-> Mejoradas rutinas de conexion para obtener mayor velocidad.
-> Al cargar la pagina web también mostrara las llamadas que estaban en cola antes de su ejecución, en la versión anterior solo controlaba las que entraban en cola desde que se abria la pagina web.
-> Tambien se mostraran las llamadas que no estan en una cola o en el parking de llamadas, de forma que muestra una carga mas real de llamadas de la centralita.
-> Un nuevo botón llamado TODAS, nos muestra todas las llamadas que hay en la centralita tanto en una cola como no, el resto de botones continuan filtrando por la cola seleccionada.
-> En pantalla nos aparecera filtrado la cola en la que se haya efectuado el ultimo evento de entrada en cola, indicando el filtro actual en la cabecera.
-> En el menú contextual que aparece al hacer click con el botón derecho sobre cada llamada, ademas de transferir la llamada a la extensión que queramos ahora también podemos Terminar la llamada.

Ventana de mantenimiento
-> Se ha quitado el mensaje erróneo que indicaba que se iban a cortar las llamadas al recargar la cola.
-> Muestra un mensaje de comando ejecutado, compruebe el funcionamiento de la centralita, una vez ejecutado el comando.

Ventana de Registro de Llamadas
-> Si no se selecciona ninguna extensión para filtrar muestra el resultado de todas las extensiones.
-> En las fechas de inicio y de fin para la consulta se establece por defecto el dia actual
-> Se sustituye el campo destino por los campos "Destino inicial" y "Destino final", indicandonos cada uno de ellos el destino inicial de la llamada ( por ejemplo fue a la extensión 110 o a la cola 900) y destino final seria la extensión que finalmente contesto la llamada.
-> Añadido un menú contextual con dos opciones "Filtrar por" y "Traza de llamada", la opción "Filtrar por...", filtrara la consulta actual por el valor seleccionado en la celda en la que se ha activado el menú contextual, la opción "Traza de llamada" nos mostrara todos los registros generados por la llamada seleccionada, pudiendo estudiar los distintos estados en los que ha estado la llamada.
-> Añadido botón "Imprimir" que nos permite imprimir la tabla en el estado en que se esta mostrando por pantalla en ese momento.


Este es el enlace para la descarga
Un saludo

PD: Espero vuestras sugerencias.




Edit : El desarrollo del proyecto GCWeb, se encuentra de momento parado, trataremos de ponerlo en marcha de nuevo con mejoras.

martes, 28 de julio de 2009

Obtener estado de una extension determinada

Para obtener el estado de una extensión, utilizaremos la clase ManagerConnection y el método sendAction, la accion que utilizamos es ExtensionStateAction(), todo de las librerías asterisk-java.

/**
* Devuelve el estado de la extension en el contexto "from-internal"
* Los valores son :
* -1 Extensión no encontrada
* 0 Extensión disponible
* 1 Extensión en uso
* 2 Extensión ocupada
* 4 Extensión no disponible
* 8 Extensión sonando
* 16 Extensión en espera
*
* @param extensión
* @return int
*/
public int EstadoExtension(String extension) {
ExtensionStateAction accion;
ExtensionStateResponse respuesta;
ManagerConnection conect;
conect = servidorasterisk.getManagerConnection();
accion = new ExtensionStateAction();
accion.setContext("from-internal");
accion.setExten(extension);
try {
respuesta = (ExtensionStateResponse) conect.sendAction(accion, 1000);
return respuesta.getStatus();
} catch (IOException ex) {
Logger.getLogger(GCConexion.class.getName()).log(Level.SEVERE, null, ex);

} catch (TimeoutException ex) {
Logger.getLogger(GCConexion.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalArgumentException ex) {
Logger.getLogger(GCConexion.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalStateException ex) {
Logger.getLogger(GCConexion.class.getName()).log(Level.SEVERE, null, ex);
}

return -1;
}

Obtener listado de extensiones.

Método quizás no muy elegante, pero funcional, de obtener un vector con las extensiones SIP o IAX2 de una centralita asterisk, utilizando las librerías asterisk-java y el método "executeCliCommand" de la clase DefaultAsteriskServer.


public Vector ListarExtensiones(String tipo) throws ManagerCommunicationException {

String instruccion; // Guardaremos el resultado devuelto por el cli de asterisk
String[] partinstruccion = null; // Guardaremos cada una de las lineas de la instrucción
Vector listadoextensiones = new Vector(2); // Vector que se devolvera

// Ejecutamos el comando en asterisk que corresponda
if (tipo.equals("SIP")) {
instruccion = servidorasterisk.executeCliCommand("sip show peers").toString();
} else {
instruccion = servidorasterisk.executeCliCommand("iax2 show peers").toString();
}

// lo dividimos en lineas.
partinstruccion = instruccion.split(",");
// la primera y las tres ultimas lineas las podemos omitir.
// Separamos cada una de las palabras que nos darán las extensiones y
// lo vamos guardando en el vector.
for (int i = 1; i <>
StringTokenizer tokens = new StringTokenizer(partinstruccion[i]);
listadoextensiones.add(tokens.nextToken());
}
return listadoextensiones;
}

Crear una conexion con el servidor asterisk mediante DefaultAsteriskServer

Con esta primera entrada comienzo la colección de trozos de código útiles para, mediante la utilización de las librerías asterisk-java interactuar con el AMI de asterisk, espero que os sirva de ayuda.


import org.asteriskjava.live.DefaultASteriskServer;

public class GCConexion{

public DefaultAsteriskServer servidorasterisk;

public GCConexion(String servidor, String usuario, String password){


servidorasterisk = new DefaultAsteriskSErver(servidor, usuario,password);


}

}

sábado, 25 de julio de 2009

Capturas de pantalla de GCWeb

Pantalla principal del programa














Ventana de registro de llamadas




















Ventana de mantenimiento.
















Visualización de estado de extensiones y de llamadas

Configuración de GCWeb

Para el correcto funcionamiento de GCWeb, necesitamos:

- Practicamente todo el programa funciona conectandose a asterisk mediante el AMI ( Asterisk Manager Interface ) para lo cual necesitamos ademas del puerto correspondiente ( por defecto 5038) un usuario con el que poder conectarnos, para esto añadiremos un usuario en el fichero /etc/asterisk/manager.conf
[usuario_gcweb] secret = 1234 permyt=0.0.0.0/0.0.0.0 read = system,call,log,verbose,command,agent,user write = system,call,log,verbose,command,agent,user
- Un usuario con el que poder conectar por ssh.
- Un usuario de mysql con permisos para conectar desde el ordenador que se vaya a utiliza el applet ( o desde cualquier maquina ) y con acceso a la tabla cdr de la base de datos asteriskcdrdb
-
Un directorio web en el que poder colocar los ficheros.

Los ficheros de los que consta el Applet son dos, index.html y GCWeb2.jar, el primero es el fichero que abrira el explorador y donde colocaremos los parametros de conexion y el segundo es el applet propiamente dicho, ambos deben estar en el mismo directorio, el cual debe ser accesible por el servidor Apache.

Este seria el contenido del fichero index.html:

< code="GCWEB.class" archive="GCWeb2.jar" codebase="./" width="1076">&ltspan style="font-style: italic;">&ltapplet code="GCWEB.class" archive="GCWeb2.jar" codebase="./" height="747" width="1076">
< name="servidor" value="Dirección IP de la centralita">
< name="usuario" value="Usuario creado en manager.conf">
< name="password" value="Contraseña del usuario creado en manager.conf">
< name="usuariossh" value="Usuario con permiso de conexion por ssh">
< name="passwordssh" value="Contraseña del usuario de conexion ssh">
< name="servidormysql" value="Dirección ip del servidro mysql">
< name="usuariomysql" value="Usuario con permiso de conexion al servidor mysql">
< name="passwordmysql" value="Contraseña del usuario de conexion a mysql">
< /applet>

Presentación de GCWeb

Gestor de Colas Web, ( GCWeb ) es un applet creado a partir de las necesidades de un cliente, esta desarrollado en java y gracias a las librerías asterisk-java en su mayoría, aunque se usan otras como jsch para los comandos enviados por ssh o JExcelApi para la exportación de los resultados a Excel.

Este applet permite :
- Ver las llamadas que estan en una cola o en el parking de llamadas, incluyendo el tiempo de duración y el número del que proviene la llamada.
- Visualizar el estado de todas las extensiones SIP e IAX.
- Consultar el CDR de asterisk, filtrando por fecha de llamada, por extensión y por llamadas entrantes o salientes.
- Exportar los resultados de la consulta al cdr en formato xls.
- Ejecución de comandos desde la interfaz del propio applet.
- Reiniciar la centralita ( el ordenador ).
- Reiniciar servicios RDSI ( reiniciar wanrouter para las tarjeas sangoma )
- Reiniciar servicios asterisk.
- Recargar la configuración.
- Ejecución de cualquier comando del shell de linux escrito en un JText ( muy peligroso ).