Tendo a necessidade para um maior controle das ligações que são feitas e dividir os custos por setor da empresa, iremos integrar o LOG que o software remora cria a cada ligação que é feita.
O PABX intelbras permite controlar as ligações atráves de usuário e senha, os usuário vão de 00 a 99, o pabx está conectado no servidor atraves da porta serial.
O remora gera 2 tipos de LOG, sendo um por ramal onde originou as ligações e outro por codigo de usuário que fez as ligações. Este logs ficam dentro na pasta(INTEGRA) onde o remora foi instalado.
Esta integração será feita usando um script PHP que ficara como uma tarefa agendada(CRON), para ser executada 2 vezes por dia, as 12h e 24h.
arquivos de log
Por código sendo os 2 ultimos caracteres no nome do arquivo o codigo de usuário.
CODIGO00.TXT, CODIGO01.TXT, CODIGO02.TXT, CODIGO03.TXT, CODIGO04.TXT…
CONTEUDO DO ARQUIVO CODIGO00.TXT
1 2 3 4 | Hora T OP TR RRRRR NNNNNNNNNNNNNNNNNNNN HH:MM:SS HH:MM:SS DD/MM/AAAA CL 99999,99 CP DDDDDDDDDDDDDDDDDDDDDDDDD 15:55:43 S 12 32 304 99999999 15:36:35 00:00:18 20/10/2011 5 0,28 00 CELULAR DDD 016 15:55:45 S 12 04 304 99999999 15:37:24 00:00:14 20/10/2011 7 0,13 00 FRANCA 16:00:06 S 12 31 304 99999999 15:59:41 00:00:23 20/10/2011 5 0,00 00 Fabiano celular |
CONTEUDO DO ARQUIVO RMO00300.TXT
Por ramal sendo os 5 ultimos caracteres no nome do arquivo o numero do ramal.
RMO00300.TXT
1 2 3 | 03 300 99999999 10:30:54 00:00:07 20110627 0,15 12 32 300 99999999 10:41:51 00:02:46 20110627 2,10 12 01 300 99999999 10:50:51 00:00:07 20110627 0,15 12 |
Obs.: não esqueça de configurar o PHP para conectar ao oracle
Caso seu servidor web esteja em um ambiente separado do servidor com o remora instalado, você poderá criar scripts em shell para transferir os arquivos ou compartilhar a pasta, enfim faça da maneira que irá te atender.
Vamos ao que interessa;
O codigo está comentado, por isso não vou explicar passo a passo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | set_time_limit(0); //definiar tempo para execução do script caso o arquivo tenha muitas linhas ob_start(); require_once('conecta_oracle.php'); //configure conforme o seu ambiente. // "\ip_servidorpasta_compartilhadaarquivos do LOG" $diretorio_data = "C:\intranet\www\data_txt\"; //listar arquivos do diretorio. $$dir = @opendir($diretorio_data); $i=0; while (false !== ($file = readdir($$dir))) {// while pastas if ($file != "." && $file != ".." && $file != "Thumbs.db" && $file != $dir) { // if pastas $i++; $indice[$i] = "$file"; $nm_arquivo = $indice[$i] = "$file"; $tipo = substr($indice[$i], 0, 6); $codigo_ramal = substr($indice[$i], 6, 2); // recebe parametros if($tipo == 'CODIGO'){ //imprimi o nome do arquivo echo $nm_arquivo; echo ' -- '.$i.'<br />'; $arquivo = $diretorio_data.$nm_arquivo; if (file_exists($arquivo)) { $ponteiro = fopen ("$arquivo", "r"); $num_linhas = 0; $caracteres = 0; while (!feof ($ponteiro)) { if ($linha = fgets($ponteiro, 4096)){ $num_linhas++; $caracteres += strlen($linha); if ($num_linhas != "1"){ // ignorar a primeira linha do arquivo cabeçalho. $DATA_IMPORTACAO = date('d/m/Y');//; $DS_USUARIO = 'import'; $CD_PABX = $codigo_ramal; $HR_LEITURA = substr($linha, 0, 9); $DS_TIPO = substr($linha, 9, 1); $DS_OP = substr($linha, 11, 2); $DS_TR = substr($linha, 14, 2); $NR_RAMAL = substr($linha, 17, 5); $NR_LIGACAO = substr($linha, 23, 20); $HR_LIGACAO = substr($linha, 44, 8); $DS_DURACAO = substr($linha, 53, 8); $DT_LIGACAO = substr($linha, 62, 10); $DS_CL = substr($linha, 73, 2); $VL_LIGACAO = substr($linha, 76, 8); $DS_CP = substr($linha, 85, 2); $DS_DESTINO = substr($linha, 88, 25); $consulta = "INSERT INTO hak_pabx_registro_codigo_tb ( NR_SEQUENCIA, DATA_IMPORTACAO, DS_USUARIO, CD_PABX, HR_LEITURA, DS_TIPO, DS_OP, DS_TR, NR_RAMAL, NR_LIGACAO, HR_LIGACAO, DS_DURACAO, DT_LIGACAO, DS_CL, VL_LIGACAO, DS_CP, DS_DESTINO ) VALUES ( HAK_TELEFONIA_SEQ.Nextval, '$DATA_IMPORTACAO', '$DS_USUARIO', '$CD_PABX', '$HR_LEITURA', '$DS_TIPO', '$DS_OP', '$DS_TR', '$NR_RAMAL', '$NR_LIGACAO', '$HR_LIGACAO', '$DS_DURACAO', '$DT_LIGACAO', '$DS_CL', '$VL_LIGACAO', '$DS_CP', '$DS_DESTINO' )"; $stid = oci_parse( $conexao, "".$consulta."" ) or die ( " erro " . oci_error() ); oci_execute ( $stid ); //$exec = oci_execute( $stid , OCI_DEFAULT); oci_commit( $conexao ); // commits all new values: 1, 2, 3, 4, 5 }//if ignora primeira linha }//if }//while echo 'total de importações: ' . $num_linhas_total = $num_linhas_total + $num_linhas; fclose ($ponteiro);//FECHA O PONTEIRO DO ARQUIVO // você poderá apagar o arquivo para não importar o mesmo arquivo 2 vezes, ou renomear //unlink("$arquivo"); //rename($arquivo, "importado".$arquivo."000");// }//exists else { // FILE EXISTS echo "O arquivo $arquivo não FOI FOI ENCONTRADO"; } }//tipo } } // fecha while oci_free_statement($stid); oci_close($conexao);//fecha a conexão atual |