Browse Source

acrescentando o menu ChannelChat novamente ao sistema, e alguns ajustes no arquivo de conexao

master
douglas.strappasson 12 months ago
parent
commit
196ff1a27e
  1. 2
      asterisk/var_lib_asterisk/scripts/integracao/abdAgi.php
  2. 3
      include/util/funcoesApl.php
  3. 172
      integracao/simpleschat/connect.php

2
asterisk/var_lib_asterisk/scripts/integracao/abdAgi.php

@ -449,7 +449,7 @@ if ($agi->get_variable('MEMBERINTERFACE', true) || $evento == 'ABANDON') {
$query = "SELECT itgm_id FROM pbx_integracao_reg a, pbx_integracao_metodo b WHERE b.itgm_id_pai = a.reg_id_metodo AND b.evento = 2 AND a.reg_uniqueid = '{$arg1}'"; $query = "SELECT itgm_id FROM pbx_integracao_reg a, pbx_integracao_metodo b WHERE b.itgm_id_pai = a.reg_id_metodo AND b.evento = 2 AND a.reg_uniqueid = '{$arg1}'";
$result = pg_query($query); $result = pg_query($query);
$idMetodo = pg_fetch_assoc($result)['itgm_id']; $idMetodo = pg_fetch_assoc($result)['itgm_id'];
$nomeMetodo = '';
$pathIntegra = "/var/lib/asterisk/scripts/integracao/custom/"; $pathIntegra = "/var/lib/asterisk/scripts/integracao/custom/";
if ($idMetodo && ExecuteCustom($idMetodo, $nomeMetodo)) { if ($idMetodo && ExecuteCustom($idMetodo, $nomeMetodo)) {

3
include/util/funcoesApl.php

@ -396,7 +396,8 @@ function VerificaCadastroMenu($conn) {
if (UseModVendas()) { if (UseModVendas()) {
$menuUsuario[] = array('215', 'mnDashboard', '1', 'Dashboard ' . MenuVendas(), 'index.php?idProg=358', '', '173', '1', '0', '', '358'); $menuUsuario[] = array('215', 'mnDashboard', '1', 'Dashboard ' . MenuVendas(), 'index.php?idProg=358', '', '173', '1', '0', '', '358');
} }
$menuUsuario[] = array('214', 'mnSimplesChat', '1', 'ChannelChat', 'index.php?idProg=355', '', '1', '1', '0', '', '355');
$menuUsuario[] = array('217', 'mnSimplesChatAdm', '0', 'Administrador SimplesChat', 'index.php?idProg=359', '', '1', '1', '0', '', '359'); $menuUsuario[] = array('217', 'mnSimplesChatAdm', '0', 'Administrador SimplesChat', 'index.php?idProg=359', '', '1', '1', '0', '', '359');
$menuUsuario[] = array('218', 'mnSimplesChatSup', '0', 'Supervisor SimplesChat', 'index.php?idProg=360', '', '1', '1', '0', '', '360'); $menuUsuario[] = array('218', 'mnSimplesChatSup', '0', 'Supervisor SimplesChat', 'index.php?idProg=360', '', '1', '1', '0', '', '360');
$menuUsuario[] = array('219', 'mnSimplesChatAgt', '0', 'Agente SimplesChat', 'index.php?idProg=361', '', '1', '1', '0', '', '361'); $menuUsuario[] = array('219', 'mnSimplesChatAgt', '0', 'Agente SimplesChat', 'index.php?idProg=361', '', '1', '1', '0', '', '361');

172
integracao/simpleschat/connect.php

@ -1,60 +1,130 @@
<?php <?php
include "util/Crypt.php"; include "util/Crypt.php";
$crypt = new Crypt('#S1mpl3S_C0nn3ct@R00t'); $crypt = new Crypt('#S1mpl3S_C0nn3ct@R00t');
$request = filter_input_array(INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS); $request = filter_input_array(INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS);
$chatApi = $_SESSION["prm_chat_api"]; $chatApi = 'http://' . $_SESSION["prm_chat_api"];
$matricula = GetMatricula();
try {
$email = getEmailAgente($dbcon, $matricula);
if (!$email) {
throw new Exception("Email não informado no cadastro de usuário!");
}
if (!$_SESSION['SSTokenChat']) {
$_SESSION['SSTokenChat'] = login($chatApi, $email['email']);
}
$options = queues($chatApi, $_SESSION['SSTokenChat']);
if ($request['selectqueue'] && $request['btConectar']) { if ($request['selectqueue'] && $request['btConectar']) {
if (loginQueue($chatApi, $request['selectqueue'])) { $numbers = number($chatApi, $_SESSION['SSTokenChat']);
$expireToken = strtotime('+1 days', time()); $info = [
$jsoninfo = '{"servidor": "%s", "websocket": "%s", "matricula": "%s", "fila": "%s", "api" : "%s" ,"expire": "%s"}'; "token" => $_SESSION['SSTokenChat'],
$jsoninfo = sprintf($jsoninfo, $_SESSION['prm_chat_api'], $_SESSION['prm_sk_host_chat'], GetMatricula(), $request['selectqueue'], $_SESSION['prm_chat_api_supervisor'], $expireToken); "id_number" => $numbers[0]['id'],
$url = "http://sipcloud02.simplesip.com.br:8001/index.php?t=" . $crypt->encrypt($jsoninfo); "id_empresa" => $numbers[0]['id_empresa'],
$jsStartup[] = sprintf('window.open("%s", "popupWindow", "width=1450, height=950, resizable=NO,scrollbars=YES");', $url); "servidor" => $_SESSION['prm_chat_api'],
} else { "websocket" => $_SESSION['prm_sk_host_chat'],
$jsStartup[] = "alert('Não foi possível conenctar ao Simples Chat! Verifique as informações antes de conectar.');"; "matricula" => $matricula,
} "fila" => $request['selectqueue'],
} "expire" => strtotime('+1 days', time())
];
$smarty->assign("options", getQueue($chatApi));
$smarty->assign("jsonApp", json_encode( $token = $crypt->encrypt(json_encode($info, true));
[ $url = $chatApi . ":8001/index.php?t=" . $token;
'matricula' => GetMatricula(), $jsStartup[] = sprintf('window.open("%s", "popupWindow", "width=1450, height=950, resizable=NO,scrollbars=YES");', $url);
'server_api' => $_SESSION['prm_chat_api'], }
'server_ws' => $_SESSION['prm_sk_host_chat'], } catch (Exception $ex) {
'supervisor' => IsSupervisor($dbcon) $jsStartup[] = sprintf("alert('%s')", $ex->getMessage());
] }
));
$smarty->assign("options", $options);
GetTemplate($smarty, 'simpleschat/connect.tpl'); $smarty->assign("jsonApp", json_encode(
[
function getQueue($chatApi) { 'matricula' => GetMatricula(),
$response = json_decode(request("{$chatApi}/integracao/media/api/agente/listarFilas")); 'server_api' => $_SESSION['prm_chat_api'],
$option = null; 'server_ws' => $_SESSION['prm_sk_host_chat'],
foreach ($response->data as $v) { 'supervisor' => IsSupervisor($dbcon)
$option .= "<option value='{$v->id}'>{$v->nome}</option>"; ]
} ));
return $option;
} GetTemplate($smarty, 'simpleschat/connect.tpl');
function loginQueue($chatApi, $dac) { function number($chatApi, $token)
$json = ['id_fila' => $dac, "matricula" => GetMatricula()]; {
$response = json_decode(request("{$chatApi}/integracao/media/api/agente/entrar", $json)); $response = curl("{$chatApi}/api/v1/number", null, $token);
if ($response->status == 'success' || strpos($response->message, 'autenticado') !== false) { if (!$response['data']) {
return true; throw new Exception('Não foi encontrar os números.');
} }
return $response['data'];
}
function queues($chatApi, $token)
{
$response = curl("{$chatApi}/api/v1/filas", null, $token);
$option = null;
if (!$response['data']) {
throw new Exception('Não foi possível listar as filas.');
}
foreach ($response['data'] as $v) {
$option .= "<option value='{$v['id']}'>{$v['nome']}</option>";
}
return $option;
}
function login($chatApi, $email)
{
$json = json_encode(['email' => $email, "matricula" => md5(GetMatricula())]);
$response = curl("{$chatApi}/access/login", $json);
if ($response['status'] == 'success' || strpos($response['message'], 'autenticado') !== false) {
return $response['data']['token'];
}
throw new Exception('Não foi possível gerar o token.');
}
function curl($url, $params = null, $token = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
if ($params) {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
}
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$header[] = 'Content-Type:application/json';
if ($token) {
$header[] = 'Authorization: Bearer ' . $token;
}
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
$content = curl_exec($curl);
if (curl_errno($curl)) {
curl_close($curl);
return false; return false;
} }
$info = curl_getinfo($curl);
if ($info['http_code'] == 403) {
unset($_SESSION['SSTokenChat']);
}
curl_close($curl);
function request($url, $post = []) { return json_decode($content, true);
$curl = "curl -s -k "; }
if ($post) {
$curl .= sprintf(" -X POST -d '%s' ", json_encode($post));
}
$curl .= $url;
$response = shell_exec($curl); function getEmailAgente($dbcon, $matricula)
return $response; {
} $query = "SELECT email FROM pbx_usuarios WHERE matricula = '$matricula';";
$result = pg_query($dbcon, $query);
return pg_fetch_assoc($result);
}

Loading…
Cancel
Save