<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>
      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 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 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>