forked from SimplesIP/pabx-app
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
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); |
|
} |
|
?>
|
|
|