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çã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)", $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'); }