Browse Source

Refatoração da função ConnectaAgenteRt do agentert.php. Precisa de revisão, pois precisa arrumar filas

1.9
bruno 3 months ago
parent
commit
68095a9775
  1. 143
      agente/agentert.php
  2. 5
      contacteFunc.php
  3. 4
      include/util/funcoesApl.php

143
agente/agentert.php

@ -1,5 +1,6 @@
<?php
/*
*
* Agente
* Status:
* $_SESSION[AGT_EM_PAUSA] Agente em Pausa = 1 e 0 fora de pausa;
@ -43,12 +44,13 @@
clasItem -> Listas com itens relacioanados a classificação da chamada
*/
$org_id = $_SESSION['SSEmpresaPadrao'];
const FOMAT_TIME_ZERO = "00:00:00";
/*
* Constantes para sesssao do agente,
* definidas em constantes.php sessao AgenteRT
*/
$dadosMonitor = array(
"qtde_fila" => 0, "duracao" => '00:00:00', "fone" => '-', "abandonadas" => '0', "tme" => '0', "tma" => '0',
"qtde_fila" => 0, "duracao" => FOMAT_TIME_ZERO, "fone" => '-', "abandonadas" => '0', "tme" => '0', "tma" => '0',
"atendidas_pa" => '0', "num_protocolo" => '-', "ramal_monitor" => '', "dac_logado" => '-',
"status_agente" => 'OFF', "tempo_logado" => '-', "uniqueid2" => 0, "tempo_atualiza" => 0, "pausa_motivo_rt" => '-', "pausa_motivo_ausente" => 0,
"uniqueid" => 0, 'matricula' => '-', "disponivel_atendimento" => 1, "disponivelFila" => '1', "originadas_pa" => '0', "agente_anota_key" => "",
@ -75,15 +77,18 @@ $dadosDiscador = array(
/*
* Funcoes especificas do agente
*/
require("agente/funcoesAgente.php");
include("util/funcoesSsupervisor.php");
include("util/sharedMem.php");
require "agente/funcoesAgente.php" ;
include "util/funcoesSsupervisor.php";
include "util/sharedMem.php";
/*
* Define mensagens para o usuário.
*/
$vl_msgAgente = '';
$wAlineMaster = "center";
$tpLayout = AgenteNovaJanela(); //Indica o template para esata pagina
/*
*Indica o template para esata pagina
*/
$tpLayout = AgenteNovaJanela();
$styleAdd = '';
@ -138,8 +143,9 @@ $sZmsg_discador = sprintf("width: %s;height: %s;padding:0;margin:0;%s", $sZw, $s
/*
* Ativa log ami.
* true para ativar.
*/
$debugAmi = true; // true para ativar.
$debugAmi = true;
/*
* Informações sobre alerta para agente que ainda não classificou o chamado.
@ -155,10 +161,10 @@ $clasAtende = '';
*/
if (AgenteON()) {
$dac = $_SESSION[SS_DAC_CODIGO];
} else if (IsPostBack()) {
} elseif (IsPostBack()) {
$dac = isset($_POST["listaDacs"]) ? $_POST["listaDacs"] : '';
$_SESSION[SS_DAC_CODIGO] = $dac;
} else if (isset($_GET["dac"])) {
} elseif (isset($_GET["dac"])) {
$dac = $_GET["dac"];
} else {
$dac = GetIdDacPadrao($dbcon, GetIdUser());
@ -204,7 +210,9 @@ if (!IsAjax()) {
$tpAtende = isset($_POST["modoAtendimento"]) ? $_POST["modoAtendimento"] : $_SESSION[SS_MODO_ATENDIMENTO_COD];
if (ConectarDac()) {
if (!$dac) {
ConnectaAgenteRt($dbcon, $dac, $tpAtende, $org_id);
/*if (!$dac) { /* depois do teste excluir
SetMsgAgente("Selecione um DAC!");
$jsStartup[] = "alert('Selecione um DAC!')";
} else {
@ -212,16 +220,16 @@ if (!IsAjax()) {
DesConectaAgenteRt($dbcon,'',$org_id);
}
ConnectaAgenteRt($dbcon, $dac, $tpAtende, $org_id);
}
} else if (DesconectarDac()) {
}*/
} elseif (DesconectarDac()) {
DesConectaAgenteRt($dbcon,'',$org_id);
} else if (SairDePausa()) {
} elseif (SairDePausa()) {
SairPausa($dbcon, $org_id);
} else if (EntrarPausa()) {
} elseif (EntrarPausa()) {
if (!isset($_POST["listaMotivo"]) || !$_POST["listaMotivo"]) {
$dadosMonitorCompl["msg_sis"] = "Selecione uma Pausa!";
$jsStartup[] = "alert('Selecione uma Pausa!')";
} else if (VerificaMaxAgentePausa($dac)) {
} elseif (VerificaMaxAgentePausa($dac)) {
$dadosMonitorCompl["msg_sis"] = "número Máximo de Agente/Pausa Excedido, Aguarde!";
$jsStartup[] = "alert('número Máximo de Agente/Pausa Excedido, Aguarde!')";
} else {
@ -399,7 +407,7 @@ if (!IsAjax()) {
*/
if (!GetStatusAgente()) {
$dadosMonitor["ramal_monitor"] = GetRamalMonitorar(RAMAL_MONITOR_AGENTE);
$dadosMonitor["tempo_logado"] = '00:00:00';
$dadosMonitor["tempo_logado"] = FOMAT_TIME_ZERO;
$dadosMonitor["matricula"] = GetMatricula();
$dadosMonitor["abandonadasRet"] = '0';
$dadosMonitor["status_agente"] = "OFF";
@ -469,7 +477,7 @@ if (!IsAjax()) {
}
if (($_SESSION[SS_STATUS_AGENTE] != 'OCUPADO') && ($_SESSION[SS_STATUS_AGENTE] != 'ORIGINANDO')) {
$dadosMonitor["duracao"] = '00:00:00';
$dadosMonitor["duracao"] = FOMAT_TIME_ZERO;
}
if (($_SESSION[SS_STATUS_AGENTE] != 'OCUPADO') || ($_SESSION[SS_STATUS_AGENTE] != 'CHAMANDO')) {
$_SESSION["txt_cliente"] = "";
@ -483,7 +491,7 @@ if (!IsAjax()) {
* Pausa ausente é setada pela central toda vez que o agente não atende a uma chamada.
*/
$dadosMonitor["pausa_motivo_ausente"] = 1;
} else if (strtoupper($nomePausa) == 'RECUSADA') {
} elseif (strtoupper($nomePausa) == 'RECUSADA') {
$dadosMonitor["pausa_motivo_ausente"] = 2;
}
}
@ -572,32 +580,32 @@ if (!IsAjax()) {
SetAlertAgente(false);
SetAlertTempo(false);
ClassificaChamada($dbcon);
} else if ($acao == 'discar') {
} elseif ($acao == 'discar') {
$acaoDiscar = $_GET["acaoDiscar"];
if ($acaoDiscar == 2) {
IniciaTransferenciaConsultaRt();
} else {
AgtCallRt($dbcon);
}
} else if ($acao == 'pesquisa') {
} elseif ($acao == 'pesquisa') {
TransfPesquisa($dbcon);
} else if ($acao == 'finalizar') {
} elseif ($acao == 'finalizar') {
FinalizaTransferenciaConsultaRt();
} else if ($acao == 'dispAtendimento') {
} elseif ($acao == 'dispAtendimento') {
DisponivelAtendimento();
} else if ($acao == 'liberaDiscador') {
} elseif ($acao == 'liberaDiscador') {
LiberaDiscador($dbcon);
} else if ($acao == 'dispDiscador') {
} elseif ($acao == 'dispDiscador') {
AtivaDiscador($dbcon);
} else if ($acao == 'incluiDiscador') {
} elseif ($acao == 'incluiDiscador') {
IncluiDiscador($dbcon);
} else if ($acao == 'statusFoneDiscador') {
} elseif ($acao == 'statusFoneDiscador') {
StatusFoneDiscador($dbcon);
} else if ($acao == 'operaDiscador') {
} elseif ($acao == 'operaDiscador') {
FuncoesOperacao();
} else if ($acao == 'protoExterno') {
} elseif ($acao == 'protoExterno') {
GravaProtocoloExterno();
} else if ($acao == 'integracao' && GetStatusAgente() && GetAtivaIntegracao()) {
} elseif ($acao == 'integracao' && GetStatusAgente() && GetAtivaIntegracao()) {
RealizaConsultaIntegracao();
}
}
@ -882,7 +890,7 @@ function AtivaDiscador($db)
if ($dispo && GetAgenteDisponivelFila()) {
DisponivelAtendimento(0);
SetDispoDiscador(true);
} else if (GetDispoDiscador()) {
} elseif (GetDispoDiscador()) {
DisponivelAtendimento(0);
SetDispoDiscador(false);
}
@ -1139,9 +1147,9 @@ function DadosAtualiza($dbcon)
if (($key == 'status_agente') && ($value == 'PAUSA')) {
$_SESSION[SS_PAUSA_AGENTE] = 1;
} else if ($key == 'chamadas_atendidas') {
} elseif ($key == 'chamadas_atendidas') {
$GLOBALS['dadosMonitor']['atendidas_pa'] = $value;
} else if ($key == 'chamadas_originadas') {
} elseif ($key == 'chamadas_originadas') {
$GLOBALS['dadosMonitor']['originadas_pa'] = $value;
}
}
@ -1386,55 +1394,67 @@ function ConnectaAgenteRt($db, $dac, $tpAtend, $org_id)
/*
* Se o agente já estiver logado aborta a operação de login
*/
$ramal = GetRamalMonitorar(RAMAL_MONITOR_AGENTE);
$ramalEst = RemoveExibicaoOrg(VerificaRamalEstatico($db, $ramal, $dac));
$dacCheck = '';
$agtCheck = '';
SetStatusAgente();
try {
/* sem dacs definida */
if (!$dac) {
$msg = "Selecione um DAC!";
GeraExcept($msg);
}
/* sem ramal definido */
if (!$ramal) {
$msg = "não há ramal configurado!";
GeraExcept($msg);
}
if (VerficaAgenteLogado($db)) {
/* verifica se a matricula está logada */
if (AgenteON( )) {
$ramalCon = GetRamalAgenteLogado($db);
$msg = "não é possível conectar ao servidor, o Agente já está Conectado no Ramal: $ramalCon!";
GeraExcept($msg);
}
/*
* Remove conexoes do usuario corrente.
*/
LimpaConexao($db);
if (VerificaRamalLogado($db, $dacCheck, $agtCheck, $org_id)) {
$msg = "não é possível conectar ao servidor, Ramal: \"$ramal\" já conectado! Dac: \"$dacCheck\" Agente: \"$agtCheck\"";
/* verifica se o ramal é estático nesta fila */
if (VerificaRamalEstatico($db, $ramal, $dac)) {
$msg = "não é possível conectar ao servidor, Ramal: \"$ramal\" estático na(s) fila(s): \"[$ramal]\"!";
GeraExcept($msg);
}
if ($ramalEst) {
$msg = "não é possível conectar ao servidor, Ramal: \"$ramal\" estático na(s) fila(s): \"[$ramalEst]\"!";
/* verificar se já existe a quantidade de agentes permitido nesta empresa */
if (VerificaMaxAgenteLogado($db)) {
$msg = "não é possível conectar o Agente! O número Máximo de \"PAs\" simultaneos já foi atingido!";
GeraExcept($msg);
}
if (VerificaMaxAgenteLogado($db, $org_id)) {
$msg = "não é possível conectar o Agente! O número Máximo de \"PAs\" simultaneos já foi atingido!";
/* verificar se já está logado este ramal em outra fila */
if (VerificaRamalLogado($db, $dacCheck, $agtCheck)) {
$msg = "não é possível conectar ao servidor, Ramal: \"$ramal\" já conectado! Dac: \"$dacCheck\" Agente: \"$agtCheck\"";
GeraExcept($msg);
}
if (VerificaRamalSigame($db, $ramal, $org_id)) {
/* verifica se o ramal siga-me está ativado */
if (VerificaRamalSigame($db, $ramal)) {
$msg = "não é possível conectar ao servidor, Ramal: \"$ramal\" possui siga-me ativado";
GeraExcept($msg);
}
if (VerificaClassObrigatoria($db, $dac, $org_id)) {
/* veririfique se existe classificação obrigatória */
if (VerificaClassObrigatoria($db, $dac)) {
$msg = "Está configurado \"classificação Obrigatória\", mas não há clssificações disponiveis para este Dac!";
GeraExcept($msg);
}
/*
* Remove conexoes do usuario corrente.
*/
LimpaConexao($db);
/*
* Seleciona a descricao do dac escolhido;
*/
@ -1839,7 +1859,7 @@ function LimpaConexao($db)
* Matricula do usuário logado
*/
$matricula = GetMatricula();
@LogAgente("LimpaConexao", "Inicio", true);
LogAgente("LimpaConexao", "Inicio", true);
/*
* Desliga a chamada corrente
@ -1848,11 +1868,11 @@ function LimpaConexao($db)
$query = "select canal, canal_transfer, canal_agente, ramal, upper(modo_atendimento) as modo_atendimento, dac, uniqueid, status from pbx_supervisor_agentes where matricula = '$matricula' and org_id IN ($org_id, 0)";
$result = pg_query($db, $query);
if (!$result || !pg_num_rows($result)) {
@LogAgente("LimpaConexao", "Nao logado: {$matricula}", false);
LogAgente("LimpaConexao", "Nao logado: {$matricula}", false);
return;
}
$dadosConexao = @pg_fetch_array($result);
$dadosConexao = pg_fetch_array($result);
$canal = $dadosConexao['canal'];
$canalAgente = $dadosConexao['canal_agente'];
$ramal = $dadosConexao['ramal'];
@ -1872,20 +1892,20 @@ function LimpaConexao($db)
* Retira o agente de pausa na central.
*/
if ($status == 'PAUSA') {
@SairPausa($db, $org_id);
SairPausa($db, $org_id);
}
/*
* Se o tipo de atendimento for manual remove agente da fila.
*/
if ($modoAtendimento == 'MANUAL') {
@GetUrl(AST_REM_FILA);
GetUrl(AST_REM_FILA);
}
/*
* Desloga o agente na central.
*/
@GetUrl(AST_LOGOFF_AGENTE, $dac, $matricula);
GetUrl(AST_LOGOFF_AGENTE, $dac, $matricula);
/*
* Quando este parametro for 0 nao mais ha dados do agennte nesta tabela
@ -2104,7 +2124,7 @@ function AgtCallRt($db)
pg_query($db, "commit");
echo "0;OK;Discagem realizada com sucesso!";
} else if (isset($_GET["numeroDiscar"])) {
} elseif (isset($_GET["numeroDiscar"])) {
$matricula = GetMatricula();
$_SESSION[AGT_NUM_DISC] = $numeroDiscar;
@ -2163,7 +2183,7 @@ function AgtCallRt($db)
}
echo "1;OK;Transferência realizada com sucesso!";
} else if (isset($_GET["numeroDiscar"]) && empty($_GET["numeroDiscar"])) {
} elseif (isset($_GET["numeroDiscar"]) && empty($_GET["numeroDiscar"])) {
echo "0;WNG;Informe um número!";
} else {
echo "0;WNG;Ação não identificada!";
@ -2423,7 +2443,7 @@ function DesligarChamadaRt()
} catch (Exception $ex) {
RegistraLogAgente("DesligarChamadaRt", $ex->getMessage(), $ex);
if ($inTran) {
pg_query($db, 'rollback');
pg_query($dbcon, 'rollback');
}
return $ex->getMessage();
}
@ -2518,7 +2538,7 @@ function DisponivelAtendimento($useTran = 1)
if ($dispoAtendimento) {
@GetUrl(AST_ADD_PAUSA);
$newDispo = 0;
} else if (!$dispoAtendimento && !$status) {
} elseif (!$dispoAtendimento && !$status) {
@GetUrl(AST_REM_PAUSA);
$newDispo = 1;
} else {
@ -2694,11 +2714,12 @@ function VerificaRamalEstatico($db, $num, $dac)
$org_id = $_SESSION['SSEmpresaPadrao'];
//$query = "select b.nome from pbx_queues_membros a, pbx_dacs b where a.id_fila = b.id and b.status = 'A' and a.dispositivo like '%$num'";
$query = "select b.nome from pbx_queues_membros a, pbx_dacs b where a.id_fila = b.id AND a.org_id = b.org_id and a.id_fila = '{$dac}' and b.status = 'A' and substring(a.dispositivo,position('/' in a.dispositivo)+1) = '{$num}' and a.org_id IN ($org_id, 0)";
$query = "select b.nome from pbx_queues_membros a, pbx_dacs b where a.id_fila = b.id AND a.org_id = b.org_id and a.id_fila = '{$dac}' and b.status = 'A' and substring(a.dispositivo,position('/' in a.dispositivo)+1) = '{$num}' and a.org_id = $org_id";
$result = pg_query($db, $query);
/*
* Retorna falso se não existirem ramais como membro estatico de nenhuma fila.
*/
$result = pg_query($db, $query);
if (!pg_num_rows($result)) {
return false;
}

5
contacteFunc.php

@ -771,6 +771,8 @@ function VerificaModoAtendimento($db, $dac)
function VerficaAgenteLogado($db)
{
$org_id = $_SESSION['SSEmpresaPadrao'];
/*
* Funcao modificada para derrubar o agente se já logado.
$matricula = GetMatricula();
@ -802,8 +804,9 @@ function VerficaAgenteLogado($db)
function GetRamalAgenteLogado($db)
{
$org_id = $_SESSION['SSEmpresaPadrao'];
$matricula = GetMatricula();
$query = "select ramal from pbx_supervisor_agentes where matricula = '$matricula' ";
$query = "select ramal from pbx_supervisor_agentes where matricula = '$matricula' and org_id = $org_id";
$result = pg_query($db, $query);
$row = pg_fetch_row($result);
return $row[0];

4
include/util/funcoesApl.php

@ -615,6 +615,7 @@ function IsAdmin() {
return true;
}
function AgenteON($idUser = null) {
$org_id = GetOrganizacao();
if ($idUser != null) {
@ -622,14 +623,13 @@ function AgenteON($idUser = null) {
INNER JOIN pbx_usuarios b ON a.matricula = b.matricula
WHERE b.id = '%s' and a.org_id IN (%d, 0)", $idUser, $org_id);
return pg_num_rows(pg_query($query));
} else {
$query = sprintf("SELECT '' FROM pbx_supervisor_agentes WHERE matricula = '%s' AND ramal = '%s' and org_id IN (%d, 0)", GetMatricula(), GetRamalMonitorar(RAMAL_MONITOR_AGENTE), $org_id);
return pg_num_rows(pg_query($query));
}
//return GetStatusAgente() && pg_num_rows(pg_query($query));
//return isset($_SESSION[SS_AGENTE_CONECTADO]) && $_SESSION[SS_AGENTE_CONECTADO];
}
function GetMaxAgentePausa($dac = 0) {

Loading…
Cancel
Save