Browse Source

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

1.8
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}'";
$result = pg_query($query);
$idMetodo = pg_fetch_assoc($result)['itgm_id'];
$nomeMetodo = '';
$pathIntegra = "/var/lib/asterisk/scripts/integracao/custom/";
if ($idMetodo && ExecuteCustom($idMetodo, $nomeMetodo)) {

3
include/util/funcoesApl.php

@ -396,7 +396,8 @@ function VerificaCadastroMenu($conn) {
if (UseModVendas()) {
$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('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');

172
integracao/simpleschat/connect.php

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

Loading…
Cancel
Save