forked from SimplesIP/pabx-app
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.
640 lines
24 KiB
640 lines
24 KiB
#!/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 = explode(": ", $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ção para Monitoramento dos ramais vinculados ao serviço de Callcenter - Ativo/Receptivo |
|
* Ligaçõ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çã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çõ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á está 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çã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çã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çã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ç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; |
|
?>
|
|
|