|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
error_reporting(E_ERROR);
|
|
|
|
|
ini_set('display_errors', 0);
|
|
|
|
|
require "bd.php";
|
|
|
|
|
require "util/util.php";
|
|
|
|
|
|
|
|
|
|
$timeout = 30;
|
|
|
|
|
list($sckHost, $sckPort, $sckUser, $sckPass) = GetSckConnect();
|
|
|
|
|
$socket = fsockopen($sckHost, $sckPort, $errno, $errstr, $timeout);
|
|
|
|
|
fwrite($socket, "action: login\r\n");
|
|
|
|
|
fwrite($socket, "username: $sckUser\r\n");
|
|
|
|
|
fwrite($socket, "secret: $sckPass\r\n");
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
fwrite($socket, "actionid: " . $actionid . "\r\n\r\n");
|
|
|
|
|
|
|
|
|
|
if ($socket) {
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$bufer = fgets($socket);
|
|
|
|
|
if (stristr($bufer, "Authentication accepted")) {
|
|
|
|
|
break;
|
|
|
|
|
} elseif (stristr($bufer, "Authentication failed")) {
|
|
|
|
|
fclose($socket);
|
|
|
|
|
echo("Usu<EFBFBD>rio ou senha inv<EFBFBD>lidos.");
|
|
|
|
|
GravaLogAtuDacs("N<EFBFBD>o foi poss<EFBFBD>vel se conectar ao manager!!!\n");
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
GravaLogAtuDacs("N<EFBFBD>o foi poss<EFBFBD>vel se conectar ao manager!!!\n");
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$comando = "action: queuestatus\r\n";
|
|
|
|
|
$respuesta = exec_cmd($comando, $socket, "Event: QueueStatusComplete");
|
|
|
|
|
$colas = ArmaArrayColas($respuesta);
|
|
|
|
|
$comando = "action: logoff\r\n";
|
|
|
|
|
exec_cmd($comando, $socket, "Message: Thanks for all the fish.");
|
|
|
|
|
fclose($socket);
|
|
|
|
|
|
|
|
|
|
foreach ($colas as $key => $cola) {
|
|
|
|
|
|
|
|
|
|
$query = sprintf("select dac from pbx_supervisor_dacs WHERE dac = %s", QuotedStr($key));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$exists = pg_num_rows($result);
|
|
|
|
|
|
|
|
|
|
if ($exists) {
|
|
|
|
|
$query = "update pbx_supervisor_dacs set atendidas = %s, abandonadas = %s, espera = %s, tempo_espera = %s, tempo_nivel_servico = %s, percentual_nivel_servico = %s where dac = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($cola['Completed']), QuotedStr($cola['Abandoned']), QuotedStr($cola['Calls']), QuotedStr(($cola['Calls'] ? $cola['Holdtime'] : 0)), QuotedStr($cola['ServiceLevel']), QuotedStr($cola['ServicelevelPerf']), QuotedStr($key));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
} else {
|
|
|
|
|
$query = "insert into pbx_supervisor_dacs (atendidas, abandonadas, espera, tempo_espera, tempo_nivel_servico,percentual_nivel_servico, dac)values(%s,%s,%s,%s,%s,%s,%s)";
|
|
|
|
|
$query = sprintf($query, QuotedStr($cola['Completed']), QuotedStr($cola['Abandoned']), QuotedStr($cola['Calls']), QuotedStr(($cola['Calls'] ? $cola['Holdtime'] : 0)), QuotedStr($cola['ServiceLevel']), QuotedStr($cola['ServicelevelPerf']), QuotedStr($key));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
GravaLogAtuDacs("Erro ao executar cmd no banco de dados! Cmd: $query\n Erro: " . pg_last_error() . "\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Elimina evento abandon gerado pelo transbordo assistido.
|
|
|
|
|
*/
|
|
|
|
|
//@LimpaAbandonadas($dbcon);
|
|
|
|
|
@FechaPendenciaDiscador();
|
|
|
|
|
pg_close();
|
|
|
|
|
|
|
|
|
|
function exec_cmd($comando, $socket, $evento_fin) {
|
|
|
|
|
$actionid = rand(000000000, 9999999999);
|
|
|
|
|
$actionid = "actionid: " . $actionid . "\r\n";
|
|
|
|
|
$comando .= $actionid . "\r\n";
|
|
|
|
|
$paquete_mio = false;
|
|
|
|
|
$data = "";
|
|
|
|
|
$respuesta = array();
|
|
|
|
|
|
|
|
|
|
fwrite($socket, $comando);
|
|
|
|
|
|
|
|
|
|
while (!feof($socket)) {
|
|
|
|
|
$bufer = fgets($socket);
|
|
|
|
|
$data .= $bufer;
|
|
|
|
|
|
|
|
|
|
if (strtolower($bufer) == strtolower($actionid)) {
|
|
|
|
|
$paquete_mio = true;
|
|
|
|
|
}
|
|
|
|
|
if (strtolower($bufer) == "\r\n" && $paquete_mio == true) {
|
|
|
|
|
$paquete_mio = false;
|
|
|
|
|
$respuesta['eventos'][] = arma_paquete($data);
|
|
|
|
|
if (stristr($data, $evento_fin)) {
|
|
|
|
|
$data = "";
|
|
|
|
|
//echo("Respuesta a '".$comando."' completa<br><br>");
|
|
|
|
|
return $respuesta;
|
|
|
|
|
break;
|
|
|
|
|
} elseif (stristr($data, "Error")) { //detectamos una respueta de error al comnado
|
|
|
|
|
return $respuesta;
|
|
|
|
|
break;
|
|
|
|
|
} else {
|
|
|
|
|
$data = "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function arma_paquete($data) {
|
|
|
|
|
$items = preg_split("/[\n\r]/", $data);
|
|
|
|
|
foreach ($items as $item) {
|
|
|
|
|
if (strlen($item) > 0) {
|
|
|
|
|
$tmp = explode(": ", $item);
|
|
|
|
|
$clave = $tmp[0];
|
|
|
|
|
$valor = $tmp[1];
|
|
|
|
|
$evento[$clave] = $valor;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $evento;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ArmaArrayColas($qs_response) {
|
|
|
|
|
$events = $qs_response['eventos'];
|
|
|
|
|
$queues = array();
|
|
|
|
|
|
|
|
|
|
foreach ($events as $event) {
|
|
|
|
|
$nomeEvt = (array_key_exists('Event', $event)) ? $event["Event"] : '';
|
|
|
|
|
if ($nomeEvt == 'QueueParams') {
|
|
|
|
|
$queues[$event["Queue"]] = $event;
|
|
|
|
|
} else if ($nomeEvt == 'QueueEntry') {
|
|
|
|
|
$queues[$event["Queue"]]["Holdtime"] += $event["Wait"];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $queues;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaLogAtuDacs($msg) {
|
|
|
|
|
$fp = fopen('/var/log/atualiza-dacs.log', 'a');
|
|
|
|
|
$data = date();
|
|
|
|
|
fwrite($fp, $data);
|
|
|
|
|
fwrite($fp, $msg);
|
|
|
|
|
fclose($fp);
|
|
|
|
|
}
|
|
|
|
|
?>
|