Browse Source

ajustes de funcionalidades

pull/3/head
Lucas Awade 2 years ago
parent
commit
d253b62b52
  1. 73
      index copy.php
  2. 82
      index.php
  3. 5
      public/js/config.js
  4. 13
      public/js/main.js
  5. 35
      public/js/requests.js
  6. 27
      public/js/util.js
  7. 67
      ws.php

73
index copy.php

@ -0,0 +1,73 @@
<?php
include "config/includes.php";
use app\Provider\Crypt;
$files = getconfig('app')['FILES'];
$crypt = new Crypt('aes-256-cbc', getconfig('app')['PASSWORD']);
$geturl = bootstrap();
$connected = false;
$post = is_postback();
$objs = [
'obj_server' => null,
'my_uniqueid' => null,
'obj_queue' => null,
'obj_ws' => null,
'supervisor_api' => null,
'session_uniqueid' => null,
'obj_notification' => null,
'obj_contact' => null,
'obj_status' => null,
'session_window' => null
];
if ($geturl['t'] == 'gerar' && ($_SERVER['SERVER_NAME'] == 'localhost' || $geturl['password'] == 'S1MPL3S1P_CH4T')) {
foreach ($objs as $key => $val) {
$jsStartup[] = "localStorage.removeItem('{$key}')";
}
$dados = true;
}
if ($post) {
$objs['id_empresa'] = $post['empresa'];
$objs['obj_server'] = "http://{$post['servidor']}";
$objs['my_uniqueid'] = $post['matricula'];
$objs['obj_queue'] = $post['fila'];
$objs['obj_ws'] = "ws://{$post['servidor']}:8080/wss";
$objs['supervisor_api'] = "http://{$post['servidor']}";
foreach ($objs as $key => $val) {
$jsStartup[] = "localStorage.removeItem('{$key}')";
if ($val) {
$jsStartup[] = sprintf("localStorage.setItem('{$key}', '%s')", $val);
}
}
$connected = true;
}
?>
<!DOCTYPE html>
<html>
<?php include "app/view/header.php" ?>
<?php if ($dados && !$connected) { ?>
<form method="post">
<p>Informe o id da empresa:</p>
<input type="number" name="empresa" placeholder="Informe o ID a empresa"><br>
<p>Informe o Servidor:</p>
<input type="text" name="servidor" placeholder="Informe o IP/Host do servidor"><br>
<p>Informe a Matricula:</p>
<input type="text" name="matricula" placeholder="Informe matricula do agente"><br>
<p>Informe a fila:</p>
<input type="number" name="fila" placeholder="Informe o numero da fila"><br>
<input type="submit" name="btnSend" value="Gerar Token">
</form>
<?php } ?>
<body>
<?php include "app/view/content.php" ?>
</body>
</html>

82
index.php

