Grande atualização do sistema de registros de dados de chamadas (CDR) na 3CX.
Após o lançamento do V20 Update 6 Alpha recentemente, este post explica o novo sistema de registros de dados de chamadas (CDR) no 3CX, onde simplificamos o CDR em uma única tabela: cdr_output. Desmembramos a estrutura antiga, revelamos o novo design e destacamos os ganhos técnicos que estão transformando o funcionamento dos dados de chamadas. Continue lendo para obter todos os detalhes.
A Configuração Legada: Um Gargalo Fragmentado
Originalmente, os dados de CDR/chamadas da 3CX eram divididos em quatro tabelas: cl_calls, cl_participants, cl_party_info e cl_segments. Cada uma delas armazenava elementos distintos do ciclo de vida da chamada: registros de data e hora, dados dos participantes e detalhes de encaminhamento, o que forçava a realização de SQL JOINs complexos para reunir um registro completo. Esse design de várias tabelas aumentava a sobrecarga de consultas e prejudicava o desempenho na geração de relatórios. Para análises em escala de nuvem ou relatórios em tempo real, a estrutura simplesmente não conseguia acompanhar o ritmo.
A Nova Abordagem: cdr_output
Nós reformulamos isso no cdr_output, uma solução de tabela única que consolida todos os dados de chamadas em uma tabela eficiente. Registros de data e hora, participantes, encaminhamento e resultados – tudo está unificado, eliminando a necessidade de JOINs. O JOIN é necessário apenas para os dados de registro, que agora estão em sua própria tabela cdr_recordingsout. Na 3CX, sempre fomos capazes de escalonar para milhares de usuários. Essa arquitetura enxuta fortalece ainda mais nossa escalabilidade, reduz a complexidade, aumenta a velocidade de consulta e prepara a 3CX para análises prontas para a nuvem. Trata-se de uma reformulação ousada da engenharia de dados, desenvolvida para oferecer precisão e potência.
Avanço nº 1: Todos Os Seus Dados Em Uma Tabela Inteligente
Legado: JOINs de várias tabelas reduziam o desempenho – uma verdadeira dor de cabeça para obter informações sobre as chamadas.
Novo: o cdr_output reúne tudo – origem, destino, registros de data e hora, resultados – em uma tabela compacta. Ela é plana e simples, eliminando a desordem relacional para que os analistas de BI possam acompanhar facilmente os fluxos de chamadas.
Por Que É O Máximo:
Consultas mais rápidas: Abandona a complexidade de várias tabelas em favor da velocidade de uma única tabela – as consultas são escalonadas sem problemas, independentemente do tamanho dos dados.
Pronto para a nuvem: Desliza diretamente para data lakes ou ferramentas de BI – sem necessidade de preparação adicional.
Ganho do analista: Os caminhos das chamadas são claros e rápidos de rastrear, poupando horas de incômodo.
Tecnologia de Ponta: os índices em cdr_id e call_history_id turbinam o PostgreSQL para pesquisas extremamente rápidas, mesmo com conjuntos de dados enormes. Manter os links call_history_id na tabela reduz a sobrecarga de SQL, aumenta a velocidade e reduz o inchaço dos dados.
Avanço nº 2: Cada Linha Conta Uma História
Legado: Metadados rasos deixavam os analistas de relatórios em dúvida – por que uma chamada falhou? Onde está o contexto? Quem transferiu para quem?
Novo: o cdr_output incorpora um rico conjunto de atributos:
- termination_reason (por exemplo, “cancelled”, “dst_participant_terminated”)
- termination_reason_details (por exemplo, “forward_all”, “completed_elsewhere”)
- creation_method (por exemplo, “route_to”, “divert”)
- creation_forward_reason (por exemplo, “polling”, “busy”)
- continuation_reason (por exemplo, “polling”, “forward_all”)
Impacto:
- Clareza Total: Cada linha é uma história completa – não é mais necessário juntar pistas.
- Insights Mais Inteligentes: Potencializa KPIs como taxas de drop ou estatísticas de fila, sem necessidade de trabalho extra.
- Fim do Jogo Explicado: Veja instantaneamente como, por que, quando e quem encerrou uma chamada.
Tecnologia de Ponta: termination_reason_details alimenta a análise pontual (pense em SQL GROUP BY do Grafana ou PowerBi), enquanto o cdr_id baseado em UUID agora é o padrão GUID 00000000-01db-87c1-1bab-07aa0000000d para permitir que as ferramentas de BI identifiquem a data-hora e a ordem da chamada imediatamente. Está tudo lá – como uma chamada começou, se moveu e terminou.
Avanço nº 3: Quem Está Ligando Para Quem, De Forma Simples
Legado: As funções dos participantes eram mal definidas – origem vs. destino exigiam inferência entre tabelas, adivinhação, operações aninhadas, JOINS múltiplos e problemas de desempenho.
Novo: o cdr_output domina os emaranhados de SQL JOIN anteriores com uma série de recursos de divisão limpa:
- source_participant_id (usado para rastreamento)
- source_participant_phone_number (por exemplo, “+1305305305”)
- destination_dn_name (por exemplo, “Dana White”)
- Sinalizadores como source_participant_is_incoming e destination_participant_is_already_connected
| Novas Funções de Origem | Novas Funções de Participante |
|---|---|
| “source_participant_id” | “destination_participant_id” |
| “source_entity_type” | “destination_entity_type” |
| “source_dn_number” | “destination_dn_number” |
| “source_dn_type” | “destination_dn_type” |
| “source_dn_name” | “destination_dn_name” |
| “source_participant_name” | “destination_participant_name” |
| “source_participant_phone_number” | “destination_participant_phone_number” |
| “source_participant_trunk_did” | “destination_participant_trunk_did” |
| “source_participant_is_incoming” | “destination_participant_is_incoming” |
| “source_participant_is_already_connected” | “destination_participant_is_already_connected” |
Impacto:
Mapeamento de Precisão: A direção da chamada é óbvia – da origem ao destino, feito, simplificando a análise do fluxo.
Tratamento de Cenários Complexos: Rastreia perfeitamente vários fluxos de fila, troncos bidirecionais e transferências em várias camadas em um único esquema.
Tecnologia de Ponta: Os sinalizadores de estado booleanos refletem a modelagem dimensional de um data warehouse, otimizando o desempenho da cláusula WHERE. O padrão UUID nos IDs dos participantes garante uma integração perfeita com as plataformas de BI, preservando o sequenciamento do trecho de chamada imediatamente.
Avanço nº 4: Granularidade do Carimbo de Data/Hora
Legado: cl_calls oferecia horários básicos de início/fim; cl_segments fragmentava o restante.
Novo: o cdr_output fornece três registros de data e hora precisos: cdr_started_at, cdr_ended_at, cdr_answered_at.
Impacto:
- Métricas nítidas: Obtém tempos precisos do toque à resposta – cada segundo conta.
- Simplicidade analítica: Os cálculos de uma única tabela substituem as agregações de várias tabelas.
Percepção Especializada: Os registros de data e hora UTC (+00) garantem a consistência entre as regiões – uma necessidade para implantações globais na nuvem que alimentam ferramentas como Snowflake ou BigQuery. O cdr_id baseado em GUID vincula esses carimbos de data/hora aos trechos de chamada, proporcionando às ferramentas de BI uma compreensão nativa da sequência e da duração. Não são necessários ajustes.
Avanço nº 5: Criado Para o Crescimento
Legado: As configurações de várias tabelas eram rígidas – novos recursos significavam uma expansão completa do esquema.
Novo: cdr_output é uma tabela única e extensível – adicione uma coluna e o sistema se adaptará.
Impacto:
- Escala Preparada Para o Futuro: Cresce com o roadmap da 3CX sem sobrecarga relacional.
- Eficiência Operacional: Uma tabela para indexar, replicar ou particionar – criada para ser nativa da nuvem por design.
Insight de Especialistas: Sinalizadores como processed e migrated simplificam os pipelines de dados, permitindo a integração perfeita com o Apache Kafka, o AWS Athena ou o Kinesis e o Google BigQuery. A vinculação call_history_id dentro da tabela acelera as consultas de chamadas relacionadas, mantendo o desempenho reduzido e as cargas úteis de dados enxutas.
Próxima Etapa – Preparando Os Dados Para A Nuvem
Transformamos um sistema de CDR desajeitado em uma tabela de relatórios de chamadas moderna e escalável. Nossos benchmarks mostram consultas até 10 vezes mais rápidas – menos JOINs, dados mais ricos. Bons Relatórios!
Introdução ao Update 6 Alpha
Para experimentar esses novos recursos, atualize para o V20 Update 6 Alpha.
Participe da discussão sobre a V20 em nossos Fóruns. Siga-nos no X e no LinkedIn para se manter atualizado sobre as últimas notícias e lançamentos de recursos.



