Como Consultar Ligações no Asterisk Usando MySQL (ou Apenas o CSV Local)

Muita gente que começa a usar o Asterisk imagina que precisa instalar painéis ou softwares adicionais para ter acesso ao histórico de ligações.
Mas a verdade é que o próprio Asterisk já gera tudo que você precisa para acompanhar suas chamadas.

Neste post, vou te mostrar como o Asterisk registra essas informações, onde encontrar esses dados, e como extrair relatórios práticos — sem depender de ferramentas de terceiros.

Vamos direto ao ponto, mas com a calma necessária para entender bem o que está acontecendo.


Como o Asterisk registra as chamadas

O Asterisk usa um sistema chamado CDR (Call Detail Record), que significa Registro Detalhado de Chamada.
Esses registros são criados automaticamente para cada ligação que passa pelo sistema.

O Asterisk salva os CDRs de duas formas principais:

  • Primeiro, em um arquivo CSV local.
    Esse arquivo se chama Master.csv e fica no caminho /var/log/asterisk/cdr-csv/Master.csv.
    Ele é atualizado automaticamente a cada ligação.
  • Segundo, opcionalmente, você pode configurar para que os registros sejam enviados também para um banco de dados MySQL ou MariaDB.
    Para isso, é necessário ativar módulos como cdr_mysql ou cdr_odbc.

Esses dois métodos podem ser usados ao mesmo tempo, garantindo tanto um backup local quanto uma consulta rápida em banco.


O que tem dentro desses registros

Cada ligação registrada pelo Asterisk guarda várias informações importantes. Alguns dos campos principais são:

calldate: Data e hora em que a ligação ocorreu.

clid: Identificação do chamador.

src: Número de origem da chamada.

dst: Número de destino da chamada.

dcontext: Contexto em que a chamada foi tratada.

channel: Canal utilizado para a origem.

dstchannel: Canal utilizado para o destino.

lastapp: Última aplicação usada na chamada, como Dial.

lastdata: Dados passados para a última aplicação.

duration: Duração total da chamada em segundos.

billsec: Tempo efetivo de conversação em segundos.

disposition: Resultado da chamada (atendida, não atendida, ocupada ou falha).

uniqueid: Identificador único da chamada.

Esses campos são suficientes para gerar relatórios bem completos.


Onde encontrar o arquivo CSV

Mesmo sem banco de dados, você já consegue acessar o histórico de ligações diretamente no servidor.
O arquivo fica no seguinte caminho:

/var/log/asterisk/cdr-csv/Master.csv

Basta abrir esse arquivo com um programa de planilhas como Excel ou LibreOffice Calc.
Cada linha corresponde a uma chamada, e os campos estão separados por vírgulas.

Para ambientes menores ou consultas rápidas, trabalhar diretamente com o CSV é uma solução muito prática.


Configurando para salvar no MySQL [aqui]

Se você quiser trabalhar diretamente em banco de dados, é possível configurar o Asterisk para enviar os CDRs para um MySQL ou MariaDB.

Isso é feito instalando e configurando o módulo cdr_mysql (ou cdr_odbc, dependendo da versão do seu sistema).
Depois de configurado, as ligações passam a ser salvas na tabela cdr do banco de dados.

Essa abordagem permite cruzar dados, criar painéis de controle ou integrar os registros com outros sistemas.


Consultas SQL práticas para relatórios

Depois de ter os dados no banco, você pode fazer consultas rápidas para gerar relatórios.

Relatório simples

SELECT 
    calldate AS 'Data/Hora',
    src AS 'Origem',
    dst AS 'Destino',
    disposition AS 'Status',
    SEC_TO_TIME(billsec) AS 'Tempo de Conversa'
FROM 
    cdr
ORDER BY 
    calldate DESC
LIMIT 50;

Essa consulta traz as últimas 50 chamadas registradas, exibindo quem ligou para quem, o status da chamada e o tempo de conversação já formatado.

Relatório mais completo

SELECT
    DATE_FORMAT(calldate, '%d/%m/%Y %H:%i:%s') AS 'Data/Hora',
    clid AS 'Identificação do Chamador',
    src AS 'Origem',
    dst AS 'Destino',
    dcontext AS 'Contexto',
    channel AS 'Canal de Origem',
    dstchannel AS 'Canal de Destino',
    lastapp AS 'Última Aplicação',
    duration AS 'Duração Total (s)',
    billsec AS 'Tempo Faturável (s)',
    disposition AS 'Resultado',
    uniqueid AS 'ID Único'
FROM
    cdr
ORDER BY
    calldate DESC
LIMIT 100;

Esse relatório é ideal para exportar dados para Excel, Power BI, Grafana ou gerar relatórios gerenciais internos.


Exemplos de filtros úteis

Você pode ajustar suas consultas para obter informações específicas.

Se quiser apenas chamadas atendidas:

WHERE disposition = 'ANSWERED'

Para buscar ligações dentro de um período específico:

WHERE calldate BETWEEN '2025-04-01 00:00:00' AND '2025-04-18 23:59:59'

Ou para listar apenas chamadas originadas de um ramal específico:

WHERE src = '4001'

Esses filtros deixam os relatórios mais personalizados conforme a necessidade.


Caso real de aplicação

No CSBV local, essa metodologia já está sendo aplicada para controle de telefonia.

Os dados são extraídos diretamente do banco de dados ou, quando necessário, diretamente do arquivo CSV local.
Foram desenvolvidos scripts internos para automatizar relatórios diários, eliminando a necessidade de painéis externos ou licenças caras.

Essa abordagem trouxe ganhos em agilidade, autonomia e redução de custos.

ItemQuem faz
Gerar CDRAsterisk
Salvar como .CSVAsterisk (padrão)
Salvar no MySQLAsterisk + cdr_mysql ou cdr_odbc
Consultar .CSVQualquer planilha ou script
Consultar MySQLSELECT direto

Conclusão

Desde a primeira instalação, o Asterisk já fornece todos os dados necessários para controle de chamadas.
O arquivo Master.csv garante um histórico rápido e confiável, enquanto a integração com MySQL abre possibilidades infinitas para consultas e integrações.

Você não precisa instalar soluções pesadas ou caras. Basta usar o que já está disponível de forma nativa.

Com pequenas configurações, é possível transformar a gestão de chamadas em algo prático, profissional e sob seu controle total.

Rolar para cima