Saludos a todos los miembros de esta comunidad. No se si sea posible darme apoyo con Elastix aún, si la publicación es incorrecta agradecere hacermelo saber.
Estoy tratando de integrar Elastix con OsTicket de tal modo que el usuario al entrar la llamada pueda introducir el número de ticket generado por OsTicket y se realice la consulta a la base de datos, de tal modo que al realizar la consulta el sistema mediante un sonido predefinido le de el resultado al cliente.
Estoy usando un script que encontré en el antiguo foro de Elastix:
comprobarticket.php
#!/usr/bin/php -q
<?php
//llamamos a las librerías de phpagi
require("phpagi.php");
//activamos la bandera de enviar todo lo que se realice a consola como modo depuracion
error_reporting(E_ALL);
//creamos una instancia de la clase AGI
$agi = new AGI();
//generamos el comando Answer de Asterisk, este comando siempre lo ejecutamos al inicio de un AGI
$agi->answer();
//Este demo consultará información en una base de datos y regresará la información de forma hablada por lo que generamos una conexion a la base de datos de sql
$conexion = mysql_connect("LaIpDeTuServidorMysql","TuNombreDeUsuario","TuPass") or die("Error: El servidor no puede conectar con la base de datos");
//Referenciamos el cursor a la base de datos
mysql_select_db("NombreDeTuBBDD",$conexion);
//Reproducimos el archivo de audio que solicita que introduzca el número de ticket de soporte, del cual conocer su estado.
//El archivo de audio lo hemos grabado previamente desde elastix, y se almacena en /var/lib/asterisk/sounds/
//y viene a decir algo como: Despues del pitido, introduzca su número de ticket de soporte para conocer su estado actual, o marque 0 para salir.
$agi->exec(Playback,"introduceticket");
do {
//enviamos un beep y esperamos 25 segundos en la espera de una respuesta. Podemos cambiar el 'beep', por "Archivo_de_audio_propio"
$result = $agi->get_data('beep', 3000, 25);
//obtenemos la información introducida desde el telefono
$numticket = $result['result'];
//si introdujo un valor el cliente entonces creamos el string la consulta sql y la ejecutamos
if($numticket!=""){
$query = "select status from ost_ticket where ticketID=\"$numticket\" ";
$result = mysql_query($query, $conexion);
//verificamos si existe un resultado
if($re = mysql_fetch_array($result)) {
//Comprobamos si el estado recuperado de la BBD es open
if ($re[status] == "open") {
//y si es así, reproduzco un audio pregrabado llamado abierta que dice algo como: Su incidencia aún está en situación de resolverse. Vuelva a consultar su estado pasado pasadas unas horas.
$agi->exec(Playback,"abierta");
}
//Comprobamos si el estado recuperado de la BBD es closed
if ($_re[status] == "closed") {
//y si es así, reproduzco un audio pregrabado llamado cerrada que dice algo como: Su incidencia está resuelta. Puede recoger su equipo cuando desee.
$agi->exec(Playback,"cerrada");
}
}else{
//de lo contrario enviamos un mensaje de que el ticket no pudo ser encontrado
if ($numticket!='0'){
$agi->exec(Playback,"noencontrado");
}
}
if ($numticket!='0'){
$agi->exec(Playback,"introduceticket");
}
}
} while($numticket != '0'); //Continuamos solicitando números de ticket mientras el cliente no marque 0 para salir
//Reproducimos el archivo de audio de despedida, agradeciendo el uso del sistema.
//El archivo de audio lo hemos grabado previamente desde elastix, y se almacena en /var/lib/asterisk/sounds/
//y viene a decir algo como: Gracias por utilizar el sistema de control de tickets.
$agi->exec(Playback,"despedida");
//al finalizar el script del AGI siempre es recomendable ejecutar esta función para no dejar el canal abierto.
$agi->hangup();
?>
ya hice las modificaciones necesarias pero al parecer mi sistema elastix no puede conectarse a la base de datos aunque ya hice pruebas externas y si es posible la conexión.
Este es el resultado cuando hago la llamada a la extensión 105 la cual asigne para este proceso, el teléfono sencillamente cuelga sin hacer nada más:
-- Starting simple switch on 'DAHDI/4-1'
-- Executing [105@from-internal:1] Answer("DAHDI/4-1", "") in new stack
-- Executing [105@from-internal:2] AGI("DAHDI/4-1", "/var/lib/asterisk/agi-bin/comprobarticket.php") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/comprobarticket.php
-- <DAHDI/4-1>AGI Script /var/lib/asterisk/agi-bin/comprobarticket.php completed, returning 0
-- Executing [105@from-internal:3] Hangup("DAHDI/4-1", "") in new stack
== Spawn extension (from-internal, 105, 3) exited non-zero on 'DAHDI/4-1'
-- Executing [h@from-internal:1] Macro("DAHDI/4-1", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("DAHDI/4-1", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("DAHDI/4-1", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("DAHDI/4-1", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,28)
-- Executing [s@macro-hangupcall:28] NoOp("DAHDI/4-1", "End of MEETME check") in new stack
-- Executing [s@macro-hangupcall:29] GotoIf("DAHDI/4-1", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] NoOp("DAHDI/4-1", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:35] GotoIf("DAHDI/4-1", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,41)
-- Executing [s@macro-hangupcall:41] NoOp("DAHDI/4-1", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:42] GotoIf("DAHDI/4-1", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,45)
-- Executing [s@macro-hangupcall:45] GotoIf("DAHDI/4-1", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,48)
-- Executing [s@macro-hangupcall:48] GotoIf("DAHDI/4-1", "1?theend") in new stack
-- Goto (macro-hangupcall,s,50)
-- Executing [s@macro-hangupcall:50] AGI("DAHDI/4-1", "hangup.agi") in new s tack
-- Launched AGI Script /var/lib/asterisk/agi-bin/hangup.agi
-- <DAHDI/4-1>AGI Script hangup.agi completed, returning 0
-- Executing [s@macro-hangupcall:51] Hangup("DAHDI/4-1", "") in new stack
== Spawn extension (macro-hangupcall, s, 51) exited non-zero on 'DAHDI/4-1' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'DAHDI/4-1'
-- Hanging up on 'DAHDI/4-1'
-- Hungup 'DAHDI/4-1'
¿alguien que me de una ayuda, por favor?