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;
}
martes, 28 de julio de 2009
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;
}
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);
}
}
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
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"><span style="font-style: italic;"><applet 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>
- 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"><span style="font-style: italic;"><applet 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 ).
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 ).
Establecer contraseña root en mysql.
Información extraida de
Tranquilidad tecnologica
Por lo menos a mi, cada dos por tres se me olvida la contraseña de acceso a mysql del usuario root, y en ocasiones no hay mas manera que resetearla, el proceso es bastante sencillo.
1 - Como root paramos el servicio mysql : $ /etc/init.d/mysqld stop
2- Creamos un fichero de inicio con la instrucción para resetear la clave :
$ echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Nueva contraseña');" > /init.my
3- Ejecutamos mysql_safe pasandole el fichero de inicio que hemos creado
$ mysqld_safe --init-file=/init.my
4- Con esto la clave ya esta reseteada, por ultimo podemos borrar el fichero creado /init.my
$ rm /init.my
Tranquilidad tecnologica
Por lo menos a mi, cada dos por tres se me olvida la contraseña de acceso a mysql del usuario root, y en ocasiones no hay mas manera que resetearla, el proceso es bastante sencillo.
1 - Como root paramos el servicio mysql : $ /etc/init.d/mysqld stop
2- Creamos un fichero de inicio con la instrucción para resetear la clave :
$ echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('Nueva contraseña');" > /init.my
3- Ejecutamos mysql_safe pasandole el fichero de inicio que hemos creado
$ mysqld_safe --init-file=/init.my
4- Con esto la clave ya esta reseteada, por ultimo podemos borrar el fichero creado /init.my
$ rm /init.my
Suscribirse a:
Entradas (Atom)