@ -7,37 +7,61 @@ use app\Provider\Crypt;
$files = getconfig('app')['FILES']; $files = getconfig('app')['FILES'];
$crypt = new Crypt('aes-256-cbc', getconfig('app')['PASSWORD']); $crypt = new Crypt('aes-256-cbc', getconfig('app')['PASSWORD']);
$geturl = bootstrap(); $geturl = bootstrap();
$post = is_postback();
$connected = false; $connected = false;
if($geturl['t'] == 'gerar' && ($_SERVER['SERVER_NAME'] == 'localhost' || $geturl['password'] == 'S1MPL3S1P_CH4T')){ if ($geturl['t'] == 'gerar' && $post['passwd'] == 'S1MPL3S1P_CH4T') {
$expireToken = strtotime( '+1 days', time()); $expireToken = strtotime("+{$post['expire']} days", time());
$json_info = '{"servidor": "http://192.168.115.244:8081", "websocket": "ws://192.168.115.244:8081/wss", "matricula": "2424", "fila": "1", "expire": "'.$expireToken.'"}'; $info = [
echo $json_info; "id_number" => $post['id_number'],
echo "<br/><br/>"; "id_empresa" => $post['id_empresa'],
echo "Token: <input type='text' value='{$crypt->encrypt($json_info)}' size='90'>"; "servidor" => $post['servidor'],
"websocket" => "ws://{$post['servidor']}:8080",
"matricula" => $post['matricula'],
"fila" => $post['fila'],
"expire" => $expireToken
];
$token = $crypt->encrypt(json_encode($info, true));
echo "Token: <input type='text' value='{$token}' size='90'><br><br>";
echo "<a href='http://{$post['servidor']}:8001/?t=$token' target='_blank'><b>Ir para</b></a>";
exit; exit;
} }
$json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true); /**
if($geturl['t'] && $json ){ id_empresa
id_number
my_uniqueid
obj_queue
obj_server
obj_ws
**/
if ($geturl['t']) {
$json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true); $json = json_decode($crypt->decrypt(str_replace(' ', '+', $geturl['t'])), true);
$objs = [ $objs = [
<<<<<<< HEAD
'id_empresa' => $json['id_empresa'], 'id_empresa' => $json['id_empresa'],
'obj_server' => $json['servidor'], 'obj_server' => $json['servidor'],
'my_uniqueid' => $json['matricula'], 'my_uniqueid' => $json['matricula'],
'obj_queue' => $json['fila'], 'obj_queue' => $json['fila'],
=======
'id_number' => $json['id_number'],
'id_empresa' => $json['id_empresa'],
'obj_server' => $json['servidor'],
'my_uniqueid' => $json['matricula'],
'obj_queue' => $json['fila'],
>>>>>>> 1e181ff (ajustes de funcionalidades)
'obj_ws' => $json['websocket'], 'obj_ws' => $json['websocket'],
'supervisor_api' => $json['api'], 'session_uniqueid' => null,
'session_uniqueid' => null, 'obj_notification' => null,
'obj_notification' => null, 'obj_contact' => null,
'obj_contact' => null, 'obj_status' => null,
'obj_status' => null,
'session_window' => null 'session_window' => null
]; ];
foreach($objs as $key => $val){ foreach ($objs as $key => $val) {
$jsStartup[] = "localStorage.removeItem('{$key}')"; $jsStartup[] = "localStorage.removeItem('{$key}')";
if($val){ if ($val) {
$jsStartup[] = sprintf("localStorage.setItem('{$key}', '%s')", $val); $jsStartup[] = sprintf("localStorage.setItem('{$key}', '%s')", $val);
} }
} }
@ -47,8 +71,32 @@ if($geturl['t'] && $json ){
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<?php include "app/view/header.php" ?> <?php include "app/view/header.php" ?>
<body> <body>
<?php include "app/view/content.php" ?>
<?php if ($geturl['t'] == 'gerar') { ?>
<form method="post">
<p>Informe o id da empresa:</p>
<input type="number" name="id_empresa" placeholder="Informe o ID da empresa"><br>
<p>Informe o id do numero:</p>
<input type="number" name="id_number" placeholder="Informe o ID do numero"><br>
<p>Informe o Servidor:</p>
<input type="text" name="servidor" placeholder="Informe o IP/Host do servidor"><br>
<p>Informe a Matricula:</p>
<input type="text" name="matricula" placeholder="Informe matricula do agente"><br>
<p>Informe a fila:</p>
<input type="number" name="fila" placeholder="Informe o numero da fila"><br>
<p>Token expira dias:</p>
<input type="number" name="expire" value="1" placeholder="Informe o numero da fila"><br>
<p>Password To generate token:</p>
<input type="text" name="passwd" placeholder="Informe a senha para gerar o token"><br>
<input type="submit" name="btnSend" value="Gerar Token">
</form>
<?php } else { ?>
<?php include "app/view/content.php" ?>
<?php } ?>
</body> </body>
</html> </html>

5
public/js/config.js

@ -1,5 +1,10 @@
const ws = localStorage.getItem('obj_ws') const ws = localStorage.getItem('obj_ws')
<<<<<<< HEAD
const server_api = localStorage.getItem('obj_server') const server_api = localStorage.getItem('obj_server')
=======
const server_api = `http://${localStorage.getItem('obj_server')}`
const supervisor_api = localStorage.getItem('supervisor_api') ? localStorage.getItem('supervisor_api') : localStorage.getItem('obj_server')
>>>>>>> 1e181ff (ajustes de funcionalidades)
let mediaRecorder let mediaRecorder
const icontypes = ['csv', 'doc', 'pdf', 'txt', 'xls', 'zip', 'ppt'] const icontypes = ['csv', 'doc', 'pdf', 'txt', 'xls', 'zip', 'ppt']
const path = 'public' const path = 'public'

13
public/js/main.js

@ -90,9 +90,15 @@ const selectNotification = (id) => {
let protocolo let protocolo
const dataRequest = JSON.parse(localStorage.getItem('obj_contact')) const dataRequest = JSON.parse(localStorage.getItem('obj_contact'))
<<<<<<< HEAD
listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) listarAtendimentoAgente(localStorage.getItem('my_uniqueid'))
=======
listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid'))
>>>>>>> 1e181ff (ajustes de funcionalidades)
const allNotifications = JSON.parse(localStorage.getItem('obj_notification')) const allNotifications = JSON.parse(localStorage.getItem('obj_notification'))
console.log(allNotifications)
hideButtons(false) hideButtons(false)
allNotifications.data.forEach(e => { allNotifications.data.forEach(e => {
@ -142,7 +148,11 @@ const selectNotification = (id) => {
dataContact.forEach(e => { dataContact.forEach(e => {
const datesend = e.msg_date ? converdata(new Date(e.msg_date).getTime()) : 'algumas horas'; const datesend = e.msg_date ? converdata(new Date(e.msg_date).getTime()) : 'algumas horas';
<<<<<<< HEAD
let typesend = localStorage.getItem('my_uniqueid') == e.src ? 'sender': 'receiver' let typesend = localStorage.getItem('my_uniqueid') == e.src ? 'sender': 'receiver'
=======
let typesend = localStorage.getItem('my_uniqueid') == e.dst ? 'receiver' : 'sender'
>>>>>>> 1e181ff (ajustes de funcionalidades)
if(e.type == 'text'){ if(e.type == 'text'){
$('.chat-window').append(` $('.chat-window').append(`
@ -288,6 +298,7 @@ const sendMessage = (obj = {}) => {
/** /**
* ATUALIZA AS MENSAGEM QUE SAO RECEBIDAS NA TELA DO ATENDIMENTO * ATUALIZA AS MENSAGEM QUE SAO RECEBIDAS NA TELA DO ATENDIMENTO
* Os dados são transmitidos pelo evento de WS
* @param {*} ev * @param {*} ev
*/ */
const viewMessage = (ev) => { const viewMessage = (ev) => {
@ -349,7 +360,7 @@ const receiveNotification = (data) => {
} }
/** VALIDA O NUMERO, VERIFICA SE O TEM ALGMA MSG INICIAL, SE JA TEVE UM NUMERO NA VERIFICACAO */ /** VALIDA O NUMERO, VERIFICA SE O TEM ALGMA MSG INICIAL, SE JA TEVE UM NUMERO NA VERIFICACAO */
listarAtendimentoAgente(localStorage.getItem('my_uniqueid')) listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid'))
validate = JSON.parse(localStorage.getItem('obj_notification')) validate = JSON.parse(localStorage.getItem('obj_notification'))
const vald = validate.data.filter((e) => { const vald = validate.data.filter((e) => {

35
public/js/requests.js

@ -14,11 +14,14 @@ const enviarMensagem = (dataSend) => {
const listaMensagem = (uniqueid) => new Promise((resolve) => { const listaMensagem = (uniqueid) => new Promise((resolve) => {
$.ajax({ $.ajax({
url: `${server_api}/messages`, url: `${server_api}/messages/${uniqueid}`,
type: "GET", type: "GET",
<<<<<<< HEAD
data: { data: {
uniqueid uniqueid
}, },
=======
>>>>>>> 1e181ff (ajustes de funcionalidades)
success: function (res) { success: function (res) {
localStorage.removeItem('obj_contact') localStorage.removeItem('obj_contact')
localStorage.setItem('obj_contact', JSON.stringify(res)) localStorage.setItem('obj_contact', JSON.stringify(res))
@ -32,12 +35,15 @@ const listaMensagem = (uniqueid) => new Promise((resolve) => {
const listarAgentesDisponivel = (id_empresa) => new Promise((resolve) => { const listarAgentesDisponivel = (id_empresa) => new Promise((resolve) => {
$.ajax({ $.ajax({
url: `${server_api}/supervisor`, url: `${server_api}/supervisor/agentes/status/${id_empresa}/livre`,
type: "GET", type: "GET",
<<<<<<< HEAD
data: { data: {
id_empresa, id_empresa,
agente_livre: "true" agente_livre: "true"
}, },
=======
>>>>>>> 1e181ff (ajustes de funcionalidades)
success: function (res) { success: function (res) {
resolve(res) resolve(res)
}, },
@ -47,13 +53,16 @@ const listarAgentesDisponivel = (id_empresa) => new Promise((resolve) => {
}); });
}) })
const listarAtendimentoAgente = (matricula) => new Promise((resolve) => { const listarAtendimentoAgente = (id_empresa, matricula) => new Promise((resolve) => {
$.ajax({ $.ajax({
url: `${server_api}/atendimentos`, url: `${server_api}/atendimentos/${id_empresa}/${matricula}`,
type: "GET", type: "GET",
<<<<<<< HEAD
data: { data: {
matricula matricula
}, },
=======
>>>>>>> 1e181ff (ajustes de funcionalidades)
success: function (res) { success: function (res) {
localStorage.removeItem('obj_notification') localStorage.removeItem('obj_notification')
localStorage.setItem('obj_notification', JSON.stringify(res)) localStorage.setItem('obj_notification', JSON.stringify(res))
@ -67,11 +76,14 @@ const listarAtendimentoAgente = (matricula) => new Promise((resolve) => {
const listarPausasAgente = (id_empresa) => new Promise((resolve) => { const listarPausasAgente = (id_empresa) => new Promise((resolve) => {
$.ajax({ $.ajax({
url: `${server_api}/pausas`, url: `${server_api}/pausas/${id_empresa}`,
type: "GET", type: "GET",
<<<<<<< HEAD
data: { data: {
id_empresa id_empresa
}, },
=======
>>>>>>> 1e181ff (ajustes de funcionalidades)
success: function (res) { success: function (res) {
resolve(res) resolve(res)
}, },
@ -120,14 +132,14 @@ const sairPausa = (matricula) => new Promise((resolve) => {
}); });
}) })
const entrar = (matricula, queue, empresa) => new Promise((resolve) => { const entrar = (matricula, id_fila, id_number) => new Promise((resolve) => {
$.ajax({ $.ajax({
url: `${server_api}/auth/conectar-chat`, url: `${server_api}/auth/conectar-chat`,
type: "POST", type: "POST",
data: JSON.stringify({ data: JSON.stringify({
id_fila: queue,
matricula, matricula,
id_empresa: empresa id_fila,
"id_number_channel": id_number
}), }),
success: function (res) { success: function (res) {
resolve(res) resolve(res)
@ -189,14 +201,17 @@ const finalizarAtendimento = (matricula, uniqueid) => new Promise((resolve) => {
}); });
}) })
const statusAgente = (empresa, matricula) => new Promise((resolve) => { const statusAgente = (id_empresa, matricula) => new Promise((resolve) => {
$.ajax({ $.ajax({
url: `${server_api}/supervisor`, url: `${server_api}/supervisor/agentes/${id_empresa}/${matricula}`,
type: "GET", type: "GET",
<<<<<<< HEAD
data: { data: {
matricula, matricula,
id_empresa: empresa id_empresa: empresa
}, },
=======
>>>>>>> 1e181ff (ajustes de funcionalidades)
success: function(res) { success: function(res) {
localStorage.removeItem('obj_status') localStorage.removeItem('obj_status')
localStorage.setItem('obj_status', JSON.stringify(res)) localStorage.setItem('obj_status', JSON.stringify(res))

27
public/js/util.js

@ -1,4 +1,4 @@
/** ROLAGEM DO SCROLL ATE NO FINAL DO CHAT */ /** ROLAGEM DO SCROLL AT<EFBFBD> NO FINAL DO CHAT */
const scrollDown = () => { const scrollDown = () => {
$(".chat-window").animate({scrollTop: 99999 * $(this).height() }, 1); $(".chat-window").animate({scrollTop: 99999 * $(this).height() }, 1);
} }
@ -64,7 +64,7 @@ const alertModal = (title, message) => {
} }
/** /**
* HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTA<EFBFBD><EFBFBD>O DA IMAGEM SELECIONADA * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTACAO DA IMAGEM SELECIONADA
*/ */
const startSendImage = () => { const startSendImage = () => {
modalStart() modalStart()
@ -87,7 +87,7 @@ const startSendImage = () => {
} }
/** /**
* HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTA<EFBFBD><EFBFBD>O DA IMAGEM SELECIONADA * HABILITA O ENVIO DE ARQUIVO DE IMAGENS E APRESENTA UMA MODAL PARA APRESENTACAO DA IMAGEM SELECIONADA
*/ */
const openImgModal = (link) => { const openImgModal = (link) => {
modalStart() modalStart()
@ -170,7 +170,7 @@ const startPause = () => {
}) })
$('#footer-content-right').on('click', '#pausesend', () => { $('#footer-content-right').on('click', '#pausesend', () => {
entrarPausa($("#selectpause").val(), localStorage.getItem('my_uniqueid'), localStorage.getItem('id_empresa')).then(() => { entrarPausa($("#selectpause").val(), localStorage.getItem('my_uniqueid')).then(() => {
$('#modalselect').css({display: 'none'}) $('#modalselect').css({display: 'none'})
monitorPausaAgente() monitorPausaAgente()
}) })
@ -221,6 +221,7 @@ const exitSystem = () => {
}) })
} }
const startFinalizar = () => { const startFinalizar = () => {
$("#finalizaratendimento").on('click', function(){ $("#finalizaratendimento").on('click', function(){
if(confirm('Deseja realmente finalizar o atendimento?')){ if(confirm('Deseja realmente finalizar o atendimento?')){
@ -363,7 +364,6 @@ const buildNotification = (data = {}) => {
const datesend = converdata(data.datetime) const datesend = converdata(data.datetime)
const status = data.status == 0 ? 'opacity-3' : '' const status = data.status == 0 ? 'opacity-3' : ''
return `<div class="chat ${status}" id="${data.uniqueid}" onclick="selectNotification(this.id)"> return `<div class="chat ${status}" id="${data.uniqueid}" onclick="selectNotification(this.id)">
<div class="chat-left"> <div class="chat-left">
<img src="${path}/images/${data.media}.png"/> <img src="${path}/images/${data.media}.png"/>
@ -434,7 +434,7 @@ const notifications = (obj = {}) => {
/** STATUS DO AGENTE */ /** STATUS DO AGENTE */
monitorPausaAgente() monitorPausaAgente()
listarAtendimentoAgente(localStorage.getItem('my_uniqueid')).then((notification) => { listarAtendimentoAgente(localStorage.getItem('id_empresa'), localStorage.getItem('my_uniqueid')).then((notification) => {
let chatList = '' let chatList = ''
$('#chats').empty() $('#chats').empty()
@ -465,11 +465,12 @@ const notifications = (obj = {}) => {
chatList += buildNotification({ chatList += buildNotification({
uniqueid: e.uniqueid, uniqueid: e.uniqueid,
number: e.cliente_id, number: e.cliente_id,
media: e.media, media: e.context,
name: e.profile_name, name: e.profile_name,
datetime: e.data_reg, datetime: e.data_reg,
status: e.status, status: e.status,
protocolo: e.protocolo protocolo: e.protocolo,
media: e.media
}) })
}) })
$('#chats').append(chatList) $('#chats').append(chatList)
@ -497,11 +498,11 @@ const monitorPausaAgente = () => {
} }
}) })
$('#myuniqueid').text(localStorage.getItem('my_uniqueid').split('@', 2)[1]) $('#myuniqueid').text(localStorage.getItem('my_uniqueid'))
/** CONFIGURACAO NOME */ /** CONFIGURACAO NOME */
$('#nameagent').text(agente.data[0].nome) $('#nameagent').text(agente.data[0].nome)
/** CONFIGURACAO FILA */ /** CONFIGURACAO FILA */
$('#queueagente').text(agente.data[0].fila.toUpperCase()) $('#queueagente').text(agente.data[0].fila)
} }
}) })
} }
@ -509,7 +510,7 @@ const monitorPausaAgente = () => {
const supervisorAgente = () => { const supervisorAgente = () => {
/** MONITORA AS CONFIGURACOES */ /** MONITORA AS CONFIGURACOES */
setInterval(() => { setInterval(() => {
statusAgente(localStorage.getItem('id_empresa'),localStorage.getItem('my_uniqueid')).then((agente) => { statusAgente(localStorage.getItem('my_uniqueid')).then((agente) => {
if (agente.status == 'error' && agente.message == 'Agente não encontrado') { if (agente.status == 'error' && agente.message == 'Agente não encontrado') {
window.close() window.close()
} }
@ -562,11 +563,9 @@ const connect = (wsserver) => {
ws.addEventListener("message", e => { ws.addEventListener("message", e => {
/** att: atualizacao do websocket */ /** att: atualizacao do websocket */
if(e.data != 'att'){ if(e.data != 'att'){
const data = JSON.parse(e?.data) const data = JSON.parse(e?.data)
console.log(data)
if(localStorage.getItem('session_uniqueid') == null){ if(localStorage.getItem('session_uniqueid') == null){
localStorage.setItem('session_uniqueid', data.event.mensagem.uniqueid) localStorage.setItem('session_uniqueid', data.event.mensagem.uniqueid)
} }

67
ws.php

@ -0,0 +1,67 @@
<!DOCTYPE html>
<head>
<title>WebSocket client test</title>
</head>
<body>
<h1>WebSocket Client Test</h1>
<div id="log"></div>
</body>
<script language="javascript" type="text/javascript">
var wsUri = "ws://192.168.115.244:8080/wss";
var log;
function init() {
log = document.getElementById("log");
testWebSocket();
}
function testWebSocket() {
websocket = new WebSocket(wsUri);
websocket.onopen = function(evt) {
onOpen(evt)
};
websocket.onclose = function(evt) {
onClose(evt)
};
websocket.onmessage = function(evt) {
onMessage(evt)
};
websocket.onerror = function(evt) {
onError(evt)
};
}
function onOpen(evt) {
writeLog("CONNECTED");
sendMessage("Hello world");
}
function onClose(evt) {
writeLog("Websocket DISCONNECTED");
}
function onMessage(evt) {
writeLog('<span style="color: blue;">RESPONSE: ' + evt.data + '</span>');
websocket.close();
}
function onError(evt) {
writeLog('<span style="color: red;">ERROR:</span> ' + evt.data);
}
function sendMessage(message) {
writeLog("SENT: " + message);
websocket.send(message);
}
function writeLog(message) {
var pre = document.createElement("p");
pre.innerHTML = message;
log.appendChild(pre);
}
window.addEventListener("load", init, false);
</script>
Loading…
Cancel
Save