forked from SimplesIP/pabx-app
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.5 KiB
63 lines
2.5 KiB
<?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ê será desconectado em " . ($this->timeout_agent_desconexao - $this->timeout_agent_alert) . |
|
" minutos, para permanecer em atendimento clique em '/presente'", |
|
"ALERTA_DESCONECTADO" => "Você foi desconectado por inatividade!", |
|
"ALERTA_CLIENTE" => "Olá, 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ção com nosso atendimento em 1 minuto ou atendimento será 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()); |
|
} |
|
} |
|
} |