Umfangreiches Upgrade des Call Data Records (CDR)-Systems in 3CX.

Im Anschluss an die gestrige Veröffentlichung des V20 Update 6 Alpha erläutert dieser Beitrag das neue Call Data Records (CDR)-System in 3CX, das wir in einer einzigen Tabelle zusammengefasst haben: cdr_output. Wir analysieren die alte Struktur, stellen das neue Design vor und beleuchten die technischen Neuerungen, die die Funktionsweise von Anrufdaten grundlegend verändern. Lesen Sie weiter, um alle Details zu erfahren.

Das Legacy-Setup: Ein fragmentierter Engpass

Ursprünglich waren die CDR-/Anrufdaten von 3CX auf vier Tabellen aufgeteilt: cl_calls, cl_participants, cl_party_info und cl_segments. Jede Tabelle speicherte unterschiedliche Elemente des Anruflebenszyklus: Zeitstempel, Teilnehmerdaten und Routingdetails. Dies erforderte komplexe SQL-JOINs, um einen vollständigen Datensatz zusammenzustellen. Dieses Mehrtabellen-Design erhöhte den Abfrageaufwand und beeinträchtigte die Leistung bei der Berichterstellung. Für Cloud-Analysen oder Echtzeitberichte reichte die Struktur einfach nicht aus.

Der neue Ansatz: cdr_output

Wir haben dies zu cdr_output überarbeitet, einer Einzeltabellenlösung, die alle Anrufdaten in einer effizienten Tabelle konsolidiert. Zeitstempel, Teilnehmer, Routing und Ergebnisse – alles ist vereinheitlicht, sodass keine JOINs mehr erforderlich sind. JOIN wird nur für Aufzeichnungsdaten benötigt, die sich nun in der eigenen Tabelle cdr_recordingsout befinden. Bei 3CX konnten wir schon immer auf Tausende von Benutzern skalieren. Diese schlanke Architektur stärkt unsere Skalierbarkeit weiter, reduziert die Komplexität, erhöht die Abfragegeschwindigkeit und bereitet 3CX auf Cloud-fähige Analysen vor. Es ist ein mutiges Umdenken in der Datentechnik, das auf Präzision und Leistung ausgelegt ist.

Fortschritt Nr. 1: Alle Ihre Daten in einer intelligenten Tabelle

Bisher: Mehrfachtabellen-JOINs drosselten die Leistung – ein echtes Problem beim Zugriff auf Anrufinformationen.
Neu: cdr_output fasst alles – Quelle, Ziel, Zeitstempel, Ergebnisse – in einer kompakten Tabelle zusammen. Die Lösung ist einfach und unkompliziert und reduziert relationales Durcheinander, sodass BI-Analysten Anrufverläufe problemlos verfolgen können.

Vorteile:

  • Schnellere Abfragen: Statt der Komplexität mehrerer Tabellen wird die Geschwindigkeit einer einzelnen Tabelle genutzt – Abfragen lassen sich unabhängig von der Datengröße problemlos skalieren.
  • Cloud-fähig: Lässt sich direkt in Data Lakes oder BI-Tools integrieren – keine zusätzliche Vorbereitung erforderlich.
  • Vorteil für Analysten: Anrufpfade sind klar und schnell nachvollziehbar, was stundenlangen Aufwand spart.

Technischer Vorteil: Indizes für cdr_id und call_history_id beschleunigen PostgreSQL für blitzschnelle Suchvorgänge, selbst bei riesigen Datensätzen. Das Beibehalten von call_history_id-Links in der Tabelle reduziert den SQL-Overhead, erhöht die Geschwindigkeit und reduziert Datenmengen.

Fortschritt Nr. 2: Jede Zeile erzählt die Geschichte

Bisher: Dünne Metadaten ließen Berichtsanalysten rätseln: Warum ist ein Anruf fehlgeschlagen? Wo ist der Kontext? Wer hat an wen weitergeleitet?

Neu: cdr_output enthält einen umfangreichen Attributsatz:

  • termination_reason (z. B. „abgebrochen“, „Zielteilnehmer beendet“)
  • termination_reason_details (z. B. „alle weiterleiten“, „anderswo abgeschlossen“)
  • creation_method (z. B. „route_to“, „divert“)
  • creation_forward_reason (z. B. „Polling“, „besetzt“)
  • continuation_reason (z. B. „Polling“, „alle weiterleiten“)

Auswirkungen:

  • Absolute Klarheit: Jede Zeile ist eine vollständige Geschichte – kein mühsames Zusammensetzen von Hinweisen mehr.
  • Intelligentere Einblicke: Leistungsstarke KPIs wie Abbruchraten oder Warteschlangenstatistiken – ganz ohne zusätzlichen Aufwand.
  • Endspiel erklärt: Sehen Sie sofort, wie, warum, wann und wer einen Anruf beendet hat.

