|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
define('CONF_PATH_LOG_DISCADORCLIENT', '/var/log/asterisk/discadorclient.log');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* To change this template, choose Tools | Templates
|
|
|
|
|
* and open the template in the editor.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function GetQryStatusChamadas($useAgt = true) {
|
|
|
|
|
$matricula = $_SESSION["SSmatriculaUser"];
|
|
|
|
|
$dac = $_SESSION[AGT_DAC_CONECT];
|
|
|
|
|
$query = "SELECT fila
|
|
|
|
|
,ABANDONADAS
|
|
|
|
|
,ATENDIDAS_PA
|
|
|
|
|
,ESPERA
|
|
|
|
|
,round( CASE WHEN(ESPERA = 0)THEN 0 ELSE (TEMPO_ESPERA / ESPERA) END ) * INTERVAL '1 SECOND' AS TME
|
|
|
|
|
,round( CASE WHEN(ATENDIDAS_PA = 0)THEN 0 ELSE (TEMPO_ATENDIMENTO / ATENDIDAS_PA)END) * INTERVAL '1 SECOND' AS TMA
|
|
|
|
|
,TEMPO_ESPERA
|
|
|
|
|
,TEMPO_ATENDIMENTO
|
|
|
|
|
,TEMPO_ABANDONO
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT fila
|
|
|
|
|
,SUM (CASE WHEN EVENTO = 'ABANDON' THEN 1 ELSE 0 END) AS ABANDONADAS
|
|
|
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') THEN 1 ELSE 0 END) AS ATENDIDAS_PA
|
|
|
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND to_number(param1,'999999999') > '3' THEN 1 ELSE 0 END) AS ESPERA
|
|
|
|
|
,SUM (CASE WHEN EVENTO IN ('CONNECT') AND to_number(param1,'999999999') > '1' THEN to_number(param1,'999999999') ELSE 0 END) AS TEMPO_ESPERA
|
|
|
|
|
,SUM (CASE WHEN EVENTO IN ('COMPLETEAGENT','COMPLETECALLER') AND to_number(param2,'999999999') > '1' THEN to_number(param2,'999999999') ELSE 0 END) AS TEMPO_ATENDIMENTO
|
|
|
|
|
,SUM (CASE WHEN( (EVENTO = 'ABANDON') AND (to_number(param2,'999999999') > '1') ) THEN to_number(param3,'999999999') ELSE 0 END) AS TEMPO_ABANDONO
|
|
|
|
|
FROM (
|
|
|
|
|
SELECT
|
|
|
|
|
a.calldate,b.fila,b.evento,b.param1,b.param2,b.param3,b.param4
|
|
|
|
|
FROM ast_bilhetes a
|
|
|
|
|
INNER JOIN ast_eventos_dacs b on b.uid2 = a.uniqueid
|
|
|
|
|
WHERE b.evento in ('ABANDON','COMPLETEAGENT','COMPLETECALLER','CONNECT','ENTERQUEUE')
|
|
|
|
|
AND a.lastapp <> 'Transferred Call'
|
|
|
|
|
AND a.data_bilhete = now()::date ";
|
|
|
|
|
if ($useAgt)
|
|
|
|
|
$query .= " AND substring(b.agente, 7,4) = '$matricula' ";
|
|
|
|
|
$query .= " AND b.fila = (select nome from pbx_dacs where id = $dac)
|
|
|
|
|
) AS DADOS
|
|
|
|
|
GROUP BY FILA
|
|
|
|
|
) AS DADOS
|
|
|
|
|
";
|
|
|
|
|
return $query;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetQryInfoGeral() {
|
|
|
|
|
$dac = $_SESSION[AGT_DAC_CONECT_DESC];
|
|
|
|
|
return "select abandonadas, espera from pbx_supervisor_dacs where upper(trim(dac)) = upper(trim('$dac')) ";
|
|
|
|
|
//atendidas, abandonadas, espera, (tempo_espera * (interval '1 second')) as tempo_espera, cast(percentual_nivel_servico as varchar) || '%' as tempo_nivel_servico
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetQryInfoChamadasCorrente() {
|
|
|
|
|
$matricula = $_SESSION["SSmatriculaUser"];
|
|
|
|
|
//$dac = $_SESSION[AGT_DAC_CONECT_DESC];
|
|
|
|
|
return "select ramal, matricula, nome, (LOCALTIMESTAMP(0) - tempo_login) as tempo_login, modo_atendimento, origem_destino, status, (LOCALTIMESTAMP(0) - duracao) as duracao,
|
|
|
|
|
uniqueid from pbx_supervisor_agentes
|
|
|
|
|
where matricula = '$matricula' ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DispRel($smarty, $tpl) {
|
|
|
|
|
$smarty->display($tpl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetStChamada($db, &$tme, &$tma, &$atd, &$fila) {
|
|
|
|
|
$result = @pg_query($db, GetQryStatusChamadas());
|
|
|
|
|
$st = @pg_num_rows($result) > 0;
|
|
|
|
|
$dados = @pg_fetch_array($result);
|
|
|
|
|
$tme = $st ? $dados["tme"] : "0";
|
|
|
|
|
$tma = $st ? $dados["tma"] : "0";
|
|
|
|
|
$atd = $st ? $dados["atendidas_pa"] : "0";
|
|
|
|
|
$fila = $dados["fila"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetInfoChamada($db, &$stAgtAtende, &$lgd, &$dura, &$qtFila, &$fone, &$abd, &$unqId) {
|
|
|
|
|
|
|
|
|
|
$result = @pg_query($db, GetQryInfoGeral());
|
|
|
|
|
$st = @pg_num_rows($result) > 0;
|
|
|
|
|
$dados = @pg_fetch_array($result);
|
|
|
|
|
$qtFila = $st ? $dados["espera"] : "0";
|
|
|
|
|
|
|
|
|
|
$result = @pg_query($db, GetQryStatusChamadas(false));
|
|
|
|
|
$st = @pg_num_rows($result) > 0;
|
|
|
|
|
$dados = @pg_fetch_array($result);
|
|
|
|
|
$abd = $st ? $dados["abandonadas"] : "0";
|
|
|
|
|
|
|
|
|
|
$result = @pg_query($db, GetQryInfoChamadasCorrente());
|
|
|
|
|
$st = @pg_num_rows($result) > 0;
|
|
|
|
|
$dados = @pg_fetch_array($result);
|
|
|
|
|
$unqId = $dados["uniqueid"];
|
|
|
|
|
$lgd = $st ? $dados["tempo_login"] : "0";
|
|
|
|
|
$stAgtAtende = $st ? $dados["status"] : "0";
|
|
|
|
|
$dura = $st && $dados["origem_destino"] ? $dados["duracao"] : "0";
|
|
|
|
|
$fone = ($st && $dados["origem_destino"]) || (strtoupper($dados["status"]) == "OCUPADO") ? (empty($dados["origem_destino"]) ? "-" : $dados["origem_destino"]) : "Livre";
|
|
|
|
|
$_SESSION[RAMAL_DESTINO] = $fone;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function UpdateLogoff($db) {
|
|
|
|
|
$idLogoff = $_SESSION[AGT_ID_LOGIN];
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_supervisor_agentes
|
|
|
|
|
set logado = now()
|
|
|
|
|
where matricula = '$matricula'";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_eventos_agentes
|
|
|
|
|
set logoff = now(),
|
|
|
|
|
flag = 1
|
|
|
|
|
where id = $idLogoff";
|
|
|
|
|
@pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' ";
|
|
|
|
|
|
|
|
|
|
//echo $query;
|
|
|
|
|
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
if ((!$row[0] && DesConectaAgente($db, 0)) || (GetPausa($db, GetMatricula()))) {
|
|
|
|
|
echo "999";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function UpdatePausa($db) {
|
|
|
|
|
if (AgentePausa()) {
|
|
|
|
|
$idPausa = $_SESSION[AGT_ID_PAUSA];
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_eventos_agentes
|
|
|
|
|
set saida_pausa = now(),
|
|
|
|
|
flag = 1
|
|
|
|
|
where id = $idPausa ";
|
|
|
|
|
@pg_query($db, $query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AgentePausa() {
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' and upper(status) = 'PAUSA' ";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AgenteLivre() {
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' and upper(status) = 'LIVRE' ";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AgtAtivaControles($status) {
|
|
|
|
|
$arControlesAgt = array();
|
|
|
|
|
$arControlesAgt["btConDac"] = false;
|
|
|
|
|
$arControlesAgt["listaDacs"] = false;
|
|
|
|
|
$arControlesAgt["listaClas"] = false;
|
|
|
|
|
$arControlesAgt["listaItem"] = false;
|
|
|
|
|
$arControlesAgt["listaMotivo"] = false;
|
|
|
|
|
$arControlesAgt["rbModoAtend"] = false;
|
|
|
|
|
$arControlesAgt["btPausa"] = false;
|
|
|
|
|
$arControlesAgt["btCliente"] = false;
|
|
|
|
|
$arControlesAgt["txtCliente"] = false;
|
|
|
|
|
$arControlesAgt["bt_classifica"] = false;
|
|
|
|
|
switch ($status) {
|
|
|
|
|
case AGT_STATUS_OFF:
|
|
|
|
|
$arControlesAgt["btConDac"] = true;
|
|
|
|
|
$arControlesAgt["listaDacs"] = true;
|
|
|
|
|
$arControlesAgt["rbModoAtend"] = true;
|
|
|
|
|
break;
|
|
|
|
|
case AGT_STATUS_PAUSA:
|
|
|
|
|
$arControlesAgt["listaClas"] = true;
|
|
|
|
|
$arControlesAgt["listaItem"] = true;
|
|
|
|
|
$arControlesAgt["btPausa"] = true;
|
|
|
|
|
$arControlesAgt["btCliente"] = true;
|
|
|
|
|
$arControlesAgt["txtCliente"] = true;
|
|
|
|
|
$arControlesAgt["bt_classifica"] = true;
|
|
|
|
|
break;
|
|
|
|
|
case AGT_STATUS_LIVRE:
|
|
|
|
|
$arControlesAgt["btConDac"] = true;
|
|
|
|
|
$arControlesAgt["btPausa"] = true;
|
|
|
|
|
$arControlesAgt["listaMotivo"] = true;
|
|
|
|
|
break;
|
|
|
|
|
case AGT_STATUS_OCUPADO:
|
|
|
|
|
$arControlesAgt["btConDac"] = true;
|
|
|
|
|
$arControlesAgt["listaClas"] = true;
|
|
|
|
|
$arControlesAgt["listaItem"] = true;
|
|
|
|
|
$arControlesAgt["btPausa"] = true;
|
|
|
|
|
$arControlesAgt["btCliente"] = true;
|
|
|
|
|
$arControlesAgt["txtCliente"] = true;
|
|
|
|
|
$arControlesAgt["bt_classifica"] = true;
|
|
|
|
|
break;
|
|
|
|
|
case AGT_STATUS_ORIGNANDO:
|
|
|
|
|
break;
|
|
|
|
|
case AGT_STATUS_CHAMANDO:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return $arControlesAgt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ConvertStatusStr($status) {
|
|
|
|
|
$status = strtoupper($status);
|
|
|
|
|
|
|
|
|
|
if ($status == "LIVRE")
|
|
|
|
|
return AGT_STATUS_LIVRE;
|
|
|
|
|
if ($status == "OCUPADO")
|
|
|
|
|
return AGT_STATUS_OCUPADO;
|
|
|
|
|
if ($status == "PAUSA")
|
|
|
|
|
return AGT_STATUS_PAUSA;
|
|
|
|
|
if ($status == "CHAMANDO")
|
|
|
|
|
return AGT_STATUS_CHAMANDO;
|
|
|
|
|
if ($status == "ORIGINANDO")
|
|
|
|
|
return AGT_STATUS_ORIGNANDO;
|
|
|
|
|
return AGT_STATUS_OFF;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetLoginMotivo($motivoLogin) {
|
|
|
|
|
$_SESSION['PAUSA_LOGIN'] = $motivoLogin;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMotivoPausa() {
|
|
|
|
|
global $dbcon;
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "SELECT motivo_pausa FROM pbx_supervisor_agentes WHERE matricula = '$matricula'";
|
|
|
|
|
$resp = @pg_query($dbcon, $query);
|
|
|
|
|
$row = pg_fetch_assoc($resp);
|
|
|
|
|
return strtoupper($row['motivo_pausa']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPausaLogin() {
|
|
|
|
|
return $_SESSION['PAUSA_LOGIN'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CarregaMunicipios($db) {
|
|
|
|
|
$query = "select uf from pbx_uf order by 1";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
$ufs = "";
|
|
|
|
|
$mun = "";
|
|
|
|
|
while ($dados = @pg_fetch_row($result)) {
|
|
|
|
|
$uf = $dados[0];
|
|
|
|
|
|
|
|
|
|
$ufs .= empty($ufs) ? "['$uf'," : ",['$uf',";
|
|
|
|
|
$query = "select mun_id as uf, mun_nome from pbx_municipio_classifica where uf = '$uf' order by uf, mun_nome";
|
|
|
|
|
$resultItem = @pg_query($db, $query);
|
|
|
|
|
$mun = "";
|
|
|
|
|
while ($dadosItem = @pg_fetch_row($resultItem)) {
|
|
|
|
|
$munUf = $dadosItem[0];
|
|
|
|
|
$munDesc = str_replace("'", " ", $dadosItem[1]);
|
|
|
|
|
$mun .= empty($mun) ? "'$munUf;$munDesc'" : ",'$munUf;$munDesc'";
|
|
|
|
|
}
|
|
|
|
|
$ufs .= "[$mun]]\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$ufs = "var ufs = [$ufs];\n\n\n";
|
|
|
|
|
|
|
|
|
|
$ufs .= "function CarregaMunicipios()
|
|
|
|
|
{
|
|
|
|
|
var listaUfs = document.getElementById(\"listaUfs\");
|
|
|
|
|
var listMun = document.getElementById(\"listaMun\");
|
|
|
|
|
var ufValue = listaUfs.options[listaUfs.selectedIndex].value;
|
|
|
|
|
var posicao = 0;
|
|
|
|
|
listMun.length = 0;
|
|
|
|
|
|
|
|
|
|
if(ufValue == 0)
|
|
|
|
|
{
|
|
|
|
|
listMun.options.length = 0;
|
|
|
|
|
listMun.options[posicao] = new Option('----------', 0);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for(i = 0; i < ufs.length; i++)
|
|
|
|
|
{
|
|
|
|
|
var item = ufs[i];
|
|
|
|
|
if(item[0] == ufValue)
|
|
|
|
|
{
|
|
|
|
|
var itens = item[1];
|
|
|
|
|
for(j = 0; j < itens.length; j++)
|
|
|
|
|
{
|
|
|
|
|
var valItens = itens[j].split(';');
|
|
|
|
|
listMun.options[posicao++] = new Option(valItens[1], valItens[0]);
|
|
|
|
|
if(j == 0){ munId = valItens[0]; }
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(ufValue == 0)munId = 0;
|
|
|
|
|
}";
|
|
|
|
|
|
|
|
|
|
$GLOBALS["jsStartup"][] = $ufs;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CarregaClassificacao($db, $dacSel) {
|
|
|
|
|
$query = " SELECT distinct c.id_dac, a.clas_id, a.clas_descricao
|
|
|
|
|
FROM pbx_classifica_atendimento a, pbx_classifica_item b, pbx_classifica_dacs c
|
|
|
|
|
where b.clas_id = a.clas_id
|
|
|
|
|
and c.clas_id = a.clas_id
|
|
|
|
|
and a.clas_status = 1
|
|
|
|
|
order by 3";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
$clas = "";
|
|
|
|
|
$item = "";
|
|
|
|
|
while ($dados = @pg_fetch_row($result)) {
|
|
|
|
|
$dac = $dados[0];
|
|
|
|
|
$id = $dados[1];
|
|
|
|
|
$desc = str_replace("'", "\\'", $dados[2]);
|
|
|
|
|
|
|
|
|
|
$clas .= empty($clas) ? "['$dac', '$id','$desc'," : ",['$dac', '$id','$desc',";
|
|
|
|
|
$query = " SELECT clas_id, clit_id, clit_descricao FROM pbx_classifica_item where clas_id = $id and clit_status = 1 order by 3";
|
|
|
|
|
$resultItem = @pg_query($db, $query);
|
|
|
|
|
$item = "";
|
|
|
|
|
while ($dadosItem = @pg_fetch_row($resultItem)) {
|
|
|
|
|
$idItem = $dadosItem[1];
|
|
|
|
|
$descItem = str_replace("'", "\\'", $dadosItem[2]);
|
|
|
|
|
$item .= empty($item) ? "'$idItem;$descItem'" : ",'$idItem;$descItem'";
|
|
|
|
|
}
|
|
|
|
|
$clas .= "[$item]]\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$clas = "var clas = [$clas];\n\n";
|
|
|
|
|
|
|
|
|
|
$clas .= "function GetAgtClassifica(dac)
|
|
|
|
|
{
|
|
|
|
|
var listClas = document.getElementById(\"listaClas\");
|
|
|
|
|
var posicao = 0;
|
|
|
|
|
listClas.options[posicao] = new Option('----------', 0);
|
|
|
|
|
|
|
|
|
|
for(i = 0; i < clas.length; i++)
|
|
|
|
|
{
|
|
|
|
|
var item = clas[i];
|
|
|
|
|
if(item[0] == dac)
|
|
|
|
|
{
|
|
|
|
|
listClas.options[++posicao] = new Option(item[2], item[1]);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAgtClasItem(clasValue)
|
|
|
|
|
{
|
|
|
|
|
var listaClasItem = document.getElementById(\"listaClasItem\");
|
|
|
|
|
var posicao = 0;
|
|
|
|
|
listaClasItem.options.length = 0;
|
|
|
|
|
listaClasItem.options[posicao] = new Option('----------', 0);
|
|
|
|
|
posicao++;
|
|
|
|
|
|
|
|
|
|
for(i = 0; i < clas.length; i++)
|
|
|
|
|
{
|
|
|
|
|
var item = clas[i];
|
|
|
|
|
if(item[1] == clasValue)
|
|
|
|
|
{
|
|
|
|
|
var itens = item[3];
|
|
|
|
|
for(j = 0; j < itens.length; j++)
|
|
|
|
|
{
|
|
|
|
|
var valItens = itens[j].split(';');
|
|
|
|
|
listaClasItem.options[posicao++] = new Option(valItens[1], valItens[0]);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
GetAgtClassifica($dacSel);
|
|
|
|
|
";
|
|
|
|
|
|
|
|
|
|
return $clas;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ___GetItem($db, $idClas, $idItem) {
|
|
|
|
|
$query = " SELECT clit_id, clit_descricao FROM pbx_classifica_item where clas_id = $idClas and clit_status = 1 order by 2";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
$clas = "<select name=\"listaItem\" style=\"width:169px;\">";
|
|
|
|
|
$def = $idItem;
|
|
|
|
|
if (!$idClas)
|
|
|
|
|
$clas .= "<option value=\"0\" selected>Selecione a Classifica<EFBFBD><EFBFBD>o</option>";
|
|
|
|
|
else {
|
|
|
|
|
while ($dados = @pg_fetch_row($result)) {
|
|
|
|
|
$sel = (!$def++) || ($idItem == $dados[0]) ? "selected" : "";
|
|
|
|
|
$id = $dados[0];
|
|
|
|
|
$desc = $dados[1];
|
|
|
|
|
$clas .= "<option value=\"$id\" $sel>$desc</option>";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$clas .= "</select>";
|
|
|
|
|
|
|
|
|
|
return $clas;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ConectarDac() {
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se o usu<EFBFBD>rio clicou no botao desconectar.
|
|
|
|
|
*/
|
|
|
|
|
if (!isset($_POST["btConDac"]))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
return strtoupper($_POST["btConDac"]) == 'CONECTAR';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Retorna true se o usuario n<EFBFBD>o estiver conectado.
|
|
|
|
|
*/
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' ";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return !$row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAgenteDisponivelFila() {
|
|
|
|
|
/*
|
|
|
|
|
* Retorna true se o usuario n<EFBFBD>o estiver conectado.
|
|
|
|
|
*/
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' and disponivel_atendimento = 1";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0] ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DesconectarDac() {
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se o usu<EFBFBD>rio clicou no botao desconectar.
|
|
|
|
|
*/
|
|
|
|
|
if (!isset($_POST["btConDac"]))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Retorna true se o usu<EFBFBD>rio estiver conectado.
|
|
|
|
|
*/
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' ";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SairDePausa() {
|
|
|
|
|
return isset($_POST["btPausa"]) && AgentePausa();
|
|
|
|
|
//return isset($_POST["btPausa"]) && $_SESSION[SS_PAUSA_AGENTE];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraLogAgente($metodo, $msg, $ex = null) {
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$log[] = "/****************************** INICIO ****************************";
|
|
|
|
|
$log[] = sprintf("Matricula: %s", $matricula);
|
|
|
|
|
$log[] = sprintf("Metodo: %s", $metodo);
|
|
|
|
|
;
|
|
|
|
|
$log[] = sprintf("Data: %s", Date("d-m-Y H:i:s"));
|
|
|
|
|
$log[] = sprintf("Msg: %s", $msg);
|
|
|
|
|
if ($ex) {
|
|
|
|
|
//$log[] = sprintf("Arquivo: %s Linha: %s", $ex->getFile(), $ex->getLine());
|
|
|
|
|
$log[] = sprintf("MsgSys: %s", GetErrorLast('', 1));
|
|
|
|
|
}
|
|
|
|
|
$log[] = "****************************** FIM ****************************/";
|
|
|
|
|
$file = sprintf("agentesrt%s_%s.log", ($matricula ? "_{$matricula}_" : ""), Date("Ym"));
|
|
|
|
|
RegistraLog($log, $file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ArrayToStr($ar) {
|
|
|
|
|
|
|
|
|
|
$strLog = '';
|
|
|
|
|
|
|
|
|
|
foreach ($ar as $key => $value) {
|
|
|
|
|
|
|
|
|
|
if (is_array($value)) {
|
|
|
|
|
$strLog .= !$strLog ? ("{$key}{" . ArrayToStr($value) . "}" ) : ("|{$key}{" . ArrayToStr($value) . "}");
|
|
|
|
|
} else {
|
|
|
|
|
$strLog .= !$strLog ? "{$key}: $value" : "|{$key}: $value";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $strLog;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LogAgente($modulo, $msg, $data = true) {
|
|
|
|
|
global $detalhaLog;
|
|
|
|
|
if ($detalhaLog) {
|
|
|
|
|
if ($data) {
|
|
|
|
|
$msg .= " Data:[" . ArrayToStr($_REQUEST) . "]\n";
|
|
|
|
|
}
|
|
|
|
|
RegistraLogAgente($modulo, $msg);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function EntrarPausa() {
|
|
|
|
|
return isset($_POST["btPausa"]) && (!AgentePausa());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Fun<EFBFBD>oes para o alerta sonoro na classifica<EFBFBD><EFBFBD>o obrigatoria.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function SetAlertAgente($stAlerta) {
|
|
|
|
|
$_SESSION['SSstartAlert'] = $stAlerta;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAlertAgente() {
|
|
|
|
|
if (!isset($_SESSION['SSstartAlert'])) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $_SESSION['SSstartAlert'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetAlertOcupado($status) {
|
|
|
|
|
$_SESSION["SSagenteOcupdo"] = $status;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAlertOcupado() {
|
|
|
|
|
if (!isset($_SESSION['SSagenteOcupdo'])) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $_SESSION["SSagenteOcupdo"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetAlertTempo($tempo) {
|
|
|
|
|
$_SESSION['SStempoAlert'] = $tempo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAlertTempo() {
|
|
|
|
|
if (!isset($_SESSION['SStempoAlert'])) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $_SESSION['SStempoAlert'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Funcoes para o Discador-X.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function HabilitaDiscador() {
|
|
|
|
|
return $_SESSION["prm_use_discador"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Usa o cliente em uma nova janela quando true.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function AgenteNovaJanela() {
|
|
|
|
|
return $_SESSION["prm_agente_nova_janela"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetCampanhaDiscador($idDac) {
|
|
|
|
|
|
|
|
|
|
if (!HabilitaDiscador()) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Procura uma campanha ativa para o dac.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select min(a.cmp_id)
|
|
|
|
|
from pbx_campanha_usuarios u
|
|
|
|
|
inner join pbx_campanha a on a.cmp_id = u.cmp_id and a.cmp_status = 1 and a.id_dac = '$idDac'
|
|
|
|
|
inner join pbx_campanha_lista b on b.cmp_id = a.cmp_id and b.list_status = 1
|
|
|
|
|
where u.matricula = '$matricula' and (a.cmp_tipo_campanha = 1 OR a.cmp_tipo_campanha = 9)";
|
|
|
|
|
//$query = "select a.cmp_id from pbx_campanha_usuarios u, pbx_campanha a, pbx_campanha_lista b where b.cmp_id = a.cmp_id and a.cmp_status = 1 and a.id_dac = '$idDac' and b.list_status = 1";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Retorna false caso nao exista.
|
|
|
|
|
*/
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AtualizaNumDiscador($db, $contfId, $numeroDiscar) {
|
|
|
|
|
global $dac;
|
|
|
|
|
if (!$contfId)
|
|
|
|
|
return true;
|
|
|
|
|
$query = "update pbx_campanha_contato_fone set conf_discado = 1, conf_callfile = substring(now()::text, 1,19) where conf_id = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($contfId));
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result || !pg_affected_rows($result)) {
|
|
|
|
|
GeraExcept('0;Erro;N<EFBFBD>o foi poss<EFBFBD>vel alterar o status do numero corrente!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$dadosDiscador = GetDadosDiscador($dac, 0);
|
|
|
|
|
$query = "update pbx_campanha_contato set cont_discado = 1 where cont_id = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($dadosDiscador['cont_id']));
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_campanha_operacao set conf_id = %s, conf_fone = %s where cmpo_id = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($contfId), QuotedStr($numeroDiscar), QuotedStr($dadosDiscador['cmpo_id']));
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result || !pg_affected_rows($result)) {
|
|
|
|
|
GeraExcept('0;Erro;N<EFBFBD>o foi poss<EFBFBD>vel alterar os dados da operacao!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LmpaUidAgente($db, $matricula) {
|
|
|
|
|
$query = "update pbx_supervisor_agentes set uniqueid2 = '' where matricula = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($matricula));
|
|
|
|
|
return pg_query($db, $query) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetNumDiscadoStatus($conf_id) {
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "select a.conf_id, a.cont_id, a.conf_fone, a.conf_status
|
|
|
|
|
from pbx_campanha_contato_fone a, pbx_campanha_operacao b
|
|
|
|
|
where b.cont_id = a.cont_id
|
|
|
|
|
and b.matricula = '%s'
|
|
|
|
|
and b.cmpo_status in(0,2)
|
|
|
|
|
and a.conf_discado = 1
|
|
|
|
|
and a.conf_status = '0'
|
|
|
|
|
and a.conf_id <> '%s'";
|
|
|
|
|
$query = sprintf($query, $matricula, $conf_id);
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
GeraExcept('0;Erro;N<EFBFBD>o foi poss<EFBFBD>vel verificar o status do numero discado!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (pg_num_rows($result)) {
|
|
|
|
|
return pg_fetch_array($result, null, PGSQL_ASSOC);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AtivaNumeroDiscagem($db, $matricula) {
|
|
|
|
|
global $dac;
|
|
|
|
|
|
|
|
|
|
if (!GetPendenciaDiscador($db, true)) {
|
|
|
|
|
FechaRegistroDiscaor($db);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$dadosDiscador = GetDadosDiscador($dac, 0);
|
|
|
|
|
if ($dadosDiscador !== false) {
|
|
|
|
|
$query = "update pbx_campanha_operacao set carrega_fone = 0 where cmpo_id = %s and matricula = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($dadosDiscador['cmpo_id']), QuotedStr($matricula));
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
if ($result) {
|
|
|
|
|
$query = "update pbx_supervisor_agentes set status_discador = 1 where matricula = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($matricula));
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetDispoDiscador($status) {
|
|
|
|
|
/*
|
|
|
|
|
* Quando o agente inicia a opera<EFBFBD><EFBFBD>o de discagem o agente <EFBFBD> colocado antes como indisponivel
|
|
|
|
|
* para fila, o status atual <EFBFBD> guardado e restaurado qdo finalizada a operacao de discagem.
|
|
|
|
|
*/
|
|
|
|
|
$_SESSION['SSDispoDiscador'] = $status;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDispoDiscador() {
|
|
|
|
|
return $_SESSION['SSDispoDiscador'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDadosDiscador($dac, $idCampanha = 0) {
|
|
|
|
|
$inTran = 0;
|
|
|
|
|
$dadosCampanha = array();
|
|
|
|
|
/*
|
|
|
|
|
* Se existir um registro em opera<EFBFBD><EFBFBD>o esse registro <EFBFBD> recuperado e envidao para o agente. Este registro foi
|
|
|
|
|
* importado da lista para o agente logado, o registro em quet<EFBFBD>o fica dispon<EFBFBD>vel somente para o agente que
|
|
|
|
|
* o selecionou, as tabelas relacionadas tem seus status atualizados para evitar conflitos. O pbx_campanha_contato
|
|
|
|
|
*/
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$query = "select cmpo_id, cmp_id, list_id, cont_id, conf_id, cmp_descricao, list_nome, cont_identificador,
|
|
|
|
|
cont_param1, cont_param2, cont_param3, cont_param4, cont_param5,
|
|
|
|
|
disp_param1, disp_param2, disp_param3, disp_param4, disp_param5,
|
|
|
|
|
conf_fone, lista_fones_discador, matricula, case when(cmpo_status in(0,2))then 0 else 1 end as cmpo_status, carrega_fone, discagem_inicial
|
|
|
|
|
from pbx_campanha_operacao
|
|
|
|
|
where matricula = '$matricula'
|
|
|
|
|
and cmpo_status in(0, 2)";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($result && pg_num_rows($result)) {
|
|
|
|
|
$dadosCampanha = pg_fetch_array($result, null, PGSQL_ASSOC);
|
|
|
|
|
return ocultarDadosAgente($dadosCampanha);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (($idCampanha === 0) || !$idCampanha) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sql = "SELECT cmp_seletiva FROM pbx_campanha WHERE cmp_id = {$idCampanha}";
|
|
|
|
|
$res = pg_query($sql);
|
|
|
|
|
$cmpExclusiva = pg_fetch_assoc($res);
|
|
|
|
|
if ($cmpExclusiva['cmp_seletiva'] == 1) {
|
|
|
|
|
$cmplCamp .= " AND conf_matricula_exclusiva = '{$matricula}' ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Procura por um registro disponivel para discagem.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select a.cmp_id, b.list_id,d.cont_id, d.conf_id, a.cmp_descricao, b.list_nome, c.cont_identificador,
|
|
|
|
|
c.cont_param1, c.cont_param2, c.cont_param3, c.cont_param4, c.cont_param5,
|
|
|
|
|
coalesce(e.disp_param1, 'Param1') as disp_param1, coalesce(e.disp_param2, '-') as disp_param2,
|
|
|
|
|
coalesce(e.disp_param3, '-') as disp_param3, coalesce(e.disp_param4, '-') as disp_param4, coalesce(e.disp_param5, '-') as disp_param5,
|
|
|
|
|
d.conf_fone, '' as lista_fones_discador, '$matricula' as matricula, 0 as cmpo_status, 0 as carrega_fone, 0 as discagem_inicial
|
|
|
|
|
from pbx_campanha a
|
|
|
|
|
inner join pbx_campanha_usuarios u on u.cmp_id = a.cmp_id and u.matricula = '$matricula'
|
|
|
|
|
inner join pbx_campanha_lista b on b.cmp_id = a.cmp_id and b.list_status = 1
|
|
|
|
|
inner join pbx_campanha_contato c on c.list_id = b.list_id and c.cont_id = (select min(cont_id) from pbx_campanha_contato where list_id = b.list_id and cont_discado = 0 and matricula is null and cont_status = 0 $cmplCamp)
|
|
|
|
|
inner join pbx_campanha_contato_fone d on d.cont_id = c.cont_id and d.conf_id = (select min(conf_id) from pbx_campanha_contato_fone where cont_id = c.cont_id and conf_discado = 0 and matricula is null)
|
|
|
|
|
inner join pbx_campanha_contato_display e on e.list_id = b.list_id
|
|
|
|
|
where a.cmp_status = 1
|
|
|
|
|
and (a.cmp_tipo_campanha = 1 OR a.cmp_tipo_campanha = 9)
|
|
|
|
|
and a.id_dac = '$dac' ";
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
GeraExcept("ERRO; Erro ao consultar a campanha!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$dadosCampanha = pg_fetch_array($result, null, PGSQL_ASSOC);
|
|
|
|
|
|
|
|
|
|
$result = pg_query('begin');
|
|
|
|
|
if (!$result) {
|
|
|
|
|
GeraExcept("ERRO; Erro ao iniciar a transa<EFBFBD><EFBFBD>o!");
|
|
|
|
|
}
|
|
|
|
|
$inTran = 1;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Remove o contato da lista registro para discar.
|
|
|
|
|
*/
|
|
|
|
|
$query = "update pbx_campanha_contato set matricula = %s where cont_id = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($matricula), QuotedStr($dadosCampanha["cont_id"]));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result || !pg_affected_rows($result)) {
|
|
|
|
|
GeraExcept("ERRO; Erro ao reservar contato para discagem!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Marca o registro do telefone em operacao.
|
|
|
|
|
*/
|
|
|
|
|
$query = "update pbx_campanha_contato_fone set matricula = %s, conf_status_lista = 2 where conf_id = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($matricula), QuotedStr($dadosCampanha["conf_id"]));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result || !pg_affected_rows($result)) {
|
|
|
|
|
GeraExcept("ERRO; Erro ao reservar o telefone para discagem!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Faz a chamada para o numero default.
|
|
|
|
|
*/
|
|
|
|
|
$dadosCampanha['lista_fones_discador'] = GetFonesContato($dadosCampanha['cont_id'], $dadosCampanha['conf_fone']);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra as informa<EFBFBD>?os do contato para o agente que realizara a chamada.
|
|
|
|
|
*/
|
|
|
|
|
$dadosCampanha['cmpo_id'] = RegistraContatoAgente($matricula, $dadosCampanha);
|
|
|
|
|
|
|
|
|
|
$result = pg_query('commit');
|
|
|
|
|
if (!$result) {
|
|
|
|
|
GeraExcept("ERRO; Erro ao finalizar a transa<EFBFBD><EFBFBD>o!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ocultarDadosAgente($dadosCampanha);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
if ($inTran) {
|
|
|
|
|
pg_query('rollback');
|
|
|
|
|
}
|
|
|
|
|
RegistraLogAgente("GetDadosDiscador", $ex->getMessage(), $ex);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function ocultarDadosAgente($dadosCampanha){
|
|
|
|
|
$campoOcultar = array();
|
|
|
|
|
|
|
|
|
|
foreach($dadosCampanha as $key => $info){
|
|
|
|
|
ocultarCampo($info, $key, $campoOcultar);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach($campoOcultar as $key => $dt){
|
|
|
|
|
if(strpos('disp', $key) !== false){
|
|
|
|
|
$key = str_replace('disp', 'cont', $key);
|
|
|
|
|
}
|
|
|
|
|
$dadosCampanha[$key] = ocultarLGPD($key, $dt);
|
|
|
|
|
}
|
|
|
|
|
return $dadosCampanha;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraContatoAgente($matricula, $dadosCampanha) {
|
|
|
|
|
$query = "insert "
|
|
|
|
|
. " into pbx_campanha_operacao(matricula,cmp_id,list_id,cont_id,conf_id,cmp_descricao,list_nome,cont_identificador,cont_param1,cont_param2,"
|
|
|
|
|
. "cont_param3,cont_param4,cont_param5,disp_param1,disp_param2,disp_param3,disp_param4,disp_param5,conf_fone,lista_fones_discador, cmpo_status)"
|
|
|
|
|
. " values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,'0')";
|
|
|
|
|
$query = sprintf($query, QuotedStr($matricula), QuotedStr($dadosCampanha["cmp_id"]), QuotedStr($dadosCampanha["list_id"]), QuotedStr($dadosCampanha["cont_id"]), QuotedStr($dadosCampanha["conf_id"]), QuotedStr($dadosCampanha["cmp_descricao"]), QuotedStr($dadosCampanha["list_nome"]), QuotedStr($dadosCampanha["cont_identificador"]), QuotedStr($dadosCampanha["cont_param1"]), QuotedStr($dadosCampanha["cont_param2"]), QuotedStr($dadosCampanha["cont_param3"]), QuotedStr($dadosCampanha["cont_param4"]), QuotedStr($dadosCampanha["cont_param5"]), QuotedStr($dadosCampanha["disp_param1"]), QuotedStr($dadosCampanha["disp_param2"]), QuotedStr($dadosCampanha["disp_param3"]), QuotedStr($dadosCampanha["disp_param4"]), QuotedStr($dadosCampanha["disp_param5"]), QuotedStr($dadosCampanha["conf_fone"]), QuotedStr($dadosCampanha["lista_fones_discador"])
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
GeraExcept("ERRO; Erro ao reservar contato para discagem!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return GetCurrVal('pbx_campanha_operacao');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetFonesContato($contId, $value) {
|
|
|
|
|
global $sZListaFones;
|
|
|
|
|
$lista = sprintf('<select name="ListaFones" type="text" id="ListaFones" style="%s" onchange="SetFoneDiscador();">', $sZListaFones);
|
|
|
|
|
/*
|
|
|
|
|
* Pega a lista de status da opera<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select conf_id, conf_fone from pbx_campanha_contato_fone where cont_id = '$contId' and conf_status_lista <> 3 order by conf_id";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$value = trim($value);
|
|
|
|
|
while ($dados = @pg_fetch_row($result)) {
|
|
|
|
|
$id = trim($dados[0]);
|
|
|
|
|
$desc = trim($dados[1]);
|
|
|
|
|
$sel = ($value == $desc) ? " selected" : "";
|
|
|
|
|
$lista .= "<option value=\"$id\"$sel>$desc</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$lista .= "</select>";
|
|
|
|
|
return $lista;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetStatusDiscador($value, $cmpId = 0) {
|
|
|
|
|
$lista = '';
|
|
|
|
|
/*
|
|
|
|
|
* Pega a lista de status da opera<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select ctst_id, ctst_nome from pbx_campanha_contato_status where ctst_status = 1 and not exists(select '' from pbx_status_contato_campanha where cmp_id = '{$cmpId}')
|
|
|
|
|
union
|
|
|
|
|
select a.ctst_id, a.ctst_nome from pbx_campanha_contato_status a, pbx_status_contato_campanha b where b.ctst_id = a.ctst_id and b.cmp_id = '{$cmpId}' and a.ctst_status = 1 order by ctst_nome;";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
$sel = $value ? " selected" : "";
|
|
|
|
|
$lista = "<option value='' $sel>---------------</option>";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while ($dados = @pg_fetch_row($result)) {
|
|
|
|
|
$sel = ($value == $dados[0]) ? " selected" : "";
|
|
|
|
|
$id = $dados[0];
|
|
|
|
|
$desc = $dados[1];
|
|
|
|
|
$lista .= "<option value=\"$id\"$sel>$desc</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$lista .= "</select>";
|
|
|
|
|
return $lista;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDadosIntegracao($dadosIntegracao) {
|
|
|
|
|
$arLabels = array('disp_param0', 'disp_param1', 'disp_param2', 'disp_param3', 'disp_param4', 'disp_param5');
|
|
|
|
|
$arValuesId = array('cont_identificador', 'cont_param1', 'cont_param2', 'cont_param3', 'cont_param4', 'cont_param5');
|
|
|
|
|
|
|
|
|
|
$arDisplay = array();
|
|
|
|
|
$arValues = array();
|
|
|
|
|
$arDados = array_slice(explode('|', trim($dadosIntegracao)), 3, 6);
|
|
|
|
|
if (!count($arDados)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($arDados as $values) {
|
|
|
|
|
list($label, $value) = explode(":", $values);
|
|
|
|
|
$arDisplay[] = $label;
|
|
|
|
|
$arValues[] = $value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$arDados = array();
|
|
|
|
|
for ($i = 0; $i < count($arLabels); $i++) {
|
|
|
|
|
$arDados[$arLabels[$i]] = isset($arDisplay[$i]) ? $arDisplay[$i] : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for ($i = 0; $i < count($arValuesId); $i++) {
|
|
|
|
|
$arDados[$arValuesId[$i]] = isset($arValues[$i]) ? $arValues[$i] : '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $arDados;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RealizaConsultaIntegracao() {
|
|
|
|
|
|
|
|
|
|
include '/var/lib/asterisk/scripts/integracao/localDataBase.php';
|
|
|
|
|
$patScript = "/var/lib/asterisk/scripts/integracao/custom/";
|
|
|
|
|
|
|
|
|
|
$codCliente = $_GET['codigoCliente'];
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$query = "SELECT prm_select_integracao FROM pbx_parametros";
|
|
|
|
|
$sql = pg_query($query);
|
|
|
|
|
$idMetodo = pg_fetch_row($sql);
|
|
|
|
|
|
|
|
|
|
$row = GetMetodoIntegra($idMetodo[0]);
|
|
|
|
|
|
|
|
|
|
$script = trim($row["itgm_comando"]);
|
|
|
|
|
|
|
|
|
|
$nomeMetodo = $patScript . $script;
|
|
|
|
|
if (!file_exists($nomeMetodo)) {
|
|
|
|
|
GeraExcept("RealizaConsultaIntegracao", "O arquivo informado n<EFBFBD>o existe! Nome: $script");
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!empty($nomeMetodo)) {
|
|
|
|
|
include($nomeMetodo);
|
|
|
|
|
$telefone = explode(',', $cliente['fone']);
|
|
|
|
|
$celular = explode(',', $cliente['celular']);
|
|
|
|
|
|
|
|
|
|
$numeroCliente = array(
|
|
|
|
|
soNumero($celular[0]),
|
|
|
|
|
soNumero($telefone[0])
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$numeroCliente = json_encode($numeroCliente);
|
|
|
|
|
$_SESSION['SSIntegracaoAtivo'] = $infoIntegracao;
|
|
|
|
|
} else {
|
|
|
|
|
GeraExcept('RealizaConsultaIntegracao', 'Nome do Metodo nao encontrado!');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($celular[0] && $telefone[0]) {
|
|
|
|
|
SetIntegracaoContato($retorno_cliente);
|
|
|
|
|
echo 'OK;' . $numeroCliente;
|
|
|
|
|
} else {
|
|
|
|
|
echo 'ERRO;Cliente nao encontrado!';
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
$ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ClassificacaoAudioEscuta($audioFone) {
|
|
|
|
|
$cmd = array();
|
|
|
|
|
$resp = "";
|
|
|
|
|
|
|
|
|
|
if (strpos($audioFone, 'AUTO') !== false) {
|
|
|
|
|
$audioFone = explode('|', $audioFone)[1];
|
|
|
|
|
$cmd["Channel"] = sprintf('Local/%s@app-callcenter', GetRamalMonitorar(RAMAL_MONITOR_AUDIO));
|
|
|
|
|
} else {
|
|
|
|
|
$cmd["Channel"] = GetRamalMonitorar(CANAL_MONITOR_AUDIO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$cmd["Action"] = "Originate";
|
|
|
|
|
$cmd["Context"] = 'audio-escuta-apl';
|
|
|
|
|
$cmd["Exten"] = 's';
|
|
|
|
|
$cmd["Priority"] = '1';
|
|
|
|
|
$cmd["CallerID"] = GetRamalMonitorar(RAMAL_MONITOR_AUDIO);
|
|
|
|
|
$cmd["Variable"] = sprintf("AVISO=OK,AUDIO=%s", $audioFone);
|
|
|
|
|
|
|
|
|
|
$retCmd = CommandoAmi($cmd);
|
|
|
|
|
if ($retCmd === false) {
|
|
|
|
|
$resp = "ERRO";
|
|
|
|
|
} else {
|
|
|
|
|
$retCmd = strtoupper(trim($retCmd));
|
|
|
|
|
$resp = $retCmd == 'OK' ? "OK" : "ERRO";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $resp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetClientOperacao($matricula) {
|
|
|
|
|
$query = "SELECT cont_identificador FROM pbx_campanha_operacao WHERE cmpo_id = (SELECT max(cmpo_id)::INT FROM pbx_campanha_operacao WHERE matricula = '{$matricula}')";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
return pg_fetch_assoc($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetContidClient($contid, $uniqueid) {
|
|
|
|
|
if ($uniqueid || $uniqueid != 'null') {
|
|
|
|
|
$query = "SELECT client_id
|
|
|
|
|
FROM pbx_campanha_operacao a
|
|
|
|
|
INNER JOIN pbx_cliente b ON a.cont_id = b.cont_id
|
|
|
|
|
WHERE a.cont_id = {$contid}
|
|
|
|
|
AND client_id NOT IN (SELECT client_id FROM pbx_cliente_audio x WHERE x.client_id = b.client_id) ";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$res = pg_fetch_assoc($result);
|
|
|
|
|
|
|
|
|
|
if (!$res) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = sprintf("INSERT INTO pbx_cliente_audio (client_id, uid) VALUES(%s, %s);", QuotedStr($res['client_id']), $uniqueid);
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
GravaLog("INSERE CLIENTE AUDIO: QUERY: $query | DADOS: [uniqueid: $uniqueid] [contid: $contid] \n", CONF_PATH_LOG_DISCADORCLIENT);
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|