|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace service;
|
|
|
|
|
|
|
|
|
|
use app\Core\CoreMedia;
|
|
|
|
|
use app\Models\Atendimento;
|
|
|
|
|
use app\Models\SupervisorModel;
|
|
|
|
|
|
|
|
|
|
class ServiceQueue implements IService
|
|
|
|
|
{
|
|
|
|
|
/** @var SupervisorModel $supervisor model de supervisor */
|
|
|
|
|
public $supervisor;
|
|
|
|
|
|
|
|
|
|
/** @var Atendimento $atendimento model de Atendimento */
|
|
|
|
|
public $atendimento;
|
|
|
|
|
|
|
|
|
|
/** @var String[] $mensagem lista de mensagens do sistema */
|
|
|
|
|
public $mensagem;
|
|
|
|
|
|
|
|
|
|
/** @var CoreMedia $coremedia core de atendimento */
|
|
|
|
|
public $coremedia;
|
|
|
|
|
|
|
|
|
|
public $timeout_agent_alert = (CONF_WHATSAPP_TIMEOUT_AGENT_AVISO / 60);
|
|
|
|
|
public $timeout_agent_desconexao = (CONF_WHATSAPP_TIMEOUT_AGENT_DESCONEXAO / 60);
|
|
|
|
|
public $timeout_agent_classificacao = (CONF_WHATSAPP_TIMEOUT_AGENT_CLASSIFICACAO / 60);
|
|
|
|
|
|
|
|
|
|
function __construct()
|
|
|
|
|
{
|
|
|
|
|
$this->supervisor = new SupervisorModel();
|
|
|
|
|
$this->atendimento = new Atendimento();
|
|
|
|
|
$this->coremedia = new CoreMedia();
|
|
|
|
|
$this->mensagem = [
|
|
|
|
|
"ALERTA_INATIVIDADE" => "Voc<EFBFBD> ser<EFBFBD> desconectado em " . ($this->timeout_agent_desconexao - $this->timeout_agent_alert) .
|
|
|
|
|
" minutos, para permanecer em atendimento clique em '/presente'",
|
|
|
|
|
"ALERTA_DESCONECTADO" => "Voc<EFBFBD> foi desconectado por inatividade!",
|
|
|
|
|
"ALERTA_CLIENTE" => "Ol<EFBFBD>, como podemos lhe ajudar!",
|
|
|
|
|
"TIMEOUT_CLIENT_INATIVIDADE" => "O tempo da conversa foi expirado, por favor volte novamente a fila para um novo atendimento!",
|
|
|
|
|
"TALK_FINISHED" => "O atendimento foi finalizado!",
|
|
|
|
|
"TALK_ALERT_FINISH" => "Por favor, volte a comunica<EFBFBD><EFBFBD>o com nosso atendimento em 1 minuto ou atendimento ser<EFBFBD> encerrado!"
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function run()
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
$agentesLista = $this->supervisor->listaAgentesDisponivel('LIVRE');
|
|
|
|
|
foreach ($agentesLista as $item) {
|
|
|
|
|
$atendimentos = $this->atendimento->getAtendFila($item->fila);
|
|
|
|
|
if (count($atendimentos) > 0) {
|
|
|
|
|
$this->coremedia->setApi(returnChannel($atendimentos[0]->context));
|
|
|
|
|
$this->coremedia->criaAtendimento(
|
|
|
|
|
$atendimentos[0]->fila,
|
|
|
|
|
$atendimentos[0]->cliente_id,
|
|
|
|
|
$atendimentos[0]->uniqueid
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (\Exception $ex) {
|
|
|
|
|
logger('ServiceQueue')->info($ex->getMessage(), debug_backtrace());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|