#!/usr/bin/php -q 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($conexao, '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($conexao, $upd); if (!$result) { RaiseExcept('Erro ao atualizar pbx_ura_movimento.', true); } } $result = pg_query($conexao, '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($conexao, '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, 'null', 'null', 'null', 'null', $id_empresa); if (!$idorigem) { write("SET VARIABLE __IDORIGEM $uniqueid"); read(); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa); } } else { write("GET VARIABLE IDORIGEM"); $idorigem = substr(strrchr(read(), "("), 1, -1); if ($idorigem) { insert_padrao($conexao, $idorigem, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa); } else { write("SET VARIABLE __IDORIGEM $uniqueid"); read(); insert_padrao($conexao, $uniqueid, $contexto, $destino, 'null', 'null', 'null', 'null', $id_empresa); } } function mostra_parametro($parametro) { write("EXEC Noop PARAMETRO:$parametro"); read(); } function GetInteraUra($uid) { global $dbcon; $query = "SELECT '' FROM pbx_ura_movimento WHERE uniqueid = '$uid' AND umv_tipo = 'ini'"; $result = pg_query($dbcon, $query); return pg_num_rows($result) ? true : false; } fclose($in); fclose($stdlog); exit; ?>