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.
177 lines
5.6 KiB
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 = 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(); |
|
} |
|
} |
|
?>
|
|
|