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.