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.
4127 lines
208 KiB
4127 lines
208 KiB
<?php |
|
|
|
//função para para execução de comandos no servidor |
|
//Função para converter as datas no formato dd/mm/YYYY |
|
function arruma_data($data) |
|
{ |
|
return substr($data, 8, 2) . "/" . substr($data, 5, 2) . "/" . substr($data, 0, 4); |
|
} |
|
|
|
//func�o para converter as datas no formato YYYY-mm-dd |
|
function inverte_data($data) |
|
{ |
|
return substr($data, 6, 4) . "-" . substr($data, 3, 2) . "-" . substr($data, 0, 2); |
|
} |
|
|
|
//Função¿½o para limpar os relacionamentos do banco de dados |
|
function Ajusta_ramais($nome, $conexao, $reload = false, $reloadUra = false) |
|
{ |
|
$query = "delete from pbx_agenda where tipo = 'R' and ramal = '$nome'"; |
|
$result = pg_query($conexao, $query); |
|
|
|
$query = "delete from pbx_grupos_numeros where ramal = '$nome'"; |
|
if ($result) |
|
$result = pg_query($conexao, $query); |
|
|
|
$query = "delete from pbx_grupos_atendimento_ramais where ramal = '$nome'"; |
|
if ($result) |
|
$result = pg_query($conexao, $query); |
|
|
|
$query = "delete from pbx_queues_membros where dispositivo like '%/$nome'"; |
|
if ($result) |
|
$result = pg_query($conexao, $query); |
|
|
|
$query = "delete from rma_depto_ramais where nome = '$nome'"; |
|
if ($result) |
|
$result = pg_query($conexao, $query); |
|
|
|
|
|
if (!$result) { |
|
return false; |
|
} |
|
|
|
ApagaUrl($conexao, $nome); |
|
|
|
|
|
return true; |
|
} |
|
|
|
//Função¿½o para limpar os relacionamentos do banco de dados |
|
function Ajusta_troncos($nome, $conexao) |
|
{ |
|
$query1 = "delete from pbx_rotas_entrada_troncos where id_tronco='$nome'"; |
|
$query2 = "delete from pbx_grupos_atendimento_ramais where ramal='$nome'"; |
|
$query3 = "delete from pbx_queues_membros where dispositivo='%/$nome'"; |
|
|
|
pg_query($conexao, $query1); |
|
pg_query($conexao, $query2); |
|
pg_query($conexao, $query3); |
|
} |
|
|
|
/** |
|
* Limpa as referencias de um recurso que sera apagado |
|
* @param String $opcao Ex.: ANUNCIO, DISA, ETC |
|
* @param String $acao O valor da opcao referenciada, ex.: Se for um auncio a $acao sera seu id |
|
* @param Recurso $conexao Conexao para o banco de dados |
|
* @param Boolean $reload indica que o arquivo sera inserido na data base do asterisk |
|
* @param Boolean $reloadUra Sera necessario excutar o Dialplan reload no asterisk |
|
*/ |
|
function Ajusta_tabelas($opcao, $acao, $conexao, $reload = true, $reloadUra = true) |
|
{ |
|
|
|
$path = '/var/log/asterisk/ajusta_tabelas.log'; |
|
|
|
$tables = array( |
|
'pbx_anuncios' => array('opcao', 'acao', 'ANUNCIOS', 'Y', 'N'), |
|
'pbx_callback' => array('opcao', 'acao', 'CALLBACK', 'N', 'N'), |
|
'pbx_callback' => array('opcao1', 'acao1', 'CALLBACK', 'Y', 'N'), |
|
'pbx_contextos' => array('opcao', 'acao', 'CONTEXTOS', 'N', 'N'), |
|
'pbx_contextos_opcoes' => array('opcao', 'acao', 'CONTEXTOS', 'Y', 'N'), |
|
'pbx_disa' => array('opcao', 'acao', 'DISA', 'Y', 'N'), |
|
'NOTABLE' => array('opcao', 'acao', 'CONFERENCIA', 'Y', 'N'), |
|
'pbx_grupos' => array('opcao', 'acao', 'GRUPOS', 'Y', 'N'), |
|
'pbx_horarios' => array('opcao_nao', 'acao_nao', 'HORARIOS', 'N', 'N'), |
|
'pbx_horarios_itens' => array('opcao', 'acao', 'HORARIOS', 'Y', 'N'), |
|
'pbx_integracao_configuracao' => array('opcao', 'acao', '', 'N', 'N'), |
|
'pbx_listanegra' => array('opcao', 'acao', '', 'N', 'N'), |
|
'pbx_queues_grupos' => array('opcao', 'acao', 'QUEUES_GRUPOS', 'Y', 'N'), |
|
'pbx_rotas_entrada' => array('opcao', 'acao', 'ROTA_ENTRADA', 'Y', 'N'), |
|
'pbx_ura' => array('opcao', 'acao', 'URA', 'N', 'N'), |
|
'NOTABLE' => array('', '', 'TESTES', 'Y', 'N'), |
|
'NOTABLE' => array('', '', 'VOICEMAIL', 'Y', 'N'), |
|
'NOTABLE' => array('', '', 'SIP_RAMAIS', 'Y', 'N'), |
|
'NOTABLE' => array('', '', 'DIGIVOICE', 'Y', 'N'), |
|
'NOTABLE' => array('', '', 'DGV', 'Y', 'N'), |
|
'NOTABLE' => array('', '', 'IAX_PBX', 'Y', 'N'), |
|
'NOTABLE' => array('', '', 'PBX', 'Y', 'N'), |
|
'pbx_ura_destino' => array('tipo', 'comando', 'URA', 'Y', 'Y') |
|
); |
|
if ($opcao == 'voice') { |
|
$acao = sprintf("%s/%%", $acao); |
|
} |
|
|
|
try { |
|
foreach ($tables as $table => $dados) { |
|
$fOpcao = $dados[0]; |
|
$fAcao = $dados[1]; |
|
$idxGeraArq = $dados[2]; |
|
$reloadArq = $dados[3] === 'Y' ? $reload : false; |
|
$reloadDialPlan = $dados[4] === 'Y' ? $reloadUra : false; |
|
|
|
if (($table != 'NOTABLE') && ($opcao)) { |
|
$query = sprintf("update %s set %s = '', %s = '' where %s = %s and %s like %s", $table, $fOpcao, $fAcao, $fOpcao, QuotedStr($opcao), $fAcao, QuotedStr($acao)); |
|
//WriteLog($query . "\n", $path); |
|
if (!pg_query($conexao, $query)) { |
|
GeraExcept(sprintf("Comando: [%s] Erro: %s\n", $query, GetLasterror())); |
|
} |
|
} |
|
|
|
if ($reloadArq) { |
|
gera_arquivos($conexao, $idxGeraArq, $reloadArq, $reloadDialPlan); |
|
} |
|
} |
|
} catch (Exception $exc) { |
|
WriteLog($exc->getMessage(), $path); |
|
} |
|
} |
|
|
|
function GetParamAmi($tipo, $paramAdic) |
|
{ |
|
$tipo = str_replace(" ", "_", $tipo); |
|
$acao["SIP"] = array("action" => "command", "command" => "module reload chan_sip.so"); |
|
$acao["IAX"] = array("action" => "command", "command" => "module reload chan_iax2.so"); |
|
$acao["VOICE"] = array("action" => "command", "command" => "module reload app_voicemail.so"); |
|
$acao["QUEUES"] = array("action" => "command", "command" => "module reload app_queue.so"); |
|
$acao["MUSIC"] = array("action" => "command", "command" => "module reload res_musiconhold.so"); |
|
$acao["URA"] = array("action" => "command", "command" => "dialplan reload"); |
|
$acao["ESPERA"] = array("action" => "DBPut", "Family" => "CHAMADA-ESPERA"); |
|
$acao["SIGAME-INTERNO"] = array("action" => "DBPut", "Family" => "SIGAME-INTERNO"); |
|
$acao["GRAVACAO"] = array("action" => "DBPut", "Family" => "GRAVACAO-IN"); |
|
$acao["GRAVACAO-OUT"] = array("action" => "DBPut", "Family" => "GRAVACAO-OUT"); |
|
$acao["MUSICA"] = array("action" => "DBPut", "Family" => "MUSICA-ESPERA"); |
|
$acao["NAOPERTUBE"] = array("action" => "DBPut", "Family" => "NAOPERTUBE"); |
|
$acao["CADEADO"] = array("action" => "DBPut", "Family" => "CADEADO"); |
|
$acao["SIGAME-EXTERNO"] = array("action" => "DBPut", "Family" => "SIGAME-EXTERNO"); |
|
$acao["SIGAME-NAOATENDE"] = array("action" => "DBPut", "Family" => "SIGAME-NAOATENDE"); |
|
$acao["SIGAME-OCUPADO"] = array("action" => "DBPut", "Family" => "SIGAME-OCUPADO"); |
|
$acao["VOICE2"] = array("action" => "DBPut", "Family" => "VM"); |
|
$acao["SENHA"] = array("action" => "DBPut", "Family" => "SENHA"); |
|
$acao["DISPOSITIVO"] = array("action" => "DBPut", "Family" => "DIAL"); |
|
$acao["DEL_ESPERA"] = array("action" => "command", "command" => "database del CHAMADA-ESPERA"); |
|
$acao["DEL_SIGAME-INTERNO"] = array("action" => "command", "command" => "database del SIGAME-INTERNO"); |
|
$acao["DEL_GRAVACAO"] = array("action" => "command", "command" => "database del GRAVACAO-IN"); |
|
$acao["DEL_GRAVACAO-OUT"] = array("action" => "command", "command" => "database del GRAVACAO-OUT"); |
|
$acao["DEL_MUSICA"] = array("action" => "command", "command" => "database del MUSICA-ESPERA"); |
|
$acao["DEL_NAOPERTUBE"] = array("action" => "command", "command" => "database del NAOPERTUBE"); |
|
$acao["DEL_CADEADO"] = array("action" => "command", "command" => "database del CADEADO"); |
|
$acao["DEL_SIGAME-EXTERNO"] = array("action" => "command", "command" => "database del SIGAME-EXTERNO"); |
|
$acao["DEL_SIGAME-NAOATENDE"] = array("action" => "command", "command" => "database del SIGAME-NAOATENDE"); |
|
$acao["DEL_SIGAME-OCUPADO"] = array("action" => "command", "command" => "database del SIGAME-OCUPADO"); |
|
$acao["DEL_VOICE2"] = array("action" => "command", "command" => "database del VM"); |
|
$acao["DEL_SENHA"] = array("action" => "command", "command" => "database del SENHA"); |
|
$acao["DEL_DISPOSITIVO"] = array("action" => "command", "command" => "database del DIAL"); |
|
$acao["CONFERENCIA"] = array("action" => "command", "command" => "module reload app_meetme.so"); |
|
$acao["DEL_TRONCO"] = array("action" => "command", "command" => "database del TRONCO"); |
|
$acao["TRONCO"] = array("action" => "DBPut", "Family" => "TRONCO"); |
|
$acao["AGENDA_RAMAL"] = array("action" => "dbput", "Family" => "AGENDA"); |
|
$acao["DEL_AGENDA"] = array("action" => "command", "command" => "database del AGENDA"); |
|
$acao["AGENTS"] = array("action" => "command", "command" => "module reload chan_agent.so"); |
|
$acao["MONITORAMENTO"] = array("action" => "dbput", "Family" => "MONITORAMENTO"); |
|
$acao["DEL_MONITORAMENTO"] = array("action" => "command", "command" => "database del MONITORAMENTO"); |
|
$acao["BASE"] = array("action" => "command", "command" => "module reload cdr_pgsql.so"); |
|
$acao["FEATURES"] = array("action" => "command", "command" => "module reload features"); |
|
$acao["RELOAD"] = array("action" => "command", "command" => "reload"); |
|
$acao["BINA-EXTERNO"] = array("action" => "DBPut", "Family" => "BINA-EXTERNO"); |
|
$acao["BINA-NOME"] = array("action" => "DBPut", "Family" => "BINA-NOME"); |
|
$acao["DEL_BINA-NOME"] = array("action" => "command", "command" => "database del BINA-NOME"); |
|
$acao["DEL_BINA-EXTERNO"] = array("action" => "command", "command" => "database del BINA-EXTERNO"); |
|
$acao["RESTART"] = array("action" => "command", "command" => "restart now"); |
|
$acao["CONTA-SENHA"] = array("action" => "DBPut", "Family" => "CONTA-SENHA"); |
|
$acao["DEL_CONTA-SENHA"] = array("action" => "command", "command" => "database del CONTA-SENHA"); |
|
$acao["CHAN_DAHDI"] = array("action" => "command", "command" => "module reload chan_dahdi.so"); |
|
$acao["CHAN_DAHDI_RESTART"] = array("action" => "command", "command" => "dahdi restart"); |
|
$acao["CHAN_KHOMP"] = array("action" => "command", "command" => "module reload chan_khomp.so"); |
|
$acao["TEMPO-RING-RAMAL"] = array("action" => "DBPut", "Family" => "RING"); |
|
$acao["DEL_TEMPO-RING-RAMAL"] = array("action" => "command", "command" => "database del RING"); |
|
$acao["TIMEOUT-RAMAL"] = array("action" => "DBPut", "Family" => "TIMEOUT"); |
|
|
|
$numParam = count($paramAdic); |
|
if ((substr($tipo, 0, 3) == 'DEL') && $numParam) { |
|
$cmd = trim(sprintf("%s %s", $acao[$tipo]["command"], $paramAdic["Key"])); |
|
$acao[$tipo]["command"] = $cmd; |
|
} else if ($numParam) { |
|
$ar = $acao[$tipo]; |
|
$ar = array_merge($ar, $paramAdic); |
|
$acao[$tipo] = $ar; |
|
} |
|
|
|
return isset($acao[$tipo]) ? $acao[$tipo] : array(); |
|
} |
|
|
|
//Executa comandos via url do asterisk |
|
function CommandAsterisk($conexao, $tipo, $paramAdic = array()) |
|
{ |
|
//$query = "select prm_sk_host_externo as prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros"; |
|
$query = "select prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros"; |
|
$result = pg_query($conexao, $query); |
|
if ($result) { |
|
$dados = pg_fetch_array($result); |
|
$socket = ConectaAmi($dados['prm_sk_host'], $dados['prm_sk_port'], $dados['prm_sk_login'], $dados['prm_sk_password']); |
|
|
|
if ($socket) { |
|
$params = GetParamAmi($tipo, $paramAdic); |
|
if (count($params)) { |
|
$get = ExecutaAmi($socket, $params); |
|
return ($get && (stripos($get, "Error") === false)); |
|
} |
|
} |
|
} |
|
return false; |
|
} |
|
|
|
/* |
|
* Executa comandos via url do asterisk. |
|
* Subistituida pela função acima que elimina o astman proxy |
|
*/ |
|
|
|
function _CommandAsterisk($conexao, $tipo) |
|
{ |
|
$query = "SELECT * FROM pbx_conf_padrao"; |
|
$result = pg_query($conexao, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$url_asterisk = $dados['url_asterisk']; |
|
} |
|
|
|
$query = "SELECT * FROM pbx_urls where tipo='$tipo'"; |
|
$result = pg_query($conexao, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$get = @file_get_contents($url_asterisk . eregi_replace('&actionid=100', '', $dados['endereco']) . '&actionid=' . rand(0, 99999999999999)); |
|
// echo $url_asterisk.eregi_replace('&actionid=100','',$dados['endereco']).'&actionid='.rand(0,99999999999999); |
|
if ($get) |
|
return !stripos($get, "Error"); |
|
|
|
return true; |
|
} |
|
} |
|
|
|
//executa comandos via url do asterisk do tipo inser??o e delete de banco interno |
|
function CommandAsterisk2($conexao, $tipo, $chave, $valor) |
|
{ |
|
$paramAdic = array(); |
|
|
|
$chave = trim($chave); |
|
if ($chave) { |
|
$paramAdic["Key"] = $chave; |
|
} |
|
|
|
$valor = trim($valor); |
|
if ($valor) { |
|
$paramAdic["Val"] = $valor; |
|
} |
|
|
|
return CommandAsterisk($conexao, $tipo, $paramAdic); |
|
} |
|
|
|
/* |
|
* Executa comandos via url do asterisk do tipo inser??o e delete de banco interno |
|
* Substituido pela função acima |
|
*/ |
|
|
|
function _CommandAsterisk2($conexao, $tipo, $chave, $valor) |
|
{ |
|
|
|
$query = "SELECT * FROM pbx_conf_padrao"; |
|
$result = pg_query($conexao, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$url_asterisk = $dados['url_asterisk']; |
|
} |
|
|
|
$query = "SELECT * FROM pbx_urls where tipo='$tipo'"; |
|
$result = pg_query($conexao, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
if (substr($tipo, 0, 3) != 'DEL') { |
|
$url = $url_asterisk . eregi_replace('action:', 'action=', $dados['endereco']) . '&Key=' . eregi_replace('/', '%2F', $chave) . '&Val=' . eregi_replace('/', '%2F', $valor); |
|
} else { |
|
$url = $url_asterisk . eregi_replace('action:', 'action=', $dados['endereco']) . ' ' . eregi_replace('/', '%2F', $chave); |
|
} |
|
//echo $url; |
|
$get = file_get_contents($url); |
|
if ($get) |
|
return !stripos($get, "Error"); |
|
return true; |
|
} |
|
} |
|
|
|
//tratamento de upload de arquivos para o sistema, verificar o arquivo php.ini para o tamanho maximo de upload de arquivo |
|
function upload($arquivo, $caminho) |
|
{ |
|
if (!(empty($arquivo))) { |
|
$arquivo1 = $arquivo; |
|
$arquivo_minusculo = strtolower($arquivo1['name']); |
|
$caracteres = array("�", "~", "^", "]", "[", "{", "}", ";", ":", "�", ",", ">", "<", "-", "/", "|", "@", "$", "%", "�", "�", "�", "�", "�", "�", "�", "�", "+", "=", "*", "&", "(", ")", "!", "#", "?", "`", "�", " ", "�", "'"); |
|
$arquivo_tratado = str_replace($caracteres, "", $arquivo_minusculo); |
|
$destino = $caminho . "/" . $arquivo_tratado; |
|
if (move_uploaded_file($arquivo1['tmp_name'], $destino)) { |
|
echo $destino; |
|
echo "<script>window.alert('Arquivo enviado com sucesso.');</script>"; |
|
} else { |
|
echo "<script>window.alert('Erro ao enviar o arquivo');</script>"; |
|
} |
|
} |
|
} |
|
|
|
//REALIZA BACKUP BO BANCO |
|
function backup($conexao, $tabela, $tipo, $registro, $comando, $reload) |
|
{ |
|
return true; |
|
$ins = ''; |
|
$data = date("Y-m-d"); |
|
$hora = date("H:i:s"); |
|
|
|
//BACKUPS DO GENERAL |
|
if (($comando == 'update') && ($registro == '')) { |
|
$query = "SELECT * FROM $tabela"; |
|
$result = pg_query($conexao, $query); |
|
|
|
$ins = "UPDATE $tabela set "; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_num_fields($result) != ($i + 1)) { |
|
$ins = $ins . pg_field_name($result, $i) . '=' . '"' . trim($dados[pg_field_name($result, $i)]) . '"' . ','; |
|
} else { |
|
$ins = $ins . pg_field_name($result, $i) . '=' . '"' . trim($dados[pg_field_name($result, $i)]) . '"'; |
|
} |
|
} |
|
} |
|
} |
|
|
|
//UPDATE EM GERAL |
|
if (($comando == 'update') && ($registro != '')) { |
|
|
|
if ($tabela == 'pbx_digivoice_grupos') { |
|
$query = "SELECT * FROM $tabela where \"group\"=$registro"; |
|
} else { |
|
$query = "SELECT * FROM $tabela where id=$registro"; |
|
} |
|
$result = pg_query($conexao, $query); |
|
|
|
$ins = "UPDATE $tabela set "; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_num_fields($result) != ($i + 1)) { |
|
$ins .= pg_field_name($result, $i) . '=' . '"' . trim($dados[pg_field_name($result, $i)]) . '"' . ','; |
|
} else { |
|
$ins .= pg_field_name($result, $i) . '=' . '"' . trim($dados[pg_field_name($result, $i)]) . '"'; |
|
} |
|
} |
|
} |
|
if ($tabela == 'pbx_digivoice_grupos') { |
|
$ins .= " where \"group\"=$registro"; |
|
} else { |
|
$ins .= " where id=$registro"; |
|
} |
|
} |
|
|
|
if (($comando == 'delete')) { |
|
$query = "SELECT * FROM $tabela where id=$registro"; |
|
$result = pg_query($conexao, $query); |
|
|
|
$ins = "INSERT INTO $tabela ("; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_num_fields($result) != ($i + 1)) { |
|
$ins .= pg_field_name($result, $i) . ','; |
|
} else { |
|
$ins .= pg_field_name($result, $i) . ")"; |
|
} |
|
} |
|
} |
|
|
|
$ins .= " values ("; |
|
|
|
$query = "SELECT * FROM $tabela where id=$registro"; |
|
$result = pg_query($conexao, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_num_fields($result) != ($i + 1)) { |
|
$ins .= '"' . trim($dados[pg_field_name($result, $i)]) . '"' . ','; |
|
} else { |
|
$ins .= '"' . trim($dados[pg_field_name($result, $i)]) . '")'; |
|
} |
|
} |
|
} |
|
} |
|
|
|
$query = "insert into pbx_backups( |
|
data, hora, tabela, tipo, comando_retorno, padrao,executa_reload) |
|
VALUES ('$data','$hora','$tabela','$tipo','$ins','0','$reload')"; |
|
$result = pg_query($conexao, $query); |
|
} |
|
|
|
//FUNC�O RESPONSAVEL PARA GERAR TODOS OS ARQUIVOS NECESS�RIOS PELO ASTERISK |
|
//SER� TRATADO PARTICULARIDADES ARQUIVO � ARQUIVO |
|
//EM TODA GERA��O DE ARQUIVO, CASO O CAMPO DO BANCO ESTEJA EM BRANCO, O PARAMETRO NO ASTERISK IR� SEM O "CAMPO = VALOR" |
|
function gera_arquivos($dbcon, $tipo, $reload = 1, $reloadUra = 1) |
|
{ |
|
|
|
$org_id = GetOrganizacao(); |
|
$query = "SELECT * FROM pbx_conf_padrao"; |
|
$result = pg_query($dbcon, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
|
|
$caminho_back = $dados['caminho_backup']; |
|
$caminho_producao = $dados['caminho_producao']; |
|
$caminho_musicas = $dados['caminho_musicas']; |
|
$url_musicas = $dados['url_musicas']; |
|
$url_asterisk = $dados['url_asterisk']; |
|
} |
|
|
|
//GERAÇÃO DO ARQUIVO DE URA |
|
if ($tipo == 'URA') { |
|
$arq = $caminho_producao . "extensions_ura.conf"; |
|
$escreve = fopen($arq, 'w+'); |
|
|
|
/* |
|
* Inicia a URA buscanco as configuracoes no banco de dados. |
|
*/ |
|
$query = "SELECT id, permite_ligacao, tempo_espera, som_ura, opcao,acao, timeout_digito, nome FROM pbx_ura order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
$x = 0; |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
$id_da_ura = $dados['id']; |
|
$uraAtiva = $dados['opcao'] == "uraativa"; |
|
|
|
/* |
|
* Esta opcao desvia a chamada para uma ura interativa personalizada. |
|
*/ |
|
if ($uraAtiva) { |
|
fwrite($escreve, sprintf("[ura-%s]\n", trim($dados['id']))); |
|
fwrite($escreve, "include => padrao\n"); |
|
fwrite($escreve, "exten => s,1,Answer()\n"); |
|
fwrite($escreve, 'exten => s,n,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => s,n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
$agiUra = sprintf("exten => s,n,AGI(/var/lib/asterisk/scripts/uraativa/%s.php)\n", $dados['nome']); |
|
fwrite($escreve, $agiUra); |
|
continue; |
|
} |
|
|
|
$numFields = pg_num_fields($result) - 1; |
|
for ($i = 0; $numFields > $i; $i++) { |
|
/* |
|
* Identificador da URA no extensions. |
|
*/ |
|
if (pg_field_name($result, $i) == 'id') { |
|
fwrite($escreve, '[ura-' . trim($dados[pg_field_name($result, $i)]) . ']' . "\n"); |
|
} |
|
|
|
if (pg_field_name($result, $i) == 'permite_ligacao') { |
|
if (trim($dados[pg_field_name($result, $i)]) == 'S') { |
|
fwrite($escreve, 'include => padrao' . "\n"); |
|
} |
|
} |
|
|
|
if ($i == 1) { |
|
fwrite($escreve, 'exten => s,1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => s,n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => s,n,Set(LOOPCOUNT=0)' . "\n"); |
|
fwrite($escreve, sprintf("exten => s,n,AGI(pbx_complemento.php,ura,ini,%s)\n", $id_da_ura)); |
|
fwrite($escreve, 'exten => s,n,GotoIf($["${CDR(disposition)}" = "ANSWERED"]?inicio)' . "\n"); |
|
fwrite($escreve, 'exten => s,n,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => s,n,Wait(1)' . "\n"); |
|
fwrite($escreve, 'exten => s,n(inicio),Set(TIMEOUT(digit)=' . $dados['timeout_digito'] . ')' . "\n"); |
|
} |
|
|
|
if (pg_field_name($result, $i) == 'tempo_espera') { |
|
fwrite($escreve, 'exten => s,n,Set(TIMEOUT(response)=' . $dados[pg_field_name($result, $i)] . ')' . "\n"); |
|
} |
|
|
|
if (pg_field_name($result, $i) == 'som_ura') { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
$som = explode('.', $dados['som_ura']); |
|
fwrite($escreve, 'exten => s,n,Background(customizados/' . $som[0] . ')' . "\n"); |
|
} |
|
} |
|
} //fecha for |
|
|
|
fwrite($escreve, 'exten => s,n,WaitExten()' . "\n"); |
|
|
|
/* |
|
* Monta as opcoes da URA. |
|
* A funcao GetSetUra verifica se a opcao chamara uma integracao ativa, |
|
* em caso verdadeiro seta a variavel URA com o valor do exten. |
|
*/ |
|
$setUra = GetSetUra($dbcon, $id_da_ura); |
|
$query2 = "SELECT * FROM pbx_ura_destino where id_ura = $id_da_ura"; |
|
$result2 = pg_query($dbcon, $query2); |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
$opcUra = $dados2['numero']; |
|
fwrite($escreve, sprintf("exten => %s,1,AGI(pbx_complemento.php,ura,opc,%s,%s,%s,%s)\n", $opcUra, $id_da_ura, ($opcUra === '_X.') ? '${EXTEN}' : $opcUra, trim($dados2['tipo']), trim($dados2['comando']))); |
|
|
|
if (!empty($dados2['tipo'])) { |
|
if (trim($dados2['tipo']) == 'repetir') { |
|
//repetir |
|
$dispAcao = sprintf('exten => %s,n,Goto(${CONTEXT},s,inicio)%s', $dados2['numero'], "\n"); |
|
fwrite($escreve, $dispAcao); |
|
fwrite($escreve, 'exten => ' . $dados2['numero'] . ',n,Hangup()' . "\n"); |
|
} else if (trim($dados2['tipo']) == 'desligar') { |
|
$dispAcao = sprintf('exten => %s,n,Goto(${CONTEXT},desliga,1)%s', $dados2['numero'], "\n"); |
|
fwrite($escreve, $dispAcao); |
|
fwrite($escreve, 'exten => ' . $dados2['numero'] . ',n,Hangup()' . "\n"); |
|
} else { |
|
/* |
|
* Para evitar sobrescrita das variaveis digitas na ura com integração ativa |
|
* não insere set ura para os outros casos. |
|
*/ |
|
if ($setUra) { |
|
fwrite($escreve, sprintf("exten => %s,n,set(URA=\${EXTEN})\n", $dados2['numero'])); |
|
} |
|
$dispAcao = GetOpcaoAcao(trim($dados2['tipo']), trim($dados2['comando']), '', ''); |
|
$dispAcao = sprintf('exten => %s,n,%s%s', $dados2['numero'], $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
fwrite($escreve, 'exten => ' . $dados2['numero'] . ',n,Hangup()' . "\n"); |
|
} |
|
} |
|
} |
|
|
|
if (trim($dados['opcao']) != '') { |
|
fwrite($escreve, sprintf("exten => t,1,AGI(pbx_complemento.php,ura,def,%s,%s,%s,%s)\n", $id_da_ura, '99', $dados['opcao'], $dados['acao'])); |
|
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao'], '', ''); |
|
$dispAcao = sprintf('exten => t,n,%s%s', $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
} else { |
|
fwrite($escreve, 'exten => t,1,Goto(loop,1)' . "\n"); |
|
} |
|
|
|
fwrite($escreve, 'exten => loop,1,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])' . "\n"); |
|
fwrite($escreve, 'exten => loop,n,GotoIf($[${LOOPCOUNT} > 2]?desliga,1)' . "\n"); |
|
fwrite($escreve, 'exten => loop,n,Goto(${CONTEXT},s,inicio)' . "\n"); |
|
fwrite($escreve, 'exten => desliga,1,Playback(vm-goodbye)' . "\n"); |
|
fwrite($escreve, 'exten => desliga,n,Hangup' . "\n"); |
|
fwrite($escreve, 'exten => i,1,Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => i,n,Goto(loop,1)' . "\n" . "\n"); |
|
} |
|
|
|
fclose($escreve); |
|
//EXECUTA RELOAD DO ASTERISK |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
if ($tipo == 'AGENTS_GENERAL') { |
|
$arq = $caminho_producao . "agents_general.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT persistentagents, multiplelogin FROM pbx_parametros"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
fwrite($escreve, ';' . pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
fclose($escreve); |
|
|
|
//EXECUTA O RELOAD DO ASTERISK |
|
CommandAsterisk($dbcon, 'AGENTS'); |
|
} |
|
//GERA��O DO ARQUIVO DE AGENTS ADICIONAL |
|
if ($tipo == 'AGENTS_ADICIONAL') { |
|
$arq = $caminho_producao . "agents_adicional.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
fwrite($escreve, '[agents](!)' . "\n"); |
|
|
|
$query = "SELECT CASE WHEN (autologoff = '')THEN '0' ELSE autologoff END AS autologoff,ackcall,wrapuptime,musiconhold,recordagentcalls,custom_beep FROM pbx_parametros"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if ((pg_field_name($result, $i) != "musiconhold") and (pg_field_name($result, $i) != "goodbye")) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
fclose($escreve); |
|
|
|
//EXECUTA O RELOAD DO ASTERISK |
|
CommandAsterisk($dbcon, 'AGENTS'); |
|
} |
|
//GERA O ARQUIVO DE FEATURES |
|
if ($tipo == 'FEATURES_APPLICATION') { |
|
$arq = $caminho_producao . "features_applicationmap.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT * FROM pbx_features_application order by seq asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, $dados['comando'] . "\n"); |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
fclose($escreve); |
|
//EXECUTA COMANDO DO ASTERISK |
|
CommandAsterisk($dbcon, 'FEATURES'); |
|
} |
|
//GERA O ARQUIVO DE RAMAIS IAX |
|
if ($tipo == 'IAX_PBX') { |
|
$arq = $caminho_producao . "iax_ramais.conf"; |
|
|
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT nome, \"type\", host, secret, identificador as callerid, context, disallow, allow, |
|
deny, permit, 'no' as requirecalltoken, inkeys, outkeys,callgroup,pickupgroup, case when(conta_senha = 'V')then 'yes' else 'no' end as qualify FROM pbx_iax_pbx order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
/* Alan Pablo - 2011-01-16 |
|
* Alterado username para nome => if (pg_field_name($result,$i)=="nome") |
|
*/ |
|
if (pg_field_name($result, $i) == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
} else { |
|
if ($dados[pg_field_name($result, $i)] != '') { |
|
if (pg_field_name($result, $i) == "callerid") { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados["nome"] . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
//GERA TRONCOS IAX DENTRO DO ARQUIVO DE RAMAIS IAX |
|
$query = "SELECT nome, username, secret, type, context, host, |
|
port, case when(coalesce(permit,'') = '')then '' else deny end as deny, permit, qualify, trunk, disallow, allow, |
|
fromuser, fromdomain, 'no' as requirecalltoken |
|
FROM pbx_troncos_iax order by id asc"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
//fwrite($escreve,pg_field_name($result,$i).'='.$dados[pg_field_name($result,$i)]. "\n"); |
|
} else { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if (pg_field_name($result, $i) == "permit") { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . '/255.255.255.255' . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
fclose($escreve); |
|
|
|
//GERA O ARQUIVO DE DENTRO DO EXTENSIONS_RAMAIS E HINTS |
|
GeraExtRamais($dbcon); |
|
|
|
//GERA OS REGISTROS DE IAX |
|
$arq = $caminho_producao . "iax_register.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "select * from pbx_troncos_iax"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
if (($dados['pedido_registro'] == 'yes') && (!empty($dados['registro']))) { |
|
fwrite($escreve, 'register => ' . trim($dados['registro']) . "\n"); |
|
} |
|
} |
|
//EXECUTA O RELOADO DO IAX2 |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'IAX'); |
|
//EXECUTA O RELOADO DO EXTENSIONS |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
//GERA O ARQUIVO DAS MUSICAS DE ESPERA |
|
if ($tipo == 'MUSICHOLD_GRUPOS') { |
|
$arq = $caminho_producao . "musiconhold.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
fwrite($escreve, "[general]" . "\n"); |
|
fwrite($escreve, chr(13) . chr(10)); |
|
//Asterisk 1.4 |
|
//$query = "SELECT nome, \"mode\", '/var/lib/asterisk/moh/'||replace(nome, ' ', '') as directory, random from pbx_musichold_grupos order by id asc"; |
|
$query = "SELECT nome, \"mode\", '/var/lib/asterisk/moh/'||replace(nome, ' ', '') as directory, case when random = 'yes' then 'random' else 'alpha' end as sort from pbx_musichold_grupos order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
} else { |
|
if ($dados[pg_field_name($result, $i)] != '') { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
fwrite($escreve, "\n"); |
|
} |
|
//fwrite($escreve, "[final]" . "\n"); |
|
fclose($escreve); |
|
//EXECUTA O RELOADO DO MUSICONHOLD |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'MUSIC'); |
|
} |
|
|
|
//GERA AS FILAS DE ANTENDIMENTO |
|
if ($tipo == 'QUEUES_GRUPOS') { |
|
$arq = $caminho_producao . "queues_filas.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = 'SELECT id,nome, musicclass, anuncio as announce ,strategy, servicelevel, \'1\' as retry,tempo_ring as timeout, |
|
maxlen, joinempty, periodic_announce_frequency as "periodic-announce-frequency", |
|
wrapuptime, \'yes\' as autofill, "announce-frequency", "announce-holdtime", \'10\' as "announce-round-seconds", |
|
"monitor-format", "monitor-type", reportholdtime, \'yes\' as setinterfacevar, \'yes\' as timeoutrestart, context, ringinuse |
|
FROM pbx_queues_grupos |
|
where status=\'A\' |
|
order by id asc'; |
|
$result = pg_query($dbcon, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) != "id") { |
|
if (pg_field_name($result, $i) == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
} else { |
|
if ($dados[pg_field_name($result, $i)] != '') { |
|
if (pg_field_name($result, $i) == 'announce') { |
|
if ($dados['announce'] != 'customizados/') { |
|
$som = explode('.', $dados['announce']); |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $som[0] . "\n"); |
|
} |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, "\n"); |
|
|
|
//GERA OS MEMBROS DAS FILAS |
|
$idFila = $dados['id']; |
|
$query2 = "select case when(b.tipo_ramal = 'KHOMP' ) then 'Khomp/r' || b.nome else a.dispositivo end as dispositivo, b.nome, a.prioridade, |
|
case when b.sigame_interno <> '' or sigame_externo <> '' then 1 else 0 end as sigame |
|
from pbx_queues_membros a, pbx_ramais b |
|
where b.dispositivo = a.dispositivo |
|
and id_fila = '$idFila' |
|
order by 2"; |
|
$result2 = pg_query($dbcon, $query2); |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
if ($dados2['sigame'] == 0) |
|
fwrite($escreve, sprintf("member => Local/%s@padrao/n,%s,%s,%s\n", trim($dados2['nome']), trim($dados2['prioridade']), trim($dados2['dispositivo']), trim($dados2['dispositivo']))); |
|
if ($dados2['sigame'] == 1) |
|
fwrite($escreve, sprintf("member => Local/%s@padrao/n,%s,%s\n", trim($dados2['nome']), trim($dados2['prioridade']), trim($dados2['dispositivo']))); |
|
} |
|
fwrite($escreve, "\n"); |
|
} |
|
|
|
fclose($escreve); |
|
//GERA OS EXTENSIONS DA FILA |
|
|
|
$arq = $caminho_producao . "extensions_fila.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[ext-fila]' . "\n"); |
|
fwrite($escreve, 'exten => h,1,Macro(hangup)' . "\n"); |
|
/* fwrite($escreve,'exten => h,1,Noop(MATRICULA = ${MATRICULA} e IDORIGEM = ${IDORIGEM})'. "\n"); |
|
fwrite($escreve,'exten => h,n,GotoIf($["X${MATRICULA}" = "X"]?desliga)'. "\n"); |
|
fwrite($escreve,'exten => h,n,GotoIf($["${CONTEXT:0:3}" = "psq"]?desliga)'. "\n"); |
|
fwrite($escreve,'exten => h,n,GotoIf($["${DB(CANAL/${MATRICULA}/${IDORIGEM})}" = "DESLIGADO"]?desliga)'. "\n"); |
|
fwrite($escreve,'exten => h,n,Set(DB(CANAL/${MATRICULA}/${IDORIGEM})=DESLIGADO)'. "\n"); |
|
fwrite($escreve,'exten => h,n,System(${ATUALIZAR} LIVRE ${MATRICULA} ${DAC})'. "\n"); |
|
fwrite($escreve,'exten => h,n(desliga),DeadAGI(${INTEGRACAO_ABD},${UNIQUEID},${DAC},${CALLERID(NUM):-10})'. "\n"); |
|
fwrite($escreve,'exten => h,n,Hangup()'. "\n"); |
|
*/ |
|
|
|
$query = "SELECT * FROM pbx_queues_grupos where status='A'"; |
|
$result = pg_query($dbcon, $query); |
|
$dados2 = array(); |
|
$x = 0; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$dados2[] = $dados; |
|
$numero = $org_id . $dados['numero']; |
|
$x++; |
|
fwrite($escreve, 'exten => _' . $numero . ',1,' . (($dados['m_espera'] == 'N') ? 'Ringing()' : 'Answer()') . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-fila,' . trim($dados['nome']) . ')' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(indisponibilidade.php,' . trim($dados['nome']) . ')' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(prioridade_fila.php,${CALLERID(NUM):-13},' . trim($dados['nome']) . ')' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(UNICO=${RAND(0000000000,9999999999)})' . "\n"); |
|
//fwrite($escreve,'exten => _' . $numero .',n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)'. "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(MONITOR_FILENAME=${EXTEN}-${UNICO}-${UNIQUEID})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(__DAC=' . trim($dados['nome']) . ')' . "\n"); |
|
|
|
$monitorFormat = strtoupper($dados['monitor-format']); |
|
if (!empty($monitorFormat)) { |
|
if ($monitorFormat == 'WAV') |
|
$ext = 'wav'; |
|
else if ($monitorFormat == 'GSM') |
|
$ext = 'gsm'; |
|
else if ($monitorFormat == 'WAV49') |
|
$ext = 'WAV'; |
|
|
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(CDR(userfield)=${EXTEN}-${UNICO}-${UNIQUEID}.' . $ext . ')' . "\n"); |
|
} |
|
if ($dados['m_espera'] == 'N') { |
|
fwrite($escreve, sprintf('exten => _' . $numero . ',n,Queue(' . trim($dados['nome']) . ',%s,,${ANUNCIO},' . $dados['timeout2'] . ',agente_fila.php,,,,)' . "\n", $dados['id_pesquisa_liberacao'] ? 'trc' : 'tr')); |
|
} else { |
|
//Asterisk 1.4 |
|
//fwrite($escreve,'exten => _'.$dados['numero'].',n,SetMusicOnHold('.$dados['musicclass'].')'. "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(musicclass)=${IF($["X${CHANNEL(musicclass)}" = "X"]?' . $dados['musicclass'] . ':${CHANNEL(musicclass)})})' . "\n"); |
|
//fwrite($escreve,'exten => _'.$dados['numero'].',n,Queue('.trim($dados['nome']).',t,,${ANUNCIO},'.$dados['timeout2'].',agente_fila.php,'.trim($dados['nome']).')'. "\n"); |
|
fwrite($escreve, sprintf('exten => _' . $numero . ',n,Queue(' . trim($dados['nome']) . ',%s,,${ANUNCIO},' . $dados['timeout2'] . ',agente_fila.php,,,,)' . "\n", $dados['id_pesquisa_liberacao'] ? 'tc' : 't')); |
|
} |
|
if (!empty($dados['opcao'])) { |
|
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao'], '', $numero); |
|
fwrite($escreve, sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?AGI(transbordo.php,%s,%s,%s,%s,%s))' . "\n", $numero, trim($dados['nome']), $numero, $dados['opcao'], $dados['acao'], '${UNIQUEID}')); |
|
$dispAcao = sprintf('exten => _%s,n,ExecIf($["${QUEUESTATUS}" = "TIMEOUT"]?%s)%s', $numero, $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
} |
|
|
|
if ($dados['id_pesquisa_liberacao']) { |
|
fwrite($escreve, "exten => _{$numero},n,Macro(hangup,PESQUISA) \n"); |
|
fwrite($escreve, "exten => _{$numero},n,Goto(psq-{$dados['id_pesquisa_liberacao']}-ini,s,1) \n"); |
|
} |
|
|
|
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n"); |
|
} |
|
fclose($escreve); |
|
|
|
// ROTINA PARA LOGIN MANUAL - EM CASO DE PROBLEMA COM A APLICA��O |
|
$arq = $caminho_producao . "extensions_fila_login.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
$dados = array(); |
|
fwrite($escreve, '[ext-fila-login]' . "\n"); |
|
|
|
foreach ($dados2 as $dados) { |
|
fwrite($escreve, 'exten => **' . $numero . ',1,AddQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n"); |
|
fwrite($escreve, 'exten => **' . $numero . ',n,Goto(${AQMSTATUS})' . "\n"); |
|
fwrite($escreve, 'exten => **' . $numero . ',n(ADDED),Playback(agent-loginok)' . "\n"); |
|
fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => **' . $numero . ',n(MEMBERALREADY),Playback(agent-alreadyon)' . "\n"); |
|
fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => **' . $numero . ',n(NOSUCHQUEUE),Playback(agent-incorrect)' . "\n"); |
|
fwrite($escreve, 'exten => **' . $numero . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => *0' . $numero . ',1,RemoveQueueMember(' . trim($dados['nome']) . ',${DB(DIAL/${CALLERID(NUM)})})' . "\n"); |
|
fwrite($escreve, 'exten => *0' . $numero . ',n,Playback(agent-loggedoff)' . "\n"); |
|
fwrite($escreve, 'exten => *0' . $numero . ',n,Hangup()' . "\n"); |
|
} |
|
fclose($escreve); |
|
|
|
|
|
//EXECUTA O RELOAD DAS FILAS |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'QUEUES'); |
|
//EXECUTA O RELOAD DO EXTENSIONS |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
//GERA O ARQUIVO DE RAMAIS SIP |
|
if ($tipo == 'SIP_RAMAIS') { |
|
$arq = $caminho_producao . "sip_ramais.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT nome,type,secret,callerid,qualify,port,case when nat = 'yes' then 'force_rport,comedia' else nat end as nat,host,dtmfmode,context,canreinvite,disallow,allow,\"call-limit\",videosupport,fromdomain,t38pt_udptl,mailbox,pickupgroup,callgroup,insecure,accountcode, extranet, ispbx_tronco |
|
FROM pbx_sip_ramais order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
// |
|
// Se o ramal for marcado como PBX não escreve a linha no sip_ramais.conf |
|
// |
|
|
|
$ispbxTroncos = trim($dados['ispbx_tronco']); |
|
if ($ispbxTroncos) { |
|
continue; |
|
} |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
$nomeCampo = pg_field_name($result, $i); |
|
if ($nomeCampo == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
} else if ($nomeCampo == "extranet") { |
|
$extranet = trim($dados['extranet']); |
|
if ($extranet) { |
|
fwrite($escreve, "deny=0.0.0.0/0.0.0.0\n"); |
|
/* |
|
* Escreve as redes permitidas para autenticação dos ramais. |
|
*/ |
|
$redes = $extranet; |
|
$redes = preg_split('/[\\\ | - ; , \n]/', $redes, -1, PREG_SPLIT_NO_EMPTY); |
|
foreach ($redes as $rede) { |
|
$rede = trim($rede); |
|
if ($rede !== '') { |
|
fwrite($escreve, "permit=$rede\n"); |
|
} |
|
} |
|
} |
|
} else { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if (pg_field_name($result, $i) == 'callerid') { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados["nome"] . "\n"); //.'" <'.$dados['nome'].'>'. "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
|
|
//GERA OS TRONCOS SIP DENTRO DO ARQUIVO DE RAMAIS callerid, |
|
$query = "SELECT nome, username, secret, type, context, host, |
|
username as fromuser,fromdomain, fromuser as grava_fromuser, |
|
port,case when permit = '' then '' else deny end as deny, |
|
permit, qualify,case when nat = 'yes' then 'force_rport,comedia' else nat end as nat, canreinvite, disallow, allow, dtmfmode, 'port,invite' as insecure |
|
FROM pbx_troncos_sip order by id asc"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
$fieldName = trim(pg_field_name($result, $i)); |
|
if ($fieldName == "nome") { |
|
fwrite($escreve, "[" . $dados[$fieldName] . "]" . "\n"); |
|
} else if ($fieldName == "fromuser") { |
|
if ($dados['grava_fromuser']) { |
|
fwrite($escreve, $fieldName . '=' . $dados[$fieldName] . "\n"); |
|
} |
|
} else if ($fieldName != "grava_fromuser") { |
|
if (trim($dados[$fieldName]) != '') { |
|
if (trim($fieldName) == 'permit') { |
|
fwrite($escreve, $fieldName . '=' . $dados[$fieldName] . '/255.255.255.255' . "\n"); |
|
} else { |
|
fwrite($escreve, $fieldName . '=' . $dados[$fieldName] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
|
|
fclose($escreve); |
|
|
|
//GERA O ARQUIVO DE DENTRO DO EXTENSIONS_RAMAIS E HINTS |
|
GeraExtRamais($dbcon); |
|
|
|
//GERA OS REGISTROS DO SIP |
|
$arq = $caminho_producao . "sip_register.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "select * from pbx_troncos_sip"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
if (($dados['pedido_registro'] == 'yes') && (!empty($dados['registro']))) { |
|
//fwrite($escreve,'register => '.trim($dados['username']).':'.trim($dados['secret']).'@'.trim($dados['permit']).':'.trim($dados['port']). "\n"); |
|
fwrite($escreve, 'register => ' . trim($dados['registro']) . "\n"); |
|
} |
|
} |
|
//EXECUTA O RELOAD DO SIP |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'SIP'); |
|
//EXECUTA O RELOAD DO EXTENSIONS |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
if ($tipo == 'SIP_NOTIFY') { |
|
$arq = $caminho_producao . "sip_notify.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT * FROM pbx_sip_notify"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if (pg_field_name($result, $i) == 'nome') { |
|
fwrite($escreve, '[' . $dados[pg_field_name($result, $i)] . ']' . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=>' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fclose($escreve); |
|
CommandAsterisk($dbcon, 'SIP'); |
|
} |
|
|
|
//GERA O ARQUIVO INTEGRAL DO DIGIVOICE |
|
|
|
if ($tipo == 'DIGIVOICE') { |
|
$arq = $caminho_producao . "digivoice.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[general]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_digivoice_general"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . '[allportsconfig]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_digivoice_allportsconfig"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . '[groups]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_digivoice_grupos_ order by numero"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
if (!empty($dados['numero'])) |
|
fwrite($escreve, 'group=' . $dados['numero'] . "\n"); |
|
if (!empty($dados['portas'])) |
|
fwrite($escreve, 'ports=>' . $dados['portas'] . "\n"); |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . "\n" . '[port_config]' . "\n"); |
|
|
|
$query = " SELECT \"group\", signalling, context, \"language\", accountcode, musiconhold, tx_gain, rx_gain, echocan, echotraining, callprogress, |
|
silence_threshold, callgroup, pickupgroup, relaxdtmf, gen_dtmf, gen_ringback, gen_busy, dtmf_to_asterisk, polarity, faxdetection, |
|
drop_tx_samples_factor, r2_country, immediate, min_digits as min_digits_rx, max_digits_rx, cid_pos, category, pin_number, group_b_value, |
|
port_id, b_subscriber_hangup, wait_dialtone, ccb_pass_through, ring_type, flash_min_time, flash_max_time, interdigit_timeout, hide_number, |
|
cid_type, customcascfg, dialtone_timeout, second_call_digits, ports |
|
FROM pbx_digivoice_grupos order by ports_1,ports_2 "; |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) != "group") { |
|
if (pg_field_name($result, $i) == "ports") { |
|
if (trim($dados[pg_field_name($result, $i)]) != "") |
|
fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n"); |
|
} else { |
|
if (trim($dados[pg_field_name($result, $i)]) != "") |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10)); |
|
$query2 = "select coalesce(contexto,'default') as contexto,identificador,voicemail,immediate,grupo,capturar,musica_espera, |
|
accountcode,dispositivo, numero from pbx_digivoice_ramais_fxs a, pbx_dgv b |
|
where cast(a.ramal as integer) = cast(b.numero as integer) |
|
and a.id_grupo=" . $dados['group']; |
|
|
|
$result2 = pg_query($dbcon, $query2); |
|
|
|
while ($dados2 = pg_fetch_array($result2)) { |
|
if (trim($dados2['contexto']) == '') { |
|
$contexto = "padrao"; |
|
} else { |
|
$contexto = $dados2['contexto']; |
|
} |
|
fwrite($escreve, 'context=' . $contexto . chr(13) . chr(10)); |
|
if (!empty($dados2['numero'])) |
|
fwrite($escreve, 'port_id=' . $dados2['numero'] . "\n"); |
|
if (!empty($dados2['voicemail'])) |
|
fwrite($escreve, 'mailbox=' . $dados2['voicemail'] . "\n"); |
|
if (!empty($dados2['immediate'])) |
|
fwrite($escreve, 'immediate=' . $dados2['immediate'] . "\n"); |
|
if (!empty($dados2['grupo'])) |
|
fwrite($escreve, 'callgroup=' . $dados2['grupo'] . "\n"); |
|
if (!empty($dados2['capturar'])) |
|
fwrite($escreve, 'pickupgroup=' . $dados2['capturar'] . "\n"); |
|
if (!empty($dados2['musica_espera'])) |
|
fwrite($escreve, 'musiconhold=' . $dados2['musica_espera'] . "\n"); |
|
if (!empty($dados2['accountcode'])) |
|
fwrite($escreve, 'accountcode=' . $dados2['accountcode'] . "\n"); |
|
if (!empty($dados2['dispositivo'])) { |
|
$var = explode('/', $dados2['dispositivo']); |
|
fwrite($escreve, 'ports=>' . $var[1] . "\n" . "\n"); |
|
} |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . '[e1_config]' . "\n"); |
|
|
|
$query = "SELECT e1_sync, use_crc4, span, span2,cards FROM pbx_digivoice_e1config"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, 'e1_sync=' . $dados['e1_sync'] . "\n"); |
|
fwrite($escreve, 'use_crc4=' . $dados['use_crc4'] . "\n"); |
|
if (!empty($dados['span'])) |
|
fwrite($escreve, 'span=' . $dados['span'] . "\n"); |
|
if (!empty($dados['span2'])) |
|
fwrite($escreve, 'span=' . $dados['span2'] . "\n"); |
|
fwrite($escreve, 'cards=>' . $dados['cards'] . "\n"); |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10)); |
|
fclose($escreve); |
|
|
|
if ($reload) |
|
CommandAsterisk($dbcon, 'RELOAD'); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
if ($tipo == 'FEATURE_FEATUREMAP') { |
|
$arq = $caminho_producao . "features_featuremap.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[featuremap]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_features_featuremap"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
fwrite($escreve, pg_field_name($result, $i) . '=>' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'FEATURE'); |
|
} |
|
if ($tipo == 'FEATURE_GENERAL') { |
|
$arq = $caminho_producao . "features_general.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
//Asterisk 1.4 |
|
// $query = "SELECT * FROM pbx_features_general"; |
|
$query = "SELECT courtesytone, transferdigittimeout, xfersound, xferfailsound, pickupexten, featuredigittimeout, atxfernoanswertimeout FROM pbx_features_general"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if ((pg_field_name($result, $i) == 'parkext') or (pg_field_name($result, $i) == 'parkpos') or (pg_field_name($result, $i) == 'parkingtime') or (pg_field_name($result, $i) == 'transferdigittimeout') or (pg_field_name($result, $i) == 'findslot')) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=>' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'FEATURES'); |
|
} |
|
|
|
|
|
if ($tipo == 'VOICEMAIL') { |
|
$arq = $caminho_producao . "voicemail.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT attach, format, charset, \"delete\", emailsubject, emailbody, serveremail, |
|
fromstring, mailcmd, forcegreetings, forcename, |
|
maxmsg, maxmessage as maxsecs, minmessage as minsecs, maxgreet, maxsilence, silencethreshold, |
|
maxlogins, skipms, saycid, emaildateformat, zonemessages |
|
FROM pbx_voicemail_general"; |
|
$result = pg_query($dbcon, $query); |
|
|
|
fwrite($escreve, '[general]' . "\n"); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if ($dados[pg_field_name($result, $i)] != '') { |
|
if (pg_field_name($result, $i) == 'zonemessages') { |
|
fwrite($escreve, '[zonemessages]' . "\n"); |
|
} |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
fwrite($escreve, '[default]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_voicemail_usuarios order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, $dados['caixa_postal'] . '=>' . $dados['senha'] . ',' . $dados['nome'] . ',' . $dados['email'] . ',' . 'attach=' . $dados['attach'] . ',saycid=' . $dados['saycid'] . ',envelope=' . $dados['envelope'] . ',delete=' . $dados['delete'] . "\n"); |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
|
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'VOICE'); |
|
} |
|
|
|
if ($tipo == 'SIP_GENERAL') { |
|
$arq = $caminho_producao . "sip_general.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
//externip='$externip', externhost='$externhost', localnet='$localnet', |
|
$query = "SELECT nome, context, callerid, allowguest, allowoverlap, allowtransfer, |
|
realm, bindport, bindaddr, srvlookup, pedantic, tos_sip, tos_audio, |
|
tos_video, maxexpiry, minexpiry, notifymimetype, buggymwi, vmexten, |
|
mohinterpret, mohsuggest, language, relaxdtmf, trustrpid, sendrpid, |
|
progressinband, useragent, promiscredir, userqphone, dtmfmode, |
|
compactheaders, videosupport, 'yes' as alwaysauthreject, g726nonstandard, |
|
matchexterniplocally, regcontext, rtpkeepalive, sipdebug, recordhistory, |
|
dumphistory, allowsubscribe, subscribecontext, notifyringing, |
|
notifyhold, limitonpeers, t38pt_udptl, externip, externhost, |
|
localnet, nat, canreinvite, directrtpsetup, rtcachefriends, rtsavesysname, |
|
rtupdate, rtautoclear, ignoreregexpire, domain, autodomain, |
|
allowexternaldomains, fromdomain, jbenable, jbforce, jbmaxsize, |
|
jbresyncthreshold, jbimpl, jblog, auth FROM pbx_sip_general limit 1"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if (pg_field_name($result, $i) != 'localnet') { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
// fwrite($escreve,'alwaysauthreject=yes'. "\n"); |
|
/* |
|
* Escreve as redes locais. |
|
*/ |
|
$redes = $dados['localnet']; |
|
$redes = preg_split('/[\\\ | - ; , \n]/', $redes, -1, PREG_SPLIT_NO_EMPTY); |
|
foreach ($redes as $rede) { |
|
$rede = trim($rede); |
|
if ($rede !== '') { |
|
fwrite($escreve, "localnet=$rede\n"); |
|
} |
|
} |
|
} |
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'SIP'); |
|
} |
|
|
|
if ($tipo == 'QUEUES_GENERAL') { |
|
$arq = $caminho_producao . "queues_general.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT * FROM pbx_queues_general"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'QUEUES'); |
|
} |
|
|
|
if ($tipo == 'IAX_GENERAL') { |
|
$arq = $caminho_producao . "iax_general.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT bindport, bindaddr, autokill, trunkfreq, trunktimestamps, minregexpire, maxregexpire, authdebug, tos FROM pbx_iax_general"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
|
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'IAX'); |
|
} |
|
|
|
if ($tipo == 'DISA') { |
|
$arq = $caminho_producao . "extensions_disa.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[ext-disa]' . "\n"); |
|
fwrite($escreve, 'include => ext-disa-custom' . "\n"); |
|
|
|
|
|
$query = "SELECT * FROM pbx_disa"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',1,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Agi(pbx_complemento.php,ext-disa)' . "\n"); |
|
|
|
$sql_conta = pg_query($dbcon, "SELECT * FROM pbx_disa_numeros where id_disa=" . $dados['id'] . " order by id asc"); |
|
$quantreg = pg_num_rows($sql_conta); |
|
if ($quantreg > 0) { |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Agi(disa.php,${CALLERID(NUM):-13})' . "\n"); |
|
} |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(TIMEOUT(digit)=' . $dados['tempo_timeout'] . ')' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(TIMEOUT(response)=' . $dados['timeout'] . ')' . "\n"); |
|
if (trim($dados['senha']) != '') { |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Authenticate(' . $dados['senha'] . ')' . "\n"); |
|
} |
|
// Ramal saida |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(CALLERID(NUM)=' . $dados['ramal_saida'] . ')' . "\n"); |
|
|
|
if ($dados['ligacao_externa']) |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Set(__PERMISSAO=OK)' . "\n"); |
|
|
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,DISA(no-password,disa)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['numero'] . ',n,Hangup()' . "\n"); |
|
|
|
$opcao = trim($dados['opcao']); |
|
if (!empty($opcao)) { |
|
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao']); |
|
$dispAcao = sprintf('exten => _%s,n(destino),%s%s', $dados['numero'], $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
} |
|
fwrite($escreve, sprintf('exten => _%s,n%s,Hangup()', $dados['numero'], $opcao ? '' : '(destino)') . "\n"); |
|
} |
|
|
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'DISA'); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
if ($tipo == "TESTES") { |
|
|
|
$arq = $caminho_producao . "extensions_teste.conf"; |
|
$escreve = fopen($arq, 'w+'); |
|
|
|
fwrite($escreve, '[ext-testes]' . "\n"); |
|
fwrite($escreve, 'include => ext-testes-custom' . "\n"); |
|
fwrite($escreve, 'exten => h,1,Macro(hangup)' . "\n"); |
|
|
|
$query = "SELECT id,permite_ligacao,tempo_espera,som_ura,teste FROM pbx_ura where teste <> '' order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$numero = $org_id . $dados['teste']; |
|
fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Goto(ura-' . $dados['id'] . ',s,1)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n"); |
|
} |
|
|
|
$query2 = "SELECT * FROM pbx_horarios where discar <> '' order by id asc"; |
|
$result2 = pg_query($dbcon, $query2); |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
$numero = $org_id . $dados2['discar']; |
|
fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Goto(ext-horarios,' . $dados2['id'] . ',1)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n"); |
|
} |
|
|
|
$query2 = "SELECT * FROM pbx_anuncios WHERE teste <> '' ORDER BY id ASC"; |
|
$result2 = pg_query($dbcon, $query2); |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
$numero = $org_id . $dados2['teste']; |
|
fwrite($escreve, 'exten => _' . $numero . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,AGI(pbx_complemento.php,ext-testes)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Goto(ext-anuncios,a' . $dados2['id'] . ',1)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $numero . ',n,Hangup()' . "\n"); |
|
} |
|
|
|
|
|
fclose($escreve); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
if ($tipo == 'HORARIOS') { |
|
|
|
$arq = $caminho_producao . "extensions_horarios.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[ext-horarios]' . "\n"); |
|
fwrite($escreve, 'include => ext-horarios-custom' . "\n"); |
|
fwrite($escreve, 'exten => h,1,Macro(hangup)' . "\n"); |
|
|
|
$query = "SELECT distinct a.id, a.nome, a.discar, a.opcao_nao, a.acao_nao |
|
FROM pbx_horarios a, pbx_horarios_itens b |
|
where b.id_horario = a.id order by a.id"; |
|
|
|
$query1 = "select * from (SELECT b.id, b.id_horario, b.horario_inicio, b.horario_fim, b.todos_dias_semana, b.semana, b. |
|
semana_fim, b.todos_dias_mes, b.dias_mes, b.dias_mes_fim, b.todos_mes, b.mes, b. |
|
mes_fim, b.opcao, b.acao, case when(b.feriado = 'A')then 0 else 1 end as feriado |
|
FROM pbx_horarios a, pbx_horarios_itens b |
|
where b.id_horario = a.id |
|
and b.id_horario = '{ID}')as itens order by feriado asc, id desc"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
$idHorario = $dados['id']; |
|
|
|
fwrite($escreve, 'exten => ' . $idHorario . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => ' . $idHorario . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => ' . $idHorario . ',n,Agi(pbx_complemento.php,ext-horarios)' . "\n"); |
|
$sql = str_replace("{ID}", $idHorario, $query1); |
|
|
|
$result1 = pg_query($dbcon, $sql); |
|
$ln = 0; |
|
$lnTotal = pg_num_rows($result1); |
|
|
|
$integraAtiva = strtoupper($opcao_ok) == "INTEGATIVA"; |
|
|
|
while ($dados1 = pg_fetch_array($result1)) { |
|
$ln++; |
|
$opcao_ok = $dados1['opcao']; |
|
$acao_ok = $dados1['acao']; |
|
$horaIni = $dados1['horario_inicio']; |
|
$horaFim = $dados1['horario_fim']; |
|
$diaSemana = $dados1['todos_dias_semana'] ? '*' : $dados1['semana'] . ($dados1['semana'] == $dados1['semana_fim'] ? "" : '-' . $dados1['semana_fim']); |
|
$diaMes = $dados1['todos_dias_mes'] ? '*' : $dados1['dias_mes'] . ($dados1['dias_mes'] == $dados1['dias_mes_fim'] ? "" : '-' . $dados1['dias_mes_fim']); |
|
$mes = $dados1['todos_mes'] ? '*' : $dados1['mes'] . ($dados1['mes'] == $dados1['mes_fim'] ? "" : '-' . $dados1['mes_fim']); |
|
|
|
$strIntegra = $integraAtiva ? "integracao)\n" : ""; |
|
$linha = sprintf('exten => %s,n,GotoIfTime(%s-%s,%s,%s,%s?%s', $idHorario, $horaIni, $horaFim, $diaSemana, $diaMes, $mes, $strIntegra); |
|
fwrite($escreve, $linha); |
|
if (!$integraAtiva) { |
|
$dispAcao = GetOpcaoAcao($opcao_ok, $acao_ok, $tipo); |
|
$dispAcao = sprintf('%s)%s', $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
} |
|
} |
|
|
|
|
|
|
|
$opcNao = $dados['opcao_nao']; |
|
$acaoNao = $dados['acao_nao']; |
|
$integraAtiva = strtoupper($opcNao) == "INTEGATIVA"; |
|
if (!empty($dados['opcao_nao'])) { |
|
if ($integraAtiva) { |
|
$dispAcao = GetOpcaoAcao($opcNao, $acaoNao, $tipo); |
|
$linha = sprintf('exten => %s,n,%s%s', $idHorario, $dispAcao, "\n"); |
|
fwrite($escreve, $linha); |
|
|
|
$linha = sprintf('exten => %s,n,Hangup()%s', $idHorario, "\n"); |
|
fwrite($escreve, $linha); |
|
} else { |
|
//fwrite($escreve, 'exten => ' . $idHorario . ',n,Set(CDR(userfield)=fora-do-horario)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $idHorario . ',n,Set(CDR(fora_horario)=1)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $idHorario . ',n,Goto('); |
|
|
|
$dispAcao = GetOpcaoAcao($dados['opcao_nao'], $dados['acao_nao'], $tipo); |
|
$dispAcao = sprintf('%s)%s', $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
} |
|
} |
|
|
|
|
|
//fwrite($escreve, 'exten => ' . $idHorario . ',n,Set(CDR(userfield)=fora-do-horario)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $idHorario . ',n,Hangup()' . "\n"); |
|
$integraAtiva = strtoupper($opcao_ok) == "INTEGATIVA"; |
|
if ($integraAtiva) { |
|
$dispAcao = GetOpcaoAcao($opcao_ok, $acao_ok, $tipo); |
|
$linha = sprintf('exten => %s,n(integracao),%s%s', $idHorario, $dispAcao, "\n"); |
|
fwrite($escreve, $linha); |
|
|
|
$linha = sprintf('exten => %s,n,Hangup()%s', $idHorario, "\n"); |
|
fwrite($escreve, $linha); |
|
} |
|
} |
|
|
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'HORARIOS'); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
if ($tipo == 'GRUPOS') { |
|
$arq = $caminho_producao . "extensions_grupos.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[ext-grupos]' . "\n"); |
|
fwrite($escreve, 'include => ext-grupos-custom' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_grupos"; |
|
$result = pg_query($dbcon, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
|
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',1,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Agi(pbx_complemento.php,ext-grupos)' . "\n"); |
|
|
|
if (trim($dados['anuncio']) != '') { |
|
$music = explode('.', trim($dados['anuncio'])); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Background(customizados/' . $music[0] . ')' . "\n"); |
|
} |
|
|
|
if (trim($dados['tipo']) == 'sequencial') { |
|
$query2 = "SELECT * FROM pbx_grupos_numeros where id_grupo=" . $dados['id']; |
|
$result2 = pg_query($dbcon, $query2); |
|
$n = 0; |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
$n++; |
|
if ($dados['musica_espera'] == 'S') { |
|
if ($n == 1) { |
|
//fwrite($escreve,'exten => '.$dados['numero'].',n(inicio),Dial(${DB(DIAL/'.$dados2['ramal'].')},'.$dados['tempo_ring'].',Ttm('.$dados['musicclass'].'))'. "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n(inicio),Dial(Local/' . $dados2['ramal'] . '@ext-ramais,' . $dados['tempo_ring'] . ',Ttm(' . $dados['musicclass'] . '))' . "\n"); |
|
} else { |
|
//fwrite($escreve,'exten => '.$dados['numero'].',n,Dial(${DB(DIAL/'.$dados2['ramal'].')},'.$dados['tempo_ring'].',Ttm('.$dados['musicclass'].'))'. "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Dial(Local/' . $dados2['ramal'] . '@ext-ramais,' . $dados['tempo_ring'] . ',Ttm(' . $dados['musicclass'] . '))' . "\n"); |
|
} |
|
} else { |
|
if ($n == 1) { |
|
//fwrite($escreve,'exten => '.$dados['numero'].',n(inicio),Dial(${DB(DIAL/'.$dados2['ramal'].')},'.$dados['tempo_ring'].',Ttr)'. "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n(inicio),Dial(Local/' . $dados2['ramal'] . '@ext-ramais,' . $dados['tempo_ring'] . ',Ttr)' . "\n"); |
|
} else { |
|
//fwrite($escreve,'exten => '.$dados['numero'].',n,Dial(${DB(DIAL/'.$dados2['ramal'].')},'.$dados['tempo_ring'].',Ttr)'. "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Dial(Local/' . $dados2['ramal'] . '@ext-ramais,' . $dados['tempo_ring'] . ',Ttr)' . "\n"); |
|
} |
|
} |
|
} |
|
} else { |
|
|
|
$query2 = "SELECT * FROM pbx_grupos_numeros where id_grupo=" . $dados['id']; |
|
$result2 = pg_query($dbcon, $query2); |
|
$n = 0; |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
$n++; |
|
if ($n == 1) { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n(inicio),Dial(Local/' . $dados2['ramal'] . '@ext-ramais'); |
|
} else { |
|
fwrite($escreve, '&Local/' . $dados2['ramal'] . '@ext-ramais'); |
|
} |
|
} |
|
|
|
if (trim($dados['musica_espera']) == 'S') { |
|
fwrite($escreve, ',' . $dados['tempo_ring'] . ',Ttm(' . $dados['musicclass'] . '))' . "\n"); |
|
} else { |
|
fwrite($escreve, ',' . $dados['tempo_ring'] . ',Ttr)' . "\n"); |
|
} |
|
} |
|
|
|
|
|
if (!empty($dados['opcao'])) { |
|
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao']); |
|
$dispAcao = sprintf('exten => %s,n,%s%s', $dados['numero'], $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Hangup()' . "\n"); |
|
} |
|
|
|
|
|
if (trim($dados['tentar_novamente']) == 'V') { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Goto(inicio)' . "\n"); |
|
} |
|
|
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Hangup()' . "\n"); |
|
} |
|
|
|
|
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'GRUPO'); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
if ($tipo == "FACILIDADES") { |
|
$arq = $caminho_producao . "extensions_facilidades.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
|
|
$query2 = "SELECT * FROM pbx_facilidades limit 1"; |
|
$result2 = pg_query($dbcon, $query2); |
|
if ($dados2 = pg_fetch_array($result2)) { |
|
$comando = $dados2['app_identifica_ramal']; |
|
fwrite($escreve, '[app-identifica-ramal]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(appsounds/ramal)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,SayDigits(${CALLERID(NUM)})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_hora']; |
|
fwrite($escreve, '[app-hora]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,SayUnixTime(,,HMS)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_echo']; |
|
fwrite($escreve, '[app-echo]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(demo-echotest)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Echo()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(demo-echodone)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_troca_senha_ramal']; |
|
fwrite($escreve, '[app-troca-senha-ramal]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(NOVASENHA,vm-newpassword,,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["${LEN(${NOVASENHA})}" = "${LEN(${CALLERID(NUM)})}"]?confirmasenha)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(confirmasenha),Read(CONFIRMASENHA,vm-reenterpassword,,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["${NOVASENHA}" = "${CONFIRMASENHA}"]?final)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(incorrect-password)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(final),Set(DB(SENHA/${CALLERID(NUM)})=${NOVASENHA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${NOVASENHA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Wait(1)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(vm-passchanged&vm-goodbye)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_nao_pertube_ativa']; |
|
fwrite($escreve, '[app-nao-pertube]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando função não pertube)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(NAOPERTUBE/${CALLERID(num)})=V)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_nao_pertube_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando função não pertube)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(NAOPERTUBE/${CALLERID(num)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_interno_ativa']; |
|
fwrite($escreve, '[app-siga-me]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(vm-enter-num-to-call&vm-then-pound)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(DESTINO,,,n) ' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando função siga-me interno para o ramal ${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-INTERNO/${CALLERID(num)})=${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_interno_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando função siga-me interno)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-INTERNO/${CALLERID(num)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_externo_ativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando função siga-me externo para o numero ${EXTEN:5})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(vm-enter-num-to-call&vm-then-pound)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(DESTINO,,,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-EXTERNO/${CALLERID(num)})=${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_externo_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando função siga-me externo)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-EXTERNO/${CALLERID(num)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_ocupado_ativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando função siga-me quando ocupado para o numero ${EXTEN:5})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(vm-enter-num-to-call&vm-then-pound)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(DESTINO,,,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-OCUPADO/${CALLERID(num)})=${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_ocupado_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando função siga-me ocupado)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-OCUPADO/${CALLERID(num)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_nresponde_ativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando função siga-me externo para o numero ${EXTEN:5})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(inicio),Playback(vm-enter-num-to-call&vm-then-pound)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(DESTINO,,,n,,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${DESTINO}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-NAOATENDE/${CALLERID(num)})=${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${DESTINO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(invalido),Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
|
|
$comando = $dados2['app_siga_me_nresponde_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando função siga-me externo)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(SIGAME-NAOATENDE/${CALLERID(num)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
fwrite($escreve, '[app-rechamada]' . "\n"); |
|
$comando = $dados2['app_rechamada_ativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(ARQUIVO=${DB(RECHAMADA/${CALLERID(NUM)})})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,System(/bin/rm ${ARQUIVO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(rechamada.php,${CALLERID(NUM)})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
$comando = $dados2['app_rechamada_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(ARQUIVO=${DB(RECHAMADA/${CALLERID(NUM)})})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,System(/bin/rm ${ARQUIVO})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(RECHAMADA/${CALLERID(NUM)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
|
|
$comando = $dados2['app_cadeado_ativa']; |
|
fwrite($escreve, '[app-cadeado]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando função Cadeado Eletronico)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(CADEADO/${CALLERID(NUM)})=V)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_cadeado_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando função Cadeado Eletronico)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(CADEADO/${CALLERID(NUM)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_chamada_espera_ativa']; |
|
fwrite($escreve, '[app-chamada-espera]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando função Cadeado Eletronico)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(CHAMADA-ESPERA/${CALLERID(NUM)})=V)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_chamada_espera_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando função Cadeado Eletronico)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(CHAMADA-ESPERA/${CALLERID(NUM)})=F)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_identifica_vm']; |
|
fwrite($escreve, '[app-identifica-vm]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(appsounds/vm-caixapostal)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(VM=${DB(VM/${CALLERID(NUM)})})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,SayDigits(${VM})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(auth-thankyou)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_acessa_vm']; |
|
fwrite($escreve, '[app-acessa-vm]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,VoiceMailMain(${DB(VM/${CALLERID(NUM)})})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_agenda_ramal_adiciona']; |
|
fwrite($escreve, '[app-agenda-ramal]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando Agenda Ramal)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(inicio),Background(speed-enterlocation&vm-then-pound,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(POSICAO-AGENDA,,,n,,30)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${POSICAO-AGENDA}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Background(speed-enternumber&vm-then-pound,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(DESTINO-AGENDA,,,n,,30)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${DESTINO-AGENDA}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(AGENDA/${CALLERID(NUM)}/${POSICAO-AGENDA})=${DESTINO-AGENDA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${CALLERID(NUM)},${POSICAO-AGENDA},${DESTINO-AGENDA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(invalido),Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_agenda_ramal_exclui']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando Agenda Ramal)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(inicio),Background(speed-enterlocation&vm-then-pound,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(POSICAO-AGENDA,,,n,,30)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${POSICAO-AGENDA}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(${DB_DELETE(AGENDA/${CALLERID(NUM)}/${POSICAO-AGENDA})})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${CALLERID(NUM)},${POSICAO-AGENDA},${DESTINO-AGENDA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(invalido),Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_agenda_publica_adiciona']; |
|
fwrite($escreve, '[app-agenda-publica]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando Agenda Publica)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(inicio),Background(speed-enterlocation&vm-then-pound,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(POSICAO-AGENDA,,,n,,30)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${POSICAO-AGENDA}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Background(speed-enternumber&vm-then-pound,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(DESTINO-AGENDA,,,n,,30)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${DESTINO-AGENDA}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Set(DB(AGENDA/${POSICAO-AGENDA})=${DESTINO-AGENDA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${POSICAO-AGENDA},${DESTINO-AGENDA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(invalido),Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_agenda_publica_exclui']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando Agenda Publica)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(inicio),Background(speed-enterlocation&vm-then-pound,n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Read(POSICAO-AGENDA,,,n,,30)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${POSICAO-AGENDA}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(${DB_DELETE(AGENDA/${POSICAO-AGENDA})})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php,${POSICAO-AGENDA},${DESTINO-AGENDA})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(invalido),Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_ultimo_recebido']; |
|
fwrite($escreve, '[app-ultimo-recebido]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,SayDigits(${DB(ULTIMO-RECEBIDO/${CALLERID(num)})})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
/* |
|
$comando = $dados2['app_monitoramento']; |
|
fwrite($escreve, '[app-monitoramento]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${DB(MONITORAMENTO/${CALLERID(NUM)})}" = "X"]?negado)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(inicio),Read(DESTINO-MONITOR,vm-enter-num-to-call,,n,,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${DESTINO-MONITOR}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,ChanSpy(${DB(DIAL/${DESTINO-MONITOR})},bq) ' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(invalido),Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(negado),Playback(appsounds/ramal-invalido&vm-goodbye)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['app_intercalar']; |
|
fwrite($escreve, '[app-intercalar]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${DB(MONITORAMENTO/${CALLERID(NUM)})}" = "X"]?negado)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(inicio),Read(DESTINO-MONITOR,vm-enter-num-to-call,,n,,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,GotoIf($["X${DESTINO-MONITOR}" = "X"]?invalido)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,ChanSpy(${DB(DIAL/${DESTINO-MONITOR})},bqw) ' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(invalido),Playback(invalid)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(inicio)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n(negado),Playback(appsounds/ramal-invalido&vm-goodbye)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
*/ |
|
$comando = trim($dados2['app_discagem_agenda_ramal']); |
|
$qtde = strlen($comando); |
|
|
|
fwrite($escreve, '[app-discagem-agenda]' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,1,AGI(pbx_complemento.php,app-discagem-agenda)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,GotoIf($["X${DB(AGENDA/${CALLERID(NUM)}/${EXTEN:' . $qtde . '})}" = "X"]?vazia)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,Goto(saida-pstn,${DB(AGENDA/${CALLERID(NUM)}/${EXTEN:' . $qtde . '})},disca)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n(vazia),Playback(speed-dial-empty)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,Hangup()' . "\n"); |
|
|
|
$comando = trim($dados2['app_discagem_agenda_publica']); |
|
$qtde = strlen($comando); |
|
|
|
fwrite($escreve, 'exten => _' . $comando . '.,1,AGI(pbx_complemento.php,app_discagem_agenda_ramal)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,GotoIf($["X${DB(AGENDA/${EXTEN:' . $qtde . '})}" = "X"]?vazia)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,Goto(saida-pstn,${DB(AGENDA/${EXTEN:' . $qtde . '})},disca)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n(vazia),Playback(speed-dial-empty)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '.,n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['troca_senha']; |
|
fwrite($escreve, '[troca-senha]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Goto(troca-senha-conta,s,1)' . "\n"); |
|
|
|
$sql = "select prm_digitos_conta, prm_digitos_senha from pbx_parametros"; |
|
$result = pg_query($dbcon, $sql); |
|
$row = pg_fetch_array($result); |
|
$prm_digitos_conta = trim($row['prm_digitos_conta']); |
|
$prm_digitos_conta = $prm_digitos_conta ? str_repeat('X', $prm_digitos_conta) : 'X.'; |
|
|
|
$prm_digitos_senha = trim($row['prm_digitos_senha']); |
|
$prm_digitos_senha = $prm_digitos_senha ? str_repeat('X', $prm_digitos_senha) : 'X.'; |
|
|
|
fwrite($escreve, '[troca-senha-conta]' . "\n"); |
|
fwrite($escreve, 'exten => s,1,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => s,n,Background(appsounds/codigodeacesso&beep)' . "\n"); |
|
fwrite($escreve, 'exten => s,n,WaitExten()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_conta . ',1,Set(__CONTA=${EXTEN})' . "\n"); // ====> A QUANTIDADE DE X DEVE SER A MESMA CONFIGURADA NO CAMPO CONTA DO SISTEMA |
|
fwrite($escreve, 'exten => _' . $prm_digitos_conta . ',n,Goto(troca-senha-senhaatual,s,1)' . "\n"); |
|
|
|
fwrite($escreve, '[troca-senha-senhaatual]' . "\n"); |
|
fwrite($escreve, 'exten => s,1,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => s,n,Background(appsounds/senhaatual&beep)' . "\n"); |
|
fwrite($escreve, 'exten => s,n,WaitExten()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',1,Set(_ATUAL=${EXTEN})' . "\n"); // ====> A QUANTIDADE DE X DEVE SER A MESMA CONFIGURADA NO CAMPO SENHA DO SISTEMA |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,AGI(confirma_senha.php)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Noop(atual ? = ${ATUAL})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Noop(atual no banco ? = ${ATUAL_DB})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,GotoIf($["${ATUAL}" = "${ATUAL_DB}"]?novasenha:invalida)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n(invalida),Answer()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Playback(appsounds/senha-invalida)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n(novasenha),Goto(troca-senha-novasenha,s,1)' . "\n"); |
|
|
|
fwrite($escreve, '[troca-senha-novasenha]' . "\n"); |
|
fwrite($escreve, 'exten => s,1,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => s,n,Background(appsounds/novasenha&beep)' . "\n"); |
|
fwrite($escreve, 'exten => s,n,WaitExten()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',1,Set(_NOVA=${EXTEN})' . "\n"); // ====> A QUANTIDADE DE X DEVE SER A MESMA CONFIGURADA NO CAMPO SENHA DO SISTEMA |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Goto(troca-senha-confirmasenha,s,1)' . "\n"); |
|
|
|
fwrite($escreve, '[troca-senha-confirmasenha]' . "\n"); |
|
fwrite($escreve, 'exten => s,1,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => s,n(confirme),Background(appsounds/confirme&beep)' . "\n"); |
|
fwrite($escreve, 'exten => s,n,WaitExten()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',1,Set(_NOVA2=${EXTEN})' . "\n"); // ====> A QUANTIDADE DE X DEVE SER A MESMA CONFIGURADA NO CAMPO SENHA DO SISTEMA |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,GotoIf($["${NOVA}" = "${NOVA2}"]?atualiza:invalida)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n(atualiza),Set(DATA=${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,AGI(update.php)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Playback(appsounds/alterada-sucesso)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n(invalida),Answer()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Playback(appsounds/senha-invalida)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $prm_digitos_senha . ',n,Hangup()' . "\n"); |
|
|
|
$comando = trim($dados2['captura_chamada']); |
|
|
|
$sql = "SELECT app_ranger_ramais FROM pbx_facilidades"; |
|
$result = pg_query($dbcon, $sql); |
|
while ($row = pg_fetch_array($result)) { |
|
$range = $row['app_ranger_ramais']; |
|
} |
|
|
|
$qtde = strlen($comando); |
|
fwrite($escreve, '[captura-chamada]' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '' . $range . ',1,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '' . $range . ',n,PickUp(${EXTEN:' . $qtde . '}@PICKUPMARK)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $comando . '' . $range . ',n,Hangup()' . "\n"); |
|
|
|
|
|
fwrite($escreve, '[app-ausencia-grupo]' . "\n"); |
|
$comando = $dados2['ausencia_grupo_ativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Ativando funcao - AUSENCIA NO GRUPO)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,PauseQueueMember(,Local/${CALLERID(NUM)}@padrao/n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
$comando = $dados2['ausencia_grupo_desativa']; |
|
fwrite($escreve, 'exten => ' . $comando . ',1,NoCDR()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(pbx_complemento.php,aplicacoes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Authenticate(${DB(SENHA/${CALLERID(NUM)})},d,)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Noop(Desativando funcao - AUSENCIA NO GRUPO)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,UnPauseQueueMember(,Local/${CALLERID(NUM)}@padrao/n)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,AGI(facilidades.php)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Playback(beep&beep&de-activated)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
$comando = $dados2['conferencia_dinamica']; |
|
fwrite($escreve, '[app-conferencia-dinamica]' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',1,Macro(inicia-conferencia)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $comando . ',n,Hangup()' . "\n"); |
|
|
|
|
|
if ($reload) |
|
CommandAsterisk($dbcon, 'URA'); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'FEATURES'); |
|
} |
|
fclose($escreve); |
|
} |
|
|
|
if ($tipo == "DGV") { |
|
//GERA O ARQUIVO DE DENTRO DO EXTENSIONS_RAMAIS E HINTS |
|
GeraExtRamais($dbcon); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'RELOAD'); |
|
} |
|
|
|
|
|
if ($tipo == "DAHDI") { |
|
//GERA O ARQUIVO DE DENTRO DO EXTENSIONS_RAMAIS E HINTS |
|
GeraExtRamais($dbcon); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'RELOAD'); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
|
|
if ($tipo == "PBX") { |
|
//GERA O ARQUIVO DE DENTRO DO EXTENSIONS_RAMAIS E HINTS |
|
GeraExtRamais($dbcon); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'RELOAD'); |
|
} |
|
|
|
|
|
if ($tipo == "ANUNCIOS") { |
|
$arq = $caminho_producao . "extensions_anuncios.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[ext-anuncios]' . "\n"); |
|
fwrite($escreve, 'include => ext-anuncios-custom' . "\n"); |
|
fwrite($escreve, 'exten => h,1,Macro(hangup)' . "\n"); |
|
|
|
$query = "select * from pbx_anuncios "; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$music = explode('.', $dados['musica']); |
|
|
|
fwrite($escreve, 'exten => _a' . $dados['id'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _a' . $dados['id'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _a' . $dados['id'] . ',n,AGI(pbx_complemento.php,ext-anuncios)' . "\n"); |
|
fwrite($escreve, 'exten => _a' . $dados['id'] . ',n,Playback(customizados/' . $music[0] . ')' . "\n"); |
|
if (!empty($dados['opcao'])) { |
|
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao']); |
|
$dispAcao = sprintf('exten => _a%s,n,%s%s', $dados['id'], $dispAcao, "\n"); |
|
fwrite($escreve, $dispAcao); |
|
} |
|
fwrite($escreve, 'exten => _a' . $dados['id'] . ',n,Hangup()' . "\n"); |
|
} |
|
|
|
fclose($escreve); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
if ($tipo == "CONFMAIL") { |
|
|
|
$arq = "/etc/msmtprc"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, 'defaults' . "\n"); |
|
|
|
$query = "select * from pbx_confMail "; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, 'account ' . $dados['conta'] . "\n"); |
|
fwrite($escreve, 'port ' . $dados['porta'] . "\n"); |
|
fwrite($escreve, 'timeout ' . $dados['timeout'] . "\n"); |
|
fwrite($escreve, 'protocol ' . $dados['protocolo'] . "\n"); |
|
fwrite($escreve, 'domain ' . $dados['dominio'] . "\n"); |
|
fwrite($escreve, 'tls ' . $dados['tsl'] . "\n"); |
|
fwrite($escreve, 'tls_trust_file ' . "\n"); |
|
fwrite($escreve, 'tls_certcheck ' . $dados['tsl_check'] . "\n"); |
|
fwrite($escreve, 'logfile ' . $dados['logfile'] . "\n"); |
|
fwrite($escreve, 'host ' . $dados['hosts'] . "\n"); |
|
fwrite($escreve, 'from ' . $dados['de'] . "\n"); |
|
fwrite($escreve, 'auth ' . $dados['auth'] . "\n"); |
|
fwrite($escreve, 'user ' . $dados['usuario'] . "\n"); |
|
fwrite($escreve, 'password ' . $dados['senha'] . "\n"); |
|
fwrite($escreve, "\n"); |
|
} |
|
|
|
$query = "select * from pbx_confMail where padrao='S' limit 1"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, chr(13) . chr(10) . 'account default:' . $dados['conta'] . "\n"); |
|
} |
|
|
|
fclose($escreve); |
|
/* |
|
$arq="/root/.mailrc"; |
|
$escreve = fopen($arq, 'w'); |
|
fwrite($escreve,'set sendmail=/usr/bin/msmtp'); |
|
fclose($escreve); |
|
* |
|
*/ |
|
} |
|
|
|
|
|
if ($tipo == "CONFERENCIA") { |
|
$arq = $caminho_producao . "meetme_salas.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[rooms]' . "\n"); |
|
|
|
$query = "select * from pbx_conferencia order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, 'conf => ' . $dados['numero']); |
|
if (trim($dados['senha_usuario']) != '') { |
|
fwrite($escreve, ',' . $dados['senha_usuario']); |
|
} else if (trim($dados['senha_admin']) != '') { |
|
fwrite($escreve, ','); |
|
} |
|
|
|
if (trim($dados['senha_admin']) != '') { |
|
fwrite($escreve, ',' . $dados['senha_admin']); |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'CONFERENCIA'); |
|
|
|
$arq = $caminho_producao . "extensions_conferencia.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[ext-conferencia]' . "\n"); |
|
fwrite($escreve, 'include => ext-conferencia-custom' . "\n"); |
|
|
|
$query = "select * , |
|
(case when (encerra_sem_admin = 'S') then 'x' else '' end) AS encerra, |
|
(case when (silencioso = 'S') then 'q' else '' end ) as silencioso, |
|
(case when (anuncia_conta = 'S') then 'c' else '' end ) as anuncia_conta, |
|
(case when (anuncia_entrada = 'S') then 'i' else '' end ) as anuncia_entrada, |
|
(case when (musica_espera = 'S') then 'M' else '' end )as musica_espera, |
|
(case when (habilita_menu = 'S') then 's' else '' end ) as habilita_menu, |
|
(case when (grava='S') then 'r' else '' end) as grava |
|
from pbx_conferencia |
|
order by id asc"; |
|
|
|
// fwrite($escreve,'exten => INICIACONFERENCIA,1,MeetMe(${MEETME_ROOMNUM},${MEETME_OPTS},${PIN})'. "\n"); |
|
// fwrite($escreve,'exten => INICIACONFERENCIA,n,Hangup'. "\n"); |
|
fwrite($escreve, 'exten => h,1,Hangup()' . "\n"); |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,AGI(pbx_complemento.php,ext-conferencia)' . "\n"); |
|
|
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Answer()' . "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CONFBRIDGE(user,template)=default_user_simplesip)' . "\n"); |
|
|
|
if (trim($dados['limite']) != '') { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CONFBRIDGE(bridge,max_members)=' . $dados['limite'] . ')' . "\n"); |
|
} |
|
|
|
if (trim($dados['grava']) != '') { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Macro(gravacao-conferencia,${EXTEN})' . "\n"); |
|
} |
|
|
|
if ($dados['senha_admin'] != '') { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CONFBRIDGE(user,pin)=' . $dados['senha_admin'] . ')' . "\n"); |
|
} |
|
|
|
if ($dados['musica_espera'] != '') { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CONFBRIDGE(user,music_on_hold_when_empty)=yes)' . "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CONFBRIDGE(user,music_on_hold_class)=default)' . "\n"); |
|
} |
|
|
|
|
|
if ($dados['anuncia_conta'] != '') { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CONFBRIDGE(user,announce_user_count)=yes)' . "\n"); |
|
} |
|
|
|
if ($dados['anuncia_entrada'] != '') { |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Set(CONFBRIDGE(user,announce_join_leave)=yes)' . "\n"); |
|
} |
|
|
|
|
|
if (trim($dados['anuncio']) != '') { |
|
$music = explode('.', trim($dados['anuncio'])); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Playback(customizados/' . $music[0] . ')' . "\n"); |
|
} |
|
|
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,ConfBridge(${EXTEN})' . "\n"); |
|
fwrite($escreve, 'exten => ' . $dados['numero'] . ',n,Hangup()' . "\n"); |
|
} |
|
|
|
fclose($escreve); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
if ($tipo == "ROTA_ENTRADA") { |
|
$arq = $caminho_producao . "extensions_rotas_entrada.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
//retirar as rotas de entrada digivoice (select id, tipo || '/' || username as nome_canal, nome, max_ligacoes from pbx_troncos) |
|
$query = "select distinct a.*,troncos.context |
|
FROM pbx_rotas_entrada a, pbx_rotas_entrada_troncos b,pbx_troncos as troncos |
|
where a.id = b.id_rota |
|
and b.id_tronco = troncos.id |
|
and b.tipo = troncos.tipo |
|
order by troncos.context, modelos asc"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
$contexto = ''; |
|
while ($dados = pg_fetch_array($result)) { |
|
if ($contexto != $dados['context']) { |
|
fwrite($escreve, '[' . $dados['context'] . ']' . chr(10)); |
|
fwrite($escreve, 'include => ' . $dados['context'] . '-custom' . chr(10)); |
|
} |
|
|
|
|
|
|
|
$contexto = $dados['context']; |
|
$idRota = $dados['id']; |
|
$modelos = explode('|', $dados['modelos']); |
|
$ativarDdr = $dados['ativar_ddr']; |
|
$identificador = $dados['identificador']; |
|
$limite_ligacao = $dados['limite_ligacao']; |
|
foreach ($modelos as $modelo) { |
|
$value = explode(';', $modelo); |
|
$modelo = $value[0]; |
|
$bloq = $value[1]; |
|
|
|
/* Alan Pablo 2001-01-16 |
|
* O parametro do lista negra foi colocado antes do pbx_complemento para não bagunçar os relatorios |
|
*/ |
|
|
|
$modelo = (trim($modelo) == 's') ? trim($modelo) : '_' . trim($modelo); |
|
$servId = trim($dados['serv_id']); |
|
$exten = explode(':', $modelo); |
|
if (isset($exten[1]) && $exten[1]) { |
|
$modelo = $exten[0]; |
|
} |
|
if ($servId) { |
|
fwrite($escreve, sprintf("exten => %s,1,AGI(pbx_servicos.php,\${UNIQUEID},%s)\n", $modelo, $dados['serv_id'])); |
|
} |
|
|
|
fwrite($escreve, sprintf('exten => %s,%s,Set(CDR(direcao)=E)' . chr(10), $modelo, ($servId ? 'n' : '1'))); |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,AGI(lista_negra.php,${CALLERID(NUM)},' . $idRota . ')' . chr(10)); |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,Set(__TIPO=EXTERNA)' . chr(10)); |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,AGI(pbx_complemento.php,' . $dados['context'] . ')' . chr(10)); |
|
if ($bloq) |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,Macro(chamada-a-cobrar)' . chr(10)); |
|
|
|
if ($limite_ligacao) { |
|
$opcaoRota = GetAcaoOpcaoRotas($dados['limite_ligacao_pos_opcao'], $dados['limite_ligacao_pos_acao']); |
|
fwrite($escreve, 'exten => ' . $modelo . ",n,Macro(limite-ligacao-entrante,$idRota,$limite_ligacao,$opcaoRota)" . chr(10)); |
|
} |
|
|
|
if ($identificador) |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,Set(CALLERID(name)=' . $identificador . ')' . chr(10)); |
|
|
|
if (trim($dados['anuncio'] != '')) { |
|
$music = explode('.', trim($dados['anuncio'])); |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,Playback(customizados/' . $music[0] . ')' . chr(10)); |
|
} |
|
if (($ativarDdr == 'V')) { |
|
if ($exten[1]) { |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,Goto(ext-ramais,${EXTEN:-' . $exten[1] . '},1)' . chr(10)); |
|
} else { |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,Goto(ext-ramais,${EXTEN},1)' . chr(10)); |
|
} |
|
} else { |
|
$dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao'], '', $modelo); |
|
$dispAcao = sprintf('exten => %s,n,%s%s', $modelo, $dispAcao, "\n"); |
|
|
|
// $dispAcao = GetOpcaoAcao($dados['opcao'], $dados['acao']); |
|
// $dispAcao = sprintf('exten => %s,n,Goto(%s)%s', $modelo, $dispAcao, "\n"); |
|
|
|
fwrite($escreve, $dispAcao); |
|
} |
|
fwrite($escreve, 'exten => ' . $modelo . ',n,Hangup()' . chr(10)); |
|
} |
|
} |
|
|
|
fclose($escreve); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
if ($tipo == "CALLBACK") { |
|
$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"; |
|
$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"]; |
|
$opcao1 = trim($dados["opcao1"]); |
|
$acao1 = $dados["acao1"]; |
|
$ramalSaida = $dados["ramal_saida"]; |
|
$id = $dados["id"]; |
|
$tempoDesligamento = $dados['tempo_desligamento']; |
|
|
|
if (trim($opcao) == 'ura') { |
|
$acao = explode('-', $acao); |
|
$dest = GetAcao($opcao) . $acao[0]; // . ',s'; |
|
$acao = 's'; |
|
} |
|
if ((trim($opcao) == 'rotaInterna') && (soTexto($acao) != '')) { |
|
|
|
$dest = GetAcao($opcao); |
|
$acao = '${EXTEN}'; |
|
} else { |
|
$dest = GetAcao($opcao); |
|
$acao = (trim($opcao) == 'voice') ? str_replace('/', '"\\\',\\\'"', $acao) : $acao; |
|
$acao = (strtolower($opcao) == "anuncios") ? 'a' . $acao : $acao; |
|
} |
|
fwrite($escreve, "exten => _$id,1,Answer()" . "\n"); |
|
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"); |
|
fwrite($escreve, "exten => _$id,n,Agi(pbx_complemento.php,ext-callback-externo)" . "\n"); |
|
fwrite($escreve, "exten => _$id,n,Agi(callback.php,\${CALLERID(NUM):-13})" . "\n"); |
|
fwrite($escreve, "exten => _$id,n,Set(ORIGEM=\${CALLERID(NUM):-13})" . "\n"); |
|
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,Busy($tempoDesligamento)" . "\n"); |
|
fwrite($escreve, "exten => _$id,n,Hangup()" . "\n"); |
|
|
|
if (trim($opcao1) == 'ura') { |
|
$ac = explode('-', $acao1); |
|
$displayOpcao = GetAcao($opcao1) . $ac[0] . ',s'; |
|
$acao1 = ""; |
|
} |
|
if ((trim($opcao1) == 'rotaInterna') && (soTexto($acao1) != '')) { |
|
|
|
$displayOpcao = GetAcao($opcao1); |
|
$acao1 = '${EXTEN}'; |
|
} else { |
|
$displayOpcao = GetAcao($opcao1) . "," . ((strtolower($opcao1) == "anuncios") ? "a" : ""); |
|
$acao1 = str_replace('/', ',', $acao1); |
|
} |
|
|
|
if ((trim($opcao1) == 'voice')) { |
|
fwrite($escreve, "exten => _$id,n(destino),Goto($displayOpcao$acao1)" . "\n"); |
|
} else if ($opcao1) { |
|
fwrite($escreve, "exten => _$id,n(destino),Goto($displayOpcao$acao1,1)" . "\n"); |
|
} |
|
|
|
fwrite($escreve, sprintf("exten => _%s,n%s,Hangup()", $id, $opcao1 ? '' : '(destino)') . "\n"); |
|
} |
|
|
|
fclose($escreve); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
if ($tipo == "ROTAS_SAIDA") { |
|
|
|
$arq = $caminho_producao . "extensions_rotas_saida.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[saida-pstn]' . "\n"); |
|
fwrite($escreve, 'include => saida-pstn-custom' . "\n"); |
|
|
|
$query = "select * FROM pbx_rotas_saida where tipo='E' and portabilidade = 0 order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$portabilidade = $dados['portabilidade']; |
|
$query2 = "select * FROM pbx_rotas_saida_modelos where id_rota=" . $dados['id'] . " order by length(modelo), modelo asc"; |
|
$result2 = pg_query($dbcon, $query2); |
|
|
|
while ($dados2 = pg_fetch_array($result2)) { |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',1,Set(CDR(direcao)=S)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,AGI(lista_negra.php,${EXTEN},' . $dados['id'] . ')' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Set(_TIPO=EXTERNO)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,AGI(pbx_complemento.php,saida-pstn)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(verifica-rota,${CALLERID(NUM)},${EXTEN})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Gosub(rota-${ID_ROTA},${EXTEN},1)' . "\n"); |
|
|
|
$query3 = "select * |
|
from (select id, tipo || '/' || username as nome_canal, nome, max_ligacoes from pbx_troncos) as troncos, pbx_rotas_saida_canais b |
|
where troncos.nome = b.canal and b.id_rota=" . $dados['id'] . " order by b.id asc"; |
|
$result3 = pg_query($dbcon, $query3); |
|
|
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(containvalida),Playback(appsounds/conta-invalida)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(alterasenha),Playback(appsounds/altere-senha)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(sempermissao),Playback(appsounds/nao-tem-permissao)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(limite),Playback(appsounds/linhas_ocupadas)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(senha),Playback(appsounds/utilize_senha)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n" . "\n"); |
|
} |
|
} |
|
|
|
fclose($escreve); |
|
|
|
//Inicio do Rotas |
|
$arq = $caminho_producao . "extensions_rotas.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "select * FROM pbx_rotas_saida where tipo='E' and portabilidade = 0 order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$portabilidade = $dados['portabilidade']; |
|
fwrite($escreve, '[rota-' . $dados['id'] . ']' . "\n"); |
|
//fwrite($escreve, 'exten => h,1,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Set(CDR_PROP(disable)=1))' . "\n"); |
|
fwrite($escreve, 'exten => h,1,Macro(hangup)' . "\n"); |
|
|
|
$query2 = "select * FROM pbx_rotas_saida_modelos where id_rota=" . $dados['id'] . " order by length(modelo), modelo asc"; |
|
$result2 = pg_query($dbcon, $query2); |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
//fwrite($escreve, sprintf('exten => _%s,1,GotoIf($["X${TRANSFER}" = "X"]?inicio)%s', $dados2['modelo'], "\n")); |
|
fwrite($escreve, sprintf('exten => _%s,1,AGI(pbx_complemento.php,saida-pstn)%s', $dados2['modelo'], "\n")); |
|
|
|
fwrite($escreve, sprintf('exten => _%s,n,AGI(lista_negra.php,${EXTEN},%s)%s', $dados2['modelo'], $dados['id'], "\n")); |
|
fwrite($escreve, sprintf('exten => _%s,n,Set(_TIPO=EXTERNO)%s', $dados2['modelo'], "\n")); |
|
|
|
//fwrite($escreve, sprintf('exten => _%s,n,Set(CHANNEL(accountcode)=${TRANSFER})%s', $dados2['modelo'], "\n")); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(inicio),Macro(gravacao,OUT,${CALLERID(NUM)})' . "\n"); |
|
|
|
|
|
if ($portabilidade) { |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,AGI(portabilidade.php,${EXTEN:-11})' . "\n"); |
|
} |
|
|
|
$query3 = "select troncos.id_tronco, troncos.nome_canal, troncos.nome, troncos.max_ligacoes, troncos.callerid, troncos.tipo as tipo_tronco, b.id, b.id_rota, b.canal, |
|
troncos.callerid_tronco, b.recorta, b.acrescenta |
|
from (select id as id_tronco, tipo || '/' || username as nome_canal, nome, max_ligacoes, callerid, tipo, callerid_tronco from pbx_troncos) as troncos, |
|
pbx_rotas_saida_canais b |
|
where troncos.nome = b.canal and b.id_rota=" . $dados['id'] . " order by b.id asc"; |
|
|
|
$result3 = pg_query($dbcon, $query3); |
|
while ($dados3 = pg_fetch_array($result3)) { |
|
if ($dados3['callerid_tronco'] && ($dados3['tipo_tronco'] != 'KHOMP')) { |
|
fwrite($escreve, sprintf('exten => _%s,n,Set(CALLERID_TRONCO=%s)%s', $dados2['modelo'], $dados3['callerid_tronco'], "\n")); |
|
} |
|
|
|
$recorte = (!trim($dados['recorte']) ? '' : ':' . $dados['recorte']); |
|
$acrescenta = (trim($dados['acrescenta']) === '' ? '' : $dados['acrescenta']); |
|
|
|
$recortetronco = trim($dados3['recorta']); |
|
$acrescentatronco = trim($dados3['acrescenta']); |
|
if (!$recortetronco) { |
|
$recortetronco = ''; |
|
} |
|
|
|
if ($acrescentatronco === '') { |
|
$acrescentatronco = ''; |
|
} |
|
|
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Set(RECORTA_TRONCO=' . $recortetronco . ')' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Set(ACRECENTA_TRONCO=' . $acrescentatronco . ')' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(dial-saida-pstn,' . $dados3['nome_canal'] . '/' . $acrescenta . '${EXTEN' . $recorte . '}' . ((($dados3['tipo_tronco'] == 'KHOMP') && $dados3['callerid']) ? ('/orig=' . $dados3['callerid']) : '') . ',r,' . $dados3['id_tronco'] . ',' . $dados3['max_ligacoes'] . ',' . sprintf('tarifa,%s,%s,${UNIQUEID},${CALLERID(NUM)},%s${EXTEN%s},${TIPO_ACESSO},${CONTA},${SENHA},${RECORTA_TRONCO},${ACRECENTA_TRONCO}', $dados3['id_tronco'], $dados['id'], $acrescenta, $recorte) . ')' . "\n"); |
|
} |
|
|
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,GotoIf($["${LIMITE}" = "OK"]?limite)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,GotoIf($["${FRANQUIA}" = "OK"]?franquia)' . "\n"); |
|
//fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Set(CDR_PROP(disable)=1))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Return()' . "\n"); |
|
|
|
if ($portabilidade) { |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(portabilidade),Macro(dial-saida-pstn,${TRONCO}/' . $acrescenta . '${DESTINO},r,${ID_TRONCO}, ${MAX_LIG},' . sprintf('tarifa,${ID_TRONCO},%s,${UNIQUEID},${CALLERID(NUM)},' . $acrescenta . '${DESTINO},${TIPO_ACESSO},${CONTA},${SENHA}', $dados['id']) . ')' . "\n"); |
|
|
|
$result3 = pg_query($dbcon, $query3); |
|
while ($dados3 = pg_fetch_array($result3)) { |
|
// $recorte = $dados3['recorta'] ? ':' . $dados3['recorta'] : (!soNumero($dados['recorte']) ? '' : ':' . $dados['recorte']); |
|
//$acrescenta = $dados3['acrescenta'] ? $dados3['acrescenta'] : (!soNumero($dados['acrescenta']) ? '' : $dados['acrescenta']); |
|
$recorte = !trim($dados['recorte']) ? '' : (':' . trim($dados['recorte'])); |
|
$acrescenta = trim($dados['acrescenta']) !== '' ? '' : trim($dados['acrescenta']); |
|
|
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(dial-saida-pstn,' . $dados3['nome_canal'] . '/' . $acrescenta . '${EXTEN' . $recorte . '}' . ((($dados3['tipo_tronco'] == 'KHOMP') && $dados3['callerid']) ? ('/orig=' . $dados3['callerid']) : '') . ',r,' . $dados3['id_tronco'] . ',' . $dados3['max_ligacoes'] . ',' . sprintf('tarifa,%s,%s,${UNIQUEID},${CALLERID(NUM)},%s${EXTEN%s},${TIPO_ACESSO},${CONTA},${SENHA}', $dados3['id_tronco'], $dados['id'], $acrescenta, $recorte) . ')' . "\n"); |
|
} |
|
|
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,GotoIf($["${LIMITE}" = "OK"]?limite)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,GotoIf($["${FRANQUIA}" = "OK"]?franquia)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Return()' . "\n"); |
|
} |
|
|
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(limite),Playback(appsounds/linhas_ocupadas)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Return()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(franquia),Playback(appsounds/franquia_excedida)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Return()' . "\n"); |
|
} |
|
} |
|
fclose($escreve); |
|
|
|
$arq = $caminho_producao . "extensions_rotas_interno.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[ext-rotasinternas]' . "\n"); |
|
fwrite($escreve, 'include => ext-rotasinternas-custom' . "\n"); |
|
//fwrite($escreve,'exten => h,1,Macro(hangup)'. "\n"); |
|
|
|
$query = "select * FROM pbx_rotas_saida where tipo='I' and portabilidade = 0 order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$acrescentaRota = soNumero($dados['acrescenta']); |
|
|
|
$query2 = "select * FROM pbx_rotas_saida_modelos where id_rota=" . $dados['id'] . " order by length(modelo), modelo asc"; |
|
$result2 = pg_query($dbcon, $query2); |
|
while ($dados2 = pg_fetch_array($result2)) { |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Set(_TIPO=INTERNO)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,AGI(pbx_complemento.php,ext-rotasinternas,interna)' . "\n"); |
|
|
|
/* Alan Pablo 2001-01-16 |
|
* Alterado o parametro de: select id,'IAX2/'||username para: select id,'IAX2/'||nome |
|
* Devido a alteração no cadastro de troncos IAX |
|
*/ |
|
|
|
$query3 = "select * |
|
from (select id as id_tronco, tipo as tipo_tronco, callerid, tipo || '/' || username as nome_canal, nome, max_ligacoes, callerid_tronco from pbx_troncos) as troncos, pbx_rotas_saida_canais b |
|
where troncos.nome = b.canal |
|
and b.id_rota=" . $dados['id'] . " |
|
order by b.id asc"; |
|
$result3 = pg_query($dbcon, $query3); |
|
|
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(gravacao,OUT,${CALLERID(NUM)})' . "\n"); |
|
|
|
while ($dados3 = pg_fetch_array($result3)) { |
|
$acrescentaCanal = soNumero($dados3['acrescenta']); |
|
|
|
if ($dados3['callerid_tronco'] && ($dados3['tipo_tronco'] != 'KHOMP')) { |
|
fwrite($escreve, sprintf('exten => _%s,n,Set(CALLERID_TRONCO=%s)%s', $dados2['modelo'], $dados3['callerid_tronco'], "\n")); |
|
} |
|
|
|
$recorte = $dados3['recorta'] ? (':' . $dados3['recorta']) : (!soNumero($dados['recorte']) ? '' : ':' . $dados['recorte']); |
|
$acrescenta = $acrescentaCanal !== '' ? $acrescentaCanal : (($acrescentaRota !== '') ? '' : $dados['acrescenta']); |
|
|
|
$complKhomp = (($dados3['tipo_tronco'] == 'KHOMP') && $dados3['callerid']) ? ('/orig=' . $dados3['callerid']) : ''; |
|
$complTronco = sprintf(",%s,%s", $dados3['id_tronco'], $dados3['max_ligacoes']); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Macro(dial-saida-pstn,' . $dados3['nome_canal'] . '/' . $acrescenta . '${EXTEN' . $recorte . '}' . $complKhomp . ',r' . $complTronco . ')' . "\n"); |
|
} |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,GotoIf($["${LIMITE}" = "OK"]?limite)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n(limite),Playback(appsounds/linhas_ocupadas)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados2['modelo'] . ',n,Hangup()' . "\n" . "\n"); |
|
} |
|
} |
|
fclose($escreve); |
|
if ($reload || $reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
|
|
if ($tipo == "CONTEXTOS") { |
|
$arq = $caminho_producao . "extensions_contextos.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
/* |
|
* Tratamento para warning contexto custom. |
|
*/ |
|
$arqCustom = $caminho_producao . "extensions_contextos_custom.conf"; |
|
$escreveCustom = fopen($arqCustom, 'w'); |
|
|
|
$query = "select * FROM pbx_contextos order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = @pg_fetch_array($result)) { |
|
/* |
|
* Inicializa variaveis com informa��es do contexto corrente |
|
*/ |
|
$nomeContexto = $dados['nome']; |
|
$idContexto = $dados['id']; |
|
|
|
/* |
|
* Atualiza arquivo extensions_contextos_custom.conf. |
|
*/ |
|
fwrite($escreveCustom, sprintf("[%s_custom]\n", $nomeContexto)); |
|
|
|
/* |
|
* Inicio da gravação do contexto |
|
*/ |
|
$linha = "[$nomeContexto]\n"; |
|
fwrite($escreve, $linha); |
|
|
|
/* Alan Pablo 2001-01-16 |
|
* Incluido o parametro include => $nomeContexto"."_custom |
|
*/ |
|
|
|
|
|
$linha = "include => $nomeContexto" . "_custom\n"; |
|
fwrite($escreve, $linha); |
|
fwrite($escreve, "include => aplicacoes" . "\n"); |
|
fwrite($escreve, "exten => h,1,Macro(hangup)" . "\n"); |
|
|
|
if ($dados['inclui_padrao'] == 'S') { |
|
$linha = "include => padrao\n"; |
|
fwrite($escreve, $linha); |
|
} |
|
|
|
/* |
|
* Grava��o dos modelos relacionado ao contexto corrente |
|
*/ |
|
$query = "select id, id_contexto, modelo, recorte, acrescenta, portabilidade from pbx_contextos_modelos where id_contexto = '$idContexto'"; |
|
$result2 = pg_query($dbcon, $query); |
|
while ($dadosModelo = @pg_fetch_array($result2)) { |
|
$modelo = $dadosModelo["modelo"]; |
|
$idModelo = $dadosModelo["id"]; |
|
$recorte = trim($dadosModelo['recorte']); |
|
$portabilidade = $dadosModelo["portabilidade"]; |
|
|
|
if (!$recorte) { |
|
$recorte = ''; |
|
} else { |
|
$recorte = ':' . $dadosModelo['recorte']; |
|
} |
|
if (trim($dadosModelo['acrescenta']) == '') { |
|
$acrescenta = ''; |
|
} else { |
|
$acrescenta = trim($dadosModelo['acrescenta']); |
|
} |
|
|
|
/* |
|
* Linhas referentes ao modelo associado ao contexto |
|
*/ |
|
fwrite($escreve, "exten => _$modelo,1,ExecIf($[\"\${ISNULL(\${CDR(direcao)})}\" = \"1\"]?Set(CDR(direcao)=I))" . "\n"); |
|
fwrite($escreve, "exten => _$modelo,n,ExecIf($[\"\${CDR(direcao)}\" != \"E\" && \"\${ISNULL(\${CDR(ramal_origem)})}\" = \"1\"]?Set(CDR(ramal_origem)=\${CALLERID(num)}))" . "\n"); |
|
$linha = "exten => _$modelo,n,Set(CHANNEL(accountcode)=\${TRANSFER})\n"; |
|
fwrite($escreve, $linha); |
|
|
|
/* |
|
* Grava Trocos ou Acoes conforme cofigurado pelo usu�rio |
|
*/ |
|
$query = "select id, id_contexto, id_modelo, canal from pbx_contextos_canais where id_modelo = '$idModelo'"; |
|
$result3 = pg_query($dbcon, $query); |
|
$existeTronco = 0; |
|
|
|
|
|
|
|
while ($dadosCanais = @pg_fetch_array($result3)) { |
|
if (!$existeTronco) { |
|
$linha = "exten => _$modelo,n,AGI(lista_negra.php,\${EXTEN})\n"; |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n,AGI(pbx_complemento.php,$nomeContexto)\n"; |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n,Set(_TIPO=INTERNO)\n"; |
|
fwrite($escreve, $linha); |
|
$linha = sprintf('exten => _%s,n,Macro(gravacao,OUT,${CALLERID(NUM)})%s', $modelo, "\n"); |
|
fwrite($escreve, $linha); |
|
if ($portabilidade) { |
|
$linha = sprintf('exten => _%s,n,AGI(portabilidade.php,${EXTEN:-11})%s', $modelo, "\n"); |
|
fwrite($escreve, $linha); |
|
} |
|
} |
|
|
|
$existeTronco++; |
|
$canal = $dadosCanais["canal"]; |
|
/* |
|
* � necesario buscar informacoes sbre o tronco selecionado |
|
*/ |
|
|
|
$query = "select id, tipo, username, max_ligacoes, callerid, callerid_tronco from pbx_troncos where nome = '$canal' "; |
|
$result4 = pg_query($dbcon, $query); |
|
$dadosTronco = @pg_fetch_array($result4); |
|
|
|
|
|
if ($dadosTronco['callerid_tronco'] && ($dadosTronco['tipo'] != 'KHOMP')) { |
|
fwrite($escreve, sprintf('exten => _%s,n,Set(CALLERID_TRONCO=%s)%s', $modelo, $dadosTronco['callerid_tronco'], "\n")); |
|
} |
|
|
|
$idTronco = $dadosTronco["id"]; |
|
$maxLigacoes = $dadosTronco["max_ligacoes"]; |
|
$tipoTronco = $dadosTronco["tipo"] . "/" . $dadosTronco["username"]; |
|
|
|
$linha = sprintf('exten => _%s,n,Macro(dial-saida-pstn,%s/%s${EXTEN%s}%s,r,%s,%s)%s', $modelo, $tipoTronco, $acrescenta, $recorte, ((($dadosTronco['tipo'] == 'KHOMP') && $dadosTronco['callerid']) ? ('/orig=' . $dadosTronco['callerid']) : ''), $idTronco, $maxLigacoes, "\n"); |
|
fwrite($escreve, $linha); |
|
} |
|
if ($existeTronco) { |
|
$linha = sprintf('exten => _%s,n,GotoIf($["${LIMITE}" = "OK"]?limite)%s', $modelo, "\n"); |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n,Hangup()\n"; |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n(limite),Playback(appsounds/linhas_ocupadas)\n"; |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n,Hangup()\n"; |
|
fwrite($escreve, $linha); |
|
if ($portabilidade) { |
|
$linha = "exten => _$modelo,n(portabilidade),Macro(dial-saida-pstn,\${TRONCO}/\${DESTINO},r,\${ID_TRONCO},\${MAX_LIG})\n"; |
|
fwrite($escreve, $linha); |
|
} |
|
$linha = sprintf('exten => _%s,n,GotoIf($["${LIMITE}" = "OK"]?limite)%s', $modelo, "\n"); |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n,Hangup()\n"; |
|
fwrite($escreve, $linha); |
|
} |
|
/* |
|
* Se o modelo n�o tem troncos associados grava uma a�ao |
|
*/ |
|
if (!$existeTronco) { |
|
$linha = "exten => _$modelo,n,AGI(lista_negra.php,\${CALLERID(NUM):-10})\n"; |
|
fwrite($escreve, $linha); |
|
|
|
$query = "select opcao, acao from pbx_contextos_opcoes where id_modelo = '$idModelo' "; |
|
$result5 = pg_query($dbcon, $query); |
|
$dadosAcao = @pg_fetch_array($result5); |
|
$opcao = $dadosAcao["opcao"]; |
|
$acao = $dadosAcao["acao"]; |
|
|
|
if (trim($opcao) == 'ura') { |
|
$acao = explode('-', $acao); |
|
$dispAcao = GetAcao($opcao); |
|
$acao = $acao[0] . ',s,1'; |
|
} else if ((trim($opcao) == 'voice')) { |
|
$dispAcao = GetAcao($opcao) . ","; |
|
$acao = str_replace('/', ',', $acao); |
|
} else if ((trim($opcao) == 'rotaInterna') && (soTexto($acao) != '')) { |
|
$dispAcao = GetAcao($opcao) . ',${EXTEN},1'; |
|
$acao = ''; |
|
} else { |
|
$dispAcao = GetAcao($opcao) . "," . ((strtolower($opcao) == "anuncios") ? "a" : ""); |
|
$acao = str_replace('/', ',', $acao); |
|
$acao .= ',1'; |
|
} |
|
/* Alan Pablo 2001-01-16 |
|
* O parametro do lista negra foi colocado antes do pbx_complemento para não bagunçar os relatorios |
|
*/ |
|
$linha = "exten => _$modelo,n,AGI(pbx_complemento.php,$nomeContexto)\n"; |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n,Goto($dispAcao$acao)\n"; |
|
fwrite($escreve, $linha); |
|
$linha = "exten => _$modelo,n,Hangup()\n"; |
|
fwrite($escreve, $linha); |
|
$linha = ''; |
|
} |
|
} |
|
} |
|
fclose($escreveCustom); |
|
fclose($escreve); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
//fim gera arquivo |
|
} |
|
|
|
function grava_log() |
|
{ |
|
$arq = $caminho_producao . "log_sistema.txt"; |
|
$escreve = fopen($arq, 'w'); |
|
} |
|
|
|
function GetAcao($opcao) |
|
{ |
|
if (trim($opcao) == 'ura') { |
|
return 'ura-'; |
|
} else if (trim($opcao) == 'grupo') { |
|
return 'ext-grupos'; |
|
} else if (trim($opcao) == 'filas') { |
|
return 'ext-fila'; |
|
} else if (trim($opcao) == 'voice') { |
|
return 'ext-voicemail'; |
|
} else if (trim($opcao) == 'ramal') { |
|
return 'ext-ramais'; |
|
} else if (trim($opcao) == 'horarios') { |
|
return 'ext-horarios'; |
|
} else if (trim($opcao) == 'disa') { |
|
return 'ext-disa'; |
|
} else if (trim($opcao) == 'anuncios') { |
|
return 'ext-anuncios'; |
|
} else if (trim($opcao) == 'conferencia') { |
|
return 'ext-conferencia'; |
|
} else if (trim($opcao) == "callback") { |
|
return 'ext-callback-externo'; |
|
} else if (trim($opcao) == "rotaInterna") { |
|
return 'ext-rotasinternas'; |
|
} |
|
return ''; |
|
} |
|
|
|
function GetOpcaoAcao($opcao, $acao, $tipo = '', $modelo = '') |
|
{ |
|
|
|
// A variável $tipo foi criadada para tratar retorno não padrao |
|
// atualmente usado apenas na cofiguração dos horários. |
|
|
|
$opcao = trim($opcao); |
|
$acao = trim($acao); |
|
$tipo = strtolower($tipo); |
|
|
|
$acaoText = GetAcao($opcao); |
|
$useGoto = ($tipo != 'horarios') && (strtolower($opcao) != 'integativa'); |
|
|
|
if (strtolower($opcao) == 'ura') { |
|
$var = explode('-', $acao); |
|
$ret = sprintf('%s%s,s,1', $acaoText, $var[0]); |
|
} else if (strtolower($opcao) == 'voice') { |
|
$voice = explode('/', $acao); |
|
$ret = sprintf('%s,%s,%s', $acaoText, $voice[0], $voice[1]); |
|
} else if (strtolower($opcao) == 'anuncios') { |
|
$ret = sprintf('%s,a%s,1', $acaoText, $acao); |
|
} else if (strtolower($opcao) == 'integativa') { |
|
//$ret = sprintf('AGI(${INTEGRACAO}|%s|${CALLERID(NUM):-11}|${UNIQUEID}|${IDORIGEM}|${URA})', $acao); |
|
$ret = sprintf('AGI(${INTEGRACAO},%s,${IF($[ "X${CALLERID(NUM)}" = "X" ]? "-" : ${CALLERID(NUM):-11})},${UNIQUEID},${IDORIGEM},${URA})', $acao); |
|
} else if (($opcao == 'rotaInterna') && (soTexto($acao) != '')) { |
|
$ret = sprintf('%s,${EXTEN},1', $acaoText); |
|
} else { |
|
$ret = sprintf('%s,%s,1', $acaoText, $acao); |
|
} |
|
|
|
if ($useGoto) { |
|
$ret = sprintf('Goto(%s)', $ret); |
|
} |
|
|
|
return $ret; |
|
} |
|
|
|
function GetAcaoOpcaoRotas($opcao, $acao) |
|
{ |
|
|
|
// A variável $tipo foi criadada para tratar retorno não padrao |
|
// atualmente usado apenas na cofiguração dos horários. |
|
|
|
$opcao = trim($opcao); |
|
$acao = trim($acao); |
|
$tipo = strtolower($tipo); |
|
|
|
$acaoText = GetAcao($opcao); |
|
|
|
if (strtolower($opcao) == 'ura') { |
|
$var = explode('-', $acao); |
|
$ret = sprintf('%s%s,s,1', $acaoText, $var[0]); |
|
} else if (strtolower($opcao) == 'voice') { |
|
$voice = explode('/', $acao); |
|
$ret = sprintf('%s,%s,%s', $acaoText, $voice[0], $voice[1]); |
|
} else if (strtolower($opcao) == 'anuncios') { |
|
$ret = sprintf('%s,a%s,1', $acaoText, $acao); |
|
} else if (($opcao == 'rotaInterna') && (soTexto($acao) != '')) { |
|
$ret = sprintf('%s,${EXTEN},1', $acaoText); |
|
} else { |
|
$ret = sprintf('%s,%s,1', $acaoText, $acao); |
|
} |
|
|
|
return $ret; |
|
} |
|
|
|
function GetMascara() |
|
{ |
|
return '<option value="">MODELOS</option> |
|
<option value="[2-5]XXXXXXX">FIXO LOCAL</option> |
|
<option value="9XXXXXXXX">MOVEL LOCAL</option> |
|
<option value="1XX">UTILIDADE PÚBLIXA</option> |
|
<option value="10XXX">OPERADORAS</option> |
|
<option value="0300X.">0300</option> |
|
<option value="0303X.">0303</option> |
|
<option value="0500X.">0500</option> |
|
<option value="0800X.">0800</option> |
|
<option value="0900X.">0900</option> |
|
<option value="400N.">400N</option> |
|
<option value="0ZZZZ[2-5]XXXXXXX">INTERURBANO FIXO (0+OPERADORA+DDD+NUMERO)</option> |
|
<option value="0ZZ[2-5]XXXXXXX">INTERURBANO FIXO 2 (0+DDD+NUMERO)</option> |
|
<option value="ZZ[2-5]XXXXXXX">INTERURBANO FIXO 3 (DDD+NUMERO)</option> |
|
<option value="0ZZZZ9XXXXXXXX">INTERURBANO MÓVEL (0+OPERADORA+DDD+NUMERO)</option> |
|
<option value="0ZZ9XXXXXXXX">INTERURBANO MÓVEL 2 (0+DDD+NUMERO)</option> |
|
<option value="ZZ9XXXXXXXX">INTERURBANO MÓVEL 3 (DDD+NUMERO)</option> |
|
<option value="00XXXXXXXXXX.">INTERNACIONAL</option>'; |
|
} |
|
|
|
function ApagaUrl($dbcon, $ramal) |
|
{ |
|
CommandAsterisk2($dbcon, 'DEL ESPERA', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL SIGAME-INTERNO', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL SIGAME-EXTERNO', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL SIGAME-OCUPADO', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL SIGAME-NAOATENDE', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL GRAVACAO', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL GRAVACAO-OUT', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL MUSICA', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL CADEADO', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL NAOPERTUBE', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL SENHA', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL DISPOSITIVO', $ramal, ''); //executa inser��o na base interna do asterisk |
|
CommandAsterisk2($dbcon, 'DEL VOICE2', $ramal, ''); |
|
CommandAsterisk2($dbcon, 'DEL BINA-NOME', $ramal, ''); |
|
CommandAsterisk2($dbcon, 'DEL BINA-EXTERNO', $ramal, ''); |
|
CommandAsterisk2($dbcon, 'DEL TEMPO-RING-RAMAL', $ramal, ''); |
|
} |
|
|
|
function GetIdGrupoUser($dbcon, $idUser) |
|
{ |
|
$query = "select gp_id from pbx_grupo_usuario where user_id = '$idUser' limit 1"; |
|
$result = pg_query($dbcon, $query); |
|
$row = pg_fetch_row($result); |
|
return $row[0]; |
|
} |
|
|
|
function GeraExtRamais($dbcon) |
|
{ |
|
try { |
|
$conf = GetConfPadrao($dbcon); |
|
if (empty($conf)) |
|
throw new Exception('Não foi possível obter as configurações!'); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
$arq = $caminho_producao . "extensions_ramais.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
if (!$escreve) |
|
throw new Exception('Não foi abrir o arquivo \"extensions_ramais.conf\"!'); |
|
|
|
//GERA O ARQUIVO DE DENTRO DO HINTS |
|
$arq1 = $caminho_producao . "hints.conf"; |
|
$escreveHint = fopen($arq1, 'w'); |
|
if (!$escreveHint) |
|
throw new Exception('Não foi abrir o arquivo \"hints.conf\"!'); |
|
|
|
fwrite($escreve, '[ext-ramais]' . "\n"); |
|
fwrite($escreve, 'include => ext-ramais-custom' . "\n"); |
|
fwrite($escreveHint, '[hints]' . "\n"); |
|
|
|
$query = "select * from pbx_ramais order by nome asc"; |
|
$result = pg_query($dbcon, $query); |
|
if (!$result) |
|
throw new Exception('Erro ao consultar \"Banco de Dados\"!'); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',1,ExecIf($["${ISNULL(${CDR(direcao)})}" = "1"]?Set(CDR(direcao)=I))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,ExecIf($["${CDR(direcao)}" != "E" && "${ISNULL(${CDR(ramal_origem)})}" = "1"]?Set(CDR(ramal_origem)=${CALLERID(num)}))' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,Set(CHANNEL(accountcode)=${TRANSFER})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,AGI(chefe-secretaria.php,${EXTEN},${CALLERID(num)})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,GotoIf($["${TIPO}" = "EXTERNA"]?externa:interna)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n(interna),AGI(pbx_complemento.php,ext-ramais,interna)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,Macro(dial-interno,${EXTEN})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,Hangup()' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n(externa),AGI(pbx_complemento.php,ext-ramais)' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,Macro(dial-externo,${EXTEN})' . "\n"); |
|
fwrite($escreve, 'exten => _' . $dados['nome'] . ',n,Hangup()' . "\n"); |
|
|
|
fwrite($escreveHint, 'exten => ' . $dados['nome'] . ',hint,' . $dados['dispositivo'] . "\n"); |
|
} |
|
if (!fclose($escreve)) |
|
throw new Exception('Não foi possível salvar o arquivo \"extensions_ramais.conf\"!'); |
|
if (!fclose($escreveHint)) |
|
throw new Exception('Não foi possível salvar o arquivo \"hints.conf\"!'); |
|
|
|
return true; |
|
} catch (Exception $e) { |
|
return false; |
|
} |
|
} |
|
|
|
function GeraException($source, $message, $silent = 0) |
|
{ |
|
if (!$source) { |
|
if ($silent) |
|
return $message; |
|
|
|
throw new Exception($message); |
|
} |
|
} |
|
|
|
function WriteFile($handle, $string, $silent = 0) |
|
{ |
|
$result = fwrite($handle, $string); |
|
GeraException($result, "Não foi possível \"Gravar o Arquivo\"!", $silent); |
|
} |
|
|
|
function GeraCallback($dbcon, $reloadUra = true, $silent = 0) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
$arq = $caminho_producao . "extensions_callback.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "select id, descricao, opcao, acao, opcao1, acao1 from pbx_callback"; |
|
$result = pg_query($dbcon, $query); |
|
GeraException($result, "Não foi possível \"Selecionar os Registros\"!"); |
|
|
|
WriteFile($escreve, "[ext-callback-externo]\n", $silent); |
|
WriteFile($escreve, "include => ext-callback-externo-custom\n", $silent); |
|
while ($dados = pg_fetch_array($result)) { |
|
$opcao = $dados["opcao"]; |
|
$acao = $dados["acao"]; |
|
$opcao1 = $dados["opcao1"]; |
|
$acao1 = $dados["acao1"]; |
|
$id = $dados["id"]; |
|
|
|
if (trim($opcao) == 'ura') { |
|
$acao = explode('-', $acao); |
|
$dest = GetAcao($opcao) . $acao[0]; // . ',s'; |
|
$acao = 's'; |
|
} else { |
|
$dest = GetAcao($opcao); |
|
$acao = (trim($opcao) == 'voice') ? str_replace('/', '"\\\',\\\'"', $acao) : $acao; |
|
$acao = (strtolower($opcao) == "anuncios") ? 'a' . $acao : $acao; |
|
} |
|
WriteFile($escreve, "exten => _$id,1,Answer()\n", $silent); |
|
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,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); |
|
WriteFile($escreve, "exten => _$id,n,System(/var/lib/asterisk/scripts/callback-externo.sh \${ORIGEM} \${CONTEXTO-DESTINO} \${EXTEN-DESTINO} &)\n", $silent); |
|
WriteFile($escreve, "exten => _$id,n,Busy(15)\n", $silent); |
|
WriteFile($escreve, "exten => _$id,n,Hangup()\n", $silent); |
|
if (trim($opcao1) == 'ura') { |
|
$ac = explode('-', $acao1); |
|
$displayOpcao = GetAcao($opcao1) . $ac[0] . ',s'; |
|
$acao1 = ""; |
|
} else { |
|
$displayOpcao = GetAcao($opcao1) . "," . ((strtolower($opcao1) == "anuncios") ? "a" : ""); |
|
$acao1 = str_replace('/', ',', $acao1); |
|
} |
|
|
|
if ((trim($opcao1) == 'voice')) |
|
WriteFile($escreve, "exten => _$id,n(destino),Goto($displayOpcao$acao1)\n", $silent); |
|
else |
|
WriteFile($escreve, "exten => _$id,n(destino),Goto($displayOpcao$acao1,1)\n", $silent); |
|
|
|
WriteFile($escreve, "exten => _$id,n,Hangup()\n", $silent); |
|
} |
|
|
|
fclose($escreve); |
|
if ($reloadUra) |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
|
|
function GeraDisa($dbcon, $reload = true, $silent = 0) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
$arq = $caminho_producao . "extensions_disa.conf"; |
|
$escreve = fopen($arq, "w"); |
|
|
|
WriteFile($escreve, "[ext-disa]\n", $silent); |
|
WriteFile($escreve, "include => ext-disa-custom\n", $silent); |
|
|
|
|
|
$query = "SELECT * FROM pbx_disa"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",1,Answer()\n", $silent); |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Set(CHANNEL(accountcode)=\${TRANSFER})\n", $silent); |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Agi(pbx_complemento.php,ext-disa)\n", $silent); |
|
|
|
$sql_conta = pg_query("SELECT * FROM pbx_disa_numeros where id_disa=" . $dados["id"] . " order by id asc"); |
|
$quantreg = pg_num_rows($sql_conta); |
|
if ($quantreg > 0) { |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Agi(disa.php,\${CALLERID(NUM):-10})\n", $silent); |
|
} |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Set(TIMEOUT(digit)=" . $dados["tempo_timeout"] . ")\n", $silent); |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Set(TIMEOUT(response)=" . $dados["timeout"] . ")\n", $silent); |
|
if (trim($dados["senha"]) != "") { |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Authenticate(" . $dados["senha"] . ")\n", $silent); |
|
} |
|
|
|
if ($dados["ligacao_externa"]) |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Set(__PERMISSAO=OK)\n", $silent); |
|
|
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,DISA(no-password,disa)\n", $silent); |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Hangup()\n", $silent); |
|
if (!empty($dados["opcao"])) { |
|
$dispAcao = GetOpcaoAcao($dados["opcao"], $dados["acao"]); |
|
$dispAcao = sprintf("exten => _%s,n(destino),%s%s", $dados["numero"], $dispAcao, "\n"); |
|
WriteFile($escreve, $dispAcao, $silent); |
|
WriteFile($escreve, "exten => _" . $dados["numero"] . ",n,Hangup()\n", $silent); |
|
} |
|
} |
|
|
|
fclose($escreve); |
|
if ($reload) { |
|
//GeraException(CommandAsterisk($dbcon,"DISA"), "Não foi possível recarregar o \"Disa na Central\"!", $silent); |
|
GeraException(CommandAsterisk($dbcon, "URA"), "Não foi possível recarregar a \"Ura na Central\"!", $silent); |
|
} |
|
} |
|
|
|
function GeraSip($dbcon, $reload) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
$arq = $caminho_producao . "sip_ramais.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT nome,type,secret,callerid,qualify,port,nat,host,dtmfmode,context,canreinvite,disallow,allow,\"call-limit\",videosupport,fromdomain,t38pt_udptl,mailbox,pickupgroup,callgroup,insecure,accountcode, extranet |
|
FROM pbx_sip_ramais order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
} else if (pg_field_name($result, $i) == "extranet") { |
|
$extranet = trim($dados['extranet']); |
|
if (!$extranet) { |
|
fwrite($escreve, "deny=0.0.0.0/0\n"); |
|
/* |
|
* Escreve as redes permitidas para autenticação dos ramais. |
|
*/ |
|
$redes = $extranet; |
|
$redes = preg_split('/[\\\ | - ; , \n]/', $redes, -1, PREG_SPLIT_NO_EMPTY); |
|
foreach ($redes as $rede) { |
|
$rede = trim($rede); |
|
if ($rede !== '') { |
|
fwrite($escreve, "permit=$rede\n"); |
|
} |
|
} |
|
} |
|
} else { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if (pg_field_name($result, $i) == 'callerid') { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados["nome"] . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, "\n"); |
|
} |
|
|
|
//GERA OS TRONCOS SIP DENTRO DO ARQUIVO DE RAMAIS |
|
$query = "SELECT nome, username, secret, type, context, callerid, host, |
|
case when(coalesce(fromuser, '0')::int > 0)then username else '' end as fromuser, permit as fromdomain, port, deny, permit, qualify, |
|
case when nat = 'yes' then 'force_rport,comedia' else nat end as nat, canreinvite, disallow, allow, dtmfmode, 'port,invite' as insecure |
|
FROM pbx_troncos_sip order by id asc"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
} else { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if (trim(pg_field_name($result, $i)) == 'permit') { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . '/255.255.255.255' . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, "\n"); |
|
} |
|
fclose($escreve); |
|
|
|
/* |
|
* GERA O EXTENSION DOS RAMAIS |
|
*/ |
|
GeraExtRamais($dbcon); |
|
|
|
/* |
|
* GERA OS REGISTROS DO SIP |
|
*/ |
|
$arq = $caminho_producao . "sip_register.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "select * from pbx_troncos_sip"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
if (($dados['pedido_registro'] == 'yes') && (!empty($dados['registro']))) { |
|
fwrite($escreve, sprintf("register => %s\n", trim($dados['registro']))); |
|
} |
|
} |
|
|
|
if ($reload) { |
|
/* |
|
* EXECUTA O RELOAD DO SIP |
|
*/ |
|
CommandAsterisk($dbcon, 'SIP'); |
|
|
|
/* |
|
* EXECUTA O RELOAD DO EXTENSIONS |
|
*/ |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
} |
|
|
|
function GeraIax($dbcon, $reload) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
$arq = $caminho_producao . "iax_ramais.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
$query = "SELECT nome, \"type\", host, secret, identificador as callerid, context, disallow, allow, |
|
deny, permit, 'no' as requirecalltoken, inkeys, outkeys,callgroup,pickupgroup, case when(conta_senha = 'V')then 'yes' else 'no' end as qualify |
|
FROM pbx_iax_pbx order by id asc"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
/* Alan Pablo - 2011-01-16 |
|
* Alterado username para nome => if (pg_field_name($result,$i)=="nome") |
|
*/ |
|
$fieldName = pg_field_name($result, $i); |
|
if ($fieldName == "nome") { |
|
fwrite($escreve, "[" . $dados[$fieldName] . "]" . "\n"); |
|
} else { |
|
if ($dados[$fieldName] != '') { |
|
if ($fieldName == "callerid") { |
|
fwrite($escreve, $fieldName . '=' . $dados["nome"] . "\n"); |
|
} else { |
|
fwrite($escreve, $fieldName . '=' . $dados[$fieldName] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
|
|
/* |
|
* GERA TRONCOS IAX DENTRO DO ARQUIVO DE RAMAIS IAX |
|
*/ |
|
$query = "SELECT nome, username, secret, type, context, callerid, host, |
|
port, deny, permit, qualify, trunk, disallow, allow, |
|
fromuser, fromdomain, 'no' as requirecalltoken |
|
FROM pbx_troncos_iax order by id asc"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) == "nome") { |
|
fwrite($escreve, "[" . $dados[pg_field_name($result, $i)] . "]" . "\n"); |
|
} else { |
|
if (trim($dados[pg_field_name($result, $i)]) != '') { |
|
if (pg_field_name($result, $i) == "permit") { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . '/255.255.255.255' . "\n"); |
|
} else { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
fclose($escreve); |
|
|
|
/* |
|
* Gera o Arquivo extensions |
|
*/ |
|
GeraExtRamais($dbcon); |
|
|
|
/* |
|
* GERA OS REGISTROS DE IAX |
|
*/ |
|
$arq = $caminho_producao . "iax_register.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "select * from pbx_troncos_iax"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
if (($dados['pedido_registro'] == 'yes') && (!empty($dados['registro']))) { |
|
fwrite($escreve, 'register => ' . trim($dados['registro']) . "\n"); |
|
} |
|
} |
|
/* |
|
* EXECUTA O RELOADO DO IAX2 |
|
*/ |
|
if ($reload) { |
|
CommandAsterisk($dbcon, 'IAX'); |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
} |
|
|
|
function GeraDgv($dbcon, $reload) |
|
{ |
|
GeraExtRamais($dbcon); |
|
|
|
if ($reload) { |
|
CommandAsterisk($dbcon, 'URA'); |
|
CommandAsterisk($dbcon, 'RELOAD'); |
|
} |
|
} |
|
|
|
function GeraPBX($dbcon, $reload) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
GeraExtRamais($dbcon); |
|
$arq = $caminho_producao . "extensions_ramais.conf"; |
|
|
|
if ($reload) { |
|
CommandAsterisk($dbcon, 'URA'); |
|
CommandAsterisk($dbcon, 'RELOAD'); |
|
} |
|
} |
|
|
|
function GeraDahdi($dbcon, $reload) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
/* |
|
* Gera o arquivo de extensions. |
|
*/ |
|
GeraExtRamais($dbcon); |
|
|
|
|
|
$arq = $caminho_producao . "chan_dahdi_ramais.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "select numero as callerid, contexto as context, dispositivo as channel, capturar as pickupgroup, grupo as callgroup from pbx_dahdi order by numero"; |
|
$result = pg_query($dbcon, $query); |
|
$start = 0; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$callerid = $dados['callerid']; |
|
$context = $dados['context']; |
|
$channel = str_replace("DAHDI/", '', $dados['channel']); |
|
$pickupgroup = $dados['pickupgroup']; |
|
$callgroup = $dados['callgroup']; |
|
|
|
if ($start) |
|
fwrite($escreve, "\n"); |
|
fwrite($escreve, "signalling=fxo_ks\n"); |
|
fwrite($escreve, "callerid=$callerid\n"); |
|
fwrite($escreve, "context=$context\n"); |
|
fwrite($escreve, "callgroup=$callgroup\n"); |
|
fwrite($escreve, "pickupgroup=$pickupgroup\n"); |
|
fwrite($escreve, "channel=$channel\n"); |
|
$start++; |
|
} |
|
fclose($escreve); |
|
|
|
|
|
/* |
|
* Escreve os Dispositivos Dahdi. |
|
*/ |
|
//$file = $caminho_producao."dahdi_system.conf"; |
|
$file = "/etc/dahdi/system.conf"; |
|
GravaDispositivoDahdi($dbcon, $file); |
|
|
|
/* |
|
* Escreve os troncos dahdi. a.callerid, |
|
*/ |
|
$arqChanDahdi = $caminho_producao . "chan_dahdi_troncos.conf"; |
|
$escChanDahdi = fopen($arqChanDahdi, 'w'); |
|
|
|
$query = " select a.id,a.nome,a.interface,a.max_ligacoes,a.canal_dahdi,a.framing,a.signalling,a.mfcr2_variant,a.timing,a.lbo, |
|
a.spannum,a.coding,a.crc4,a.mfcr2_get_ani_first,a.mfcr2_max_ani,a.mfcr2_max_dnis,a.mfcr2_category,a.mfcr2_allow_collect_calls, |
|
a.mfcr2_double_answer,a.echocancel,a.echocancelwhenbridged,a.echotraining,a.echocanceller,a.context,a.channel,a.cas,a.dchan, |
|
sonumero(a.\"group\") as group,a.txgain,a.rxgain,a.loadzone,a.defaultzone,a.switchtype,a.pridialplan, a.pridialplan as prilocaldialplan,a.overlapdial,a.bchan,a.alaw, |
|
a.dynamic_rede,a.dynamic_mac,a.dynamic_span,a.dynamic_canais,a.dynamic_cascata,a.busydetect,a.busycount,a.fxsks, |
|
a.cidsignalling,a.cidstart,a.echocanceller_canais,a.contrato,a.param_opc,a.tipo_cadastro,a.fxoks,a.sinalizacao_tipo,a.dispositivo |
|
from pbx_troncos_dahdi a, pbx_troncos_dahdi b |
|
where b.id = a.dispositivo |
|
and a.tipo_cadastro = 'T' |
|
order by a.channel_1, a.channel_2, interface"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
$start = 0; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$interface = strtolower($dados['interface']); |
|
$nome = sprintf(";Nome: %s Interface: %s\n", $dados["nome"], $interface); |
|
fwrite($escChanDahdi, $nome); |
|
$arDefault = GetDahdiDefault($interface, false); |
|
|
|
foreach ($arDefault as $key => $value) { |
|
if ($key == 'param_opc') { |
|
/* |
|
* Parametros opcionais |
|
*/ |
|
$param = trim($dados['param_opc']); |
|
if ($param) { |
|
$value = ''; |
|
$param = explode(';', $param); |
|
foreach ($param as $value) { |
|
$value = trim($value); |
|
if ($value != "") |
|
fwrite($escChanDahdi, sprintf("%s\n", $value)); |
|
} |
|
} |
|
} else { |
|
if (array_key_exists($key, $dados)) { |
|
$value = $dados[$key] ? $dados[$key] : GetDahdiDefaultValue($interface, $key, false); |
|
} |
|
|
|
$value = trim($value); |
|
/* |
|
* somente escreve variáveis que esteja setadas. |
|
*/ |
|
if ($value != "") { |
|
fwrite($escChanDahdi, sprintf("%s=%s\n", $key, $value)); |
|
} |
|
} |
|
} |
|
|
|
|
|
fwrite($escChanDahdi, "\n"); |
|
|
|
$start++; |
|
} |
|
|
|
fclose($escChanDahdi); |
|
|
|
if ($reload) { |
|
CommandAsterisk($dbcon, 'URA'); |
|
CommandAsterisk($dbcon, 'CHAN_DAHDI'); |
|
//CommandAsterisk($dbcon,'CHAN_DAHDI_RESTART'); |
|
} |
|
} |
|
|
|
function GravaDispositivoDahdi($dbcon, $file) |
|
{ |
|
$arqSystemDahdi = $file; |
|
$pathFileDahdi = dirname($arqSystemDahdi); |
|
if (!file_exists($pathFileDahdi)) { |
|
mkdir($pathFileDahdi, 0777, true); |
|
} |
|
$escSystemDahdi = fopen($arqSystemDahdi, 'w'); |
|
|
|
$query = "select *, |
|
case (lower(interface))when 'plc' then 0 when 'ethmf' then 1 when 'eth' then 2 end as ordem, |
|
case when(lower(interface) = 'eth')then (case when(dynamic_cascata = '0')then '1' else '0' end) else case when(lower(interface) = 'ethmf')then dynamic_span else spannum end end as ordem1 |
|
from pbx_troncos_dahdi where tipo_cadastro = 'D' order by ordem, ordem1, dynamic_mac "; |
|
$result = pg_query($dbcon, $query); |
|
$start = 0; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$interface = strtolower($dados['interface']); |
|
$sinalizacao = strtolower($dados['sinalizacao_tipo']); |
|
$nome = sprintf("#Nome: %s Interface: %s Sinalização: %s\n", $dados["nome"], $interface, $sinalizacao); |
|
fwrite($escSystemDahdi, "$nome"); |
|
//foreach($dados as $key => $value) $GLOBALS[$key] = $value; |
|
/* |
|
* Grava arquivo system. |
|
*/ |
|
$field = ''; |
|
if (($interface == 'plc') && ($sinalizacao == 'r2')) |
|
$field = 'r2'; |
|
else if (($interface == 'plc') && ($sinalizacao == 'isdn')) |
|
$field = 'isdn'; |
|
else if (($interface == 'eth')) |
|
$field = 'eth'; |
|
else if (($interface == 'ethmf')) |
|
$field = 'ethmf'; |
|
|
|
$value = GetValueSystemDahdi($dados, $field); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s\n", $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
if (($interface == 'eth') && ($sinalizacao == 'fxs')) { |
|
$value = trim($dados['fxoks']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'fxoks', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['fxsks']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'fxsks', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
} |
|
|
|
if (($interface == 'plc') && ($sinalizacao == 'fxo')) { |
|
$value = trim($dados['fxsks']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'fxsks', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
} |
|
|
|
if (($interface == 'eth') && ($sinalizacao == 'r2')) { |
|
$value = trim($dados['channel']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s:1101\n", 'cas', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['dchan']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'dchan', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
} |
|
|
|
|
|
if (($interface == 'plc') && ($sinalizacao == 'r2')) { |
|
$value = trim($dados['channel']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s:1101\n", 'cas', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['dchan']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'dchan', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
} |
|
|
|
if (($interface == 'plc') && ($sinalizacao == 'isdn')) { |
|
$value = trim($dados['channel']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'bchan', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['dchan']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'dchan', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['alaw']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'alaw', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
} |
|
|
|
if (($interface == 'ethmf') && ($sinalizacao == 'r2')) { |
|
$value = trim($dados['channel']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s:1101\n", 'cas', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['dchan']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'dchan', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['alaw']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'alaw', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
} |
|
|
|
if (($interface == 'ethmf') && ($sinalizacao == 'isdn')) { |
|
$value = trim($dados['channel']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'bchan', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['dchan']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'dchan', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
|
|
$value = trim($dados['alaw']); |
|
if ($value != "") { |
|
fwrite($escSystemDahdi, sprintf("%s=%s\n", 'alaw', $value)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
} |
|
|
|
$value = trim($dados['echocanceller']); |
|
if ($value != "") { |
|
$chan = trim($dados['channel']); |
|
$chan = $chan ? ",$chan" : ""; |
|
fwrite($escSystemDahdi, sprintf("%s=%s%s\n", 'echocanceller', $value, $chan)); |
|
//fwrite($escSystemDahdi, "\n"); |
|
} |
|
fwrite($escSystemDahdi, "\n"); |
|
$start++; |
|
} |
|
fwrite($escSystemDahdi, sprintf("%s\n", 'loadzone=br')); |
|
fwrite($escSystemDahdi, sprintf("%s\n", 'defaultzone=br')); |
|
|
|
fclose($escSystemDahdi); |
|
} |
|
|
|
function GetDahdiDefault($interface, $dispo = true) |
|
{ |
|
|
|
if ($dispo) { |
|
if ($interface == "r2") |
|
return array( |
|
"language" => "br", "usecallerid" => "yes", "callwaiting" => "yes", "usecallingpres" => "yes", |
|
"callwaitingcallerid" => "yes", "threewaycalling" => "yes", "transfer" => "yes", "canpark" => "yes", "cancallforward" => "yes", |
|
"callreturn" => "yes", "signalling" => "mfcr2", "mfcr2_variant" => "br", "echocancel" => "yes", "echocancelwhenbridged" => "no", |
|
"echotraining" => "no", "mfcr2_get_ani_first" => "yes", "mfcr2_max_ani" => "20", "mfcr2_max_dnis" => "4", "mfcr2_category" => "national_subscriber", |
|
"mfcr2_allow_collect_calls" => "yes", "mfcr2_double_answer" => "no", "rxgain" => "1,0%", "txgain" => "1,0%", "context" => "padrao", "group" => "1", |
|
"channel" => "", "timing" => "0", "coding" => "hdb3" |
|
); |
|
if ($interface == "isdn") |
|
return array("switchtype" => "national", "signalling" => "pri_net", "pridialplan" => "euroisdn", "prilocaldialplan" => "euroisdn", "overlapdial" => "yes", "echocancel" => "yes", "echocancelwhenbridged" => "no", "echotraining" => "no", "context" => "", "channel" => "", "group" => "", "txgain" => "-1,0%", "rxgain" => "-1,0%", "coding" => "hdb3"); |
|
|
|
if ($interface == "anl") |
|
return array( |
|
'busycount' => '4', 'busydetect' => 'yes', 'callerid' => '', 'channel' => '', 'cidsignalling' => 'dtmf', |
|
'cidstart' => 'ring', 'context' => '', 'echocancel' => 'yes', 'echocancelwhenbridged' => 'no', 'echotraining' => 'no', 'group' => '1', |
|
'rxgain' => '-1,0%', 'txgain' => '-1,0%', |
|
); |
|
} else { |
|
|
|
|
|
if ($interface == "r2") |
|
return array('signalling' => 'mfcr2', 'mfcr2_variant' => 'br', 'echocancel' => 'yes', 'echocancelwhenbridged' => 'yes', 'echotraining' => 'yes', 'mfcr2_allow_collect_calls' => 'yes', 'mfcr2_category' => 'national_subscriber', 'mfcr2_double_answer' => 'no', 'mfcr2_get_ani_first' => 'yes', 'mfcr2_max_ani' => '20', 'mfcr2_max_dnis' => '4', 'rxgain' => '', 'txgain' => '', 'param_opc' => '', 'context' => 'entrada-pstn', 'group' => '', 'channel' => ''); |
|
if ($interface == "isdn") |
|
return array('switchtype' => 'national', 'signalling' => 'pri_net', 'pridialplan' => 'national', 'prilocaldialplan' => '', 'overlapdial' => 'yes', 'echocancel' => 'yes', 'echocancelwhenbridged' => 'yes', 'echotraining' => 'yes', 'rxgain' => '-1,0%', 'txgain' => '0', 'param_opc' => '', 'context' => 'entrada-pstn', 'group' => '', 'channel' => ''); |
|
if ($interface == "anl") |
|
return array('signalling' => 'fxs_ks', 'busycount' => '4', 'busydetect' => 'yes', 'callerid' => 'asreceived', 'cidsignalling' => 'dtmf', 'cidstart' => 'ring', 'echocancel' => '512', 'echocancelwhenbridged' => 'yes', 'echotraining' => 'yes', 'rxgain' => '4', 'txgain' => '4', 'param_opc' => '', 'context' => 'entrada-pstn', 'group' => '', 'channel' => ''); |
|
} |
|
return array(); |
|
} |
|
|
|
function GetDahdiDefaultValue($interface, $field, $dispo = true) |
|
{ |
|
$ar = GetDahdiDefault($interface, $dispo); |
|
return isset($ar[$field]) ? $ar[$field] : ""; |
|
} |
|
|
|
function GetValueSystemDahdi($dados, $field) |
|
{ |
|
if (($field == 'r2') || ($field == 'isdn')) { |
|
$crc4 = trim($dados["crc4"]); |
|
$crc4 = $crc4 != 'no' ? ",$crc4" : ""; |
|
$spannum = $dados["spannum"] != '' ? $dados["spannum"] : GetDahdiDefaultValue($field, "spannum"); |
|
$timing = $dados["timing"] != '' ? $dados["timing"] : GetDahdiDefaultValue($field, "timing"); |
|
$lbo = $dados["lbo"] != '' ? $dados["lbo"] : GetDahdiDefaultValue($field, "lbo"); |
|
$framing = ($field == 'r2') ? "cas" : "ccs"; |
|
$coding = $dados["coding"] != '' ? $dados["coding"] : GetDahdiDefaultValue($field, "coding"); |
|
|
|
return sprintf("span=%s,%s,%s,%s,%s%s", $spannum, $timing, $lbo, $framing, $coding, $crc4); |
|
//Exemplo: span=1,1,0,cas,hdb3 span=2,0,0,cas,hdb3 |
|
} else if (($field == 'ethmf') || ($field == 'eth')) { |
|
if ($field == 'ethmf') { |
|
return sprintf("dynamic=ethmf,%s/%s/%s,%s,%s", $dados["dynamic_rede"], $dados["dynamic_mac"], $dados["dynamic_span"], $dados["dynamic_canais"], $dados["timing"]); |
|
/* 'dynamic_mac', 'dynamic_span', 'dynamic_canais', 'dynamic_cascata' |
|
ethmf = Modulo dahdi utilizado pelo redfone |
|
em2 ou eth2 = Interface de rede conectada ao gateway redfone |
|
00:50:c2:65:e1:48 = Endereço MAC do Redfone |
|
/0 => Define o span igual na placa |
|
31 => Define a quantidade de canais de comunicação |
|
0 ou 1 => Em caso de mais de um equipamento define o Master (1) ou Slave (0) |
|
|
|
#Redfone |
|
dynamic=ethmf,em2/00:50:c2:65:e1:48/0,31,0 |
|
dynamic=ethmf,em2/00:50:c2:65:e1:48/1,31,1 |
|
*/ |
|
} else if ($field == 'eth') { |
|
return sprintf("dynamic=eth,%s/%s,%s,%s", $dados["dynamic_rede"], $dados["dynamic_mac"], $dados["dynamic_canais"], $dados["dynamic_cascata"]); |
|
/* |
|
eth = Modulo dahdi utilizado pelo redfone |
|
em2 ou eth2 = Interface de rede conectada ao gateway redfone |
|
00:50:c2:65:e1:48 = Endereço MAC do Redfone |
|
36 => Define a quantidade de canais de comunicação |
|
0 ou 1 => Em caso de mais de um equipamento define o Master (1) ou Slave (0) |
|
|
|
#Cianet |
|
dynamic=eth,eth1/00:19:46:0A:02:93,36,1 |
|
dynamic=eth,eth1/00:19:46:01:86:97,36,0 |
|
dynamic=eth,eth1/00:19:46:0A:02:92,36,0 |
|
dynamic=eth,eth1/00:19:46:0A:02:9A,36,0 |
|
*/ |
|
} |
|
|
|
return ""; |
|
} |
|
} |
|
|
|
function GeraKhomp($dbcon, $reload) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
/* |
|
* Gera o arquivo de extensions. |
|
*/ |
|
GeraExtRamais($dbcon); |
|
|
|
$query = "select numero as callerid, contexto as context, dispositivo as channel, capturar as pickupgroup, grupo as callgroup, numero_serie, numero_khomp, volume_input, volume_output, imediate from pbx_khomp where numero <> '0' order by numero_khomp::int"; |
|
$result = pg_query($dbcon, $query); |
|
$start = 0; |
|
$branches = array(); |
|
$ramais = ''; |
|
$hotlines = ''; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$callerid = $dados['callerid']; |
|
$context = $dados['context']; |
|
$pickupgroup = !$dados['pickupgroup'] ? 0 : $dados['pickupgroup']; |
|
$callgroup = !$dados['callgroup'] ? 0 : $dados['callgroup']; |
|
$numero_serie = $dados['numero_serie']; |
|
$numero_khomp = $dados['numero_khomp']; |
|
$volume_input = !$dados['volume_input'] ? 0 : $dados['volume_input']; |
|
$volume_output = !$dados['volume_output'] ? 0 : $dados['volume_output']; |
|
$hotline = trim($dados['imediate']); |
|
|
|
if (array_search($numero_serie, $branches) === false) |
|
$branches[] = $numero_serie; |
|
|
|
$ramais .= sprintf("%s = callgroup:%s | pickupgroup:%s | context:%s | input-volume:%s | output-volume:%s | calleridnum:%s\n", $numero_khomp, $callgroup, $pickupgroup, $context, $volume_input, $volume_output, $callerid); |
|
if ($hotline) |
|
$hotlines .= sprintf("%s = %s\n", $hotline); |
|
$start++; |
|
} |
|
|
|
$fxs_branches = ''; |
|
if (count($branches)) { |
|
$branches = implode(",", $branches); |
|
$fxs_branches = sprintf("1 = %s\n", $branches); |
|
} |
|
|
|
/* |
|
* Cria os troncos |
|
*/ |
|
$query = "select grupo, porta, contexto from pbx_troncos_khomp order by id"; |
|
$result = pg_query($dbcon, $query); |
|
$grupos = ''; |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$grupo = soNumero($dados['grupo']); |
|
$porta = $dados['porta']; |
|
$contexto = $dados['contexto']; |
|
|
|
$grupos .= sprintf("%s=%s:%s\n", $grupo, $porta, $contexto); |
|
} |
|
|
|
$arq = $caminho_producao . "khomp.tpl"; |
|
$tpl = fopen($arq, 'rb'); |
|
if ($tpl) { |
|
$arq = $caminho_producao . "khomp.conf"; |
|
$escreve = fopen($arq, 'wb'); |
|
$tpl_khomp = ''; |
|
$start = 0; |
|
while (!feof($tpl)) { |
|
$linha = fgets($tpl); |
|
$linha = trim($linha); |
|
$ch = substr($linha, 0, 1); |
|
if (($ch != ';') && ($linha)) { |
|
if (strpos($linha, '{SERIES}') !== false) { |
|
$tpl_khomp = $fxs_branches; |
|
} else if (strpos($linha, '{HOTLINES}') !== false) { |
|
$tpl_khomp = $hotlines; |
|
} else if (strpos($linha, '{RAMAIS}') !== false) { |
|
$tpl_khomp = $ramais; |
|
} else if (strpos($linha, '{GRUPOS}') !== false) { |
|
$tpl_khomp = $grupos; |
|
} else { |
|
if ($start && (strpos($linha, '[') !== false)) |
|
$tpl_khomp = "\n" . $linha; |
|
else |
|
$tpl_khomp = $linha; |
|
} |
|
$start++; |
|
fwrite($escreve, $tpl_khomp . "\n"); |
|
} |
|
} |
|
fclose($escreve); |
|
fclose($tpl); |
|
} |
|
|
|
if ($reload) { |
|
CommandAsterisk($dbcon, 'URA'); |
|
CommandAsterisk($dbcon, 'CHAN_KHOMP'); |
|
} |
|
} |
|
|
|
function GeraVoicemail($dbcon, $reload) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
$arq = $caminho_producao . "voicemail.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
$query = "SELECT attach, format, charset, \"delete\", emailsubject, emailbody, serveremail, |
|
fromstring, mailcmd, forcegreetings, forcename, |
|
maxmsg, maxmessage, minmessage, maxgreet, maxsilence, silencethreshold, |
|
maxlogins, skipms, saycid, emaildateformat, zonemessages |
|
FROM pbx_voicemail_general"; |
|
|
|
$result = pg_query($dbcon, $query); |
|
|
|
fwrite($escreve, '[general]' . "\n"); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if ($dados[pg_field_name($result, $i)] != '') { |
|
if (pg_field_name($result, $i) == 'zonemessages') { |
|
fwrite($escreve, '[zonemessages]' . "\n"); |
|
} |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10)); |
|
fwrite($escreve, '[default]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_voicemail_usuarios order by id asc"; |
|
$result = pg_query($dbcon, $query); |
|
|
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, $dados['caixa_postal'] . '=>' . $dados['senha'] . ',' . $dados['nome'] . ',' . $dados['email'] . ',' . 'attach=' . $dados['attach'] . ',saycid=' . $dados['saycid'] . ',envelope=' . $dados['envelope'] . ',delete=' . $dados['delete'] . "\n"); |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
|
|
fclose($escreve); |
|
if ($reload) |
|
CommandAsterisk($dbcon, 'VOICE'); |
|
} |
|
|
|
function GeraDigivoice($dbcon, $reload) |
|
{ |
|
$conf = GetConfPadrao($dbcon); |
|
$caminho_producao = $conf["caminho_producao"]; |
|
|
|
$arq = $caminho_producao . "digivoice.conf"; |
|
$escreve = fopen($arq, 'w'); |
|
|
|
fwrite($escreve, '[general]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_digivoice_general"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . '[allportsconfig]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_digivoice_allportsconfig"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . '[groups]' . "\n"); |
|
|
|
$query = "SELECT * FROM pbx_digivoice_grupos_ order by numero"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
if (!empty($dados['numero'])) |
|
fwrite($escreve, 'group=' . $dados['numero'] . "\n"); |
|
if (!empty($dados['portas'])) |
|
fwrite($escreve, 'ports=>' . $dados['portas'] . "\n"); |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . "\n" . '[port_config]' . "\n"); |
|
|
|
$query = "SELECT \"group\", signalling, context, \"language\", accountcode, |
|
musiconhold, tx_gain, rx_gain, echocan, echotraining, callprogress, |
|
silence_threshold, callgroup, pickupgroup, relaxdtmf, gen_dtmf, gen_ringback, gen_busy, |
|
dtmf_to_asterisk, polarity, faxdetection, drop_tx_samples_factor, r2_country, |
|
immediate, min_digits as min_digits_rx, max_digits_rx, cid_pos, category, pin_number, group_b_value, port_id, b_subscriber_hangup, |
|
wait_dialtone, ccb_pass_through, ring_type, flash_min_time, flash_max_time, interdigit_timeout, hide_number, cid_type, customcascfg, dialtone_timeout, second_call_digits, ports |
|
FROM pbx_digivoice_grupos order by ports_1, ports_2 "; |
|
|
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
$x++; |
|
for ($i = 0; pg_num_fields($result) > $i; $i++) { |
|
if (pg_field_name($result, $i) != "group") { |
|
if (pg_field_name($result, $i) == "ports") { |
|
if (trim($dados[pg_field_name($result, $i)]) != "") |
|
fwrite($escreve, 'ports=>' . $dados[pg_field_name($result, $i)] . "\n" . "\n"); |
|
} else { |
|
if (trim($dados[pg_field_name($result, $i)]) != "") |
|
fwrite($escreve, pg_field_name($result, $i) . '=' . $dados[pg_field_name($result, $i)] . "\n"); |
|
} |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10)); |
|
$query2 = "select coalesce(contexto,'default') as contexto,identificador,voicemail,immediate,grupo,capturar,musica_espera,accountcode,dispositivo, numero from pbx_digivoice_ramais_fxs a, pbx_dgv b |
|
where cast(a.ramal as integer) = cast(b.numero as integer) and a.id_grupo=" . $dados['group']; |
|
|
|
$result2 = pg_query($dbcon, $query2); |
|
|
|
while ($dados2 = pg_fetch_array($result2)) { |
|
if (trim($dados2['contexto']) == '') { |
|
$contexto = "padrao"; |
|
} else { |
|
$contexto = $dados2['contexto']; |
|
} |
|
fwrite($escreve, 'context=' . $contexto . chr(13) . chr(10)); |
|
if (!empty($dados2['numero'])) |
|
fwrite($escreve, 'port_id=' . $dados2['numero'] . "\n"); |
|
if (!empty($dados2['voicemail'])) |
|
fwrite($escreve, 'mailbox=' . $dados2['voicemail'] . "\n"); |
|
if (!empty($dados2['immediate'])) |
|
fwrite($escreve, 'immediate=' . $dados2['immediate'] . "\n"); |
|
if (!empty($dados2['grupo'])) |
|
fwrite($escreve, 'callgroup=' . $dados2['grupo'] . "\n"); |
|
if (!empty($dados2['capturar'])) |
|
fwrite($escreve, 'pickupgroup=' . $dados2['capturar'] . "\n"); |
|
if (!empty($dados2['musica_espera'])) |
|
fwrite($escreve, 'musiconhold=' . $dados2['musica_espera'] . "\n"); |
|
if (!empty($dados2['accountcode'])) |
|
fwrite($escreve, 'accountcode=' . $dados2['accountcode'] . "\n"); |
|
if (!empty($dados2['dispositivo'])) { |
|
$var = explode('/', $dados2['dispositivo']); |
|
fwrite($escreve, 'ports=>' . $var[1] . "\n" . "\n"); |
|
} |
|
} |
|
} |
|
|
|
fwrite($escreve, chr(13) . chr(10) . '[e1_config]' . "\n"); |
|
|
|
$query = "SELECT e1_sync, use_crc4, span, span2,cards FROM pbx_digivoice_e1config"; |
|
$result = pg_query($dbcon, $query); |
|
while ($dados = pg_fetch_array($result)) { |
|
fwrite($escreve, 'e1_sync=' . $dados['e1_sync'] . "\n"); |
|
fwrite($escreve, 'use_crc4=' . $dados['use_crc4'] . "\n"); |
|
if (!empty($dados['span'])) |
|
fwrite($escreve, 'span=' . $dados['span'] . "\n"); |
|
if (!empty($dados['span2'])) |
|
fwrite($escreve, 'span=' . $dados['span2'] . "\n"); |
|
fwrite($escreve, 'cards=>' . $dados['cards'] . "\n"); |
|
fwrite($escreve, chr(13) . chr(10)); |
|
} |
|
fwrite($escreve, chr(13) . chr(10)); |
|
|
|
fclose($escreve); |
|
if ($reload) { |
|
CommandAsterisk($dbcon, 'RELOAD'); |
|
CommandAsterisk($dbcon, 'URA'); |
|
} |
|
} |
|
|
|
function GetConfPadrao($dbcon) |
|
{ |
|
$query = "SELECT * FROM pbx_conf_padrao"; |
|
$result = pg_query($dbcon, $query); |
|
|
|
$dados = pg_fetch_array($result); |
|
return $dados; |
|
$caminho_back = $dados['caminho_backup']; |
|
$caminho_producao = $dados['caminho_producao']; |
|
$caminho_musicas = $dados['caminho_musicas']; |
|
$url_musicas = $dados['url_musicas']; |
|
$url_asterisk = $dados['url_asterisk']; |
|
} |
|
|
|
function aupdArq($texto, $qtd) |
|
{ |
|
$a = 0; |
|
foreach ($texto as $key => $value) { |
|
if ($a < $qtd) { |
|
$param .= $value; |
|
} |
|
$a++; |
|
} |
|
return $param; |
|
} |
|
|
|
function GetSequencias($nomeTable) |
|
{ |
|
$existeTable = 0; |
|
|
|
$result = pg_query('begin'); |
|
$query = "select id from pbx_sequencia where name_table = '$nomeTable'"; |
|
if ($result) |
|
$result = pg_query($query); |
|
|
|
if ($result) |
|
$existeTable = pg_num_rows($result); |
|
|
|
if ($result && $existeTable) { |
|
$dados = pg_fetch_array($result); |
|
$seq = $dados['id'] + 1; |
|
} else if ($result) { |
|
$query = "insert into pbx_sequencia(name_table, id)values('$nomeTable', 0)"; |
|
$result = $result && pg_query($query); |
|
$seq = 1; |
|
} |
|
|
|
$query = "update pbx_sequencia set id = $seq where name_table = '$nomeTable'"; |
|
$result = $result && pg_query($query); |
|
$result = $result && pg_query('commit'); |
|
|
|
return $seq; |
|
} |
|
|
|
function VerDependenciaTronco($id) |
|
{ |
|
try { |
|
$query = "select count(*) from pbx_rotas_saida_canais where canal = (select nome from pbx_troncos_sip where id = '$id')"; |
|
$result = pg_query($query); |
|
$row = pg_fetch_row($result); |
|
if ($row[0]) { |
|
GeraExcept("Este tronco não pode ser excluido, verifique sua associação as \"Rotas de Saída!\""); |
|
} |
|
|
|
$query = "select count(*) from pbx_rotas_entrada_troncos where id_tronco = '$id'"; |
|
$result = pg_query($query); |
|
$row = pg_fetch_row($result); |
|
if ($row[0]) { |
|
GeraExcept("Este tronco não pode ser excluido, verifique sua associação as \"Rotas de Entrada!\""); |
|
} |
|
|
|
$query = "select count(*) from pbx_contextos_canais where canal = (select nome from pbx_troncos_sip where id = '$id')"; |
|
$result = pg_query($query); |
|
$row = pg_fetch_row($result); |
|
if ($row[0]) { |
|
GeraExcept("Este tronco não pode ser excluido, verifique sua associação aos \"Contextos!\""); |
|
} |
|
|
|
return false; |
|
} catch (Exception $ex) { |
|
return $ex->getMessage(); |
|
} |
|
} |
|
|
|
function GetDependenciaTronco($id) |
|
{ |
|
try { |
|
$query = "select 'Rota de Saída' as dep, c.id, c.nome from pbx_rotas_saida_canais a, pbx_troncos b, pbx_rotas_saida c where a.canal = b.nome and a.id_rota = c.id and b.id = '$id' |
|
union |
|
select 'Rota de Entrada' as dep, b.id, b.nome from pbx_rotas_entrada_troncos a, pbx_rotas_entrada b where b.id = a.id_rota and a.id_tronco = '$id' |
|
union |
|
select 'Contextos' as dep, c.id, c.nome from pbx_contextos_canais a, pbx_troncos b, pbx_contextos c where a.canal = b.nome and a.id_contexto = c.id and b.id = '$id'"; |
|
$result = pg_query($query); |
|
|
|
if (!$result || !pg_num_rows($result)) { |
|
return false; |
|
} |
|
|
|
$str = "<strong>Dependência(s):</strong>"; |
|
while ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) { |
|
$str .= sprintf("<br/>%s: %s - %s ", $dados['dep'], $dados['id'], $dados['nome']); |
|
} |
|
|
|
return $str; |
|
} catch (Exception $ex) { |
|
return false; |
|
} |
|
} |
|
|
|
function GetSetUra($db, $id) |
|
{ |
|
$query = sprintf("select '' from pbx_ura_destino where id_ura = %s and trim(tipo) = 'integativa' and trim(numero) = '_X.'", QuotedStr($id)); |
|
$result = pg_query($db, $query); |
|
|
|
return pg_num_rows($result) ? true : false; |
|
}
|
|
|