|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
include('bd.php');
|
|
|
|
|
include('util/util.php');
|
|
|
|
|
|
|
|
|
|
ob_implicit_flush(true);
|
|
|
|
|
set_time_limit(6);
|
|
|
|
|
error_reporting(0);
|
|
|
|
|
$in = fopen("php://stdin", "r");
|
|
|
|
|
$stdlog = fopen("/var/log/asterisk/pbx_complemento.log", "w");
|
|
|
|
|
|
|
|
|
|
// Habilita modo debugging (mais verbose)
|
|
|
|
|
$debug = true;
|
|
|
|
|
|
|
|
|
|
// Do function definitions before we start the main loop
|
|
|
|
|
function read() {
|
|
|
|
|
global $in, $debug, $stdlog;
|
|
|
|
|
$input = str_replace("\n", "", fgets($in, 4096));
|
|
|
|
|
if ($debug) {
|
|
|
|
|
fputs($stdlog, "read: $input\n");
|
|
|
|
|
}
|
|
|
|
|
return $input;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function write($line) {
|
|
|
|
|
global $debug, $stdlog;
|
|
|
|
|
if ($debug)
|
|
|
|
|
fputs($stdlog, "write: $line\n");
|
|
|
|
|
echo $line . "\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Colocamos headers AGI dentro de um array
|
|
|
|
|
while ($env = read()) {
|
|
|
|
|
$s = split(": ", $env);
|
|
|
|
|
$agi[str_replace("agi_", "", $s[0])] = trim($s[1]);
|
|
|
|
|
if (($env == "") || ($env == "\n")) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
write("GET VARIABLE EPOCH");
|
|
|
|
|
$inicio=substr(strrchr(read(),"("),1,-1);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Implementa<EFBFBD><EFBFBD>o para Monitoramento dos ramais vinculados ao servi<EFBFBD>o de Callcenter - Ativo/Receptivo
|
|
|
|
|
* Liga<EFBFBD><EFBFBD>es Originadas
|
|
|
|
|
*/
|
|
|
|
|
write("GET VARIABLE CONSULTA");
|
|
|
|
|
$consulta = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
if (!$consulta) {
|
|
|
|
|
write("GET VARIABLE MONITORADO");
|
|
|
|
|
$monitorado = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
if (!$monitorado) {
|
|
|
|
|
$origem = $agi['callerid'];
|
|
|
|
|
$destino = $agi['extension'];
|
|
|
|
|
$canal_agente = $agi['channel'];
|
|
|
|
|
$uniqueid = $agi['uniqueid'];
|
|
|
|
|
write("GET VARIABLE CONTEXTORAMAL");
|
|
|
|
|
$contextoramal = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
if (!$contextoramal) {
|
|
|
|
|
$contextoramal = 'padrao';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "select matricula,dac,status,chamada_classificado from pbx_supervisor_agentes where ramal = '$origem' and coalesce(trim(uniqueid), '') = ''";
|
|
|
|
|
$result = @pg_query($conexao, $query);
|
|
|
|
|
$row = @pg_fetch_array($result);
|
|
|
|
|
$resultado = pg_num_rows($result);
|
|
|
|
|
$matricula = $row['matricula'];
|
|
|
|
|
$fila = $row['dac'];
|
|
|
|
|
$status = $row['status'];
|
|
|
|
|
$classifica = $row['chamada_classificado'];
|
|
|
|
|
|
|
|
|
|
if ($resultado) {
|
|
|
|
|
/*
|
|
|
|
|
* Tratamento para transferencias cegas nao passarem pela macro-origina-agente
|
|
|
|
|
* O ideia eh que seja adicionado uma variavel TRANSFERENCIACEGA
|
|
|
|
|
* Ultimo implementado com accountcode ao inves da variavel CONSULTANDO
|
|
|
|
|
* write("GET VARIABLE CONSULTANDO");
|
|
|
|
|
* $consultando=substr(strrchr(read(),"("),1,-1);
|
|
|
|
|
*/
|
|
|
|
|
mostra_parametro("TEM_AGENTE_LOGADO");
|
|
|
|
|
$accountcode = $agi['accountcode'];
|
|
|
|
|
|
|
|
|
|
if (!$accountcode) {
|
|
|
|
|
|
|
|
|
|
// write("EXEC PauseQueueMember |Agent/$matricula");
|
|
|
|
|
write("EXEC PauseQueueMember ,Local/$origem@app-callcenter/n");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
// write("SET VARIABLE __PAUSA $status");
|
|
|
|
|
// read();
|
|
|
|
|
|
|
|
|
|
if (strtoupper($status) == 'PAUSA') {
|
|
|
|
|
write("EXEC Playback appsounds/atendente_em_pausa_retire_da_pausa");
|
|
|
|
|
read();
|
|
|
|
|
write("HANGUP");
|
|
|
|
|
read();
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Trata classificao
|
|
|
|
|
* Verifica se a classificao esta ativa
|
|
|
|
|
* Verifica se e exigida a classificao
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
VerificaClassificacao($conexao, $fila, $matricula, $origem, $uniqueid, $classifica, SAINTE);
|
|
|
|
|
|
|
|
|
|
// $query = "select b.prm_agente_classifica, a.exige_classificacao as prm_exige_classificacao
|
|
|
|
|
// from pbx_queues_grupos a, pbx_parametros b
|
|
|
|
|
// where nome = '$fila'";
|
|
|
|
|
//
|
|
|
|
|
// $result = pg_query($conexao, $query);
|
|
|
|
|
// $dados = pg_fetch_row($result);
|
|
|
|
|
// if ($dados[0] && $dados[1]) {
|
|
|
|
|
// //verifica se a chamada ja esta classificada
|
|
|
|
|
// if ($classifica == 0) {
|
|
|
|
|
// write("EXEC Playback appsounds/chamada_nao_classificada");
|
|
|
|
|
// read();
|
|
|
|
|
// write("HANGUP");
|
|
|
|
|
// read();
|
|
|
|
|
// exit;
|
|
|
|
|
// }
|
|
|
|
|
// else {
|
|
|
|
|
// $query = "update pbx_supervisor_agentes set origem_destino = '$destino',canal_agente = '$canal_agente' , status = 'OCUPADO',duracao = 'now()',tipo_ligacao = 'S',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$origem'";
|
|
|
|
|
// $result = @pg_query($conexao, $query);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
// else {
|
|
|
|
|
// $query = "update pbx_supervisor_agentes set origem_destino = '$destino',canal_agente = '$canal_agente' , status = 'OCUPADO',duracao = 'now()',tipo_ligacao = 'S',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$origem'";
|
|
|
|
|
// $result = @pg_query($conexao, $query);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Fun<EFBFBD><EFBFBD>o retorna numero de Protocolo de Atendimento para o agente
|
|
|
|
|
*/
|
|
|
|
|
$protocolo=GeraProtocolo($conexao, $uniqueid);
|
|
|
|
|
// $tentativa = 0;
|
|
|
|
|
// while (true) {
|
|
|
|
|
// $proto = @GetProto($conexao, $uniqueid);
|
|
|
|
|
// if ($proto == '99') {
|
|
|
|
|
// $proto = '0000-000000';
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if (!empty($proto) || $tentativa >= NUM_TENTATIVAS_GERA_PROTO) {
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// $tentativa++;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_supervisor_agentes set protocolo = '$protocolo', origem_destino = '$destino',canal_agente = '$canal_agente' , status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'S',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$origem'";
|
|
|
|
|
$result = @pg_query($conexao, $query);
|
|
|
|
|
|
|
|
|
|
// write("EXEC PauseQueueMember |Agent/$matricula");
|
|
|
|
|
// read();
|
|
|
|
|
write("SET VARIABLE __INICIO_DIAL $inicio");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __MONITORADO SIM");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __CALLCENTER SIM");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __FILA-ORIGEM $fila");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __MATRICULA-ORIGEM $matricula");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __DESTINO-ORIGEM $destino");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __RAMAL $origem");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE __CANALORIGEM $canal_agente");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
write("EXEC Macro origina-agente");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
mostra_parametro("SAIU_DO_AGENTE_LOGADO");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Local/$destino@$contextoramal
|
|
|
|
|
$uniqueid = $agi['uniqueid'];
|
|
|
|
|
$contexto = $argv[1];
|
|
|
|
|
$destino = $agi['extension'];
|
|
|
|
|
|
|
|
|
|
if (strtolower($contexto) == 'ext-transferencia') {
|
|
|
|
|
mostra_parametro("EXT_TRANSFERENCIA");
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
$result = insert_padrao($conexao, $uniqueid, 'transfer', $destino);
|
|
|
|
|
} else if (strtolower($contexto) == 'macro-dial-interno') {
|
|
|
|
|
mostra_parametro("MACRO_DIAL_INTERNO");
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
$direcao = $argv[2];
|
|
|
|
|
$destino = $argv[3];
|
|
|
|
|
|
|
|
|
|
if ($idorigem) {
|
|
|
|
|
$result = insert_padrao($conexao, $idorigem, $direcao, $destino);
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
$result = insert_padrao($conexao, $uniqueid, $direcao, $destino);
|
|
|
|
|
}
|
|
|
|
|
} else if (strtolower($contexto) == 'app-conta-senha') {
|
|
|
|
|
mostra_parametro("APP_CONTA_SENHA");
|
|
|
|
|
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
$conta = $argv[2];
|
|
|
|
|
$destino = $argv[3];
|
|
|
|
|
$query = "select id from pbx_cs_usuarios where matricula = '$conta' and upper(status) = upper('a')";
|
|
|
|
|
$result = @pg_query($conexao, $query);
|
|
|
|
|
$row = @pg_fetch_array($result);
|
|
|
|
|
$id_usuario = $row['id'];
|
|
|
|
|
|
|
|
|
|
if ($idorigem) {
|
|
|
|
|
$result = insert_padrao($conexao, $idorigem, $contexto, $destino, $conta, $id_usuario);
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
$result = insert_padrao($conexao, $uniqueid, $contexto, $destino, $conta, $id_usuario);
|
|
|
|
|
}
|
|
|
|
|
} else if (strtolower($contexto) == 'saida-pstn') {
|
|
|
|
|
mostra_parametro("SAIDA_PSTN");
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
$ramal = strtolower($agi["callerid"]);
|
|
|
|
|
$query = "select matricula,dac from pbx_supervisor_agentes where ramal = '$ramal'";
|
|
|
|
|
$result = @pg_query($conexao, $query);
|
|
|
|
|
$row = @pg_fetch_array($result);
|
|
|
|
|
$matricula = $row['matricula'];
|
|
|
|
|
$dac = $row['dac'];
|
|
|
|
|
|
|
|
|
|
if ($idorigem) {
|
|
|
|
|
if ($matricula) {
|
|
|
|
|
//$query = "select count(*) from ast_bilhetes_complemento where uniqueid2 = '$idorigem' and conta = '$matricula' and direcao = 'app-conta-senha'";
|
|
|
|
|
$query = "select conta from ast_bilhetes_complemento where uniqueid2 = '$idorigem' and direcao = 'app-conta-senha'";
|
|
|
|
|
$result = @pg_query($conexao, $query);
|
|
|
|
|
$row = @pg_fetch_array($result);
|
|
|
|
|
$conta = $row['conta'];
|
|
|
|
|
|
|
|
|
|
if ($conta) {
|
|
|
|
|
if ($conta == $matricula) {
|
|
|
|
|
$result = insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', $matricula, $dac);
|
|
|
|
|
} else {
|
|
|
|
|
insert_padrao($conexao, $idorigem, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$result = insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', $matricula, $dac);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
insert_padrao($conexao, $idorigem, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
if ($matricula) {
|
|
|
|
|
$query = "select conta from ast_bilhetes_complemento where uniqueid2 = '$uniqueid' and direcao = 'app-conta-senha'";
|
|
|
|
|
$result = @pg_query($conexao, $query);
|
|
|
|
|
$row = @pg_fetch_array($result);
|
|
|
|
|
$conta = $row['conta'];
|
|
|
|
|
|
|
|
|
|
if ($conta) {
|
|
|
|
|
if ($conta == $matricula) {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
$result = insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', $matricula, $dac);
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
insert_padrao($conexao, $idorigem, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
$result = insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', $matricula, $dac);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else if (strtolower($contexto) == 'ext-ramais') {
|
|
|
|
|
mostra_parametro("EXT_RAMAIS");
|
|
|
|
|
|
|
|
|
|
$origem = $agi['callerid'];
|
|
|
|
|
$destino = $agi['extension'];
|
|
|
|
|
$canal = $agi['channel'];
|
|
|
|
|
|
|
|
|
|
write("GET VARIABLE MONITORADO");
|
|
|
|
|
$monitorado = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
write("GET VARIABLE TIPO");
|
|
|
|
|
$tipo = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
$tipo = strtolower($tipo);
|
|
|
|
|
|
|
|
|
|
if (!$tipo) {
|
|
|
|
|
$tipo = $argv[2];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($idorigem) {
|
|
|
|
|
if ($idorigem == $uniqueid) {
|
|
|
|
|
insert_padrao($conexao, $idorigem, $tipo, $destino);
|
|
|
|
|
} else {
|
|
|
|
|
if ($monitorado) {
|
|
|
|
|
insert_padrao($conexao, $idorigem, $tipo, $destino);
|
|
|
|
|
} else {
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $tipo, $destino);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $tipo, $destino);
|
|
|
|
|
}
|
|
|
|
|
//Monitoramento Liga<EFBFBD><EFBFBD>es Recebidas CallCenter
|
|
|
|
|
//$query = "select matricula,dac,status from pbx_supervisor_agentes where ramal = '$destino' and upper(status) in ('LIVRE','PAUSA')";
|
|
|
|
|
$query = "select matricula,dac,status,chamada_classificado,upper(modo_atendimento) as modo_atendimento from pbx_supervisor_agentes where ramal = '$destino'";
|
|
|
|
|
$result = @pg_query($conexao, $query);
|
|
|
|
|
$row = @pg_fetch_array($result);
|
|
|
|
|
$resultado = pg_num_rows($result);
|
|
|
|
|
$matricula = $row['matricula'];
|
|
|
|
|
$fila = $row['dac'];
|
|
|
|
|
$status = $row['status'];
|
|
|
|
|
$classifica = $row['chamada_classificado'];
|
|
|
|
|
$modo_atendimento = $row['modo_atendimento'];
|
|
|
|
|
$origem = $agi['callerid'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($modo_atendimento == 'MANUAL') {
|
|
|
|
|
$canal_agente = $agi['channel'];
|
|
|
|
|
} else {
|
|
|
|
|
$canal_agente = 'Agent/' . $matricula;
|
|
|
|
|
write("SET VARIABLE MODOATENDIMENTO AUTO");
|
|
|
|
|
read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Se houver agente logado
|
|
|
|
|
if ($resultado) {
|
|
|
|
|
switch (strtoupper($status)) {
|
|
|
|
|
case 'PAUSA':
|
|
|
|
|
write("SET VARIABLE __PAUSA SIM");
|
|
|
|
|
read();
|
|
|
|
|
exit;
|
|
|
|
|
break;
|
|
|
|
|
case 'LIVRE':
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Trata classificao
|
|
|
|
|
* Verifica se a classificao esta ativa
|
|
|
|
|
* Verifica se e exigida a classificao
|
|
|
|
|
*/
|
|
|
|
|
VerificaClassificacao($conexao, $fila, $matricula, $destino, $uniqueid, $classifica, ENTRANTE);
|
|
|
|
|
// $query = "select b.prm_agente_classifica, a.exige_classificacao as prm_exige_classificacao
|
|
|
|
|
// from pbx_queues_grupos a, pbx_parametros b
|
|
|
|
|
// where nome = '$fila'";
|
|
|
|
|
//
|
|
|
|
|
// $result = pg_query($conexao, $query);
|
|
|
|
|
// $dados = pg_fetch_row($result);
|
|
|
|
|
// if ($dados[0] && $dados[1]) {
|
|
|
|
|
// //verifica se a chamada j<EFBFBD> est<EFBFBD> classificada
|
|
|
|
|
// if ($classifica == 0) {
|
|
|
|
|
// write("SET VARIABLE __CLASSIFICADA NAO");
|
|
|
|
|
// read();
|
|
|
|
|
// exit;
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// else {
|
|
|
|
|
// $query = "update pbx_supervisor_agentes set origem_destino = '$origem',status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'E',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$destino'";
|
|
|
|
|
// $result = pg_query($conexao, $query);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
// else {
|
|
|
|
|
// $query = "update pbx_supervisor_agentes set origem_destino = '$origem',status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'E',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$destino'";
|
|
|
|
|
// $result = pg_query($conexao, $query);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Fun<EFBFBD><EFBFBD>o retorna numero de Protocolo de Atendimento para o agente
|
|
|
|
|
*/
|
|
|
|
|
$protocolo=GeraProtocolo($conexao, $uniqueid);
|
|
|
|
|
// $tentativa = 0;
|
|
|
|
|
// while (true) {
|
|
|
|
|
// $proto = @GetProto($conexao, $uniqueid, $agente);
|
|
|
|
|
// if ($proto == '99') {
|
|
|
|
|
// $proto = '0000-000000';
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if (!empty($proto) || $tentativa >= NUM_TENTATIVAS_GERA_PROTO) {
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// $tentativa++;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_supervisor_agentes set protocolo = '$protocolo', canal = '$canal', origem_destino = '$origem',status = 'CHAMANDO',duracao = 'now()',tipo_ligacao = 'E',uniqueid = '$uniqueid',uniqueid2 = '$uniqueid',tipo_discagem = 'MANUAL' where ramal = '$destino'";
|
|
|
|
|
$result = pg_query($conexao, $query);
|
|
|
|
|
|
|
|
|
|
write("EXEC PauseQueueMember ,Local/$destino@app-callcenter/n");
|
|
|
|
|
read();
|
|
|
|
|
write("SET VARIABLE __INICIO_DIAL $inicio");
|
|
|
|
|
read();
|
|
|
|
|
write("SET VARIABLE __MATRICULA-DESTINO $matricula");
|
|
|
|
|
read();
|
|
|
|
|
write("SET VARIABLE __FILA-DESTINO $fila");
|
|
|
|
|
read();
|
|
|
|
|
write("SET VARIABLE __DIRECAO ENTRADA");
|
|
|
|
|
read();
|
|
|
|
|
write("SET VARIABLE __CALLCENTER-DESTINO SIM");
|
|
|
|
|
read();
|
|
|
|
|
write("SET VARIABLE __RAMALAGENTE $destino");
|
|
|
|
|
read();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
write("SET VARIABLE __OCUPADO SIM");
|
|
|
|
|
read();
|
|
|
|
|
exit;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else if (strtolower($contexto) == 'ext-rotasinternas') {
|
|
|
|
|
mostra_parametro("EXT_ROTAS_INTERNAS");
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
$tipo = $argv[2];
|
|
|
|
|
|
|
|
|
|
if ($idorigem) {
|
|
|
|
|
if ($tipo == 'interna') {
|
|
|
|
|
insert_padrao($conexao, $idorigem, $tipo, $destino);
|
|
|
|
|
} else {
|
|
|
|
|
insert_padrao($conexao, $idorigem, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
if ($tipo == 'interna') {
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $tipo, $destino);
|
|
|
|
|
} else {
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else if (strtolower($contexto) == 'ext-fila') {
|
|
|
|
|
mostra_parametro("EXT_FILA");
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
write("GET VARIABLE TRANSFER");
|
|
|
|
|
$transfer = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
$FONE = $agi["callerid"];
|
|
|
|
|
|
|
|
|
|
write("SET VARIABLE BINA_RETORNO $FONE");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
if ($idorigem) {
|
|
|
|
|
if ($transfer) {
|
|
|
|
|
mostra_parametro("TEM_TRANSFER");
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
insert_padrao($conexao, $idorigem, $contexto, $destino);
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
} else if (strtolower($contexto) == 'transfer-saida') {
|
|
|
|
|
mostra_parametro("TRANSFER_SAIDA");
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
} else if (strtolower($contexto) == 'fila-ramal') {
|
|
|
|
|
mostra_parametro("FILA_RAMAL");
|
|
|
|
|
$destino = $argv[2];
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
} else if (strtolower($contexto) == 'ura') {
|
|
|
|
|
/*
|
|
|
|
|
* Executa noop para cli do asterisk, mostrando a passagem para ura.
|
|
|
|
|
*/
|
|
|
|
|
mostra_parametro('ura');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Captura valores passados na linha de comando.
|
|
|
|
|
*/
|
|
|
|
|
$tipo = trim($argv[2]);
|
|
|
|
|
$idUra = trim($argv[3]);
|
|
|
|
|
$opcUra = isset($argv[4]) ? trim($argv[4]) : '0';
|
|
|
|
|
$opcao = isset($argv[5]) ? trim($argv[5]) : '';
|
|
|
|
|
$acao = isset($argv[6]) ? trim($argv[6]) : '';
|
|
|
|
|
$identProc = 'pbx_complemento.php';
|
|
|
|
|
$upd = '';
|
|
|
|
|
//$log = sprintf("Contexto: %s Tipo: %s Id: %s OpcUra: %s Opcao: %s Acao: %s", $contexto, $tipo, $idUra, $opcUra, $opcao, $acao );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Tenta recuperar o identificador da chamada pela origem, ou seja
|
|
|
|
|
* o identificador atribuido a chamada no momento da recepcao da mesma,
|
|
|
|
|
* sendo que este valor possa ser alterado numa transferencia por exemplo.
|
|
|
|
|
*/
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Identificador da chamada.
|
|
|
|
|
*/
|
|
|
|
|
$uid = $idorigem ? $idorigem : $uniqueid;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Primera interacao com a ura.
|
|
|
|
|
* ini -> Inicia o atendimento da ura.
|
|
|
|
|
* opc -> Digitou uma opcao na ura.
|
|
|
|
|
* def -> Foi executada a opcao default da ura por timeout.
|
|
|
|
|
* seq -> Indica o inicio da atendimeto com "ini", entretanto
|
|
|
|
|
* esta ura foi redirecionada de outra.
|
|
|
|
|
* table field: uniqueid,umv_tipo,umv_ura_id,umv_atendimento,umv_ura_opcao,umv_opcao,umv_acao,reg_proc
|
|
|
|
|
*/
|
|
|
|
|
if ($tipo == 'ini') {
|
|
|
|
|
/*
|
|
|
|
|
* Retorna seq quando ja houve atendimeto em outra "URA" para
|
|
|
|
|
* o identificador corrente, ou seja este atendimento eh para uma
|
|
|
|
|
* "URA" que foi chamada a partir de outra.
|
|
|
|
|
*/
|
|
|
|
|
if (GetInteraUra($uid)) {
|
|
|
|
|
$tipo = 'seq';
|
|
|
|
|
}
|
|
|
|
|
$query = "insert into pbx_ura_movimento(uniqueid,umv_tipo,umv_ura_id,reg_proc,umv_ura_nome)values(%s,%s,%s,%s,(SELECT nome FROM pbx_ura WHERE id = $idUra))";
|
|
|
|
|
$query = sprintf($query, QuotedStr($uid), QuotedStr($tipo), QuotedStr($idUra), QuotedStr($identProc));
|
|
|
|
|
} else if (($tipo == 'opc') or ( $tipo == 'def')) {
|
|
|
|
|
$query = "insert into pbx_ura_movimento(uniqueid,umv_tipo,umv_ura_id,umv_ura_opcao,umv_opcao,umv_acao,reg_proc,umv_ura_nome)values(%s,%s,%s,%s,%s,%s,%s,(SELECT nome FROM pbx_ura WHERE id = $idUra))";
|
|
|
|
|
$query = sprintf($query, QuotedStr($uid), QuotedStr($tipo), QuotedStr($idUra), QuotedStr($opcUra), QuotedStr($opcao), QuotedStr($acao), QuotedStr($identProc));
|
|
|
|
|
|
|
|
|
|
$upd = sprintf("update pbx_ura_movimento set umv_ult_atend_ura = %s, umv_ult_atend_opcao = %s where uniqueid = %s and umv_tipo = 'ini'", QuotedStr($idUra), (($tipo == 'opc') ? QuotedStr($opcUra) : QuotedStr('99')), QuotedStr($uid));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$erro = '';
|
|
|
|
|
$inTran = 0;
|
|
|
|
|
$result = pg_query('begin');
|
|
|
|
|
if (!$result) {
|
|
|
|
|
RaiseExcept('Erro ao iniciar uma transa<EFBFBD><EFBFBD>o.', true);
|
|
|
|
|
}
|
|
|
|
|
$inTran = 1;
|
|
|
|
|
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
RaiseExcept('Erro ao inserir pbx_ura_movimento.', true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($upd) {
|
|
|
|
|
$result = pg_query($upd);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
RaiseExcept('Erro ao atualizar pbx_ura_movimento.', true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$result = pg_query('commit');
|
|
|
|
|
if (!$result) {
|
|
|
|
|
RaiseExcept('Erro ao finalizar uma transa<EFBFBD><EFBFBD>o.', true);
|
|
|
|
|
}
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
|
|
|
|
|
$log = sprintf("Data: %s Cmd: %s Cmd2: %s Sys: %s [ERRO]\n", date('Y-m-d H:i:s'), $query, $upd, $ex->getMessage());
|
|
|
|
|
WriteLog($log, '/var/log/asterisk/pbx_complemento_reg.log');
|
|
|
|
|
write("EXEC Playback appsounds/erro_operacao");
|
|
|
|
|
read();
|
|
|
|
|
write("HANGUP");
|
|
|
|
|
read();
|
|
|
|
|
|
|
|
|
|
if ($inTran) {
|
|
|
|
|
@pg_query('rollback');
|
|
|
|
|
}
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Tenta gravar as informa<EFBFBD>oes da ura, caso nao seja possivel a operacao eh abortada.
|
|
|
|
|
*/
|
|
|
|
|
if ($idUra) {
|
|
|
|
|
$destino = $idUra;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Realiza insert padrao na tabela pbx_complemento.
|
|
|
|
|
*/
|
|
|
|
|
insert_padrao($conexao, $uid, $contexto, $destino);
|
|
|
|
|
|
|
|
|
|
if (!$idorigem) {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
write("GET VARIABLE IDORIGEM");
|
|
|
|
|
$idorigem = substr(strrchr(read(), "("), 1, -1);
|
|
|
|
|
|
|
|
|
|
if ($idorigem) {
|
|
|
|
|
insert_padrao($conexao, $idorigem, $contexto, $destino);
|
|
|
|
|
} else {
|
|
|
|
|
write("SET VARIABLE __IDORIGEM $uniqueid");
|
|
|
|
|
read();
|
|
|
|
|
insert_padrao($conexao, $uniqueid, $contexto, $destino);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function mostra_parametro($parametro) {
|
|
|
|
|
write("EXEC Noop PARAMETRO:$parametro");
|
|
|
|
|
read();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetInteraUra($uid) {
|
|
|
|
|
$query = "select '' from pbx_ura_movimento where uniqueid = '$uid' and umv_tipo = 'ini'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
return pg_num_rows($result) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fclose($in);
|
|
|
|
|
fclose($stdlog);
|
|
|
|
|
exit;
|
|
|
|
|
?>
|