<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix"><br>
      Apenas lembrando as versoes atuais do asterisk suportam o
      armazenamento direto dos logs no banco conforme o link que eu
      passei<br>
      <br>
      Em 30/10/13 10:54, Mike Tesliuk escreveu:<br>
    </div>
    <blockquote cite="mid:52711D9E.4080404@tesliuk.com" type="cite">
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix"><br>
        voc&ecirc; deveria gerar o relatorio baseado na fila e nao no cdr
        neste caso.<br>
        <br>
        existem alguns scripts que podemos jogar os dados da sua fila no
        banco de dados e uma vez no banco voc&ecirc; pode fazer as consultas
        necess&aacute;rias.<br>
        <br>
        <a moz-do-not-send="true" class="moz-txt-link-freetext"
          href="http://www.voip-info.org/wiki/view/Asterisk+queue_log+on+MySQL">http://www.voip-info.org/wiki/view/Asterisk+queue_log+on+MySQL</a><br>
        <br>
        <br>
        Abaixo um script que fiz uma vez para esta finalidade (era
        versao 1.4 na epoca), precisa verificar se o formato do arquivo
        &eacute; o mesmo ainda, se quiser testar fique avontade, unico detalhe
        &eacute; , fa&ccedil;a um backup do seu queues_log enquanto voc&ecirc; est&aacute; testando
        para voc&ecirc; nao perder os dados que tem la, nao venha chorar
        depois se o arquivo for apagado :)<br>
        -----<br>
        <br>
        #!/usr/bin/perl<br>
        #<br>
        # Script para proccessamento do arquivo queue_log<br>
        # <br>
        # Descricao dos campos do arquivo:<br>
        # epoch timestamp <br>
        # uniqueid da chamada<br>
        # nome da fila<br>
        # Canal<br>
        # evento<br>
        # parametro 1 do evento<br>
        # parametro 2 do evento<br>
        # parametro 3 do evento<br>
        <br>
        # Verificando se o processo ja esta rodando<br>
        $control = "/tmp/ProccessQueueLog.run";<br>
        <br>
        if(! -e $control){<br>
        &nbsp;&nbsp;&nbsp; system("touch $control");<br>
        }else{<br>
        &nbsp;&nbsp;&nbsp; die("Processo ja em Execucao\n");<br>
        }<br>
        <br>
        <br>
        # declarando funcoes<br>
        use DBI;<br>
        <br>
        # declarando variaveis de conexao com banco<br>
        <br>
        $host = "localhost";<br>
        $user = "USUARIO DO BANCO";<br>
        $pass = "SENHA DO BANCO";<br>
        $database = "asterisk";<br>
        $table = "queuelog";<br>
        <br>
        # Criando conexao<br>
        <br>
        $dsn = "DBI:mysql:database=$database;host=$host;port=3306";<br>
        $dbh = DBI-&gt;connect($dsn, $user, $pass);<br>
        <br>
        # Definindo os arquivos<br>
        <br>
        $file = "/var/log/asterisk/queue_log";<br>
        $file_tmp = "/var/log/asterisk/queue_log_tmp";<br>
        <br>
        <br>
        # Verificando se o processo esta rodando<br>
        <br>
        <br>
        if(-e $file_tmp){<br>
        &nbsp;&nbsp;&nbsp; system("rm -rf $file_tmp");<br>
        }<br>
        <br>
        system("mv $file $file_tmp");<br>
        system("touch $file");<br>
        system("chown -R asterisk.asterisk $file");<br>
        system("/usr/sbin/asterisk -rx \"logger reload\"");<br>
        <br>
        # Abrindo o arquivo<br>
        open FILE, "&lt;", $file_tmp or die $!;<br>
        <br>
        # Lendo informacao do arquivo<br>
        <br>
        # contador para teste<br>
        $contador = 0;<br>
        <br>
        while ($line = &lt;FILE&gt;){<br>
        &nbsp;&nbsp;&nbsp; $contador++;<br>
        &nbsp;&nbsp;&nbsp; #if($contador &gt; 5000){ die(); }<br>
        &nbsp;&nbsp;&nbsp; ($epoch, $uniqueid, $queue, $channel, $event, $param1,
        $param2, $param3) = split(/\|/, $line);<br>
        <br>
        &nbsp;&nbsp;&nbsp; # limpando as variaveis<br>
        &nbsp;&nbsp;&nbsp; chomp($epoch);<br>
        &nbsp;&nbsp;&nbsp; chomp($uniqueid);<br>
        &nbsp;&nbsp;&nbsp; chomp($queue);<br>
        &nbsp;&nbsp;&nbsp; chomp($channel);<br>
        &nbsp;&nbsp;&nbsp; chomp($event);<br>
        &nbsp;&nbsp;&nbsp; chomp($param1);<br>
        &nbsp;&nbsp;&nbsp; chomp($param2);<br>
        &nbsp;&nbsp;&nbsp; chomp($param3);<br>
        <br>
        &nbsp;&nbsp;&nbsp; # Convertendo epoch para date<br>
        &nbsp;&nbsp;&nbsp; $data = convert_epoc_to_date($epoch);<br>
        <br>
        &nbsp;&nbsp;&nbsp; # Imprimindo valores apenas para debug<br>
        &nbsp;&nbsp;&nbsp; #print "Data: $data\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Uniqueid: $uniqueid\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Fila: $queue\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Canal: $channel\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Evento: $event\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Parametro 1: $param1\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Parametro 2: $param2\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Parametro 3: $param3\n";<br>
        &nbsp;&nbsp;&nbsp; #print "Original: $line\n\n";<br>
        &nbsp;&nbsp;&nbsp; &nbsp;<br>
        &nbsp;&nbsp;&nbsp; #&nbsp; Exibindo a linha completa (para debug)<br>
        &nbsp;&nbsp;&nbsp; #print "LINE: $line\n";<br>
        <br>
        &nbsp;&nbsp;&nbsp; $query = "INSERT INTO $database.$table VALUES ('$epoch',
        '$uniqueid', '$queue', '$channel' , '$event', '$param1',
        '$param2', '$param3', '$data')";<br>
        <br>
        &nbsp;&nbsp;&nbsp; # Imprimindo insert para verificacao<br>
        &nbsp;&nbsp;&nbsp; print "Query: $query\n";<br>
        &nbsp;&nbsp;&nbsp; <br>
        &nbsp;&nbsp;&nbsp; # Executando Insert<br>
        &nbsp;&nbsp;&nbsp; $sth = $dbh-&gt;prepare($query);<br>
        &nbsp;&nbsp;&nbsp; $sth-&gt;execute();<br>
        }<br>
        <br>
        <br>
        <br>
        <br>
        sub convert_epoc_to_date($epoch){<br>
        &nbsp;&nbsp;&nbsp; # Formato alterado pela falta da DateTime<br>
        &nbsp;&nbsp;&nbsp; #use DateTime;<br>
        &nbsp;&nbsp;&nbsp; #$dt = DateTime-&gt;from_epoch (epoch =&gt; $epoch);<br>
        &nbsp;&nbsp;&nbsp; #$year = $dt-&gt;year;<br>
        &nbsp;&nbsp;&nbsp; #$month = $dt-&gt;month;<br>
        &nbsp;&nbsp;&nbsp; #$day = $dt-&gt;day;<br>
        &nbsp;&nbsp;&nbsp; #$hour = $dt-&gt;hour;<br>
        &nbsp;&nbsp;&nbsp; #$minute = $dt-&gt;minute;<br>
        &nbsp;&nbsp;&nbsp; #$second = $dt-&gt;second;<br>
        &nbsp;&nbsp;&nbsp; <br>
        &nbsp;&nbsp;&nbsp; #return ($year + 1900) . "-$month" . "-$day". "-$hour" .
        ":$minute" . "$second";<br>
        <br>
        &nbsp;&nbsp;&nbsp; my $time = $epoch; <br>
        &nbsp;&nbsp;&nbsp; my @months =
("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");<br>
        &nbsp;&nbsp;&nbsp; my ($sec, $min, $hour, $day,$month,$year) =
        (localtime($time))[0,1,2,3,4,5,6]; <br>
        &nbsp;&nbsp;&nbsp; $month = $month + 1;<br>
        &nbsp;&nbsp;&nbsp; if($month &lt; 10){ $month = "0" . $month; }<br>
        &nbsp;&nbsp;&nbsp; if($day &lt; 10){ $day = "0" . $day; }<br>
        &nbsp;&nbsp;&nbsp; if($hour &lt; 10){ $hour = "0" . $hour; }<br>
        &nbsp;&nbsp;&nbsp; if($min &lt; 10){ $min = "0" . $min; }<br>
        &nbsp;&nbsp;&nbsp; if($sec &lt; 10){ $sec = "0" . $sec; }<br>
        <br>
        &nbsp;&nbsp;&nbsp; return ($year + 1900) . "-$month" . "-$day". " $hour" .
        ":$min" . ":$sec";<br>
        }<br>
        <br>
        /<br>
        system("rm -rf $control");<br>
        <br>
        <br>
        -----<br>
        <br>
        A estrutura do banco de dados para receber estes dados &eacute;ra a
        seguinte.<br>
        <br>
        CREATE TABLE `queuelog` (<br>
        &nbsp; `timestamp` int(11) default NULL,<br>
        &nbsp; `callid` text,<br>
        &nbsp; `qname` text,<br>
        &nbsp; `agent` text,<br>
        &nbsp; `action` text,<br>
        &nbsp; `info1` text,<br>
        &nbsp; `info2` text,<br>
        &nbsp; `info3` text,<br>
        &nbsp; `date` datetime default NULL<br>
        ) ENGINE=MyISAM DEFAULT CHARSET=latin1;<br>
        <br>
        <br>
        <br>
        ---<br>
        <br>
        <br>
        <br>
        Em 30/10/13 10:44, Silvinho Barros escreveu:<br>
      </div>
      <blockquote
