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.
 
 
 
 
 
 

177 lines
5.6 KiB

#!/usr/bin/php -q
<?php
require "configAcesso.php";
$timeout = 30;
$socket = fsockopen("127.0.0.1", "5038", $errno, $errstr, $timeout);
fwrite($socket, "action: login\r\n");
fwrite($socket, "username: manager\r\n");
fwrite($socket, "secret: manager007\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.");
exit();
}
}
} else {
GravaLog_("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);
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 = explode("\r\n", $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) {
$result = array();
foreach ($qs_response['eventos'] as $item) {
if ($item['Event'] == "QueueParams") {
$result[$item['Queue']]['Queue'] = $item['Queue'];
$result[$item['Queue']]['Max'] = $item['Max'];
$result[$item['Queue']]['Calls'] = $item['Calls'];
$result[$item['Queue']]['Holdtime'] = $item['Holdtime'];
$result[$item['Queue']]['Completed'] = $item['Completed'];
$result[$item['Queue']]['Abandoned'] = $item['Abandoned'];
$result[$item['Queue']]['ServiceLevel'] = $item['ServiceLevel'];
$result[$item['Queue']]['ServicelevelPerf'] = $item['ServicelevelPerf'];
$result[$item['Queue']]['Weight'] = $item['Weight'];
} elseif ($item['Event'] == "QueueMember") {
$i = count($result[$item['Queue']]['Miembros']);
$result[$item['Queue']]['Miembros'][$i]['Location'] = $item['Location'];
$result[$item['Queue']]['Miembros'][$i]['Membership'] = $item['Membership'];
$result[$item['Queue']]['Miembros'][$i]['Penalty'] = $item['Penalty'];
$result[$item['Queue']]['Miembros'][$i]['CallsTaken'] = $item['CallsTaken'];
$result[$item['Queue']]['Miembros'][$i]['LastCall'] = $item['LastCall'];
$result[$item['Queue']]['Miembros'][$i]['Status'] = $item['Status'];
$result[$item['Queue']]['Miembros'][$i]['Paused'] = $item['Paused'];
}
}
return $result;
}
function connect_db() {
$str = GetDefStrDb();
//$conexao = pg_connect("dbname=sippbx port=5432 host=127.0.0.1 user=simplesip password=smplsIP");
$conexao = pg_connect($str);
if (!$conexao) {
GravaLog_("Erro de conexao!!! String: $str\n Erro: " . pg_last_error() . "\n");
exit;
}
}
function GravaLog_($msg) {
// $fp = fopen('/var/log/atualiza-dacs.log', 'a');
$data = date();
fwrite($fp, $data);
fwrite($fp, $msg);
fclose($fp);
}
foreach ($colas as $cola) {
connect_db();
$RSNumero = "SELECT
dac
FROM
pbx_supervisor_dacs
WHERE
dac = '" . $cola['Queue'] . "'";
$RS_Sql = pg_query($RSNumero);
$N_coluna = pg_num_rows($RS_Sql);
if ($N_coluna > 0) {
$query = "UPDATE
pbx_supervisor_dacs
SET
atendidas = '" . $cola['Completed'] . "',
abandonadas = '" . $cola['Abandoned'] . "',
espera = '" . $cola['Calls'] . "',
tempo_espera = '" . $cola['Holdtime'] . "',
tempo_nivel_servico = '" . $cola['ServiceLevel'] . "',
percentual_nivel_servico = '" . $cola['ServicelevelPerf'] . "'
WHERE
dac = '" . $cola['Queue'] . "'";
pg_query($query);
pg_close();
} else {
$query = "INSERT INTO
pbx_supervisor_dacs (atendidas, abandonadas, espera, tempo_espera, tempo_nivel_servico,percentual_nivel_servico, dac)
VALUES
('" . $cola['Completed'] . "','" . $cola['Abandoned'] . "','" . $cola['Calls'] . "',
'" . $cola['Holdtime'] . "','" . $cola['ServiceLevel'] . "','" . $cola['ServicelevelPerf'] . "',
'" . $cola['Queue'] . "')";
pg_query($query);
pg_close();
}
}
?>