|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
include('util/constantes.php');
|
|
|
|
|
include('util/util.php');
|
|
|
|
|
include('util/funcoesApl.php');
|
|
|
|
|
include('funcoes/shared.php');
|
|
|
|
|
include('util/funcoesLgpd.php');
|
|
|
|
|
include('bd.php');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Arquivo de log de erros.
|
|
|
|
|
*/
|
|
|
|
|
$pathLog = '/var/log/asterisk/lgpd_monitora.log';
|
|
|
|
|
|
|
|
|
|
$seq = 1;
|
|
|
|
|
GravaLog("\n\nInicio [{$seq}]\n\n", $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* Necessaro ajustar este campos em instalacoes novas.
|
|
|
|
|
*/
|
|
|
|
|
// psql -c "alter table pbx_supervisor_agentes alter column sala_1 type varchar(100)" -d pbx
|
|
|
|
|
// psql -c "alter table pbx_supervisor_agentes alter column sala_2 type varchar(100)" -d pbx
|
|
|
|
|
// alter table pbx_supervisor_agentes add lgpd_canal_supervisor varchar(128);
|
|
|
|
|
// alter table pbx_supervisor_agentes add lgpd_canal_monitorado varchar(128);
|
|
|
|
|
// alter table pbx_supervisor_agentes add lgpd_lgpdm_id varchar(32);
|
|
|
|
|
/*
|
|
|
|
|
psql -c "create table pbx_lgpd_monitora(
|
|
|
|
|
lgpdm_id bigint not null primary key,
|
|
|
|
|
lgpdm_matricula_supervisor varchar(10),
|
|
|
|
|
lgpdm_matricula_monitorado varchar(10),
|
|
|
|
|
lgpdm_uid varchar(32),
|
|
|
|
|
lgpdm_inicio timestamp not null default now(),
|
|
|
|
|
lgpdm_resposta_supervisor int,
|
|
|
|
|
lgpdm_resposta_supervisor_reg timestamp,
|
|
|
|
|
lgpdm_resposta_monitorado int,
|
|
|
|
|
lgpdm_resposta_monitorado_reg timestamp,
|
|
|
|
|
lgpdm_fim timestamp,
|
|
|
|
|
lgpdm_content text
|
|
|
|
|
);" -d pbx
|
|
|
|
|
*
|
|
|
|
|
* Acessa entrada padrao para executar comandos ami.
|
|
|
|
|
*/
|
|
|
|
|
ob_implicit_flush(true);
|
|
|
|
|
set_time_limit(6);
|
|
|
|
|
$in = fopen("php://stdin", "r");
|
|
|
|
|
$stdlog = fopen("/var/log/asterisk/intercala_lgpd.log", "w");
|
|
|
|
|
|
|
|
|
|
// toggle debugging output (more verbose)
|
|
|
|
|
$debug = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// parse agi headers into array
|
|
|
|
|
while ($env = read()) {
|
|
|
|
|
$s = explode(": ", $env);
|
|
|
|
|
$agi[str_replace("agi_", "", $s[0])] = trim($s[1]);
|
|
|
|
|
if (($env == "") || ($env == "\n")) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Parametros de linha de comando vindo do dialplan.
|
|
|
|
|
*/
|
|
|
|
|
$tipo = $argv[1];
|
|
|
|
|
$canal_agente = $argv[2];
|
|
|
|
|
$features = isset($argv[3]) ? $argv[3] : '';
|
|
|
|
|
$ramal_agente = isset($argv[4]) ? $argv[4] : '';
|
|
|
|
|
$arg = print_r($argv, true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
$host = "127.0.0.1";
|
|
|
|
|
$porta = "5038";
|
|
|
|
|
$usuario = "manager";
|
|
|
|
|
$senha = "manager007";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Se n<EFBFBD>o conseguir se conectar ao socket aborta o script.
|
|
|
|
|
*/
|
|
|
|
|
if (!$socket = conecta_ami($host, $porta, $usuario, $senha)) {
|
|
|
|
|
$msg = "Nao foi poss<EFBFBD>vel conectar ao socket. Erro: " . ErrorGetLast();
|
|
|
|
|
GeraExcept($msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GravaLog("\n\n###\n VARIAVEIS LGPD Tipo: {$tipo} Canal Agente: {$canal_agente} Features: {$features} Ramal Agente: {$ramal_agente} Argv: {$arg}\n###\n\n", $pathLog);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLog($ex->getMessage(), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($tipo == 'SUPERVISOR') {
|
|
|
|
|
try {
|
|
|
|
|
GravaLog(sprintf("### INICIO [%s] SUPERVISOR ###\n", ++$seq), $pathLog);
|
|
|
|
|
$infoLgpd = ___GetInfoLgpd($ramal_agente, '0');
|
|
|
|
|
/*
|
|
|
|
|
* Dial plan espcifico para supervisor.
|
|
|
|
|
*/
|
|
|
|
|
$canal_intercala = $argv[3];
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_supervisor_agentes set lgpd_canal_supervisor = '$canal_intercala' where ramal = '$ramal_agente'";
|
|
|
|
|
if (!$result = pg_query($conexao, $query)) {
|
|
|
|
|
$msg = "Erro ao registrar canal do suspervisor.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GeraExcept($msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra a resposta do supervisor
|
|
|
|
|
*/
|
|
|
|
|
$repostaSupervisor = is_numeric($argv[2]) ? $argv[2] : '0';
|
|
|
|
|
$pLgpd = $infoLgpd['lgpd_lgpdm_id'];
|
|
|
|
|
$query = "update pbx_lgpd_monitora set lgpdm_resposta_supervisor = '{$repostaSupervisor}', lgpdm_resposta_supervisor_reg = now() where lgpdm_id = '{$pLgpd}'";
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
$msg = "Erro ao registrar a resposta do supervisor.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GeraExcept($msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("\n### FIM SUPERVISOR %s ###\n", ''), $pathLog);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLog($ex->getMessage(), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
} else if ($tipo == 'INICIA') {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("\n####INICIA [%s] ######\n", ++$seq), $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* Envia aviso para o monitorado.
|
|
|
|
|
*/
|
|
|
|
|
envia_aviso($conexao, $socket, $ramal_agente);
|
|
|
|
|
GravaLog("envia_aviso Ramal Agnete: $ramal_agente\n", $pathLog);
|
|
|
|
|
usleep(300000);
|
|
|
|
|
/*
|
|
|
|
|
* Envia aviso ao supervisor
|
|
|
|
|
*/
|
|
|
|
|
configura_features($conexao, $socket, $canal_agente, $features);
|
|
|
|
|
GravaLog("configura_features Canal Agente: $canal_agente, Features: $features\n", $pathLog);
|
|
|
|
|
usleep(300000);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("\n### FIM INICIA %s ###\n", ''), $pathLog);
|
|
|
|
|
} else if ($tipo == 'AGENTE') {
|
|
|
|
|
GravaLog(sprintf("\n#### AGENTE [%s] ####\n", ++$seq), $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* o ramal do agente era obtido atraves da variavel callerid, entretanto quando
|
|
|
|
|
* o sistema manipula este valor, torna-se necess<EFBFBD>rio tentar obtelo da variavel
|
|
|
|
|
* RAMAL criada pela aplicacao.
|
|
|
|
|
*/
|
|
|
|
|
write("GET VARIABLE RAMAL");
|
|
|
|
|
$ramal_var = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
$ramal_agente = ValidaRamalApl($ramal_var) ? $ramal_var : $agi['callerid'];
|
|
|
|
|
$resposta = is_numeric(trim($argv[2])) ? $argv[2] : '0';
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("ramal_agente = %s resposta = %s RAMAL = %s\n", $ramal_agente, $resposta, $ramal_var), $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* PARA LIGACOES RECEBIDAS NA FILA O CALLERID NAO EH O NUMERO DO RAMAL E PRECISA RECUPERAR O CANAL_INTERCALA PELA MATRICULA
|
|
|
|
|
*/
|
|
|
|
|
// $canal = $agi['channel'];
|
|
|
|
|
// $agente = explode("/", $canal);
|
|
|
|
|
// $matricula = $agente[1];
|
|
|
|
|
|
|
|
|
|
write("GET VARIABLE MATRICULA");
|
|
|
|
|
$matricula = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("callerid = %s canal = %s\n", $agi['callerid'], $agi['channel']), $pathLog);
|
|
|
|
|
|
|
|
|
|
$query = "select canal_agente, uniqueid2 from pbx_supervisor_agentes where (ramal = '$ramal_agente') or (matricula = '$matricula')";
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
$msg = "Erro ao recuperar o ramal e canal intercala do agente na resposta 1.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GeraExcept($msg);
|
|
|
|
|
}
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
$canal_agente = $dados[0];
|
|
|
|
|
$uid = $dados[1];
|
|
|
|
|
GravaLog("Reupera canal do agente: canal-agente: {$canal_agente} uid: {$uid} \n{$query}\n", $pathLog);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra a resposta do agente
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
$infoLgpd = ___GetInfoLgpd($ramal_agente, $matricula);
|
|
|
|
|
$pLgpd = $infoLgpd['lgpd_lgpdm_id'];
|
|
|
|
|
$query = "update pbx_lgpd_monitora set lgpdm_resposta_monitorado = '{$resposta}', lgpdm_uid = '{$uid}', lgpdm_resposta_monitorado_reg = now() where lgpdm_id = '{$pLgpd}'";
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
$msg = "Erro ao registrar a resposta do agente.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GravaLog($msg, $pathLog);
|
|
|
|
|
}
|
|
|
|
|
GravaLog("Update Monitoria do agente: \n{$query}\n", $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* CASO O AGENTE AUTORIZE
|
|
|
|
|
*/
|
|
|
|
|
if ($resposta == '1') {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
write("STREAM FILE activated 0 0");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RECUPERA O RAMAL INTERCALA E CANAL INTERCALA GUARDADO TEMPORARIAMENTE NOS CAMPOS sala_1 E sala_2
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
$query = "select lgpd_canal_supervisor from pbx_supervisor_agentes where (ramal = '$ramal_agente') or (matricula = '$matricula')";
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
$msg = "Erro ao recuperar o ramal e canal intercala do agente na resposta 1.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GeraExcept($msg);
|
|
|
|
|
}
|
|
|
|
|
GravaLog("Resposta 1 canal do agente: \n{$query}\n", $pathLog);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
$canal_intercala = $dados[0];
|
|
|
|
|
|
|
|
|
|
if (!$socket) {
|
|
|
|
|
$msg = "Erro socket nao acessivel ao iniciar monitoria.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GeraExcept($msg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inicia_monitora($conexao, $socket, $ramal_agente, $ramal_intercala, $canal_intercala);
|
|
|
|
|
GravaLog("Chama inicia_monitora, canal-agente: {$canal_intercala} resposta agente = 1\n", $pathLog);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLog($ex->getMessage(), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
/*
|
|
|
|
|
* CASO O AGENTE NAO AUTORIZE
|
|
|
|
|
*/
|
|
|
|
|
write("STREAM FILE de-activated 0 0");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RECUPERA O RAMAL INTERCALA E CANAL INTERCALA GUARDADO TEMPORARIAMENTE NOS CAMPOS sala_1 E sala_2
|
|
|
|
|
*/
|
|
|
|
|
$query = "select lgpd_canal_supervisor from pbx_supervisor_agentes where (ramal = '$ramal_agente') or (matricula = '$matricula')";
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
$msg = "Erro ao recuperar o ramal e canal intercala do agente na resposta = 2.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GeraExcept($msg);
|
|
|
|
|
}
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
$canal_intercala = $dados[0];
|
|
|
|
|
hangup($socket, $canal_intercala);
|
|
|
|
|
|
|
|
|
|
GravaLog("Chama hangup\n", $pathLog);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLog($ex->getMessage(), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Limpa variavel DYNAMIC_FEATURES
|
|
|
|
|
*/
|
|
|
|
|
configura_features($conexao, $socket, $canal_agente, '');
|
|
|
|
|
GravaLog("configura_features Canal Agente: $canal, Features: $features\n", $pathLog);
|
|
|
|
|
usleep(300000);
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("\n### FIM AGENTE %s ###\n", ''), $pathLog);
|
|
|
|
|
} else if ($tipo == 'FIM') {
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("\n####BLOCO FIM [%s] ####\n", ++$seq), $pathLog);
|
|
|
|
|
$ramal_agente = $argv[2];
|
|
|
|
|
$infoLgpd = ___GetInfoLgpd($ramal_agente, '0');
|
|
|
|
|
$pLgpd = $infoLgpd['lgpd_lgpdm_id'];
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra a resposta do agente
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
$query = "update pbx_lgpd_monitora set lgpdm_fim = now() where lgpdm_id = '{$pLgpd}' and lgpdm_fim is null";
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
$msg = "Erro ao registrar a resposta do agente.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GravaLog($msg, $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Derruba o canal do supervisor.
|
|
|
|
|
*/
|
|
|
|
|
hangup($socket, $infoLgpd['lgpd_canal_supervisor']);
|
|
|
|
|
|
|
|
|
|
GravaLog(sprintf("\n### FIM BLOCO FIM %s ###\n", ''), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLog($ex->getMessage(), $pathLog);
|
|
|
|
|
}
|
|
|
|
|
++$seq;
|
|
|
|
|
GravaLog("\n\nFIM [{$seq}]\n\n", $pathLog);
|
|
|
|
|
/*
|
|
|
|
|
* Funcoes do script
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function conecta_ami($host, $porta, $usuario, $senha) {
|
|
|
|
|
$timeout = 20;
|
|
|
|
|
$socket = fsockopen($host, $porta, $errno, $errstr, $timeout);
|
|
|
|
|
|
|
|
|
|
__fwrite($socket, "action: login\r\n", 'conecta_ami');
|
|
|
|
|
__fwrite($socket, "username: $usuario\r\n");
|
|
|
|
|
__fwrite($socket, "secret: $senha\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")) {
|
|
|
|
|
return $socket;
|
|
|
|
|
} elseif (stristr($bufer, "Authentication failed")) {
|
|
|
|
|
fclose($socket);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$arquivo = fopen('/var/log/manager_lgpd.log', 'a');
|
|
|
|
|
$data = date("d/m/Y H:i:s");
|
|
|
|
|
__fwrite($arquivo, "$data\n");
|
|
|
|
|
__fwrite($arquivo, "Script abortado,falha de conexao com o socket!!!\n\n");
|
|
|
|
|
fclose($arquivo);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function configura_features($conexao, $socket, $canal_agente, $features) {
|
|
|
|
|
//
|
|
|
|
|
// Log stdin
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
__echoLog("DYNAMIC_FEATURES\n");
|
|
|
|
|
|
|
|
|
|
if ($features == 'originada') {
|
|
|
|
|
$features = "app-monitora-aceita-origina#app-monitora-bloqueia-origina";
|
|
|
|
|
} else if ($features) {
|
|
|
|
|
$features = "app-monitora-aceita-recebe#app-monitora-bloqueia-recebe";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n", 'configura_features');
|
|
|
|
|
__fwrite($socket, "Channel: $canal_agente\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: DYNAMIC_FEATURES\r\n");
|
|
|
|
|
__fwrite($socket, "Value: $features\r\n\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function configura_lgpd($conexao, $socket, $canal_agente, $features) {
|
|
|
|
|
//
|
|
|
|
|
// Log stdin
|
|
|
|
|
//
|
|
|
|
|
__echoLog("LGPD_VAR\n");
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n", 'configura_lgpd');
|
|
|
|
|
__fwrite($socket, "Channel: $canal_agente\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: LGPD_VAR\r\n");
|
|
|
|
|
__fwrite($socket, "Value: $features\r\n\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function envia_aviso($conexao, $socket, $ramal_agente) {
|
|
|
|
|
//
|
|
|
|
|
// log stdin
|
|
|
|
|
//
|
|
|
|
|
__echoLog("ENVIA_AVISO\n");
|
|
|
|
|
__fwrite($socket, "Action: Originate\r\n", 'envia_aviso');
|
|
|
|
|
__fwrite($socket, "Channel: Local/$ramal_agente@call-intercala-lgpd-inicia\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Context: intercala-aviso\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function hangup($socket, $canal_intercala) {
|
|
|
|
|
//
|
|
|
|
|
// log stdin
|
|
|
|
|
//
|
|
|
|
|
__echoLog("HANGUP-$canal_intercala\n");
|
|
|
|
|
__fwrite($socket, "Action: Hangup\r\n", 'hangup');
|
|
|
|
|
__fwrite($socket, "Channel: $canal_intercala\r\n\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function inicia_monitora($conexao, $socket, $ramal_agente, $ramal_intercala, $canal_intercala) {
|
|
|
|
|
|
|
|
|
|
//__fwrite($socket, "Action: Setvar\r\n");
|
|
|
|
|
//__fwrite($socket, "Channel: $canal_intercala\r\n");
|
|
|
|
|
//__fwrite($socket, "Variable: RAMAL\r\n");
|
|
|
|
|
//__fwrite($socket, "Value: $ramal_intercala\r\n\r\n");
|
|
|
|
|
//__fwrite($socket, "Action: Setvar\r\n");
|
|
|
|
|
//__fwrite($socket, "Channel: $canal_intercala\r\n");
|
|
|
|
|
//__fwrite($socket, "Variable: DESTINO\r\n");
|
|
|
|
|
//__fwrite($socket, "Value: $ramal_agente\r\n\r\n");
|
|
|
|
|
//
|
|
|
|
|
// log stdin
|
|
|
|
|
//
|
|
|
|
|
__echoLog("INICIA_INTERCALA\n");
|
|
|
|
|
__fwrite($socket, "Action: Redirect\r\n", 'inicia_monitora');
|
|
|
|
|
__fwrite($socket, "Channel: $canal_intercala\r\n");
|
|
|
|
|
__fwrite($socket, "Exten: s\r\n");
|
|
|
|
|
__fwrite($socket, "Context: call-monitora\r\n");
|
|
|
|
|
__fwrite($socket, "Priority: 1\r\n\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function limpa_features($conexao, $socket, $canal_agente, $features) {
|
|
|
|
|
|
|
|
|
|
__fwrite($socket, "Action: Setvar\r\n", 'limpa_features');
|
|
|
|
|
__fwrite($socket, "Channel: $canal_agente\r\n");
|
|
|
|
|
__fwrite($socket, "Variable: DYNAMIC_FEATURES\r\n");
|
|
|
|
|
__fwrite($socket, "Value: \r\n\r\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function read() {
|
|
|
|
|
global $in, $debug, $stdlog;
|
|
|
|
|
$input = str_replace("\n", "", fgets($in, 4096));
|
|
|
|
|
if ($debug)
|
|
|
|
|
fputs($stdlog, "read: $input\n");
|
|
|
|
|
return $input;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function errlog($line) {
|
|
|
|
|
global $err;
|
|
|
|
|
echo "VERBOSE \"$line\"\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function write($line) {
|
|
|
|
|
global $debug, $stdlog;
|
|
|
|
|
if ($debug)
|
|
|
|
|
fputs($stdlog, "write: $line\n");
|
|
|
|
|
echo $line . "\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __echoLog($msg) {
|
|
|
|
|
return false; //echo $msg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __fwrite($socket, $value, $function = '', $logOnly = false) {
|
|
|
|
|
global $debug, $pathLog;
|
|
|
|
|
|
|
|
|
|
$path = $pathLog; //sprintf("/var/log/asterisk/lgpd_ami_%s.log", date("Y-m-d"));
|
|
|
|
|
|
|
|
|
|
if (!$logOnly) {
|
|
|
|
|
fwrite($socket, $value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($debug) {
|
|
|
|
|
if ($function) {
|
|
|
|
|
GravaLog("\n[$function]\n", $path);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($value) {
|
|
|
|
|
GravaLog($value, $path);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ___GetInfoLgpd($ramalAgente, $matriculaAgente) {
|
|
|
|
|
global $pathLog;
|
|
|
|
|
$query = "select tipo_ligacao, lgpd_canal_supervisor, lgpd_canal_monitorado, lgpd_lgpdm_id from pbx_supervisor_agentes where (matricula = '$matriculaAgente' or ramal = '$ramalAgente')";
|
|
|
|
|
GravaLog(sprintf("___GetInfoLgpd [%s]\n", $query), $pathLog);
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
$msg = "Erro ao recuperar canal do agente para hangup.\nCMD[{$query}]\nErro: " . ErrorGetLast();
|
|
|
|
|
GravaLog($msg, $pathLog);
|
|
|
|
|
}
|
|
|
|
|
return pg_fetch_array($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// clean up file handlers etc.
|
|
|
|
|
fclose($in);
|
|
|
|
|
fclose($stdlog);
|
|
|
|
|
?>
|