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.

385 lines
12 KiB

<?php
require '/var/lib/asterisk/scripts/integracao/dbAbstract.php';
include '/var/lib/asterisk/scripts/integracao/custom/funcoesCustom.php';
include("util/vocalizaData.php");
$scrpt = $argv[0];
$config = array('itgc_host', 'itgc_port', 'itgc_database', 'itgc_user', 'itgc_password');
$config = GetConfigIntegracao($connPG, 'CONSULTA_CLIENTE_NOTURNO', $config);
$user = $config['itgc_user'];
$passWord = $config['itgc_password'];
$host = $config['itgc_host'];
$port = $config['itgc_port'];
$dataBase = $config['itgc_database'];
$tipoDb = DB__PGSQL;
$pathSom = '/var/lib/asterisk/sounds/customizados/';
/*
* Interage com o asterisk, por funcoes agi.
*/
$agi = GetAgi();
/*
* Variaveis para o status da integra<EFBFBD><EFBFBD>o.
*/
$reg_retorno = $numero;
$reg_msg = '';
$reg_status_exec = '1';
$retorno_cliente = '';
/*
* Registra o inicio da integra<EFBFBD><EFBFBD>o. As variaveis passadas na fun<EFBFBD><EFBFBD>es s<EFBFBD>o iniciali-
* zadas em serverAgi.php.
*/
@RegistraIntegracao($idMetodo, $uid, $uidOld, $numero);
try {
$CPF = $agi->get_variable('URA', true);
$retornoCliente = consultaClienteNoturno($CPF);
$ip_verifica = ipAtualizado($retorno_cliente['id_cliente']);
if (!empty($ip_verifica) && $ip_verifica['ip_atual'] != $retorno_cliente['ip']) {
$ip = $ip_verifica['ip_atual'];
}
$ping = testePing($ip);
$meses = array(
'01' => 'janeiro',
'02' => 'fevereiro',
'03' => 'marco',
'04' => 'abril',
'05' => 'maio',
'06' => 'junho',
'07' => 'julho',
'08' => 'agosto',
'09' => 'setembro',
'10' => 'outubro',
'11' => 'novembro',
'12' => 'dezembro'
);
/**
* TESTE'
*/
//$retornoCliente['chamados'] = 1;
//$ping = true;
if($ping == false){
$chamado = abreChamados($retornoCliente['ip'], $retornoCliente['id_cliente'],
$retornoCliente['bairro'], $numero, $retornoCliente['ip'], $ip_verifica['ip_atual']);
$telefone = soNumero($retornoCliente['telefonecel']);
enviaAviso($telefone, $retornoCliente['email'], 1, $retornoCliente['ip'],$retornoCliente['nome_cliente']);
$agi->exec_goto(GetUra('CONEXAO_PROBLEMA'));
}elseif($retornoCliente['chamados'] > 0){
$audio = $pathSom.'51chamadoaberto_verb1';
$agi->stream_file($audio);
//$retornoCliente['unix_h_chamado'] = date('Y-m-d H:i:s');
//$retornoCliente['unix_h_chamado'] = '2019-03-26 00:00:00';
$valores = explode(" ",$retornoCliente['unix_h_chamado']);
$data = explode("-", $valores[0]);
if (substr($data[2], 0, 1) == 0) {
$dia = str_replace(0, '', $data[2]);
$agi->say_digits($dia);
} else {
foreach (VocalizaData($data[2]) as $valor){
$audio = $pathSom.$valor;
$agi->stream_file($audio);
}
}
$audio = $pathSom.'de';
$agi->stream_file($audio);
$audio = $pathSom.$meses[$data[1]];
$agi->stream_file($audio);
$audio = $pathSom.'de';
$agi->stream_file($audio);
foreach(VocalizaData($data[0]) as $valor){
$audio = $pathSom . $valor;
$agi->stream_file($audio);
}
usleep(500000);
$telefone = soNumero($retornoCliente['telefonecel']);
enviaAviso($telefone, $retornoCliente['email'],2,$retornoCliente['unix_h_chamado']);
//enviaAviso('65999797353', 'desenvolvimento01@simplesip.com.br',2,$retornoCliente['unix_h_chamado']);
$agi->exec_goto(GetAnuncio('CHAMADO_ABERTO'));
}elseif($retornoCliente['STATUS'] == 1 && $retornoCliente['groupname'] != 'REDUZIDO'){
$retorno_cliente = sprintf("%s|%s|%s|IdCliente:%s|Nome:%s|Groupname:%s|Cidade:%s|Bairro:%s|IP:%s",
$uid,$numero,'a132',
str_replace("|", "", $retornoCliente['id_cliente']),
str_replace("|", "", $retornoCliente['nome_cliente']),
str_replace("|", "", $retornoCliente['groupname']),
str_replace("|", "", $retornoCliente['cidade']),
str_replace("|", "", $retornoCliente['bairro']),
str_replace("|", "", $retornoCliente['ip']));
$agi->exec_goto(GetAnuncio('REDIRECIONA_ATEND_FORA'));
}else{
$agi->exec_goto(GetAnuncio('FORA_DE_HORA'));
}
} catch (Exception $ex) {
$reg_msg = $ex->getMessage();
$reg_status_exec = 'Er';
__logStr("Consulta de Cliente Noturno", $reg_msg . " Documento do Cliente: {$retornoCliente['cpf_cnpj']}", $script, true);
}
@AtualizaIntegracao($uid, $reg_retorno, $reg_msg, $reg_status_exec, $retorno_cliente);
if (!$dadosIntegra)
@grava_dadosIntegra($reg_retorno);
function ConnectPG() {
$dbPort = "5432";
$dbHost = "127.0.0.1";
$dbName = "pbx";
$dbUser = "contacte";
$dbPassword = "ctepgSQL";
$str = "host='$dbHost' port='$dbPort' dbname='$dbName' user='$dbUser' password='$dbPassword'";
return pg_connect($str);
}
function consultaClienteNoturno($paramCPF) {
$host = '192.168.77.103';
//$host = '177.125.37.103';
$user = 'voip';
$password = 'simplesip2019';
$database = 'admin';
//$port = '4444';
$port = '3306';
$connect = mysqli_connect($host, $user, $password, $database, $port);
try {
$sql = "SELECT c.id AS id_cliente,c.nome AS nome_cliente,c.cpfcnpj AS cpf_cnpj,c.telefonecel AS celular, c.email, COUNT(s.id) AS chamados, c.STATUS, l.groupname,
l.ip, unix_timestamp(s2.opendata) AS unix_h_chamado, c.cidade,c.bairro
FROM clientes AS c
LEFT JOIN (SELECT cliente_id, COUNT(id) AS id FROM suporte WHERE STATUS ='A' GROUP BY cliente_id) AS s ON c.id = s.cliente_id
LEFT JOIN (SELECT id,cliente_id,opendata FROM suporte WHERE STATUS ='A') AS s2 ON c.id = s2.cliente_id
LEFT JOIN login AS l ON c.id = l.cliente_id
WHERE c.STATUS IN (1,8) AND REPLACE(REPLACE(REPLACE(c.cpfcnpj,'.',''),'/',''),'-','') = '{$paramCPF}'
GROUP BY c.id LIMIT 1;";
$result = mysqli_query($connect, $sql);
$valor = mysqli_fetch_assoc($result);
} catch (Exception $ex) {
return Exception($ex);
}
mysqli_close($connect);
return $valor;
}
function testePing($ip) {
$res = false;
$numeroip = $ip;
$pingando = shell_exec("ping -c 4 $numeroip");
$p = explode(",", $pingando);
$res_ping = substr($p[1], 1, 2); //resposta do ping
if ($res_ping >= 2) {
$res = true;
}
return $res;
}
/**
* <b>Fun<EFBFBD><EFBFBD>o Para Abrir Chamados Automaticamente via URA</b>
*
* @param Boolean $ping - IP testado
* @param Int $id - ID do Cliente
* @param String $assunto - Bairro do cliente
* @param int $chamador2 - Telefone do Cliente
* @param String $ip_verifica - IP do Cadastro do cliente
* @param String $ip - IP atual do cliente
* @return resource
*/
function abreChamados($ping, $id, $assunto, $chamador2, $ip_verifica, $ip) {
$host = '192.168.77.103';
//$host = '177.125.37.103';
$user = 'voip';
$password = 'simplesip2019';
$database = 'admin';
//$port = '4444';
$port = '3306';
$connect = mysqli_connect($host, $user, $password, $database, $port);
$usuario_myauth = 30366;
try {
## verifica myauth
$testePing = testePing($ping);
if ($testePing == false) {
$cliente_id = $id;
$sql = "INSERT INTO suporte (status,cliente_id,owner_id,type_id,subject,description,opendata)
VALUES ('A',$cliente_id,$usuario_myauth,14,'$assunto - URA','CHAMADO AUTOMATICO - $chamador2 - URA - $ip_verifica - $ip',now())";
$result = mysqli_query($connect, $sql);
}
} catch (Exception $ex) {
return $ex;
}
return $result;
}
function ipAtualizado($client_id) {
$host = '192.168.77.103';
//$host = '177.125.37.103';
$user = 'voip';
$password = 'simplesip2019';
$database = 'admin';
//$port = '4444';
$port = '3306';
$connect = mysqli_connect($host, $user, $password, $database, $port);
try {
$sql = "SELECT SQL_NO_CACHE c.id, r.username, c.status, r.nasipaddress, r.FramedIPAddress AS ip_atual, l.ip AS ip_cadastro, r.radacctid
FROM radius_acct AS r
LEFT JOIN login AS l ON r.username = l.user
LEFT JOIN clientes AS c ON l.cliente_id = c.id
WHERE r.acctstarttime >= date_sub(now(), INTERVAL 1 DAY)
AND r.AcctStopTime ='0000-00-00 00:00:00'
AND l.ip NOT LIKE '177.125.37%'
AND l.ip NOT LIKE '192.168.255%'
AND l.cliente_id = {$client_id}
ORDER BY 1 LIMIT 1 LOCK IN SHARE MODE";
$result = mysqli_query($connect, $sql);
$valor = mysqli_fetch_assoc($result);
} catch (Exception $ex) {
return Exception($ex);
}
mysqli_close($connect);
return $valor;
}
/**
* <b>Fun<EFBFBD><EFBFBD>o para enviar email personalizado ao cliente</b>
*
* @param int $numero N<EFBFBD>mero do cliente
* @param string $email Email do cliente
* @param int $ident Identifica o tipo de email a ser enviado.
* @param string $param1
* @param string $param2
* @return string
* @throws Exception
*/
function enviaAviso($numero, $email, $ident, $param1, $param2 = null) {
$host = '192.168.77.101';
//$host = '177.125.37.103';
$user = 'voip';
$password = 'simplesip2019';
$database = 'SIG';
//$port = '4445';
$port = '3306';
$connect = mysqli_connect($host, $user, $password, $database, $port);
if ($ident == 1) {
$mensagem = "ZUKNET INFORMA: Efetuamos um teste de conexao no IP cadastrado - $param1 "
. "e nao obtivemos sucesso, um chamado foi aberto automaticamente para o titular $param2";
try {
$sql = "INSERT INTO sms (numero, texto, dt_inclusao, email, email_assunto, email_texto, app)"
. "VALUES ('$numero','$mensagem',"
. "now(),'$email', 'Erro de ping no IP $param1','$mensagem','VOIP')";
$result = mysqli_query($connect, $sql);
if (!$result) {
enviaSMS($numero, $mensagem);
throw new Exception("ERRO - N<EFBFBD>o foi poss<EFBFBD>vel executar a query!");
}
mysqli_close($connect);
return "OK - Query executada com sucesso!";
} catch (Exception $ex) {
return $ex;
}
}
if ($ident == 2) {
$param1 = date('d/m/Y H:i:s', strtotime($param1));
$valores = explode(" ", $param1);
$mensagem = "ZUKNET INFORMA: Foi constatada a existencia de um chamado aberto anteriormente em $valores[0] as $valores[1],"
."iremos atende-lo em ate 16 horas uteis, a partir da abertura do chamado, Por favor Aguarde.";
try {
$sql = "INSERT INTO sms (numero, texto, dt_inclusao, email, email_assunto, email_texto, app)"
. "VALUES ('$numero','$mensagem',"
. "now(),'$email', 'Chamado aberto em $param1','$mensagem','VOIP')";
$result = mysqli_query($connect, $sql);
if (!$result) {
enviaSMS($numero, $mensagem);
throw new Exception("ERRO - N<EFBFBD>o foi poss<EFBFBD>vel executar a query!");
}
mysqli_close($connect);
return "OK - Query executada com sucesso!";
} catch (Exception $ex) {
return $ex;
}
}
}
/**
*
* @param int $num
* @param string $m
* @return type
*/
function enviaSMS($num, $m) {
$login = 'zuknet';
$token = 'jlr9hz';
$numero = soNumero($num);
$m = utf8_encode($m);
$msg = urlencode($m);
try {
$send = file_get_contents("http://sms.kingtelecom.com.br/kingsms/
api.php?acao=sendsms&login=$login&token=$token&numero=$numero&msg=$msg");
$manage = (array) json_decode($send);
$status = $manage["status"];
if ($status != 'success') {
throw new Exception('Nao foi poss<EFBFBD>vel enviar o SMS!');
}
$id = $manage["id"];
if (strlen($id) < 1) {
$id = 999988;
}
} catch (Exception $ex) {
return $ex;
}
return $manage;
}
?>