|
|
<?php |
|
|
|
|
|
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); |
|
|
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"); |
|
|
$agiUra = sprintf("exten => s,2,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,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, 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<EFBFBD><EFBFBD>o ativa |
|
|
* n<EFBFBD>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)", $id_da_ura, $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'); |
|
|
} |