cite="mid:CALW+dythhuQiJ+i2Np5-YczysFUVvR4MgkatXgd-UbTPf4teRQ@mail.gmail.com"
        type="cite">
        <div dir="ltr">
          <div>
            <div>
              <div>Bom dia Pessoal,<br>
                <br>
              </div>
              Alguem sabe a manha para tirar relatorio dessa
              base(Asteriskcdrdb) de quantas chamadas forma atendidas e
              quantas falharam de verdade?<br>
            </div>
            O problema &eacute; que trabalho com filas e quando ele come&ccedil;a a
            discar para os ramais &eacute; registrado varios n&atilde;o respondidos
            mas na verdade a chamada foi atendida por 1 ramal apenas.<br>
            <br>
          </div>
          <div>Asternic ta furado aqui!<br>
            <br>
          </div>
          Obrigado.<br>
          <div><br>
          </div>
        </div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
        <pre wrap="">_______________________________________________
KHOMP: completa linha de placas externas FXO, FXS, GSM e E1;
Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7;
Intercomunicadores para acesso remoto via rede IP. Conhe&ccedil;a em <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="http://www.Khomp.com">www.Khomp.com</a>.
_______________________________________________
ALIGERA &#8211; Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7.
Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express.
Channel Bank &#8211; Appliance Asterisk - Acesse <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="http://www.aligera.com.br">www.aligera.com.br</a>.
_______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para <a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a></pre>
      </blockquote>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
KHOMP: completa linha de placas externas FXO, FXS, GSM e E1;
Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7;
Intercomunicadores para acesso remoto via rede IP. Conhe&ccedil;a em <a class="moz-txt-link-abbreviated" href="http://www.Khomp.com">www.Khomp.com</a>.
_______________________________________________
ALIGERA &#8211; Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7.
Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express.
Channel Bank &#8211; Appliance Asterisk - Acesse <a class="moz-txt-link-abbreviated" href="http://www.aligera.com.br">www.aligera.com.br</a>.
_______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para <a class="moz-txt-link-abbreviated" href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a></pre>
    </blockquote>
    <br>
  </body>
</html>