PABX criado para pesquisas
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

141 lines
4.7 KiB

#!/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ário ou senha inválidos.");
GravaLogAtuDacs("Não foi possível se conectar ao manager!!!\n");
exit();
}
}
} else {
GravaLogAtuDacs("Não foi possí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);
}
?>