diff --git a/agente/agentert.php b/agente/agentert.php index cf00b2ec..fcb1d440 100644 --- a/agente/agentert.php +++ b/agente/agentert.php @@ -384,6 +384,8 @@ if (!IsAjax()) { if ($acao == 'atualiza') { $dadosMonitor["pausa_motivo_ausente"] = 0; + //O agente só poderá ter acesso ao clique do botão para alterar ramal caso ele não esteja logado + $dadosMonitor["isAgenteLogado"] = GetStatusAgente() ? sprintf('Configurar Ramal ') : sprintf('Configurar Ramal '); $dadosMonitor["dac_padrao"] = $_SESSION["SS_ultimo_dac_agente"] ? $_SESSION["SS_ultimo_dac_agente"] : $_SESSION[SS_DAC_PADRAO_ID]; if ($_SESSION['SS_IS_LOGGED'] == true && $_SESSION[SS_STATUS_AGENTE] == "OFF") { @@ -1485,6 +1487,7 @@ function ConnectaAgenteRt($db, $dac, $tpAtend, $org_id) $_SESSION[SS_DAC_CODIGO] = $dac; $matricula = GetMatricula(); $ramal = GetRamalMonitorar(RAMAL_MONITOR_AGENTE); + $registro = GetRamalWithOrganization(RAMAL_MONITOR_AGENTE); $login = GetLogin(); $conAst = false; $_SESSION[SS_AGT_CONTEXTO_RAMAL] = GetContextoRamal($db, $ramal, $org_id); @@ -1548,7 +1551,7 @@ function ConnectaAgenteRt($db, $dac, $tpAtend, $org_id) * Registra o agente na supervisão. */ $query = "update pbx_supervisor_agentes - set ramal = '$ramal', nome = '$login', dac = '$dacDesc', modo_atendimento = '$moduAtendDesc', duracao = now(), chamada_classificado = '2' + set ramal = '$ramal', nome = '$login', dac = '$dacDesc', modo_atendimento = '$moduAtendDesc', duracao = now(), chamada_classificado = '2', registro = '$registro' where matricula = '$matricula' and org_id = $org_id"; $result = pg_query($db, $query); diff --git a/asterisk/var_lib_asterisk/scripts/callcenter/monitora_agentes.php b/asterisk/var_lib_asterisk/scripts/callcenter/monitora_agentes.php index 981cdc29..4889c856 100755 --- a/asterisk/var_lib_asterisk/scripts/callcenter/monitora_agentes.php +++ b/asterisk/var_lib_asterisk/scripts/callcenter/monitora_agentes.php @@ -13,22 +13,24 @@ try { RaiseExcept("Script abortado,falha de conexão com o socket!!!\n\n"); } - $query = "select id, matricula,dac,extract(epoch from (now() - logado))::int as logado,ramal from pbx_supervisor_agentes order by id"; + $query = "select id, matricula,dac,extract(epoch from (now() - logado))::int as logado,ramal, registro, org_id from pbx_supervisor_agentes order by id"; $result = pg_query($conexao, $query); while ($row = pg_fetch_array($result, null, PGSQL_ASSOC)) { $idAgente = $row['id']; - $agente = trim($row['matricula']); - $dac = trim($row['dac']); - $logado = trim($row['logado']); - $ramal = trim($row['ramal']); + $agente = trim($row['matricula'] ?? ''); + $dac = trim($row['dac'] ?? ''); + $logado = trim($row['logado'] ?? ''); + $ramal = trim($row['ramal'] ?? ''); + $registro = trim($row['registro'] ?? ''); + $org_id = trim($row['org_id'] ?? ''); if ($logado >= $timeout_agente) { if ($socket) { logoff_agentes($socket, $agente); - remove_agentes($conexao, $socket, $agente, $dac, $ramal, $idAgente); + remove_agentes($conexao, $socket, $agente, $dac, $registro, $idAgente, $ramal, $org_id); } else { - remove_agentes($conexao, false, $agente, $dac, $ramal, $idAgente); + remove_agentes($conexao, false, $agente, $dac, $registro, $idAgente, $ramal, $org_id); } WriteLog(sprintf("Script: %s Data: %s Parans Socket: %s Remove: Agente: %s Dac: %s Ramal: %s Id: %s Param SCK: %s %s %s %s \n", $argv[0], date("Y-m-d H:m:i"), ($socket ? 'Ativo' : 'Inativo'), $agente, $dac, $ramal, $idAgente, $hostSck, $portaSck, $usuarioSck, $senhaSck), $path); } @@ -69,26 +71,26 @@ function logoff_agentes($socket, $agente) { fwrite($socket, "ActionID: $actionid\r\n\r\n"); } -function remove_agentes($conexao, $socket, $agente, $dac, $ramal, $idAgente) { +function remove_agentes($conexao, $socket, $agente, $dac, $registro, $idAgente, $ramal, $org_id) { global $logado, $path, $argv; $actionid = rand(000000000, 9999999999); if ($socket === false) { exec("asterisk -rx \"agent logoff {$agente} soft\"\n"); - exec("asterisk -rx \"queue remove member Local/{$ramal}@app-callcenter/n from {$dac}\"\n"); + exec("asterisk -rx \"queue remove member Local/{$registro}@app-callcenter/n from {$dac}\"\n"); } else { fwrite($socket, "Action: queueremove\r\n"); fwrite($socket, "queue: $dac\r\n"); - fwrite($socket, "interface: Local/$ramal@app-callcenter/n\r\n"); + fwrite($socket, "interface: Local/$registro@app-callcenter/n\r\n"); fwrite($socket, "ActionID: $actionid\r\n\r\n"); } $query = "delete from pbx_supervisor_agentes where id = '$idAgente'"; $result = pg_query($conexao, $query); if (!$result) { - RaiseExcept(sprintf("Cmd: [%s] Var:[Conexao: %s Socket: %s Matricula: %s Dac: %s Ramal: %s Erro: %s!!!\n", $query, ($conexao ? 'Sim' : 'Nao'), ($socket ? 'Conectado' : 'Desconectado'), $agente, $dac, $ramal, $erro)); + RaiseExcept(sprintf("Cmd: [%s] Var:[Conexao: %s Socket: %s Matricula: %s Dac: %s Ramal: %s Organizacao: %s!!!\n", $query, ($conexao ? 'Sim' : 'Nao'), ($socket ? 'Conectado' : 'Desconectado'), $agente, $dac, $ramal, $org_id)); } - $log = sprintf("Script: %s Data: %s Msg: %s \n", $argv[0], date("Y-m-d H:m:i"), "Agente: $agente, Dac: $dac excluido, Tempo: $logado Interface: Local/$ramal@app-callcenter/n.\n\n"); + $log = sprintf("Script: %s Data: %s Msg: %s \n", $argv[0], date("Y-m-d H:m:i"), "Agente: $agente, Dac: $dac excluido, Tempo: $logado Interface: Local/$registro@app-callcenter/n.\n\n"); WriteLog($log, $path); } ?> \ No newline at end of file diff --git a/contacteFunc.php b/contacteFunc.php index 969d82e5..914e1517 100644 --- a/contacteFunc.php +++ b/contacteFunc.php @@ -565,7 +565,7 @@ function GetUrlAterisk($acao, $dacLogoff = '', $matLogoff = '', $urlInfo = '', $ $ramalIntercalar = GetRamalWithOrganization(RAMAL_MONITOR_SUPERVISOR); $canalIntercalar = GetRamalWithOrganization(CANAL_MONITOR_SUPERVISOR); $rmalDestinoIntercalar = GetDestinoIntercalar(); - $channelAgente = ($_SESSION[SS_MODO_ATENDIMENTO_COD] == ATENDIMENTO_MANUAL) ? GetRamalWithOrganization(CANAL_MONITOR_AGENTE) : ("Local/$ramal@app-callcenter/n"); + $channelAgente = ($_SESSION[SS_MODO_ATENDIMENTO_COD] == ATENDIMENTO_MANUAL) ? GetChannel() : ("Local/$ramal@app-callcenter/n"); $channelTransfConsulta = GetChannelTrConsulta(); $contextoRamal = __GetContextoRamal(); $channelAgenteAborta = GetChannelAgente(); diff --git a/projeto/base/sql/versao-1.9.0.sql b/projeto/base/sql/versao-1.9.0.sql index a414206a..3620f7d8 100644 --- a/projeto/base/sql/versao-1.9.0.sql +++ b/projeto/base/sql/versao-1.9.0.sql @@ -226,7 +226,7 @@ update pbx_usuarios set check_vl = md5(email); create unique index "idxPbxGrupoNome" on pbx_grupo(gp_nome, org_id); ALTER TABLE pbx_sip_ramais - ADD COLUMN registro varchar(100); + ADD COLUMN registro varchar(105); ALTER TABLE pbx_queues_grupos ADD COLUMN numero_asterisk varchar(25); @@ -336,6 +336,7 @@ Alter table pbx_horarios_itens UPDATE pbx_grupo SET org_id = 1 WHERE gp_id IN (28, 29, 30); - Alter table pbx_callback ADD COLUMN ramal_saida_asterisk varchar(40); + +ALTER TABLE pbx_supervisor_agentes ADD COLUMN registro varchar(105); \ No newline at end of file diff --git a/templates/callcenter/agente/agentert.tpl b/templates/callcenter/agente/agentert.tpl index 446826ee..778017fc 100644 --- a/templates/callcenter/agente/agentert.tpl +++ b/templates/callcenter/agente/agentert.tpl @@ -98,7 +98,7 @@ Tempo - {$ramal_monitor}Configurar Ramal + {$ramal_monitor}{$isAgenteLogado} {if $useModVendas}{$tma}{else}{$hora_atu}{/if} {$tempo_logado}