diff --git a/admin/cadCallBack.php b/admin/cadCallBack.php index 9ab66899..6073849c 100644 --- a/admin/cadCallBack.php +++ b/admin/cadCallBack.php @@ -99,59 +99,71 @@ $acao = $_GET["acao"]; $acao2 = isset($_POST["acao2"]) ? "salva" : ""; $org_id = GetOrganizacao(); + require_once("opcoes.php"); /* * Parametros necessarios para manter a pagina��o. */ $param = sprintf('&numRamal=%s&pgn=%s&bloco=%s&pg=%s', $_REQUEST['numRamal'], $_REQUEST['pgn'], $_REQUEST['bloco'], $_REQUEST['pg']); - if ($acao2 == "salva") { - try { - $id = $_POST["id"]; - $tempoDesligamento = $_POST["tempo_desligamento"]; - $descricao = RemoveAcentos($_POST["descricao"], true); - //$opcaoDest = trim($_POST["opcaoDest"]); - //$acaoDest = trim($_POST["acaoDest"]); - //$opcao1 = trim($_POST["opcao1"]); - //$acao1 = trim($_POST["acao1"]); - $numeros = $_POST["numeros"]; - $ramalSaida = $org_id . $_POST["ramal_saida"]; + function salvarAsterisk($descricao, $opcaoDest, $acaoDest, $opcao1, $acao1, $ramalSaida, $tempoDesligamento, $org_id) { + global $dbcon; - $opcaoDest = trim($_POST["opcaoDest"]); - if($opcaoDest == "ramal"){ - $acaoDest = $org_id . trim($_POST["acaoDest"]); - }else { - $acaoDest = trim($_POST["acaoDest"]); - } - - $opcao1 = trim($_POST["opcao1"]); - if($opcao1 == "ramal"){ - $acao1 = $org_id . trim($_POST["acao1"]); - }else { - $acao1 = trim($_POST["acao1"]); - } + $to_asterisk = Acoes_asterisk($dbcon, $opcaoDest, $acaoDest); + $to_asterisk_1 = Acoes_asterisk($dbcon, $opcao1, $acao1); + pg_query($dbcon, "begin"); + $try_query = "INSERT INTO pbx_callback( descricao, opcao, acao, opcao1, acao1,ramal_saida, tempo_desligamento, org_id, acao_asterisk, acao1_asterisk, ramal_saida_asterisk) + VALUES ('$descricao', '$opcaoDest', '$acaoDest', '$opcao1', '$acao1', '$ramalSaida', $tempoDesligamento, $org_id, $to_asterisk, $to_asterisk_1, $org_id$ramalSaida) RETURNING id"; + $result_query = pg_query($dbcon, $try_query); + if(!$result_query){ + pg_query($dbcon,"rollback"); + return false; + } + $dados = pg_fetch_assoc($result_query); - if ($acao == "inseri") { + $last_id = $dados["id"]; - if (ExisteRegistro($dbcon, 'pbx_callback', 'descricao', $descricao)) { - RaiseExcept('Esta descrição já esta inserida na base de dados!'); - } + $update_query = "UPDATE pbx_callback set id_asterisk = $org_id$last_id WHERE id = $last_id AND org_id = $org_id"; + $result_query = pg_query($dbcon, $update_query); + + if(!$result_query){ + pg_query($dbcon,"rollback"); + return false; + } - $query = "INSERT INTO pbx_callback( descricao, opcao, acao, opcao1, acao1, ramal_saida, tempo_desligamento, org_id) - VALUES ('$descricao', '$opcaoDest', '$acaoDest', '$opcao1', '$acao1', '$ramalSaida', $tempoDesligamento, $org_id)"; + CommandAsterisk2($dbcon, 'ORG_ID', "$org_id$last_id", $org_id); + CommandAsterisk2($dbcon, 'ORG_CALLBACK', "$org_id$last_id", "$last_id"); + CommandAsterisk2($dbcon, 'TIPO', "$org_id$last_id", "CALLBACK"); + CommandAsterisk2($dbcon, 'NOME_APP', "$org_id$last_id", "$descricao"); + CommandAsterisk2($dbcon, 'NUMERO', "$org_id$last_id", "$org_id$last_id"); + CommandAsterisk2($dbcon, 'ID_APP', "$org_id$last_id", "$last_id"); - pg_query($dbcon, $query); + pg_query($dbcon,'commit'); + } + + if ($acao2 == "salva") { + try { + $id = $_POST["id"]; + $tempoDesligamento = $_POST["tempo_desligamento"]; + $descricao = RemoveAcentos($_POST["descricao"], true); + $opcaoDest = trim($_POST["opcaoDest"]); + $acaoDest = trim($_POST["acaoDest"]); + $opcao1 = trim($_POST["opcao1"]); + $acao1 = trim($_POST["acao1"]); + $numeros = $_POST["numeros"]; + $ramalSaida = $_POST["ramal_saida"]; - $query = "select max(id) as id from pbx_callback"; - $result = pg_query($dbcon, $query); - $dados = pg_fetch_array($result); - $id_ult = $dados['id']; + if ($acao == "inseri") { + salvarAsterisk($descricao, $opcaoDest, $acaoDest, $opcao1, $acao1, $ramalSaida, $tempoDesligamento, $org_id); } else if ($acao == "edita") { //REALIZA BACKUP BO BANCO //@backup($dbcon,'pbx_callback','U',$id,'update','CALLBACK'); + $to_asterisk = Acoes_asterisk($dbcon, $opcaoDest, $acaoDest); + $to_asterisk_1 = Acoes_asterisk($dbcon, $opcao1, $acao1); + $query = "UPDATE pbx_callback SET descricao = '$descricao', opcao = '$opcaoDest', @@ -159,12 +171,17 @@ opcao1 = '$opcao1', acao1 = '$acao1', ramal_saida = '$ramalSaida', - tempo_desligamento = $tempoDesligamento - WHERE id = '$id' "; + tempo_desligamento = $tempoDesligamento, + id_asterisk = $org_id$id, + acao_asterisk = $to_asterisk, + acao1_asterisk = $to_asterisk_1, + ramal_saida_asterisk = $org_id$ramalSaida + WHERE id = '$id' + AND org_id = $org_id"; pg_query($dbcon, $query); - $query = "delete from pbx_callback_numeros where id_callback = '$id'"; + $query = "delete from pbx_callback_numeros where id_callback = '$id' and org_id = $org_id"; pg_query($dbcon, $query); } diff --git a/admin/callback.php b/admin/callback.php index b6383f4c..b3f118e4 100644 --- a/admin/callback.php +++ b/admin/callback.php @@ -18,6 +18,10 @@ if ($acao == "deleta") { //limpa relacionamentos do registro com outras tabelas Ajusta_tabelas('callback', $id, $dbcon); + + //Apaga o registro do sqlite3 + $apagar = ['NOME_APP', 'ORG_ID', 'ORG_CALLBACK', 'TIPO', 'NUMERO','ID_APP']; + removeItemSqlite($dbcon, $apagar, $id, $org_id); ?> @@ -53,7 +57,7 @@ if ($acao == "deleta") { $compl = sprintf("and a.descricao ilike %s ", $compl); } - $query = "SELECT id, descricao, ramal_saida FROM pbx_callback a where 1=1 $compl order by id asc"; + $query = "SELECT id, descricao, ramal_saida FROM pbx_callback a WHERE 1=1 $compl AND org_id = $org_id ORDER BY id ASC"; $params = "&pbxRequest=1&numRamal=$filtro" . (isset($_GET['pesquisa']) ? '&pesquisa=1' : ''); $links = PaginaDados($idProg, $query, $params, $regPagina, $offSet, $pagMostra, true); $query .= " limit $regPagina offset $offSet"; diff --git a/admin/funcoes.php b/admin/funcoes.php index 06c37123..1811946b 100644 --- a/admin/funcoes.php +++ b/admin/funcoes.php @@ -189,7 +189,7 @@ function GetParamAmi($tipo, $paramAdic) { $acao["DEL_ORG_ID"] = array("action" => "command", "command" => "database del ORG_ID"); $acao["ORG_RAMAL"] = array("action" => "DBput", "Family" => "ORG_RAMAL"); $acao["DEL_ORG_RAMAL"] = array("action" => "command", "command" => "database del ORG_RAMAL"); - $acao["ID"] = array("action" => "DBput", "Family" => "ID"); + $acao["ID_APP"] = array("action" => "DBput", "Family" => "ID"); $acao["DEL_ID"] = array("action" => "command", "command" => "database del ID"); $acao["ORG_FILA"] = array("action" => "DBput", "Family" => "ORG_FILA"); $acao["DEL_ORG_FILA"] = array("action" => "command", "command" => "database del ORG_FILA"); @@ -2407,18 +2407,18 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) { $arq = $caminho_producao . "extensions_callback.conf"; $escreve = fopen($arq, 'w'); - $query = "select id, descricao, opcao, acao, opcao1, acao1, ramal_saida, tempo_desligamento from pbx_callback"; + $query = "select * from pbx_callback"; $result = pg_query($dbcon, $query); fwrite($escreve, '[ext-callback-externo]' . "\n"); fwrite($escreve, 'include => ext-callback-externo-custom' . "\n"); while ($dados = pg_fetch_array($result)) { $opcao = $dados["opcao"]; - $acao = $dados["acao"]; + $acao = $dados["acao_asterisk"]; $opcao1 = trim($dados["opcao1"]); - $acao1 = $dados["acao1"]; - $ramalSaida = $dados["ramal_saida"]; - $id = $dados["id"]; + $acao1 = $dados["acao1_asterisk"]; + $ramalSaida = $dados["ramal_saida_asterisk"]; + $id = $dados["id_asterisk"]; $tempoDesligamento = $dados['tempo_desligamento']; if (trim($opcao) == 'ura') { @@ -2444,7 +2444,7 @@ function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) { fwrite($escreve, "exten => _$id,n,Set(CONTEXTO-DESTINO=$dest)" . "\n"); fwrite($escreve, "exten => _$id,n,Set(EXTEN-DESTINO=$acao)" . "\n"); fwrite($escreve, "exten => _$id,n,Set(RAMAL-DISCAGEM=$ramalSaida)" . "\n"); // Ramal destino - fwrite($escreve, "exten => _$id,n,System(/var/lib/asterisk/scripts/callback-externo.sh \${ORIGEM} \${CONTEXTO-DESTINO} \${EXTEN-DESTINO} \${RAMAL-DISCAGEM} \${CALLERID(name)}&)" . "\n"); + fwrite($escreve, "exten => _$id,n,System(/var/lib/asterisk/scripts/callback-externo.sh \${ORIGEM} \${CONTEXTO-DESTINO} \${EXTEN-DESTINO} \${RAMAL-DISCAGEM} \${CALLERID(name)}& \${ORG_ID})" . "\n"); fwrite($escreve, "exten => _$id,n,Busy($tempoDesligamento)" . "\n"); fwrite($escreve, "exten => _$id,n,Hangup()" . "\n"); @@ -2993,6 +2993,12 @@ function ApagaUrl($dbcon, $ramal, $org_id) { CommandAsterisk2($dbcon, 'DEL TEMPO-RING-RAMAL', "$org_id$ramal", ''); } +function removeItemSqlite($dbcon, $familys, $key, $org_id) { + foreach($familys as $family) { + CommandAsterisk2($dbcon, 'DEL '.$family, "$key$org_id", ''); + } +} + function GetIdGrupoUser($dbcon, $idUser) { $query = "select gp_id from pbx_grupo_usuario where user_id = '$idUser' limit 1"; $result = pg_query($dbcon, $query); @@ -3101,7 +3107,7 @@ function GeraCallback($dbcon, $reloadUra = true, $silent = 0) { fwrite($escreve, "exten => _$id,n,ExecIf($[\"\${ISNULL(\${CDR(direcao)})}\" = \"1\"]?Set(CDR(direcao)=I))" . "\n"); fwrite($escreve, "exten => _$id,n,ExecIf($[\"\${CDR(direcao)}\" != \"E\" && \"\${ISNULL(\${CDR(ramal_origem)})}\" = \"1\"]?Set(CDR(ramal_origem)=\${CALLERID(num)}))" . "\n"); WriteFile($escreve, "exten => _$id,n,AGI(pbx_complemento.php,ext-callback-externo)\n", $silent); - WriteFile($escreve, "exten => _$id,n,Agi(callback.php,\${CALLERID(NUM):-10})\n", $silent); + WriteFile($escreve, "exten => _$id,n,Agi(callback-agi.php,\${CALLERID(NUM):-10})\n", $silent); WriteFile($escreve, "exten => _$id,n,Set(ORIGEM=\${CALLERID(NUM):-10})\n", $silent); WriteFile($escreve, "exten => _$id,n,Set(CONTEXTO-DESTINO=$dest)\n", $silent); WriteFile($escreve, "exten => _$id,n,Set(EXTEN-DESTINO=$acao)\n", $silent); diff --git a/admin/opcoes.php b/admin/opcoes.php index 299c8d1a..9f71a69b 100644 --- a/admin/opcoes.php +++ b/admin/opcoes.php @@ -66,7 +66,7 @@ function Acaogrupo_Asterisk($dbcon, $acaoDest, $org_id){ function AcaoFilas_Asterisk($dbcon, $acaoDest, $org_id){ - $query = "SELECT numero FROM pbx_queues_grupos where status='A' and org_id = $1 and numero = $2"; + $query = "SELECT numero_asterisk FROM pbx_queues_grupos where status='A' and org_id = $1 and numero = $2"; pg_prepare($dbcon, "filas_asterisk", $query); $result = pg_execute( $dbcon, "filas_asterisk", array($org_id, $acaoDest)); @@ -82,7 +82,7 @@ function AcaoFilas_Asterisk($dbcon, $acaoDest, $org_id){ function AcaoHorarios_Asterisk($dbcon, $acaoDest, $org_id){ - $query = "SELECT distinct a.id from pbx_horarios a, pbx_horarios_itens b where a.org_id = $1 and a.org_id = b.org_id and b.id_horario = a.id and a.id = $2 order by nome asc"; + $query = "SELECT distinct a.id_asterisk from pbx_horarios a, pbx_horarios_itens b where a.org_id = $1 and a.org_id = b.org_id and b.id_horario = a.id and a.id = $2 order by nome asc"; pg_prepare($dbcon, "horario_asterisk", $query); $result = pg_execute($dbcon, "horario_asterisk", array( $org_id, $acaoDest )); @@ -97,7 +97,7 @@ function AcaoHorarios_Asterisk($dbcon, $acaoDest, $org_id){ function AcaoDisa_Asterisk($dbcon, $acaoDest, $org_id){ - $query = "SELECT numero FROM pbx_disa where org_id = $1 and numero = $2"; + $query = "SELECT * FROM pbx_disa where org_id = $1 and numero = $2"; pg_prepare($dbcon, "disa_asterisk", $query); $result = pg_execute($dbcon, "disa_asterisk", array( $org_id, $acaoDest )); @@ -140,7 +140,7 @@ function AcaoConferencia_Asterisk($dbcon, $acaoDest, $org_id){ function AcaoCallback_Asterisk($dbcon, $acaoDest, $org_id){ - $query = "SELECT distinct id, descricao FROM pbx_callback where org_id = $1 and id = $2 order by descricao"; + $query = "SELECT distinct id_asterisk, descricao FROM pbx_callback where org_id = $1 and id = $2 order by descricao"; pg_prepare($dbcon, "callback_asterisk", $query); $result = pg_execute($dbcon, "callback_asterisk", array( $org_id, $acaoDest )); @@ -154,7 +154,7 @@ function AcaoCallback_Asterisk($dbcon, $acaoDest, $org_id){ function Acaointegativa_Asterisk($dbcon, $acaoDest, $org_id){ - $query = "select b.itgm_id as itgm_id, a.itgc_nome || '-' || b.itgm_nome as itgc_nome + $query = "select b.itgm_id_asterisk as itgm_id_asterisk, a.itgc_nome || '-' || b.itgm_nome as itgc_nome from pbx_integracao_configuracao a, pbx_integracao_metodo b where org_id = $1 and b.itgm_id = $2 and b.itgc_id = a.itgc_id and b.itgm_retorno = 1 order by a.itgc_nome, b.itgm_nome"; pg_prepare($dbcon, "integrativa_asterisk", $query); @@ -172,7 +172,7 @@ function AcaoRotaInterna_Asterisk($dbcon, $acaoDest, $org_id){ $query = "select b.modelo as id, b.modelo as nome from pbx_rotas_saida a, pbx_rotas_saida_modelos b - where org_id = {$org_id} and b.id_rota = a.id + where org_id = {$org_id} and b.id_rota = a.id and upper(a.tipo) = 'I' and b.modelo = '$acaoDest' order by 1;"; pg_prepare($dbcon, "rotainterna_asterisk", $query); diff --git a/asterisk/var_lib_asterisk/agi-bin/callback.php b/asterisk/var_lib_asterisk/agi-bin/callback_agi.php similarity index 86% rename from asterisk/var_lib_asterisk/agi-bin/callback.php rename to asterisk/var_lib_asterisk/agi-bin/callback_agi.php index e576c172..3391e7ab 100755 --- a/asterisk/var_lib_asterisk/agi-bin/callback.php +++ b/asterisk/var_lib_asterisk/agi-bin/callback_agi.php @@ -39,11 +39,12 @@ while ($env = read()) { write("GET VARIABLE ORG_ID"); $org_id = substr(strrchr(read(), "("), 1, -1); +write('DATABASE GET ORG_CALLBACK ' . $agi['extension']); +$callBackNumber = substr(strrchr(read(), "("), 1, -1); -$callback = $agi['extension']; $numero = $argv[1]; $numeroConsulta = IncluiDDD($numero); -$query = "select count(*) as resultado from pbx_callback a inner join pbx_callback_numeros b on a.id = b.id_callback and a.org_id = b.org_id where a.id = '$callback' and '$numeroConsulta' similar to b.numero and a.org_id = $org_id"; +$query = "select count(*) as resultado from pbx_callback a inner join pbx_callback_numeros b on a.id = b.id_callback and a.org_id = b.org_id where a.id = '$callBackNumber' and '$numeroConsulta' similar to b.numero and a.org_id = $org_id"; $result = pg_query($conexao, $query); $row = @pg_fetch_row($result); diff --git a/asterisk/var_lib_asterisk/scripts/callback-externo.php b/asterisk/var_lib_asterisk/scripts/callback-externo.php index 02d0c553..b56dda7d 100755 --- a/asterisk/var_lib_asterisk/scripts/callback-externo.php +++ b/asterisk/var_lib_asterisk/scripts/callback-externo.php @@ -2,7 +2,7 @@ //#!/bin/bash -function cria_callback($ORIGEM, $CONTEXTO, $DESTINO, $RAMALDESTINO, $PRIORIDADE) { +function cria_callback($ORIGEM, $CONTEXTO, $DESTINO, $RAMALDESTINO, $PRIORIDADE, $ORG_ID) { if ($CONTEXTO == "ext-voicemail") { $PRIORIDADE = explode('|', $DESTINO)[1]; @@ -36,6 +36,7 @@ function cria_callback($ORIGEM, $CONTEXTO, $DESTINO, $RAMALDESTINO, $PRIORIDADE) . "Priority: $PRIORIDADE\n" . "Callerid: $ORIGEM\n" . "Set: RAMAL = $RAMALDESTINO\n" + . "Set: ORG_ID=$ORG_ID\n" . "Set: CALLBACK = SIM\n" . "\n"; @@ -49,7 +50,7 @@ function cria_callback($ORIGEM, $CONTEXTO, $DESTINO, $RAMALDESTINO, $PRIORIDADE) } //sleep(10); -cria_callback($argv[1], $argv[2], $argv[3], $argv[4], 1); +cria_callback($argv[1], $argv[2], $argv[3], $argv[4], 1, $argv[6]); exit; /* diff --git a/asterisk/var_lib_asterisk/scripts/callback-externo.sh b/asterisk/var_lib_asterisk/scripts/callback-externo.sh index 0e89b9c2..ec9d57ed 100755 --- a/asterisk/var_lib_asterisk/scripts/callback-externo.sh +++ b/asterisk/var_lib_asterisk/scripts/callback-externo.sh @@ -7,6 +7,7 @@ CONTEXTO=$2 DESTINO=$3 RAMALDESTINO=$4 CALLERIDNAME=$5 +ORG_ID=$6 PRIORIDADE=1 @@ -43,6 +44,7 @@ Extension: $DESTINO Priority: $PRIORIDADE Callerid: "$CALLERIDNAME" <$ORIGEM> Set: RAMAL=$RAMALDESTINO +Set: ORG_ID=$ORG_ID Set: CALLBACK=SIM EOF1 ) diff --git a/projeto/base/sql/versao-1.9.0.sql b/projeto/base/sql/versao-1.9.0.sql index 8bf8a80d..6148ab65 100644 --- a/projeto/base/sql/versao-1.9.0.sql +++ b/projeto/base/sql/versao-1.9.0.sql @@ -238,7 +238,7 @@ ALTER TABLE pbx_queues_grupos -- Colunas para o asterisk do pbx_anuncios ALTER TABLE pbx_anuncios - ADD COLUMN id_asterisk varchar(35) default NULL;; + ADD COLUMN id_asterisk varchar(35) default NULL; ALTER TABLE pbx_anuncios ADD COLUMN acao_asterisk varchar(110); @@ -250,6 +250,9 @@ ALTER table pbx_anuncios Alter table pbx_callback ADD COLUMN id_asterisk varchar(35) default NULL; +ALTER TABLE pbx_callback +ADD COLUMN ramal_saida_asterisk varchar(40); + Alter table pbx_callback ADD COLUMN acao_asterisk varchar(110); @@ -264,7 +267,7 @@ Alter table pbx_disa ADD COLUMN acao_asterisk varchar(110); Alter table pbx_disa - ADD COLUMN ramal_saida varchar(40); + ADD COLUMN ramal_saida_asterisk varchar(40); -- Coluna para o asterisk do pbx_rotas_entrada Alter table pbx_rotas_entrada @@ -323,3 +326,6 @@ Alter table pbx_voicemail_usuarios Alter table pbx_voicemail_usuarios ADD COLUMN numero_ramal_asterisk varchar(110); + +Alter table pbx_rotas_saida +ADD COLUMN id_asterisk varchar(30); \ No newline at end of file