|
|
|
|
#!/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<EFBFBD>rio ou senha inv<EFBFBD>lidos.");
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
GravaLog_("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);
|
|
|
|
|
|
|
|
|
|
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 = split("\r\n", $data);
|
|
|
|
|
foreach ($items as $item) {
|
|
|
|
|
if (strlen($item) > 0) {
|
|
|
|
|
$tmp = split(": ", $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();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
?>
|