Technischer Vorteil: termination_reason_details ermöglicht präzise Analysen (denken Sie an SQL GROUP BY von Grafana oder PowerBi), während die UUID-basierte cdr_id nun dem GUID-Standard 00000000-01db-87c1-1bab-07aa0000000d entspricht, sodass BI-Tools Datum, Uhrzeit und Anrufreihenfolge sofort erfassen können. Es ist alles verfügbar – wie ein Anruf begann, sich fortsetzte und endete.

Fortschritt Nr. 3: Wer ruft wen an? Ganz einfach

Bisher: Die Teilnehmerrollen waren schlecht definiert – die Zuordnung von Quelle und Ziel erforderte tabellenübergreifende Inferenz, Rätselraten, verschachtelte Operationen, mehrere JOINS und erhöhte die Leistung.
Neu: cdr_output behebt frühere SQL-JOIN-Probleme durch eine Reihe sauber getrennter Funktionen:

  • Quellteilnehmer-ID (wird für das Tracking verwendet)
  • Quellteilnehmer-Telefonnummer (z. B. „+1305305305“)
  • Ziel-DN-Name (z. B. „Dana White“)
  • Kennzeichnungen wie „Quellteilnehmer eingehend“ und „Zielteilnehmer ist bereits verbunden“
Quelle neue Funktionen Teilnehmer neue Funktionen
“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”

Auswirkungen:

  • Präzise Zuordnung: Die Anrufrichtung ist eindeutig – von der Quelle zum Ziel, fertig, optimierte Flussanalyse.
  • Bewältigung komplexer Szenarien: Nahtlose Verfolgung mehrerer Warteschleifenflüsse, bidirektionaler Trunks und mehrschichtiger Übertragungen in einem einzigen Schema.

Technischer Vorteil: Boolesche Statusflags spiegeln die dimensionale Modellierung eines Data Warehouse wider und optimieren die Leistung der WHERE-Klausel. Der UUID-Standard in Teilnehmer-IDs gewährleistet eine nahtlose Integration mit BI-Plattformen und gewährleistet die sofortige Bereitstellung der Call Leg-Sequenzierung.

Fortschritt Nr. 4: Zeitstempelgranularität

Bisher: cl_calls lieferte grundlegende Start-/Endzeiten; cl_segments fragmentierte den Rest.
Neu: cdr_output liefert drei präzise Zeitstempel: cdr_started_at, cdr_ended_at und cdr_answered_at.

Auswirkungen:

  • Präzise Metriken: Erfasst präzise Zeiten vom Klingeln bis zur Antwort – jede Sekunde zählt.
  • Einfache Analyse: Berechnungen in einer Tabelle ersetzen Aggregationen in mehreren Tabellen.

Expertenwissen: UTC-Zeitstempel (+00) gewährleisten regionale Konsistenz – ein Muss für globale Cloud-Implementierungen, die Daten in Tools wie Snowflake oder BigQuery einspeisen. Die GUID-basierte cdr_id verknüpft diese Zeitstempel mit Anrufabschnitten und ermöglicht BI-Tools so ein natives Verständnis von Reihenfolge und Dauer. Keine Anpassungen erforderlich.

Fortschritt Nr. 5: Auf Wachstum ausgelegt

Bisher: Multi-Table-Setups waren unflexibel – neue Funktionen führten zu einem völligen Schema-Wildwuchs.
Neu: cdr_output ist eine einzelne, erweiterbare Tabelle – fügen Sie eine Spalte hinzu, und das System passt sich an.

Auswirkungen:

  • Zukunftssichere Skalierung: Wächst mit der Roadmap von 3CX ohne relationalen Overhead.
  • Betriebseffizienz: Eine Tabelle zum Indexieren, Replizieren oder Partitionieren – von Grund auf Cloud-nativ konzipiert.

Expertenwissen: Flags wie „processed“ und „migrated“ optimieren Datenpipelines und ermöglichen eine nahtlose Integration mit Apache Kafka, AWS Athena, Kinesis und Google BigQuery. Die call_history_id-Verknüpfung innerhalb der Tabelle beschleunigt Abfragen verwandter Anrufe und sorgt so für hohe Performance und schlanke Datennutzlasten.

Nächster Schritt – Cloud-Daten vorbereiten

Wir haben ein klobiges CDR-System in eine moderne, skalierbare Call-Reporting-Tabelle umgewandelt. Unsere Benchmarks zeigen, dass Abfragen bis zu zehnmal schneller sind – weniger JOINs, umfangreichere Daten. Viel Spaß beim Reporting!

Erste Schritte mit Update 6 Alpha

Um diese neuen Funktionen auszuprobieren, aktualisieren Sie auf V20 Update 6 Alpha.

Diskutieren Sie mit uns über V20 in unseren Partner– und Kundenforen. Folgen Sie uns auf X und LinkedIn, um über Neuigkeiten und neue Funktionen auf dem Laufenden zu bleiben.