PABX criado para pesquisas
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.
 
 
 
 
 
 

231 lines
7.1 KiB

#!/usr/bin/php -q
<?php
exit;
include('bd.php');
include_once('util/constantes.php');
include_once('util/util.php');
include_once('funcoes/shared.php');
ob_implicit_flush(true);
set_time_limit(6);
$in = fopen("php://stdin", "r");
$stdlog = fopen("/var/log/asterisk/agente_fila.log", "w");
// toggle debugging output (more verbose)
$debug = true;
function read() {
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug)
fputs($stdlog, "read: $input\n");
return $input;
}
function errlog($line) {
global $err;
echo "VERBOSE \"$line\"\n";
}
function write($line) {
global $debug, $stdlog;
if ($debug)
fputs($stdlog, "write: $line\n");
echo $line . "\n";
}
// parse agi headers into array
while ($env = read()) {
$s = explode(": ", $env);
$agi[str_replace("agi_", "", $s[0])] = trim($s[1]);
if (($env == "") || ($env == "\n")) {
break;
}
}
// Se for atendida por um membro estatico (ramal) encerra o script
write("GET VARIABLE MEMBERINTERFACE");
$MEMBERINTERFACE = substr(strrchr(read(), "("), 1, -1);
$AGENTE = explode("@", $MEMBERINTERFACE);
$DISPOSITIVO = $AGENTE[1];
$RAMALLOCAL = $AGENTE[0];
$RAMALAGENTE = explode("/", $RAMALLOCAL);
$RAMAL= $RAMALAGENTE[1];
if ($DISPOSITIVO != 'app-callcenter/n') {
exit;
}
write("GET VARIABLE DAC");
$fila = substr(strrchr(read(), "("), 1, -1);
//Verifica se a ligacao atendida foi realizada por um agente
//write("GET VARIABLE CONSULTA");
//$consulta = substr(strrchr(read(), "("), 1, -1);
//
//write("GET VARIABLE TRANSFER");
//$transfer = substr(strrchr(read(), "("), 1, -1);
write("GET VARIABLE IDORIGEM");
$IDORIGEM = substr(strrchr(read(), "("), 1, -1);
write("GET VARIABLE MEMBERNAME");
$MEMBERNAME = substr(strrchr(read(), "("), 1, -1);
$MATRICULAAGENTE = explode("/", $MEMBERNAME);
$MATRICULA = $MATRICULAAGENTE[1];
write("SET VARIABLE MATRICULA $MATRICULA");
read();
write("DATABASE DEL CANAL $MATRICULA/$IDORIGEM");
read();
write("SET VARIABLE MATRICULA_RETORNO $MATRICULA");
read();
write("SET VARIABLE ATENDIDA_FILA SIM");
read();
$CANAL = $agi["channel"];
$FONE = $agi["callerid"];
$UNIQUEID = $agi["uniqueid"];
$UNIQUEID_CALLBACK = $IDORIGEM;
write("SET VARIABLE FILA $fila");
read();
write("GET VARIABLE URA");
$URA = substr(strrchr(read(), "("), 1, -1);
write("GET VARIABLE CALLERID(name)");
$TRONCO = substr(strrchr(read(), "("), 1, -1);
write("GET VARIABLE CDR(answer)");
$dataBilhete = substr(strrchr(read(), "("), 1, -1);
$dataBilhete = sprintf("'%s'", $dataBilhete);
/*
* Trata classifica<EFBFBD><EFBFBD>o
* Verifica se a classifica<EFBFBD><EFBFBD>o esta ativa
* Verifica se <EFBFBD> exigida a classifica<EFBFBD><EFBFBD>o
*/
/*
* A chamada da funcao esta com uma varaivel nao definida "$classifica" e um aconstante nao definida "FILA".
* VerificaClassificacao($conexao, $fila, $MATRICULA, $RAMAL, $UNIQUEID, $classifica, FILA);
*/
$classifica = 1;
VerificaClassificacao($conexao, $fila, $MATRICULA, $RAMAL, $UNIQUEID, $classifica, 'ENTRANTE');
/*
* Verifica se o dac possui pausa automatica
*/
$query = "select count(*) from pbx_pausa_automatica where iddac = (select id from pbx_queues_grupos where nome = '$fila')";
$result = pg_query($conexao, $query);
$dados = pg_fetch_row($result);
if ($dados[0]) {
write("EXEC PauseQueueMember ,$MEMBERINTERFACE");
read();
}
/*
* Fun<EFBFBD><EFBFBD>o retorna numero de Protocolo de Atendimento para o agente
*/
$protocolo=GeraProtocolo($conexao, $UNIQUEID);
/*
* Pesquisa se existe informa<EFBFBD>oes retornadas pela integra<EFBFBD><EFBFBD>o ativa.
*/
$identificador = '';
$query = "select retorno_cliente from pbx_integracao_reg where (reg_uniqueid = '$UNIQUEID' or reg_uniqueid_old = '$UNIQUEID_CALLBACK')";
$result = @pg_query($query);
if (pg_num_rows($result)) {
$dados = pg_fetch_array($result);
$identificador = $dados['retorno_cliente'];
}
/*
* Modo de atendimento
*/
$query = "select upper(a.modo_atendimento) as modo_atendimento, a.ramal, b.id as fila_id, a.canal_agente from pbx_supervisor_agentes a, pbx_dacs b where b.nome = a.dac and matricula = '$MATRICULA'";
$result = @pg_query($query);
$dados = pg_fetch_array($result);
$automatico = $dados[0] != 'MANUAL';
$ramalAgente = $dados['ramal'];
$filaId = $dados['fila_id'];
$displayFone = $FONE . '-' . $TRONCO;
$canalAgente = $dados['canal_agente'];
$query = "update pbx_supervisor_agentes set status = 'OCUPADO', duracao = 'now()', origem_destino = '$displayFone', canal = '$CANAL', uniqueid = '$UNIQUEID', uniqueid2 = '$UNIQUEID', cont_identificador = '$identificador', tipo_ligacao = 'E', protocolo = '$protocolo' where matricula = '$MATRICULA' and dac = '$fila'";
pg_query($query);
write("GET VARIABLE MATRICULA-ORIGEM");
$MATRICULAORIGEM = substr(strrchr(read(), "("), 1, -1);
if ($MATRICULAORIGEM) {
// write("GET VARIABLE EPOCH");
// $inicio=substr(strrchr(read(),"("),1,-1);
// write("SET VARIABLE INICIO_ATENDIMENTO $inicio");
// read();
// write("DATABASE PUT INICIO_ATENDIMENTO $IDORIGEM $inicio");
// read();
// write("GET VARIABLE FILA-ORIGEM");
// $FILAORIGEM = substr(strrchr(read(), "("), 1, -1);
write("EXEC Macro eventos-conecta-agente,$canalAgente,$UNIQUEID");
read();
// $query = "update pbx_supervisor_agentes set status = 'OCUPADO', canal = (select canal_agente from pbx_supervisor_agentes where matricula = '$MATRICULA') where matricula = '$MATRICULAORIGEM' and dac = '$FILAORIGEM'";
// pg_query($query);
}
$query = "select itgm_id from pbx_integracao_reg a, pbx_integracao_metodo b where b.itgm_id_pai = a.reg_id_metodo and b.evento = 3 and a.reg_uniqueid = '$UNIQUEID'";
$result = @pg_query($query);
write($query);
if (pg_num_rows($result)) {
/*
* Armazena o ramal do agente
*/
$row = pg_fetch_row($result);
$idMetodo = $row[0];
$filaId = $filaId . '-' . $fila;
if (!$TRONCO)
$TRONCO = 0;
$protoAgente = str_replace('-', '', $proto);
if (!$URA) {
$URA = 0;
}
$str = sprintf("/var/lib/asterisk/scripts/integracao/eventoIntegra.php %s %s %s %s %s %s %s %s %s %s %s > /dev/null &", $idMetodo, $UNIQUEID, $MATRICULA, $ramalAgente, $FONE, $TRONCO, $filaId, $protoAgente, $URA, $dataBilhete, 'E');
write($str);
@exec($str);
$query = "update pbx_integracao_reg set reg_ramal = '$ramalAgente' where reg_uniqueid = '$UNIQUEID'";
$result = @pg_query($query);
}
//Identifica o ramal que atendeu a fila
//JA FOI IDENTIFICADO NO INICIO DO SCRIPT ATRAVES DA VARIAVEL MEMBERINTERFACE POIS UTILIZA NA VerificaClassificacao
//$query = "select ramal from pbx_supervisor_agentes where matricula = '$MATRICULA' and dac = '$fila'";
//$result = @pg_query($query);
//$dados = pg_fetch_row($result);
//$RAMAL = $dados[0];
if (!$RAMAL) {
$RAMAL = explode('/', $MEMBERINTERFACE);
$RAMAL = $RAMAL[1];
$RAMAL = explode('@', $RAMAL);
$RAMAL = $RAMAL[0];
}
$query = "insert into ast_bilhetes_complemento (uniqueid2,direcao,destino) values ('$UNIQUEID','fila-ramal','$RAMAL')";
$result = @pg_query($conexao, $query);
write("SET VARIABLE __RAMALAGENTE $RAMAL"); //PARA O QUE EH UTILIZADO???
read();
// clean up file handlers etc.
fclose($in);
fclose($stdlog);
?>