|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
include "util/Crypt.php";
|
|
|
|
|
$crypt = new Crypt('#S1mpl3S_C0nn3ct@R00t');
|
|
|
|
|
|
|
|
|
|
$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<EFBFBD>o informado no cadastro de usu<EFBFBD>rio!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$_SESSION['SSTokenChat']) {
|
|
|
|
|
$_SESSION['SSTokenChat'] = login($chatApi, $email['email']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$options = queues($chatApi, $_SESSION['SSTokenChat']);
|
|
|
|
|
|
|
|
|
|
if ($request['selectqueue'] && $request['btConectar']) {
|
|
|
|
|
$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<EFBFBD>o foi encontrar os n<EFBFBD>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<EFBFBD>o foi poss<EFBFBD>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<EFBFBD>o foi poss<EFBFBD>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);
|
|
|
|
|
|
|
|
|
|
return json_decode($content, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getEmailAgente($dbcon, $matricula)
|
|
|
|
|
{
|
|
|
|
|
$query = "SELECT email FROM pbx_usuarios WHERE matricula = '$matricula';";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
return pg_fetch_assoc($result);
|
|
|
|
|
}
|