|
|
<?php |
|
|
|
|
|
namespace app\Middleware; |
|
|
|
|
|
use app\Controllers\AgentController; |
|
|
use app\Controllers\ClassificacaoController; |
|
|
use app\Controllers\QueueController; |
|
|
use app\Controllers\SystemMessageController; |
|
|
use app\Interfaces\IApi; |
|
|
use app\Models\Atendimento; |
|
|
use app\Models\Evento; |
|
|
use app\Models\ListaNegraPalavras; |
|
|
use app\Models\Message; |
|
|
use app\Models\Parametros; |
|
|
use app\Models\Pause; |
|
|
use app\Models\Queue; |
|
|
use app\Models\SupervisorModel; |
|
|
use websocket\WsInterface; |
|
|
|
|
|
class ApiAgente implements IApi |
|
|
{ |
|
|
/** @var AgentController $agentController Controller do agente */ |
|
|
protected $agentController; |
|
|
|
|
|
/** @var ClassificacaoController $classificacao Controller do classificacao */ |
|
|
protected $classificacao; |
|
|
|
|
|
/** @var SupervisorModel $supervisor model do supervisor */ |
|
|
protected $supervisor; |
|
|
|
|
|
/** @var Atendimento $atendimento model do atendimento */ |
|
|
protected $atendimento; |
|
|
|
|
|
/** @var Evento $eventos model do Evento */ |
|
|
protected $eventos; |
|
|
|
|
|
/** @var Parametros $parametros model do Parametros */ |
|
|
protected $parametros; |
|
|
|
|
|
/** @var Pause $pausasModel model do Pause */ |
|
|
protected $pausasModel; |
|
|
|
|
|
public function __construct() |
|
|
{ |
|
|
$this->classificacao = new ClassificacaoController(); |
|
|
$this->agentController = new AgentController(); |
|
|
$this->supervisor = new SupervisorModel(); |
|
|
$this->atendimento = new Atendimento(); |
|
|
$this->eventos = new Evento(); |
|
|
$this->pausasModel = new Pause(); |
|
|
$this->parametros = new Parametros(); |
|
|
} |
|
|
|
|
|
function router($rota, $request) |
|
|
{ |
|
|
$request = json_decode($request, true); |
|
|
switch ($rota) { |
|
|
case 'entrar': |
|
|
$this->login($request); |
|
|
break; |
|
|
case 'listarFilas': |
|
|
$this->listaFilas($request); |
|
|
break; |
|
|
case 'classificarAtendimento': |
|
|
$this->classificarAtendimento($request); |
|
|
break; |
|
|
case 'enviarMensagem': |
|
|
$this->enviaMsg($request); |
|
|
break; |
|
|
case 'sair': |
|
|
$this->logoff($request); |
|
|
break; |
|
|
case 'listarAgentesDisponivel': |
|
|
$this->listaAgentesDisponivel(); |
|
|
break; |
|
|
case 'finalizarAtendimento': |
|
|
$this->finalizaAtendimento($request); |
|
|
break; |
|
|
case 'listarAtendimentoAgente': |
|
|
$this->listaAtendimentoAgent($request); |
|
|
break; |
|
|
case 'listarMensagem': |
|
|
$this->listaMensagem($request); |
|
|
break; |
|
|
case 'listarPausasAgente': |
|
|
$this->listaPausasAgente($request); |
|
|
break; |
|
|
case 'sairPausa': |
|
|
$this->saiPausa($request); |
|
|
break; |
|
|
case 'entrarPausa': |
|
|
$this->entrarPausa($request); |
|
|
break; |
|
|
case 'transferirAtendimento': |
|
|
$this->transfAtendimento($request); |
|
|
break; |
|
|
case 'marcarMensagemVista': |
|
|
$this->markMessegeRead($request); |
|
|
break; |
|
|
case 'statusAgente': |
|
|
$this->statusAgente($request); |
|
|
break; |
|
|
case 'listarAtendimentosFilas': |
|
|
$this->listarAtendimentosFilas($request); |
|
|
break; |
|
|
case 'listarAtendimentosAbandonado': |
|
|
$this->listarAtendimentosAbandonado($request); |
|
|
break; |
|
|
default: |
|
|
echo json_encode(['status' => '404']); |
|
|
break; |
|
|
} |
|
|
} |
|
|
|
|
|
function login($request) |
|
|
{ |
|
|
try { |
|
|
$agente = $this->supervisor->findByAgent($request['matricula']); |
|
|
//verifica se existe agente |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
|
|
|
$filaModel = new Queue(); |
|
|
$fila = $filaModel->findQueueById($request['id_fila']); |
|
|
if (empty($fila)) { |
|
|
$this->retorno("Fila n<EFBFBD>o encontrada"); |
|
|
return; |
|
|
} |
|
|
$ret = $this->agentController->login( |
|
|
$fila->nome, |
|
|
$request['matricula'] |
|
|
); |
|
|
if (is_string($ret)) { |
|
|
$this->retorno($ret); |
|
|
return; |
|
|
} |
|
|
$this->retorno( |
|
|
$ret ? "Logado com sucesso" : "Erro", |
|
|
$ret ? $ret : null |
|
|
); |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
function logoff($request, $valida = true) |
|
|
{ |
|
|
try { |
|
|
$agente = $this->supervisor->findAgentByMatricula($request['matricula']); |
|
|
//verifica se existe agente |
|
|
$atends = $this->atendimento->getAtendimentoAbertoByAgente($request['matricula']); |
|
|
if (!$valida) { |
|
|
foreach ($atends as $key => $atendimento) { |
|
|
$this->sinalisaErroAtendimento( |
|
|
$request['matricula'], |
|
|
$atendimento->uniqueid, |
|
|
$agente->fila, |
|
|
$atendimento->cliente_id |
|
|
); |
|
|
} |
|
|
} |
|
|
if (!empty($atends) && $valida) { |
|
|
$this->retorno("Atendimentos em aberto, finalize os atendimentos para fazer logoff"); |
|
|
return; |
|
|
} |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
$ret = $this->agentController->logoff( |
|
|
$request['matricula'], |
|
|
$valida |
|
|
); |
|
|
if (is_string($ret)) { |
|
|
$this->retorno($ret); |
|
|
return; |
|
|
} |
|
|
$this->retorno( |
|
|
$ret ? "Deslogado com sucesso" : "Erro", |
|
|
$ret ? $ret : null |
|
|
); |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
function listaAgentesDisponivel() |
|
|
{; |
|
|
try { |
|
|
$param = $this->atendimento->getQuantiAtendimentSimultaneos(); |
|
|
$ret = $this->supervisor->listaAgentesDisponivel('LIVRE'); |
|
|
$agentes = []; |
|
|
foreach ($ret as $key => $value) { |
|
|
if ($value->countAtendimentos < $param->prm_media_simultaneo) { |
|
|
array_push($agentes, $value); |
|
|
} |
|
|
} |
|
|
$this->retorno( |
|
|
$agentes ? "Sucesso" : "Nenhum agente disponivel", |
|
|
$agentes ? $agentes : null, |
|
|
$agentes ? $agentes : null |
|
|
); |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
function finalizaAtendimento($request) |
|
|
{ |
|
|
try { |
|
|
$agente = $this->supervisor->findAgentByMatricula($request['matricula']); |
|
|
logger('debug')->info(var_export($agente, true)); |
|
|
//verifica se existe agente |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
$atendimento = $this->atendimento->findAtendId($request['uniqueid']); |
|
|
//verifica se existe atendimento |
|
|
if (empty($atendimento)) { |
|
|
$this->retorno("Atendimento n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
$event = $this->eventos->findEventFinish($request['uniqueid']); |
|
|
//verifica se o atendimento ja foi finalizado |
|
|
if (!empty($event)) { |
|
|
$this->retorno("Atendimento j<EFBFBD> foi finalizado"); |
|
|
return; |
|
|
} |
|
|
$ret = $this->eventos->createEvento( |
|
|
$request['uniqueid'], |
|
|
CONF_EVENT_TIMERMINO_AGENTE, |
|
|
date('Y-m-d H:i:s'), |
|
|
date('Y-m-d H:i:s'), |
|
|
$atendimento->fila, |
|
|
$request['matricula'] |
|
|
); |
|
|
$ws = new WsInterface(); |
|
|
$mesg = "Atendimento finalizado pelo agente {$agente->nome}"; |
|
|
$ws->enviaMsg($this->enviaActions($mesg, 'finish', $agente->matricula, $request['uniqueid'])); |
|
|
$systemController = new SystemMessageController(); |
|
|
$provedor = returnChannel($atendimento->context); |
|
|
$systemController->sendMessageSystem( |
|
|
CONF_MOMENT_FINALIZAR_ATENDIMENTO, |
|
|
[["nome" => "@autor_name", "valor" => $agente->nome]], |
|
|
$provedor, |
|
|
$atendimento->cliente_id |
|
|
); |
|
|
$messegeModel = new Message(); |
|
|
$messegeModel->addMessage( |
|
|
$request['uniqueid'], |
|
|
$agente->matricula, |
|
|
$agente->matricula, |
|
|
'finish', |
|
|
$mesg, |
|
|
$agente->nome, |
|
|
$atendimento->context, |
|
|
'read' |
|
|
); |
|
|
if ($agente->status == CONF_AGENT_STATUS_INDISPONIVEL) { |
|
|
$atends = $this->atendimento->getAtendimentoAbertoByAgente($request['matricula']); |
|
|
if (empty($atends)) { |
|
|
$this->agentController->enterPause($request['matricula'], $agente->motivo_pausa); |
|
|
$ws->enviaMsg($this->enviaActions('Agente em pausa', 'att_status', $agente->matricula, $request['uniqueid'])); |
|
|
} |
|
|
} |
|
|
if ($agente->status == CONF_AGENT_STATUS_OCUPADO) { |
|
|
$atendimentosAbertos = $this->atendimento->getAtendimentoAbertoByAgente($agente->matricula); |
|
|
$param = $this->atendimento->getQuantiAtendimentSimultaneos(); |
|
|
if (count($atendimentosAbertos) < $param->prm_media_simultaneo) { |
|
|
$this->supervisor->updateAgent($agente->matricula, CONF_AGENT_STATUS_LIVRE); |
|
|
} |
|
|
} |
|
|
|
|
|
$this->retorno( |
|
|
$ret ? "Finalizado com sucesso" : "Erro", |
|
|
$ret ? $ret : null, |
|
|
$ret ? [$ret] : null |
|
|
); |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
function sinalisaErroAtendimento($matricula, $uniqueid, $fila, $client_id) |
|
|
{ |
|
|
try { |
|
|
$ret = $this->eventos->createEvento( |
|
|
$uniqueid, |
|
|
CONF_EVENT_ERRO_ATEND, |
|
|
date('Y-m-d H:i:s'), |
|
|
date('Y-m-d H:i:s'), |
|
|
$fila, |
|
|
$matricula |
|
|
); |
|
|
$atendimento = $this->atendimento->findAtendId($uniqueid); |
|
|
$systemController = new SystemMessageController(); |
|
|
$provedor = returnChannel($atendimento->context); |
|
|
$systemController->sendMessageSystem( |
|
|
CONF_MOMENT_ERRO_ATEND, |
|
|
[], |
|
|
$provedor, |
|
|
$client_id, |
|
|
$fila |
|
|
); |
|
|
$this->retorno( |
|
|
$ret ? "Finalizado com sucesso" : "Erro", |
|
|
$ret ? $ret : null, |
|
|
$ret ? ["id" => $ret] : null |
|
|
); |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
|
|
|
public function listaFilas() |
|
|
{ |
|
|
$queue = new QueueController(); |
|
|
$search = $queue->listaAllFilas(); |
|
|
$this->retorno( |
|
|
$search ? "Sucesso" : "Erro", |
|
|
$search ? $search : null, |
|
|
$search ? $search : null |
|
|
); |
|
|
return null; |
|
|
} |
|
|
|
|
|
public function classificarAtendimento($request) |
|
|
{ |
|
|
$agent = $this->agentController->getAgente($request['ramal']); |
|
|
|
|
|
if (!$agent) { |
|
|
$msg = "Fa<EFBFBD>a o login para iniciar o atendimento!\n"; |
|
|
echo json_encode(['message' => $msg]); |
|
|
return null; |
|
|
} |
|
|
|
|
|
/** |
|
|
* VERIFICA CLASSIFICACAO DE ATENDIMENTO |
|
|
*/ |
|
|
$chamadaSemClassificacao = $this->classificacao->agentClassificacaoPending($agent->matricula, $agent->dac); |
|
|
|
|
|
if ($chamadaSemClassificacao) { |
|
|
$classificacaoRegisterReturn = $this->classificacao->agentClassificacaoRegister( |
|
|
$agent->matricula, |
|
|
$agent->dac, |
|
|
$chamadaSemClassificacao, |
|
|
$request['option'] |
|
|
); |
|
|
if ($classificacaoRegisterReturn) { |
|
|
echo json_encode(['message' => CONF_NAME_REPONSE . " : " . $this->classificacao->message()]); |
|
|
return null; |
|
|
} |
|
|
|
|
|
$classificacaoList = $this->classificacao->agentClassificacaoList($agent->dac); |
|
|
echo json_encode(['message' => CONF_NAME_REPONSE . " : " . $classificacaoList]); |
|
|
return null; |
|
|
} |
|
|
echo json_encode(['status' => "false"]); |
|
|
return null; |
|
|
} |
|
|
|
|
|
public function enviaMsg($request) |
|
|
{ |
|
|
try { |
|
|
$mensagem = $request['event']['mensagem']; |
|
|
$contact = $request['event']['contact']; |
|
|
$status = $this->atendimento->getStatusAtendimento($mensagem['uniqueid']); |
|
|
if ($status->evento == CONF_EVENT_START) { |
|
|
$provider = returnChannel($mensagem['media']); |
|
|
$modelMensagem = new Message(); |
|
|
$msgTexto = $contact['name'] . ': ' . $this->validaPalavroes($mensagem['content']); |
|
|
if ($mensagem['type'] == 'text') { |
|
|
$retuno = $provider->enviarMsg( |
|
|
$mensagem['dst'], |
|
|
$msgTexto, |
|
|
false |
|
|
); |
|
|
} else { |
|
|
$anmeArquivo = CONF_PATH_FILES . $mensagem['id_provedor']; |
|
|
$texto = base64_decode($mensagem['content']); |
|
|
file_put_contents($anmeArquivo, $texto); |
|
|
ConvertWavToMp3($anmeArquivo); |
|
|
$retuno = $provider->enviarMedia( |
|
|
$mensagem['dst'], |
|
|
CONF_MIDDLEWARE_LINKUPLOAD . |
|
|
$mensagem['id_provedor'] . '/' . |
|
|
base64_encode($mensagem['mimetype']), |
|
|
$mensagem['type'], |
|
|
$mensagem['file_name'] |
|
|
); |
|
|
} |
|
|
$modelMensagem->addMessage( |
|
|
$mensagem['uniqueid'], |
|
|
$contact['number'], |
|
|
$mensagem['dst'], |
|
|
$mensagem['type'], |
|
|
$mensagem['type'] == 'text' ? $msgTexto : $mensagem['id_provedor'], |
|
|
$contact['name'], |
|
|
$mensagem['media'], |
|
|
$mensagem['status'], |
|
|
$mensagem['mimetype'], |
|
|
$mensagem['file_name'], |
|
|
$mensagem['id_provedor'] |
|
|
); |
|
|
$this->retorno( |
|
|
$retuno ? "Sucesso" : "Erro", |
|
|
$retuno ? $retuno : null, |
|
|
$retuno ? [["message" => $retuno]] : null |
|
|
); |
|
|
} else { |
|
|
$this->retorno('Atendimento j<EFBFBD> foi finalizado'); |
|
|
} |
|
|
|
|
|
return; |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
function retorno($mensagem, $status = null, $dados = null) |
|
|
{ |
|
|
//{ "status": "success", "message": "register created!", "data": [ "id": 20 ] } |
|
|
$data = []; |
|
|
$data['message'] = utf8_encode($mensagem); |
|
|
|
|
|
if (!empty($status)) { |
|
|
$data['status'] = "success"; |
|
|
} else { |
|
|
$data['status'] = "error"; |
|
|
} |
|
|
if (!empty($dados)) { |
|
|
$data['data'] = $dados; |
|
|
} |
|
|
|
|
|
echo json_encode($data); |
|
|
} |
|
|
|
|
|
function listaAtendimentoAgent($request) |
|
|
{ |
|
|
try { |
|
|
if ($request['matricula']) { |
|
|
$agente = $this->supervisor->findAgentByMatricula($request['matricula']); |
|
|
//verifica se existe agente |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
} |
|
|
$ret = $this->atendimento->findAtendAgent($request['matricula'], $request['quantidade']); |
|
|
$data = []; |
|
|
$data['message'] = utf8_encode("Sucesso"); |
|
|
$data['status'] = "success"; |
|
|
$data['data'] = $ret; |
|
|
echo json_encode($data); |
|
|
return null; |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
function listaMensagem($request) |
|
|
{ |
|
|
try { |
|
|
$atend = $this->atendimento->findAtendId($request['uniqueid']); |
|
|
//verifica se existe agente |
|
|
if (empty($atend)) { |
|
|
$this->retorno("N<EFBFBD>o existe atendimento para esse uniqueid"); |
|
|
return; |
|
|
} |
|
|
$messageModel = new Message(); |
|
|
$retunr = $messageModel->findMessageByUniqueid($request['uniqueid']); |
|
|
$mensagenss = []; |
|
|
foreach ($retunr as $key => $value) { |
|
|
$mensagem = []; |
|
|
$mensagem["event"] = [ |
|
|
"type" => $value->type == 'finish' ? 'actions' : "mensagem", |
|
|
"contact" => [ |
|
|
"name" => utf8_encode($value->profile_name), |
|
|
"number" => $value->src, |
|
|
], |
|
|
"mensagem" => [ |
|
|
"type" => $value->type, |
|
|
"content" => $value->content, |
|
|
"id_provedor" => $value->id_provedor, |
|
|
"dst" => $value->dst, |
|
|
"uniqueid" => $value->uniqueid, |
|
|
"media" => $value->media, |
|
|
"file_name" => utf8_encode($value->file_name), |
|
|
"datetime" => $value->msg_date, |
|
|
"status" => $value->status, |
|
|
'mimetype' => $value->mimetype |
|
|
] |
|
|
]; |
|
|
array_push($mensagenss, $mensagem); |
|
|
} |
|
|
$data = []; |
|
|
$data['message'] = utf8_encode("Sucesso"); |
|
|
$data['status'] = "success"; |
|
|
$data['data'] = $mensagenss; |
|
|
echo json_encode($data); |
|
|
return; |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
function listaPausasAgente($request) |
|
|
{ |
|
|
$agente = $this->supervisor->findAgentByMatricula($request['matricula']); |
|
|
//verifica se existe agente |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return null; |
|
|
} |
|
|
$param = $this->parametros->findProtocolByParams(); |
|
|
if (false) { |
|
|
$ret = $this->pausasModel->findPauseByGroupUser($request['matricula']); |
|
|
} else { |
|
|
$ret = $this->pausasModel->findAllPause(); |
|
|
} |
|
|
foreach ($ret as $key => $value) { |
|
|
$ret[$key] = removeAcentosArray((array) $value); |
|
|
} |
|
|
|
|
|
$this->retorno( |
|
|
$ret ? "Sucesso" : "Erro", |
|
|
$ret ? $ret : null, |
|
|
$ret ? $ret : null |
|
|
); |
|
|
return null; |
|
|
} |
|
|
|
|
|
function entrarPausa($request) |
|
|
{ |
|
|
$ws = new WsInterface(); |
|
|
$agente = $this->supervisor->findAgentByMatricula($request['matricula']); |
|
|
//verifica se existe agente |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
$pausa = $this->pausasModel->findPauseById($request['id_pausa']); |
|
|
if (empty($pausa)) { |
|
|
$this->retorno("Pausa n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
if ($agente->status == CONF_AGENT_STATUS_PAUSA || $agente->status == CONF_AGENT_STATUS_INDISPONIVEL) { |
|
|
$this->retorno('Agente precisa estar livre para entrar em pausa!'); |
|
|
return; |
|
|
} |
|
|
$atends = $this->atendimento->getAtendimentoAbertoByAgente($request['matricula']); |
|
|
if (!empty($atends)) { |
|
|
$ret = $this->agentController->indisponivelAtendimento($request['matricula'], $pausa->motivo); |
|
|
if (is_string($ret)) { |
|
|
$this->retorno($ret); |
|
|
} else { |
|
|
$ws->enviaMsg($this->enviaActions('Agente em pausa', 'att_status', $agente->matricula)); |
|
|
$this->retorno( |
|
|
"Agente em 'indisponivel'", |
|
|
$ret |
|
|
); |
|
|
} |
|
|
return; |
|
|
} |
|
|
$ret = $this->agentController->enterPause($request['matricula'], $pausa->motivo); |
|
|
$ws->enviaMsg($this->enviaActions('Agente em pausa', 'att_status', $agente->matricula)); |
|
|
$this->retorno( |
|
|
$ret ? "Agente em 'pausa'" : "Erro", |
|
|
$ret ? $ret : null |
|
|
); |
|
|
return null; |
|
|
} |
|
|
|
|
|
function saiPausa($request) |
|
|
{ |
|
|
$ws = new WsInterface(); |
|
|
$agente = $this->supervisor->findAgentByMatricula($request['matricula']); |
|
|
//verifica se existe agente |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
$ret = $this->agentController->exitPause($request['matricula']); |
|
|
if (is_string($ret)) { |
|
|
$this->retorno($ret); |
|
|
} else { |
|
|
$ws->enviaMsg($this->enviaActions('Agente em pausa', 'att_status', $agente->matricula)); |
|
|
$this->retorno( |
|
|
"Agente 'livre'", |
|
|
$ret |
|
|
); |
|
|
} |
|
|
return; |
|
|
} |
|
|
|
|
|
function transfAtendimento($request) |
|
|
{ |
|
|
$retunr = $this->agentController->transfer( |
|
|
$request['matricula_origem'], |
|
|
$request['matricula_destino'], |
|
|
$request['uniqueid'] |
|
|
); |
|
|
if (is_string($retunr)) { |
|
|
$this->retorno($retunr); |
|
|
} else { |
|
|
$this->retorno( |
|
|
$retunr ? "Sucesso" : "Erro", |
|
|
$retunr ? $retunr : null |
|
|
); |
|
|
} |
|
|
return null; |
|
|
} |
|
|
function markMessegeRead($request) |
|
|
{ |
|
|
$atend = $this->atendimento->findAtendId($request['uniqueid']); |
|
|
//verifica se existe agente |
|
|
if (empty($atend)) { |
|
|
$this->retorno("N<EFBFBD>o existe atendimento para esse uniqueid"); |
|
|
return; |
|
|
} |
|
|
$modelMensagem = new Message(); |
|
|
$ret = $modelMensagem->markMessege($request['uniqueid'], 'read'); |
|
|
$this->retorno( |
|
|
$ret ? "Sucesso" : "Erro", |
|
|
$ret ? $ret : null |
|
|
); |
|
|
return null; |
|
|
} |
|
|
function statusAgente($request) |
|
|
{ |
|
|
try { |
|
|
$agente = $this->supervisor->findAgentByMatricula($request['matricula']); |
|
|
//verifica se existe agente |
|
|
if (empty($agente)) { |
|
|
$this->retorno("Agente n<EFBFBD>o encontrado"); |
|
|
return; |
|
|
} |
|
|
$this->supervisor->updateAgent($agente->matricula, $agente->status, $agente->motivo_pausa); |
|
|
$ret = $this->supervisor->statusAgente($request['matricula']); |
|
|
$ret = removeAcentosArray((array) $ret); |
|
|
$this->retorno( |
|
|
$ret ? "Sucesso" : "Erro", |
|
|
$ret ? $ret : null, |
|
|
$ret ? [$ret] : null |
|
|
); |
|
|
} catch (\Exception $th) { |
|
|
$this->retorno($th->getMessage()); |
|
|
} |
|
|
} |
|
|
|
|
|
function enviaActions($msg, $tipo, $destino, $uniqueid = null) |
|
|
{ |
|
|
try { |
|
|
$mensagem = []; |
|
|
$mensagem["event"] = [ |
|
|
"type" => 'actions', |
|
|
"contact" => [ |
|
|
"name" => 'Sistema', |
|
|
"number" => '0' |
|
|
], |
|
|
"mensagem" => [ |
|
|
"type" => $tipo, |
|
|
"dst" => $destino, |
|
|
"uniqueid" => $uniqueid, |
|
|
"content" => utf8_encode($msg) |
|
|
], |
|
|
]; |
|
|
return json_encode($mensagem); |
|
|
} catch (\Exception $th) { |
|
|
logger('monitora')->info($th->getMessage()); |
|
|
} |
|
|
} |
|
|
|
|
|
public function validaPalavroes($msg) |
|
|
{ |
|
|
try { |
|
|
$palavroes = new ListaNegraPalavras(); |
|
|
$palavras = $palavroes->getAll(); |
|
|
foreach ($palavras as $key => $value) { |
|
|
$pattern = "/\b($value->palavra)\b/i"; |
|
|
$msg = preg_replace($pattern, '*' . str_repeat('*', strlen($value->palavra)) . '*', $msg); |
|
|
} |
|
|
} catch (\Exception $th) { |
|
|
logger('telegram')->info(print_r($th, true), true); |
|
|
} |
|
|
return $msg; |
|
|
} |
|
|
|
|
|
public function listarAtendimentosFilas($request) |
|
|
{ |
|
|
try { |
|
|
$filaModel = new Queue(); |
|
|
$fila = $filaModel->findQueueById($request['id_fila']); |
|
|
if (empty($fila)) { |
|
|
$this->retorno("Fila n<EFBFBD>o encontrada"); |
|
|
return; |
|
|
} |
|
|
$retunr = $this->atendimento->getAtendFila($fila->nome); |
|
|
$data = []; |
|
|
$data['message'] = utf8_encode("Sucesso"); |
|
|
$data['status'] = "success"; |
|
|
$data['data'] = $retunr; |
|
|
echo json_encode($data); |
|
|
return null; |
|
|
} catch (\Exception $th) { |
|
|
return $this->retorno($th->getMessage()); |
|
|
} |
|
|
} |
|
|
|
|
|
public function listarAtendimentosAbandonado($request) |
|
|
{ |
|
|
try { |
|
|
$filaModel = new Queue(); |
|
|
if ($request['id_fila']) { |
|
|
$fila = $filaModel->findQueueById($request['id_fila']); |
|
|
if (empty($fila)) { |
|
|
$this->retorno("Fila n<EFBFBD>o encontrada"); |
|
|
return; |
|
|
} |
|
|
} |
|
|
$retunr = $this->atendimento->getAtendAbandonado($fila->nome); |
|
|
$data = []; |
|
|
$data['message'] = utf8_encode("Sucesso"); |
|
|
$data['status'] = "success"; |
|
|
$data['data'] = $retunr; |
|
|
echo json_encode($data); |
|
|
return null; |
|
|
} catch (\Exception $th) { |
|
|
return $this->retorno($th->getMessage()); |
|
|
} |
|
|
} |
|
|
} |