<div dir="ltr"><div><div>Blz Mike !<br><br></div>Sakei o arquivo, vou ver o que sai aqui.<br><br></div>Obgd!<br><div><div><div><div style id="__af745f8f43-e961-4b88-8424-80b67790c964__"></div></div></div></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">Em 30 de outubro de 2013 11:55, Mike Tesliuk <span dir="ltr">&lt;<a href="mailto:mike@tesliuk.com" target="_blank">mike@tesliuk.com</a>&gt;</span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div><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><div><div class="h5">
    <blockquote type="cite">
      
      <div><br>
        você 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ê pode fazer as consultas
        necessárias.<br>
        <br>
        <a href="http://www.voip-info.org/wiki/view/Asterisk+queue_log+on+MySQL" target="_blank">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
        é o mesmo ainda, se quiser testar fique avontade, unico detalhe
        é , faça um backup do seu queues_log enquanto você está testando
        para você 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 = &quot;/tmp/ProccessQueueLog.run&quot;;<br>
        <br>
        if(! -e $control){<br>
            system(&quot;touch $control&quot;);<br>
        }else{<br>
            die(&quot;Processo ja em Execucao\n&quot;);<br>
        }<br>
        <br>
        <br>
        # declarando funcoes<br>
        use DBI;<br>
        <br>
        # declarando variaveis de conexao com banco<br>
        <br>
        $host = &quot;localhost&quot;;<br>
        $user = &quot;USUARIO DO BANCO&quot;;<br>
        $pass = &quot;SENHA DO BANCO&quot;;<br>
        $database = &quot;asterisk&quot;;<br>
        $table = &quot;queuelog&quot;;<br>
        <br>
        # Criando conexao<br>
        <br>
        $dsn = &quot;DBI:mysql:database=$database;host=$host;port=3306&quot;;<br>
        $dbh = DBI-&gt;connect($dsn, $user, $pass);<br>
        <br>
        # Definindo os arquivos<br>
        <br>
        $file = &quot;/var/log/asterisk/queue_log&quot;;<br>
        $file_tmp = &quot;/var/log/asterisk/queue_log_tmp&quot;;<br>
        <br>
        <br>
        # Verificando se o processo esta rodando<br>
        <br>
        <br>
        if(-e $file_tmp){<br>
            system(&quot;rm -rf $file_tmp&quot;);<br>
        }<br>
        <br>
        system(&quot;mv $file $file_tmp&quot;);<br>
        system(&quot;touch $file&quot;);<br>
        system(&quot;chown -R asterisk.asterisk $file&quot;);<br>
        system(&quot;/usr/sbin/asterisk -rx \&quot;logger reload\&quot;&quot;);<br>
        <br>
        # Abrindo o arquivo<br>
        open FILE, &quot;&lt;&quot;, $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>
            $contador++;<br>
            #if($contador &gt; 5000){ die(); }<br>
            ($epoch, $uniqueid, $queue, $channel, $event, $param1,
        $param2, $param3) = split(/\|/, $line);<br>
        <br>
            # limpando as variaveis<br>
            chomp($epoch);<br>
            chomp($uniqueid);<br>
            chomp($queue);<br>
            chomp($channel);<br>
            chomp($event);<br>
            chomp($param1);<br>
            chomp($param2);<br>
            chomp($param3);<br>
        <br>
            # Convertendo epoch para date<br>
            $data = convert_epoc_to_date($epoch);<br>
        <br>
            # Imprimindo valores apenas para debug<br>
            #print &quot;Data: $data\n&quot;;<br>
            #print &quot;Uniqueid: $uniqueid\n&quot;;<br>
            #print &quot;Fila: $queue\n&quot;;<br>
            #print &quot;Canal: $channel\n&quot;;<br>
            #print &quot;Evento: $event\n&quot;;<br>
            #print &quot;Parametro 1: $param1\n&quot;;<br>
            #print &quot;Parametro 2: $param2\n&quot;;<br>
            #print &quot;Parametro 3: $param3\n&quot;;<br>
            #print &quot;Original: $line\n\n&quot;;<br>
             <br>
            #  Exibindo a linha completa (para debug)<br>
            #print &quot;LINE: $line\n&quot;;<br>
        <br>
            $query = &quot;INSERT INTO $database.$table VALUES (&#39;$epoch&#39;,
        &#39;$uniqueid&#39;, &#39;$queue&#39;, &#39;$channel&#39; , &#39;$event&#39;, &#39;$param1&#39;,
        &#39;$param2&#39;, &#39;$param3&#39;, &#39;$data&#39;)&quot;;<br>
        <br>
            # Imprimindo insert para verificacao<br>
            print &quot;Query: $query\n&quot;;<br>
            <br>
            # Executando Insert<br>
            $sth = $dbh-&gt;prepare($query);<br>
            $sth-&gt;execute();<br>
        }<br>
        <br>
        <br>
        <br>
        <br>
        sub convert_epoc_to_date($epoch){<br>
            # Formato alterado pela falta da DateTime<br>
            #use DateTime;<br>
            #$dt = DateTime-&gt;from_epoch (epoch =&gt; $epoch);<br>
            #$year = $dt-&gt;year;<br>
            #$month = $dt-&gt;month;<br>
            #$day = $dt-&gt;day;<br>
            #$hour = $dt-&gt;hour;<br>
            #$minute = $dt-&gt;minute;<br>
            #$second = $dt-&gt;second;<br>
            <br>
            #return ($year + 1900) . &quot;-$month&quot; . &quot;-$day&quot;. &quot;-$hour&quot; .
        &quot;:$minute&quot; . &quot;$second&quot;;<br>
        <br>
            my $time = $epoch; <br>
            my @months =
(&quot;Jan&quot;,&quot;Feb&quot;,&quot;Mar&quot;,&quot;Apr&quot;,&quot;May&quot;,&quot;Jun&quot;,&quot;Jul&quot;,&quot;Aug&quot;,&quot;Sep&quot;,&quot;Oct&quot;,&quot;Nov&quot;,&quot;Dec&quot;);<br>
            my ($sec, $min, $hour, $day,$month,$year) =
        (localtime($time))[0,1,2,3,4,5,6]; <br>
            $month = $month + 1;<br>
            if($month &lt; 10){ $month = &quot;0&quot; . $month; }<br>
            if($day &lt; 10){ $day = &quot;0&quot; . $day; }<br>
            if($hour &lt; 10){ $hour = &quot;0&quot; . $hour; }<br>
            if($min &lt; 10){ $min = &quot;0&quot; . $min; }<br>
            if($sec &lt; 10){ $sec = &quot;0&quot; . $sec; }<br>
        <br>
            return ($year + 1900) . &quot;-$month&quot; . &quot;-$day&quot;. &quot; $hour&quot; .
        &quot;:$min&quot; . &quot;:$sec&quot;;<br>
        }<br>
        <br>
        /<br>
        system(&quot;rm -rf $control&quot;);<br>
        <br>
        <br>
        -----<br>
        <br>
        A estrutura do banco de dados para receber estes dados éra a
        seguinte.<br>
        <br>
        CREATE TABLE `queuelog` (<br>
          `timestamp` int(11) default NULL,<br>
          `callid` text,<br>
          `qname` text,<br>
          `agent` text,<br>
          `action` text,<br>
          `info1` text,<br>
          `info2` text,<br>
          `info3` text,<br>
          `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 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 é que trabalho com filas e quando ele começa a
            discar para os ramais é registrado varios nã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></fieldset>
        <br>
        <pre>_______________________________________________
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ça em <a href="http://www.Khomp.com" target="_blank">www.Khomp.com</a>.
_______________________________________________
ALIGERA – 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 – Appliance Asterisk - Acesse <a href="http://www.aligera.com.br" target="_blank">www.aligera.com.br</a>.
_______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para <a href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org" target="_blank">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a></pre>

      </blockquote>
      <br>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
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ça em <a href="http://www.Khomp.com" target="_blank">www.Khomp.com</a>.
_______________________________________________
ALIGERA – 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 – Appliance Asterisk - Acesse <a href="http://www.aligera.com.br" target="_blank">www.aligera.com.br</a>.
_______________________________________________
Para remover seu email desta lista, basta enviar um email em branco para <a href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org" target="_blank">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a></pre>

    </blockquote>
    <br>
  </div></div></div>

<br>_______________________________________________<br>
KHOMP: completa linha de placas externas FXO, FXS, GSM e E1;<br>
Media Gateways de 1 a 64 E1s para SIP com R2, ISDN e SS7;<br>
Intercomunicadores para acesso remoto via rede IP. Conheça em <a href="http://www.Khomp.com" target="_blank">www.Khomp.com</a>.<br>
_______________________________________________<br>
ALIGERA – Fabricante nacional de Gateways SIP-E1 para R2, ISDN e SS7.<br>
Placas de 1E1, 2E1, 4E1 e 8E1 para PCI ou PCI Express.<br>
Channel Bank – Appliance Asterisk - Acesse <a href="http://www.aligera.com.br" target="_blank">www.aligera.com.br</a>.<br>
_______________________________________________<br>
Para remover seu email desta lista, basta enviar um email em branco para <a href="mailto:asteriskbrasil-unsubscribe@listas.asteriskbrasil.org">asteriskbrasil-unsubscribe@listas.asteriskbrasil.org</a><br></blockquote></div>
<br></div>