CallerHub – Hilfe

Version 3.0.0.0 · Anruferkennung und Anrufanalyse für Telefonanlagen · callerhub.de

Was CallerHub tut

Ruft jemand an, fragt Ihre Telefonanlage CallerHub: „Wer ist +49 711 1234567?“ CallerHub sucht die Telefonnummer in Ihren Datenquellen (CRM, ERP, CSV-Datei, Active Directory, Microsoft 365, Exchange, REST-API) und antwortet in wenigen Millisekunden mit dem Namen. Die Telefonanlage zeigt ihn am Telefon an.

Telefonanlage STARFACE, 3CX, Asterisk, Yealink, Snom … Anruf von +49 711 1234567 CallerHub Telefonnummer vereinheitlichen Im Arbeitsspeicher suchen Regeln und Plugins anwenden Windows · Port 8080/8443 CRM / ERP (SQL) Oracle, SQL Server, MySQL … Verzeichnisse Active Directory, Microsoft 365 Dateien und APIs CSV, HubSpot, Salesforce, REST 1 · Nummer 3 · Name 2 · Listen laden Anzeige am Telefon: „Musterfirma AG – Frau Beispiel“. Die Listen liegen im Arbeitsspeicher; CallerHub antwortet daher sofort, auch wenn eine Datenbank langsam ist.
Ablauf eines Anrufs. Die Telefonnummernlisten liegen im Arbeitsspeicher; deshalb antwortet CallerHub auch dann sofort, wenn eine Datenbank langsam ist.
Eine Schnittstelle für viele AnlagenSTARFACE, 3CX, Asterisk/FreePBX, Yealink/Fanvil, Snom und jede Telefonanlage, die eine HTTP-Abfrage senden kann.
Viele Quellen, eine AntwortBis zu 10 Datenquellen in fester Reihenfolge; die erste mit Treffer liefert den Namen.
DatensparsamKeine eigene Datenbank, Telefonnummern nur im Arbeitsspeicher, Protokoll maskiert.
Auf einen BlickStartseite mit anpassbaren Kacheln, Systemzustand als Ampel, Datenfluss-Grafik, Einrichtungsassistent und Suche in der Administration.
StatistikAnfragen, Treffer und unbekannte Anrufer je Tag, Stunde, Datenquelle und Schnittstelle – im Programm und im Browser.
AnrufanalyseErreichbarkeit, verpasste Anrufe, Warte- und Gesprächszeit je Tag, Nebenstelle, Anrufer und Schnittstelle aus den Verbindungsdaten der Telefonanlage.
TelefonbuchSchreibgeschütztes LDAP-Telefonbuch für Tischtelefone und Exporte für FRITZ!Box, vCard, CSV und Yealink.
Browser-ZugangStatistik, Anrufanalyse und CRM-Link im Browser, geschützt durch einen Zugangsschlüssel.
ÜberwachungPrüfungen für Nagios, Icinga, Checkmk, PRTG, Zabbix, Prometheus und Grafana mit wählbaren Kennzahlen.
Regeln und PluginsRegeln für den Anzeigenamen, Sperr- und VIP-Listen, Geschäftszeiten und eigene Erweiterungen in einem abgeschotteten Prozess.
BenachrichtigungenE-Mail, Webhook und Windows-Ereignisprotokoll, wenn eine Datenquelle oder die Schnittstelle ausfällt.
Sicherer BetriebWindows-Dienst mit virtuellem Dienstkonto, HTTPS mit selbst erzeugtem Zertifikat, Sperre nach Fehlversuchen, verschlüsselte Schlüssel.

Schnellstart

  1. Kopieren Sie den Programmordner CallerHub auf den Server, z. B. nach C:\CallerHub (siehe Installation).
  2. Starten Sie CallerHub.exe. Beim ersten Start öffnet sich der Einrichtungsassistent.
  3. Schritt 2: Übernehmen Sie das Beispiel-Telefonbuch Samples\customers.csv (oder wählen Sie eine eigene CSV-Datei; für andere Aufbauten wie einen DATEV-Export verwenden Sie später Spalten zuordnen). Schritt 3: Wählen Sie die Telefonanlage und tragen Sie den Port (z. B. 8080) und die IP-Adresse der Telefonanlage (z. B. 192.168.10.20) ein. Schritt 4: Führen Sie eine Testabfrage mit 030 1234560 aus – das Ergebnis lautet „Testkunde GmbH - Frau Beispiel“.
  4. Tragen Sie die angezeigte Adresse und den API-Key in der Telefonanlage ein (Anleitung je Telefonanlage unter Schnittstellen → Telefonanlage, siehe Telefonanlagen einrichten).
  5. Später: Legen Sie auf der Seite Datenquellen mit Datenquelle hinzufügen die echte Datenquelle an (z. B. SQL Server), klicken Sie auf Verbindung testen und dann auf Speichern und übernehmen. Wie Sie die passende Abfrage finden, steht unter Abfrage für die eigene Datenbank finden.
Einrichtungsassistent
Assistent, Schritt 2: woher die Namen kommen. Sie öffnen den Assistenten jederzeit über Menü → Einrichtungsassistent ….

Installation (nur der Ordner CallerHub)

CallerHub benötigt weder einen Installer noch eine .NET-Installation: CallerHub.exe enthält die .NET-10-Laufzeit; die Datenbanktreiber liegen im Unterordner Drivers. Es genügt der Programmordner CallerHub aus der Lieferung. Alles, was das Programm schreibt, speichert es in Unterordnern dieses Ordners.

Voraussetzungen

PunktAnforderung
BetriebssystemWindows 10/11 oder Windows Server 2016, 2019, 2022, 2025 (64 Bit; empfohlen: Windows Server 2019 oder neuer). .NET 10 unterstützt außerdem Windows Server 2012 und 2012 R2; diese erhalten aber nur noch über kostenpflichtige Erweiterungen Sicherheitsupdates. Windows 7, 8.1 und Server 2008 R2 werden nicht mehr unterstützt; siehe Windows.
.NETkeine Installation nötig: Die .NET-10-Laufzeit ist in CallerHub.exe eingebettet.
RechteNormaler Benutzer mit Schreibrecht auf den Programmordner. Administratorrechte sind nur einmalig für Port-Reservierung, HTTPS-Zertifikat, Firewall-Regel und Windows-Dienst nötig (das Programm fragt dann danach).
ArbeitsspeicherGrob einige Hundert Byte je Telefonnummer; 100.000 Telefonnummern ≈ 50–100 MB (den tatsächlichen Wert im Task-Manager prüfen).
NetzEingehend: Port der Schnittstelle (z. B. 8080 HTTP oder 8443 HTTPS) von der Telefonanlage. Ausgehend: zu den Datenquellen (z. B. 1433 SQL Server, 389/636 LDAP, 443 Microsoft 365/REST).

Ordner und Dateien

Pfad (im Ordner CallerHub)InhaltWer schreibt?
CallerHub.exeProgramm (eine Datei mit der .NET-10-Laufzeit sowie den Komponenten für SQL Server und ODBC)nur Sie (Update)
README.txt, README.de.txt, LICENSE.txt, LICENSE.de.txt, PRIVACY.txt, Licenses\Kurzanleitung (Englisch, Deutsch); Lizenzvertrag und Datenschutzhinweis von CallerHub; Lizenzen der enthaltenen Fremdkomponenten (Übersicht OVERVIEW.txt)nur Sie
Drivers\Treiber und native Bibliotheken: Oracle.ManagedDataAccess.dll (Oracle, unverändert), Microsoft.Data.SqlClient.SNI.dll (SQL Server), msalruntime.dll (Microsoft-Anmeldung); CallerHub lädt sie von hier (siehe Technischer Hintergrund)nur Sie
Plugins\Plugin-Schnittstelle CallerHub.Plugins.dll und Beispiel-Plugins CallerHub.Sample.dllnur Sie
Samples\customers.csvBeispiel-Telefonbuchnur Sie
CallerHub.settings.xmlEinstellungen; Passwörter mit Windows DPAPI verschlüsseltCallerHub beim Speichern
Logs\lookup-YYYYMMDD.log, Logs\trace-YYYYMMDD-HHMMSS.logTagesprotokolle (Standard: 90 Tage); Dateien einer erweiterten AufzeichnungCallerHub
Statistics\statistik-YYYY-MM.csvStatistik je Monat (Standard: 24 Monate)CallerHub
Backups\CallerHub.settings-YYYYMMDD-HHMMSS.xmlSicherungen vor jedem Speichern (höchstens 20)CallerHub
Help\, Temp\Hilfeseiten zur Anzeige, Ergebnisdateien von VerwaltungsaufgabenCallerHub

Ist der Programmordner nicht beschreibbar (z. B. unter C:\Program Files ohne Rechte), weicht CallerHub nach %LOCALAPPDATA%\CallerHub aus und zeigt dies im Systemzustand an. Empfehlung: Verwenden Sie einen eigenen Ordner mit Schreibrecht für den Dienstbenutzer, z. B. C:\CallerHub oder D:\Dienste\CallerHub.

Schritte

  1. Kopieren Sie den Programmordner nach C:\CallerHub (ZIP-Archiv entpacken oder einrichten.cmd aus der Lieferung ausführen). Wählen Sie bei einem ZIP-Archiv vorher in den Dateieigenschaften „Zulassen“ oder führen Sie in PowerShell aus: Get-ChildItem -Recurse C:\CallerHub | Unblock-File. Das Programm ist nicht signiert; Windows SmartScreen kann beim ersten Start eine Warnung anzeigen.
  2. Starten Sie CallerHub.exe → Assistent. Ohne Assistent: Wählen Sie unter Datenquellen „Erste Datenquelle hinzufügen“, richten Sie unter Schnittstellen die Telefonanlage ein und klicken Sie auf Speichern und übernehmen.
  3. Port öffnen: Administration → Systemzustand zeigt eine fehlende Port-Reservierung oder Firewall-Regel mit einer Schaltfläche zum Beheben an (Rückfrage nach Administratorrechten).
  4. Optional (erweiterter Modus, Edition Full): Administration → Betrieb → Als Dienst installieren (läuft ohne Anmeldung, Dienstname CallerHub).

Update auf eine neuere Version (ab 3.0.0.0)

  • Beenden Sie CallerHub bzw. stoppen Sie den Dienst, kopieren Sie den neuen Ordnerinhalt in den bisherigen Programmordner und starten Sie CallerHub bzw. den Dienst wieder. Einstellungen, Protokolle und Statistik bleiben erhalten.
  • Kopieren Sie den vollständigen Ordnerinhalt einschließlich des Unterordners Drivers: Der Oracle-Treiber und die nativen Bibliotheken liegen jetzt dort statt direkt neben CallerHub.exe. Reste früherer Versionen – der Ordner native und eine Datei Oracle.ManagedDataAccess.dll direkt neben CallerHub.exe – werden nicht mehr benötigt; Sie können sie löschen, sobald CallerHub beendet ist.
  • Das Beispiel-Telefonbuch heißt jetzt Samples\customers.csv (bisher kunden.csv). Einstellungen, die noch auf kunden.csv verweisen, verwenden automatisch die neue Datei.
  • Ersetzungen für den Anzeigenamen verwenden jetzt das Semikolon als Trennzeichen (search;replace), wie die Sperrliste und die VIP-Liste. Vorhandene Zeilen mit => funktionieren weiterhin.

Deinstallation

Entfernen Sie den Dienst (Administration → Betrieb → Dienst entfernen), schalten Sie Mit Windows-Anmeldung starten (minimiert) aus, beenden Sie das Programm (Menü → Beenden (Schnittstelle stoppt) oder Infobereich → Beenden) und löschen Sie den Ordner. Optional entfernen Sie die Firewall-Regel CallerHub, die URL-Reservierung (netsh http delete urlacl url=http://+:8080/) und das HTTPS-Zertifikat (netsh http delete sslcert ipport=0.0.0.0:8443).

Wo Daten liegen – und wie Administratoren das prüfen

Zusage: CallerHub speichert Daten ausschließlich im eigenen Programmordner (Unterordner Logs, Statistics, Backups, Help, Temp und die Datei CallerHub.settings.xml) und im Arbeitsspeicher des laufenden Prozesses. Es legt keine Datenbank an und schreibt nicht in Ihre Datenquellen. Alles lässt sich unter Administration → Datenschutz (Übersicht) und mit Menü → Ordner öffnen → Programmordner einsehen.

OrtWasWie langeEinsehen
Arbeitsspeicher (RAM)Telefonnummernlisten (Telefonnummer, Anzeigename, Link), Zwischenspeicher der Direktabfrage, letzte 500 Zugriffe auf der Startseitebis zur nächsten Aktualisierung bzw. bis zum BeendenStartseite, Testabfrage
CallerHub.settings.xmlEinstellungen; Passwörter und Schlüssel mit Windows DPAPI verschlüsseltbis zur ÄnderungTexteditor (Passwörter erscheinen verschlüsselt)
Logs\Zugriffe (Zeit, IP, Telefonnummer maskiert, Name, Ergebnis), Fehler; Dateien trace-*.log einer erweiterten Aufzeichnung (Schlüssel und Passwörter maskiert)Standard 90 Tage (Einstellung „Protokolle aufbewahren“)Menü → Fehleranalyse → Protokoll anzeigen
Statistics\Zeit, IP, Ergebnis, Dauer, Quelle, angerufene Telefonnummer, Benutzer, maskierte Telefonnummer, nicht umkehrbarer Hashwert; Name nur, wenn ausdrücklich eingeschaltetStandard 24 MonateSeite Statistik, Export als CSV
Backups\Kopien der Einstellungen vor jedem Speicherndie letzten 20Administration → Betrieb
Windows (nur auf Wunsch)Dienst CallerHub, Autostart-Eintrag HKCU\Software\Microsoft\Windows\CurrentVersion\Run\CallerHub, Ereignisquelle CallerHub (Anwendungsprotokoll), Firewall-Regel CallerHub, URL-Reservierung und Zertifikatsbindung in HTTP.sysbis zum Entfernensiehe Prüfschritte

Prüfschritte für Administratoren

  1. Dateizugriffe: Starten Sie Sysinternals Process Monitor, setzen Sie die Filter Process Name is CallerHub.exe und Operation is WriteFile, führen Sie einige Testanrufe durch und speichern Sie einmal. Alle Pfade liegen im Programmordner (Ausnahme: der Rückfallordner %LOCALAPPDATA%\CallerHub, falls der Programmordner nicht beschreibbar ist – das meldet der Systemzustand).
  2. Geöffnete Dateien: handle.exe -p CallerHub.exe (Sysinternals) oder Ressourcenmonitor → CPU → Zugeordnete Handles → Suche nach „CallerHub“.
  3. Netzverbindungen: PowerShell Get-NetTCPConnection -OwningProcess (Get-Process CallerHub).Id; ältere Systeme: netstat -ano | findstr <PID>. Erwartet: der eigene Port von CallerHub (lauschend), Verbindungen zu den eingetragenen Datenquellen und, bei Benachrichtigungen, zum SMTP-Server bzw. Webhook. Discovery-Verbindungen erscheinen nur nach einem ausdrücklichen Start.
  4. Registry und Windows-Objekte: reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v CallerHub, sc.exe query CallerHub, netsh http show urlacl, netsh http show sslcert, Get-NetFirewallRule -DisplayName CallerHub.
  5. Keine Datenbank: CallerHub öffnet Datenquellen mit dem eingetragenen Benutzer nur lesend (SELECT, LDAP-Suche, GET). Empfehlung: Legen Sie einen Datenbankbenutzer nur mit Leserecht auf die benötigten Tabellen bzw. Sichten an; dann ist Schreiben technisch ausgeschlossen.
  6. Aufbewahrung: CallerHub löscht ältere Dateien in Logs und Statistics gemäß den Einstellungen beim Start der Schnittstelle und danach einmal täglich (beim ersten Zugriff eines Tages). Prüfen: Get-ChildItem C:\CallerHub\Logs | Sort-Object LastWriteTime | Select-Object -First 3.

Datenschutz (DSGVO) und EU-Rechtsrahmen

Dieser Abschnitt ist eine technische Beschreibung und keine Rechtsberatung. Ob und auf welcher Rechtsgrundlage die Verarbeitung zulässig ist, beurteilt der Verantwortliche – im Zweifel gemeinsam mit dem Datenschutzbeauftragten. Rechtslage und Auslegung können sich ändern; prüfen Sie den aktuellen Stand.

Datenschutz-Übersicht
Administration → Datenschutz: Die Übersicht folgt den aktuellen Einstellungen (Quellen, Module, Aufbewahrung). „Vorlage Verarbeitungsverzeichnis kopieren“ erzeugt einen Entwurf für Art. 30 DSGVO.

Aktuelle Einstellungen anzeigen … auf derselben Karte zeigt die gespeicherte Einstellungsdatei, in der alle Passwörter, Schlüssel und Zugangsdaten durch *** ersetzt sind, zusammen mit dem Verschlüsselungsstatus (z. B. „Verschlüsselung: Kennwörter und API-Keys verschlüsselt (Windows DPAPI).“). So prüfen Sie, was gespeichert ist, ohne die Datei zu öffnen.

Wo personenbezogene Daten verarbeitet werden

SpeicherartIn CallerHub
DatenbankKeine eigene. Ihre Datenquellen (CRM, ERP, Verzeichnis) bleiben führend und werden nur gelesen.
Arbeitsspeicher (RAM)Telefonnummer, Anzeigename und optional ein Link je Kontakt; Zwischenspeicher einzelner Abfragen; letzte 500 Zugriffe. Nach dem Beenden gelöscht.
DateienNur im Programmordner: Protokoll (Telefonnummer standardmäßig maskiert, z. B. +49711456****), Statistik (ohne vollständige Telefonnummer, ohne Namen, sofern nicht eingeschaltet), Einstellungen (Passwörter verschlüsselt).
ÜbermittlungAn die Telefonanlage: Name (und optional Link) zur angefragten Telefonnummer. An Cloud-Datenquellen (Microsoft 365, HubSpot, Salesforce): Anmeldung und Abruf der Liste bzw. – bei Direktabfrage – die Telefonnummer. Benachrichtigungen enthalten keine Telefonnummern. KI-Assistent: nur auf Klick über die Zwischenablage, anonymisiert.

Bezug zu Vorschriften

VorschriftWas CallerHub dazu beiträgtWas der Verantwortliche klärt
Art. 5 Abs. 1 lit. c und e DSGVO (Datenminimierung, Speicherbegrenzung)keine eigene Datenbank, Maskierung, einstellbare Aufbewahrung (Protokoll in Tagen, Statistik in Monaten), Namen in der Statistik standardmäßig ausangemessene Aufbewahrungsfristen
Art. 6 DSGVO (Rechtsgrundlage)–z. B. berechtigtes Interesse an der Anzeige bekannter Geschäftskontakte
Art. 13/14 DSGVO (Informationspflichten)Übersicht und Vorlage als GrundlageDatenschutzhinweise ergänzen
Art. 25 DSGVO (Datenschutz durch Technikgestaltung und durch datenschutzfreundliche Voreinstellungen)Discovery und Plugins standardmäßig aus, Browser-Zugang nur mit eigenem Schlüssel, IP-FreigabenVoreinstellungen beibehalten oder begründet ändern
Art. 28 DSGVO (Auftragsverarbeiter)listet Cloud-Datenquellen und gehostete Telefonanlagen in der Übersicht aufVerträge mit Anbietern (z. B. STARFACE Cloud, Microsoft 365, HubSpot)
Art. 30 DSGVO (Verzeichnis von Verarbeitungstätigkeiten)„Vorlage Verarbeitungsverzeichnis kopieren“Eintrag prüfen und übernehmen
Art. 32 DSGVO (Sicherheit der Verarbeitung)API-Key, IP-Freigabe, HTTPS-Assistent, DPAPI-Verschlüsselung, abgeschottete PluginsHTTPS bei Zugriff über das Internet, Leserechte der Datenbankbenutzer
Kapitel V DSGVO (Art. 44 ff., Übermittlungen an Drittländer)kennzeichnet Cloud-Dienste in der ÜbersichtStandort der Anbieter und Garantien
Art. 15 und 17 DSGVO (Auskunftsrecht, Recht auf Löschung)Quelle der Daten ist Ihr CRM: Ein Löschen dort wirkt nach der nächsten Aktualisierung; Protokoll und Statistik laufen nach ihrer Aufbewahrungsfrist abProzess für Anfragen
Richtlinie 2002/58/EG (ePrivacy), Art. 8 (Anzeige der Rufnummer des Anrufers und deren Unterdrückung)Das STARFACE-Modul fragt bei unterdrückter Rufnummer nicht nach; CallerHub verarbeitet nur übermittelte TelefonnummernEinstellung der Telefonanlage

Hinweis zum KI-Assistenten: CallerHub ruft keine KI-Schnittstelle auf. CallerHub anonymisiert den Text vor dem Kopieren (Telefonnummern maskiert, E-Mail-Adressen ersetzt, IP-Adressen gekürzt, Passwörter und Schlüssel entfernt) und zeigt ihn im Dialog zur Prüfung an. Sie fügen ihn selbst in den Chat ein; dafür gelten die Bedingungen Ihres Chat-Zugangs.

Datenwege je Einstellung

Die Kachel Datenfluss kompakt auf der Startseite und ihre Schaltfläche Details … zeigen die Wege für die aktuellen Einstellungen (auch vor dem Speichern); die vollständige Grafik steht auch als Kachel Datenfluss ausführlich zur Verfügung, die Sie mit Drucken … drucken, z. B. für die Systemdokumentation. Die folgenden Beispiele zeigen typische Aufbauten; Pfeil = Richtung des Verbindungsaufbaus.

Datenfluss auf der Startseite
Ausführlicher Datenfluss für eine CSV-Datei als Quelle mit eingeschalteten Plugins. Oben steht die Anfrage, darunter in Blau die Antwort.

A · STARFACE Cloud, Datenbank im eigenen Netz

STARFACE Cloud Internet Firewall NAT 8443 → CallerHub CallerHub 192.168.10.5:8443 HTTPS SQL Server sql01:1433 HTTPS 8443 TDS 1433 · alle 15 min Anfrage: Telefonnummer, angerufene Nr., API-Key → Antwort: Name. Nur Port 8443 von der STARFACE-Adresse wird weitergeleitet.
Eingehend: nur Port 8443 von den IP-Adressen der STARFACE Cloud. Ausgehend: nur zum SQL Server im eigenen Netz.

B · Telefonanlage im eigenen Netz, Active Directory und CSV

3CX / Asterisk 192.168.10.20 CallerHub 192.168.10.5:8080 Active Directory dc01:636 (LDAPS) CSV-Datei \\fs01\phone\customers.csv HTTP 8080 · JSON/Text LDAP-Suche SMB 445
Alles im eigenen Netz; HTTP ist hier üblich. CallerHub liest die CSV-Datei neu ein, sobald sie sich ändert.

C · Cloud-Quellen, Benachrichtigungen, Browser und Überwachung

Browser (Teamleitung) /stats mit Zugangsschlüssel Überwachung /check, /prtg, /status, /metrics CallerHub ausgehend nur HTTPS/SMTP Microsoft 365 (Graph) graph.microsoft.com:443 HubSpot / Salesforce REST, Port 443 E-Mail / Teams / Slack SMTP 587/465, Webhook 443 OAuth-Token Störungen, Berichte
CallerHub fragt Cloud-Quellen über HTTPS ab (Auftragsverarbeitung und Drittlandübermittlung prüfen, siehe Datenschutz). Browser und Überwachung sind eingehende Zugriffe mit eigenem Zugangsschlüssel.

Alle Verbindungen

VerbindungRichtungPort (Beispiel)InhaltWann
Telefonanlage → CallerHubeingehend8080 HTTP / 8443 HTTPSTelefonnummer, optional angerufene Telefonnummer und Benutzer, API-Key → Name, optional Linkje Anruf
CallerHub → SQL-Datenbankausgehend1433, 1521, 3306, 5432Anmeldung, SELECT → Telefonnummern und NamenListe im Intervall bzw. je Anruf
CallerHub → LDAP/ADausgehend389 / 636Anmeldung, Suche → Telefonnummern und Namenim Intervall
CallerHub → Microsoft 365, EWS, RESTausgehend443Token-Anfrage, Abruf der Kontakteim Intervall bzw. je Anruf
CallerHub → SMTP / Webhookausgehend587 / 443Störung und Behebung, ohne Telefonnummernbei Störung
Browser → CallerHubeingehendwie Schnittstelle/stats, /open, /metrics, /status mit Zugangsschlüsselbei Aufruf
CallerHub → nuget.orgausgehend443Download des Oracle-Treibersnur, wenn der Treiber in Drivers fehlt und Sie den Download bestätigen
Netzwerk-Discoveryausgehend1433, 1521, 3306, 5432, 389, 636, 3268, 587, 465, 25, 5060, 5061, 1012, 5038, 1080; UDP 1434, 1900Verbindungsversuch ohne Anmeldungnur nach ausdrücklichem Start

Oberfläche und Menü

Die Abbildungen zeigen Beispieldaten (Testnummern, IP-Adressen aus den Dokumentationsbereichen 192.0.2.0/24, 198.51.100.0/24 und 203.0.113.0/24, erzeugte Statistik). Schriftarten können unter Windows leicht abweichen.

Startseite (Dashboard)

Es gibt keinen Reiter „Start“: Ein Klick auf das CallerHub-Logo oder den Namen in der Titelleiste zeigt die Startseite. Daneben liegen die Reiter Schnittstellen, Datenquellen, Statistik, Anrufanalyse (nur mit dem Modul) und Administration. Bei ungespeicherten Änderungen erscheint unten eine kontrastreiche Leiste mit Verwerfen und Speichern und übernehmen; ohne Änderungen ist die Leiste ausgeblendet. Meldungen erscheinen in einem eigenen Dialog von CallerHub ohne Systemton (Strg+C kopiert den Text). Maximiert füllt das Fenster den Arbeitsbereich seines Bildschirms und lässt die Taskleiste frei.

Statusseite
Startseite: Systemzustand, Kennzahlen, Datenquelle, Testabfrage und die letzten Zugriffe. Die Plugins „Geschäftszeiten“ und „Herkunft“ ergänzen hier die Namen.

Die Startseite ist ein Dashboard aus Kacheln in zwei Spalten: links eine breite, rechts eine schmale. In einem Fenster schmaler als etwa 1100 px folgen die Kacheln der rechten Spalte unter der linken Spalte; ist das Fenster niedrig, lässt sich die Seite scrollen.

KachelStandardInhalt
Einrichtung (nur solange etwas fehlt)eingeblendet, linksder nächste offene Einrichtungsschritt; die Kachel verschwindet, sobald alles eingerichtet ist
Kennzahleneingeblendet, linksseit dem Start: Anfragen, Treffer, Fehler / abgelehnt; im erweiterten Modus zusätzlich Unbekannt und Ø Antwortzeit. Verfügbarkeitsprüfungen (/health) zählen nicht mit.
Letzte Zugriffeeingeblendet, linksbis zu 500, die neuesten oben; bei mehreren Schnittstellen nennt das Protokoll deren Namen. Grau = unbekannt oder Verfügbarkeitsprüfung, orange = abgelehnt, rot = Fehler. Zugreifende IP-Adressen: alle Absender seit dem Start; Zu erlaubten IP-Adressen hinzufügen übernimmt die IP-Adresse einer Zeile.
Datenfluss ausführlichausgeblendetvollständige Grafik, welche Daten wohin fließen; Drucken … druckt sie
Datenfluss kompakteingeblendet, rechtsTelefonanlagen → CallerHub → Datenquellen, jeweils mit Zustand (z. B. Bereit, Unvollständig); Details … öffnet die vollständige Grafik
Testabfrageeingeblendet, rechtsbeliebige Telefonnummer, z. B. 0711 1234567 oder +41 44 123 45 67; fragt alle aktiven Quellen ab
Zustand der DatenquellenausgeblendetZustand jeder Datenquelle
Anfragen der letzten 7 TageausgeblendetAnfragen und Treffer je Tag

Anpassen … oben auf der Startseite öffnet den Bereich Kacheln anzeigen: Ein Kästchen je Kachel blendet sie ein oder aus, Standard wiederherstellen stellt die obige Anordnung wieder her, und Fertig schließt den Bereich. Solange der Bereich offen ist, trägt jede Kachel in der Mitte ihres oberen Rands einen Griff ⠿: Ziehen Sie daran, um die Kachel an eine andere Stelle oder in die andere Spalte zu verschieben; eine Linie zeigt, wo sie landet. CallerHub speichert die Anordnung sofort – Speichern und übernehmen ist nicht nötig.

  • Statusanzeige rechts oben: Läuft (grün), Wartet auf Anfragen (grün: die Schnittstelle läuft, aber seit dem Start hat noch keine Telefonanlage angefragt), Datenfehler (orange: die Schnittstelle läuft, eine Datenquelle meldet einen Fehler), Fehler (rot), Gestoppt, Nicht eingerichtet. Ein Klick zeigt Ursache und Vorschlag.
  • Systemzustand oben (im erweiterten Modus mit Starten, Stoppen, Neu laden, Cache leeren): Kurzfassung der Ampel aus der Administration; ein Klick öffnet die Details.

Die Schaltfläche ☰ links oben öffnet das Menü. Seine Punkte sind nach Aufgaben gruppiert (Einstellungen, Betrieb, Ansicht, Hilfe) und durch Linien getrennt; in dieser Hilfe bezieht sich „Menü → …“ darauf.

GruppePunkte
EinstellungenEinstellungen speichern (Strg+S), Änderungen verwerfen, Sichern und übertragen (Einstellungen exportieren …, Einstellungen importieren …, Sicherung wiederherstellen …)
BetriebSchnittstelle (Starten, Stoppen, Telefonnummernlisten neu laden, Cache leeren, Adresse für die Telefonanlage kopieren, Statistik im Browser öffnen, HTTPS einrichten …, Windows-Dienst verwalten …), Ordner öffnen (Programmordner, Protokolle, Statistik, Sprachen), Fehleranalyse (Debug-Protokollierung, Protokoll anzeigen, Protokolldatei öffnen, Erweiterte Aufzeichnung starten …, Diagnosepaket erstellen und ansehen …, Telefonanlagen-Simulator (Test und Lasttest) …; siehe Fehleranalyse)
AnsichtSprache / Language, Darstellung (Wie Windows, Hell, Dunkel), Erweiterte Einstellungen anzeigen
HilfeHilfe anzeigen (F1, auf Englisch oder Deutsch), Befehl suchen … (Strg+K), Einrichtungsassistent …, Datenschutz und Speicherorte, KI-Assistent (Claude-Chat), Über CallerHub (Version, interne Build-Nummer, z. B. b415 · 8e8e5d4 · 2026-10-19 15:30 · preview, Links zu Hilfe, Datenschutz und Lizenz; Kopieren kopiert alles für eine Supportanfrage)
(Ende)In den Infobereich (läuft weiter), Beenden (Schnittstelle stoppt)

Befehlssuche (Strg+K)

Strg+K öffnet ein Suchfeld über alle Seiten, Karten und Aktionen. Beispiele: https → HTTPS-Assistent, block → Sperrliste, plugin → Plugins, port → Server (Port und Start). Die Pfeiltasten wählen einen Eintrag, Enter springt hin.

Eingaben werden sofort geprüft

Leere Felder zeigen ein graues Beispiel (z. B. „z. B. dc01.firma.local“). Ungültige Eingaben färben das Feld rot; der Tooltip nennt den Grund, z. B. „'192.168.10' ist keine IP-Adresse. Beispiel: 192.168.10.20 oder 203.0.113.0/28“. Speichern springt zum ersten fehlerhaften Feld und markiert alle fehlenden Felder derselben Funktion. Das Mausrad verändert keine Auswahllisten und Zahlenfelder; es scrollt die Seite. Eingeklappte Karten öffnen sich mit der Tabulatortaste, nicht jedoch, wenn sich eine Schaltfläche selbst deaktiviert.

Beenden

Das Schließen des Fensters lässt die Schnittstelle im Infobereich weiterlaufen. Menü → Beenden (Schnittstelle stoppt) bzw. Infobereich → Beenden stoppt Schnittstelle, Zeitgeber, Plugins und alle Hintergrundaufgaben und beendet den Prozess vollständig; danach lässt sich der Programmordner löschen oder ersetzen.

Dunkle Darstellung
Dunkle Darstellung (Menü → Darstellung → Dunkel).

Einfacher und erweiterter Modus

Im einfachen Modus (Standard) zeigt jede Seite nur, was für den Betrieb nötig ist. Erweiterte Einstellungen anzeigen (Menügruppe Ansicht oder der gleichnamige Schalter in der Speicherleiste) blendet die übrigen Optionen ein; die Wahl wird sofort gespeichert. Ausgeblendete Werte bleiben wirksam. Der erweiterte Modus gehört zur Vollversion und zur Testversion.

SeiteEinfacher ModusZusätzlich im erweiterten Modus
Datenquelleneine Karte je Quelle mit Schritt 1 Verbindung und Schritt 2 TelefonnummernlisteSchritt 3 Anzeige und Link (Präfix vor dem Namen, Link zum Datensatz), Schritt 4 Regeln dieser Datenquelle (Anzeigename, Sperr- und VIP-Liste); eigene Verbindungszeichenfolge
Schnittstelleneine Karte je Telefonanlage–
AdministrationSystemzustand, Server, Benachrichtigungen, Lizenz, Module, Datenschutz und die Karte Weitere Einstellungen, die auf den erweiterten Modus verweistBetrieb, Sicherheit, die Modulkarten (Statistik, Anrufanalyse, globaler Anzeigename, Sperr- und VIP-Liste, Browser-Zugang, Plugins, Netzwerk-Discovery) und Erweitert; in Server: vertrauenswürdige Reverse Proxys
StartseiteKennzahlen Anfragen, Treffer, Fehler / abgelehntKennzahlen Unbekannt und Ø Antwortzeit; Starten, Stoppen, Neu laden, Cache leeren
Statuszeile (unten im Fenster)nur Fehlerauch Hinweise und Warnungen

Sprachen

Englisch (Standard) und Deutsch sind eingebaut. Weitere Sprachen liegen als Textdateien im Ordner Languages des Programmordners (z. B. lang_fr.txt, lang_ru.txt, lang_zh.txt). Jede Datei lang_xx.txt erscheint nach einem Neustart automatisch im Untermenü Sprache / Language (Menügruppe Ansicht). Das Untermenü trägt die Überschrift „Select Language“ und listet zuerst Englisch, dann Deutsch und die übrigen Sprachen in alphabetischer Reihenfolge, jeweils mit Flagge und englischem Namen in Klammern, z. B. „Deutsch (German)“. Den Ordner öffnen Sie über Menü → Ordner öffnen → Sprachen.

Eine neue Sprache (oder Darstellung) wird nach einem Neustart des Programms wirksam. CallerHub fragt im Dialog „Select Language“ – auf Englisch und in der gewählten Sprache –, ob Sie Jetzt neu starten oder Später neu starten möchten. Sprachen, die von rechts nach links geschrieben werden (z. B. Arabisch oder Hebräisch), werden von rechts nach links angezeigt.

  • Neue Sprache: Kopieren Sie eine vorhandene Datei (z. B. nach lang_es.txt), passen Sie die Kopfzeilen # Language: (Name im Menü), # Culture: (Datums- und Zahlenformat, z. B. es-ES), # Source: en und optional # Font: an und übersetzen Sie in jeder Zeile den Text rechts vom Tabulator. Der englische Text links ist der Schlüssel und bleibt unverändert; Platzhalter wie {0} und \n bleiben erhalten. Webadressen, Pfade, Dateinamen und technische Bezeichnungen werden nicht übersetzt. Speichern Sie die Datei als UTF-8. Einzelheiten stehen in Languages\README.txt.
  • Fehlt eine Übersetzung, erscheint der englische Text.
  • lang_de.txt enthält die deutschen Texte (links Englisch, rechts Deutsch); Änderungen rechts verbessern die deutsche Anzeige.
  • Die Hilfe gibt es derzeit nur auf Englisch; die deutsche Hilfe folgt, sobald der englische Text feststeht. Alle Sprachen öffnen die englische Hilfe.

Französisch, Russisch und Chinesisch sind maschinell übersetzt und sollten vor einem Einsatz bei Kunden von Muttersprachlern geprüft werden. Chinesisch verwendet die Windows-Schrift Microsoft YaHei UI.

Kacheln der Startseite

Anpassen … rechts oben auf der Startseite schaltet Kacheln ein und aus und verschiebt sie (am Griff ⠿ ziehen). In Version 3.0 hinzugekommene Kacheln:

  • Statistik: Anfragen der letzten 7 Tage – Balken je Tag (dunkel: Treffer) und der Link Ausführliche Statistik …. Mit Administration → Modul: Statistik → Nicht als Menüpunkt, sondern als Kachel auf der Seite CallerHub zeigen verschwindet der Reiter Statistik, und diese Kachel wird eingeschaltet.
  • Protokoll (kompakt, live) – die neuesten 12 Informations-, Warn- und Fehlerzeilen, aktualisiert sich jede Sekunde; ohne Schaltflächen für Suche, Neu laden, Ordner oder Details (die vollständige Protokollansicht liegt im Menü). Zugriffe stehen unter „Letzte Zugriffe“, nicht hier.

Administration und Systemzustand

Alles Technische liegt auf der Seite Administration. Das Suchfeld mit der Lupe oben filtert bereits während der Eingabe: Nur Karten, deren Titel, Beschreibung, Beschriftungen oder Optionen den Text enthalten, bleiben sichtbar und geöffnet (z. B. port, e-mail, plugin; Esc leert die Suche). Eingeklappte Karten zeigen zur Orientierung ein großes Symbol. Ganz oben steht der Systemzustand (auch oben auf der Startseite): alle Dienste, Rechte und sonstigen Belange als Ampel. Er wird beim Start, nach dem Speichern, mit „Erneut prüfen“ und alle 5 Minuten geprüft.

Systemzustand
Systemzustand: in Ordnung, Hinweis/Warnung, Fehler, nicht prüfbar oder ohne Wertung. Rechts die passende Aktion; „Mit KI besprechen“ bereitet eine anonymisierte Frage vor.

Bei einer unvollständigen oder ungültigen Einstellung zeigt der Systemzustand einen Eintrag wie „Datenquelle 'CRM' unvollständig – übersprungen“, „Schnittstelle unvollständig“ oder „Modul unvollständig – nicht aktiv“ mit der Schaltfläche Öffnen: Sie öffnet die betroffene Seite und Karte und umrahmt das Feld rot. Nach dem Speichern umrahmt CallerHub zudem alle Felder mit einem Problem in der geöffneten Karte.

BereichGeprüft wird (Auszug)
Schnittstelleläuft im Programm oder als Dienst, gestoppt, Startfehler, Dienst und Programm gleichzeitig (Port-Konflikt)
NetzwerkPort frei bzw. geöffnet, doppelt vergebene Ports, URL-Reservierung (netsh http), Windows-Firewall-Regel CallerHub mit allen Ports und Absendern (siehe Prüfungen des Systemzustands)
SicherheitIP-Freigabe je Schnittstelle aktiv oder alle Absender erlaubt, HTTP/HTTPS, Zertifikat gebunden und Ablaufdatum (Warnung 30 Tage vorher)
DatenquellenQuelle bereit mit Anzahl der Telefonnummern, letzter Fehler, Oracle-Treiber, Einstellungen vollständig, letzte Anfrage der Telefonanlage
Rechte und SpeicherProgrammordner beschreibbar (sonst Rückfallordner), freier Speicher, .NET-Version
BetriebBenachrichtigungen, Debug-Protokollierung aktiv, Discovery eingeschaltet, Reste der Vorgängerversion

Prüfungen des Systemzustands

Der Systemzustand prüft alle 5 Minuten und nach dem Speichern; die Anzeige aktualisiert sich an Ort und Stelle ohne Flackern. Einträge mit einer Schaltfläche lassen sich direkt beheben:

EintragSchaltflächeWas geschieht
Windows-Firewall: keine Regel 'CallerHub'Regel anlegenlegt eine eingehende Regel für alle Ports an, die CallerHub öffnet (Schnittstelle, LDAP-Telefonbuch, Live-Empfänger), sowie für die erlaubten Absender der Schnittstellen, des Browser-Zugangs und der Überwachung (Windows fragt nach Administratorrechten)
Windows-Firewall: Regel 'CallerHub' passt nicht zur EinrichtungRegel anpassender Regel fehlt ein Port (z. B. ein neuer Empfänger) oder ein Absender (z. B. die Adresse des Überwachungsservers); die Regel wird mit den aktuellen Werten neu angelegt
Port doppelt vergebenFreien Port wählenzwei Funktionen nutzen denselben Port (z. B. ein Empfänger auf dem Port der Schnittstelle); der Empfänger erhält den nächsten freien Port. Tragen Sie danach den neuen Port in der Telefonanlage ein.
Port … ist belegtFreien Port wählenein anderes Programm nutzt den Port eines Empfängers
Adresse nicht reserviert (URL-Reservierung)ReservierenWindows reserviert die Adresse für den aktuellen Benutzer (Administratorrechte)

Aktionen, die Administratorrechte erfordern, kann CallerHub nicht allein ausführen: Windows zeigt eine Bestätigung (UAC). Auf Servern ohne lokales Administratorkonto bitten Sie Ihre IT, die Aktion auszuführen oder die Firewall-Regel anzulegen (siehe Firewall-Beispiele).

Weitere Karten

Im einfachen Modus zeigt die Seite die Karten Systemzustand, Server, Benachrichtigungen, Lizenz, Module und Datenschutz, gefolgt von der Karte Weitere Einstellungen mit der Schaltfläche Erweiterte Einstellungen anzeigen. Der erweiterte Modus ergänzt die übrigen Karten (siehe Einfacher und erweiterter Modus).

  • Server: Port, HTTPS, automatischer Start, Start bei der Windows-Anmeldung und (erweiterter Modus) vertrauenswürdige Reverse Proxys für alle Schnittstellen, dazu Starten und Stoppen. Alle Telefonanlagen nutzen denselben Port; CallerHub erkennt sie an ihrem API-Key.
  • Benachrichtigungen: E-Mail und Webhook bei Störungen (siehe Benachrichtigungen).
  • Lizenz: Lizenzschlüssel eingeben und prüfen (siehe Lizenzschlüssel).
  • Module: Funktionen ein- und ausschalten. Für jedes eingeschaltete Modul mit Einstellungen erscheint eine Karte Modul: … – Statistik, Anrufanalyse, Anzeigename, Sperr- und VIP-Liste (globale Regeln), Benachrichtigungen, Browser-Zugang, Plugins, Netzwerk-Discovery.
  • Datenschutz: Speicherorte nach den aktuellen Einstellungen und Aktuelle Einstellungen anzeigen … (siehe Datenschutz).
  • Betrieb (erweiterter Modus): fünf Abschnitte mit kurzer Erklärung – Windows-Dienst, HTTPS, Windows-Ereignisprotokoll, Fehleranalyse, Einstellungen sichern (siehe Betrieb).
  • Sicherheit (erweiterter Modus): siehe Sicherheit und Standards.
  • Erweitert (erweiterter Modus): Ländervorwahl, Namenslänge, Zwischenspeicher, Protokoll.

Datenquellen mit Beispielwerten

Bei einer neuen Installation ist noch keine Datenquelle angelegt; die Seite Datenquellen zeigt dann nur Erste Datenquelle hinzufügen. Jede Datenquelle ist eine eigene Karte; eingeklappt zeigt sie Art, Ziel und Zustand. Ein Klick auf eine Karte öffnet sie (die übrigen schließen sich). Die Kopfzeile der geöffneten Karte enthält Bezeichnung, Abfragen (aktiv), den Zustand, Verbindung testen (bei einer CSV-Datei CSV-Datei prüfen), Auf und Ab (Reihenfolge der Abfragen) sowie Entfernen. Um die Reihenfolge zu ändern, können Sie eine Karte auch an ihrer Kopfzeile an eine andere Stelle ziehen. Darunter folgen die Schritte: Schritt 1: Verbindung, Schritt 2: Telefonnummernliste (nicht bei CSV-Dateien) und im erweiterten Modus Schritt 3: Anzeige und Link (optional) sowie Schritt 4: Regeln dieser Datenquelle (optional). Der Zähler oben zeigt, wie viele Datenquellen vorhanden sind, z. B. „2 von 10“. Möglich sind höchstens 10 Datenquellen (die Grundversion erlaubt eine); mehr sind mit einer Sonderlizenz möglich (callerhub.de). Datenquelle hinzufügen oben fragt zuerst nach der Art der Quelle (z. B. Microsoft SQL Server, Oracle, CSV-Datei, REST-API, LDAP) und der Bezeichnung; danach öffnet sich die neue Karte. Die Art lässt sich im Feld Quelle von Schritt 1 nur ändern, solange keine Verbindungsdaten eingetragen sind; für eine andere Art legen Sie eine neue Datenquelle an. Es erscheinen nur die passenden Felder. Beim Speichern werden alle fehlenden Pflichtfelder einer Datenquelle gemeinsam markiert. Verbindung testen prüft die Werte im Formular (auch ungespeichert), Speichern und übernehmen aktiviert sie. Alle Beispielwerte unten sind erfunden und dienen als Muster.

Einstellungen
Einstellungen mit der festen Leiste der Datenquelle und der aufgeklappten Karte „Datenbank“ (CSV-Datei als Quelle).
Neue Datenquelle
Dialog „Neue Datenquelle“ nach Datenquelle hinzufügen: Art wählen, Bezeichnung eingeben, Anlegen.

Felder für alle Quellen

FeldBeispielBedeutung
Karte der Datenquelle1. CRM · Microsoft SQL Servereine Karte je Quelle; die geöffnete Karte zeigt den Zustand (Bereit, Fehler, Angehalten, Unvollständig; Einzelheiten beim Zeigen mit der Maus) und Verbindung testen
Quelle (Schritt 1)Oracle-Datenbank, CSV-DateiArt der Quelle: Datenbank, Datei, REST-API oder Verzeichnis (fest, sobald Verbindungsdaten eingetragen sind)
BezeichnungCRM, ERP, Phone bookName der Quelle in Protokoll, Statistik und Status
Abfragen (aktiv)☑Quelle vorübergehend ausschalten, ohne sie zu löschen
Präfix vor dem Namen (Schritt 3, erweitert)ERP: wird vor jeden Namen aus dieser Quelle gesetzt
Anzeigename, Sperr- und VIP-Liste (Schritt 4, erweitert)+49900*;AdvertisingRegeln nur für diese Quelle, zusätzlich zu den globalen Regeln (siehe Regeln)
Link zum Datensatz (Schritt 3, erweitert)https://crm.company.com/contact/{id}Platzhalter {id} aus Spalte bzw. Feld id; für 3CX, JSON-Antwort und /open
AbfragemodusTelefonnummernliste zwischenspeichern (empfohlen)Liste im Arbeitsspeicher oder Direktabfrage je Anruf
Aktualisierung (min)15Intervall der Telefonnummernliste (1 bis 1440)

Microsoft SQL Server

FeldBeispielHinweis
Serversql01 oder sql01\SQLEXPRESSbenannte Instanz mit \; dann Port leer lassen oder den festen Port der Instanz eintragen
Port1433Standard
Datenbank (Initial Catalog)CRM
Windows-Anmeldung☐☑ = Konto des Programms bzw. Dienstes (Benutzer/Passwort leer)
Benutzer / PasswortCALLERHUB / ••••••••SQL-Anmeldung mit Leserecht (siehe Lesebenutzer anlegen), z. B. db_datareader oder Rechte auf eine Sicht
-- Number list (the column aliases nummer, anzeigename, rang, land and id are essential):
SELECT c.phone AS nummer, c.company + ' - ' + c.name AS anzeigename, 0 AS rang, c.country AS land, c.id AS id
FROM dbo.contacts c WHERE c.phone IS NOT NULL

Oracle

FeldBeispielHinweis
Treiberals eigene Datei Drivers\Oracle.ManagedDataAccess.dll enthalten (Oracle.ManagedDataAccess.Core, unverändert)kein Download und kein Oracle-Client nötig; die Datei im Ordner Drivers neben CallerHub.exe belassen
Server / Portora01.company.local / 1521Listener-Port; Infor COM etwa kann auch andere Ports verwenden
DienstnameORCLPDB1Service Name (nicht SID); lsnrctl status listet die Dienste
Benutzer / PasswortCALLERHUB / ••••••••Leserechte auf die Tabellen (siehe Lesebenutzer anlegen); Passwort ohne Anführungszeichen

MySQL / MariaDB, PostgreSQL, andere ODBC-Datenbanken

FeldMySQL/MariaDBPostgreSQLAndere (ODBC)
ODBC-TreiberMariaDB ODBC 3.1 Driver oder MySQL ODBC 8.0 Unicode DriverPostgreSQL Unicode(x64)Name des installierten 64-Bit-Treibers
Server / Portdb01 / 3306pg01 / 5432je Datenbank
Datenbanksuitecrmodoo
Benutzer / Passwortcrm_leserodoo_ro
Eigene Verbindungszeichenfolge (erweitert)DSN=CRM;Uid=crm_leser;Pwd={password} – ersetzt die Felder von Server bis Passwort; {password} setzt das verschlüsselt gespeicherte Passwort ein

Die Treibernamen hängen von der installierten Version ab; die Auswahlliste zeigt die auf diesem Computer installierten 64-Bit-Treiber.

CSV-Datei (auch DATEV-, Excel- und CRM-Export)

FeldBeispielHinweis
CSV-DateiSamples\customers.csv oder \\fs01\export\debitoren.csvrelativ zum Programmordner oder vollständiger Pfad; wird bei jeder Änderung neu eingelesen
Spalten zuordnenStandardformat oder eigene ZuordnungSchaltfläche unter der Datei; daneben steht die aktuelle Zuordnung

Standardformat (ohne Zuordnung): UTF-8, Semikolon, keine Kopfzeile, Zeilen, die mit # beginnen, werden ignoriert.

# Phone number;Display name;Country (optional);Link (optional)
030 1234560;Testkunde GmbH - Frau Beispiel;DE;https://crm.example.com/kontakt/1001
+41 44 123 45 67;Beispiel AG Zürich;;
044 765 43 21;Muster Treuhand AG;CH;

Spalten zuordnen liest CSV-Dateien mit beliebigem Aufbau, z. B. einen Export der Debitoren/Kreditoren aus DATEV, eine Excel-Liste oder einen CRM-Export. Beim ersten Öffnen schlägt CallerHub anhand der Spaltennamen eine Zuordnung vor (Telefon, Mobil, Firma, Vorname/Nachname, Land, Konto); Vorschlag wiederholt das, Standardformat entfernt die Zuordnung. Die Vorschau zeigt die ersten Zeilen der Datei und das Ergebnis.

Spalten zuordnen
Dialog „Spalten zuordnen“ mit einer Datei im Aufbau eines DATEV-Exports (Beispieldaten): DATEV-Kopfzeile übersprungen, ANSI erkannt, drei Spalten mit Telefonnummern, Firma oder ersatzweise Vor- und Nachname. Die Spaltennamen stammen aus der Datei.
EinstellungBeispielBedeutung
TrennzeichenAutomatisch, ;, ,, Tabulator, |Automatisch: das häufigste dieser Zeichen in der ersten Zeile
KodierungAutomatisch, UTF-8, ANSI (Windows-1252)Automatisch: UTF-8, wenn die Datei gültiges UTF-8 ist, sonst ANSI (typisch für DATEV und Excel); eine Byte-Order-Mark hat Vorrang
Zeilen am Anfang überspringenAutomatisch (DATEV), 0 bis 10Automatisch überspringt die DATEV-Kopfzeile (beginnt mit EXTF bzw. DTVF) sowie Kommentarzeilen, die am Dateianfang mit # beginnen
Kopfzeile mit Spaltennamen☑ohne Kopfzeile heißen die Spalten #1, #2 …
TelefonnummernTelefon, Telefon GL, Mobileine oder mehrere Spalten; kommt eine Telefonnummer mehrfach vor, gilt der erste Treffer in der Datei
Anzeigename{Company} || {First name} {Last name}{Column} setzt den Wert ein, {A|B} den ersten nicht leeren Wert; || trennt Alternativen: Bleibt die erste leer, gilt die nächste
Land, Link, IDLand, (keine), KontoLand wie unter Länder beschrieben; die ID füllt {id} in „Link zum Datensatz“
"EXTF";700;16;"Debitoren/Kreditoren";…          ← DATEV header line, skipped
"Konto";"Name (Adressatentyp Unternehmen)";"Name (Adressatentyp natürl. Person)";"Vorname (Adressatentyp natürl. Person)";"Land";"Telefon";"Mobil"
10001;"Müller und Söhne GmbH";"";"";"DE";"0711 4561230";""
10002;"";"Schäfer";"Jürgen";"AT";"01 5551234";"0664 1234567"

Ergebnis mit dem Vorschlag: 0711 4561230 → „Müller und Söhne GmbH“, +43 664 1234567 → „Jürgen Schäfer“. Felder in Anführungszeichen dürfen Trennzeichen, verdoppelte Anführungszeichen und Zeilenumbrüche enthalten. Wird der Export regelmäßig an dieselbe Stelle geschrieben, übernimmt CallerHub die Änderungen automatisch.

Spaltennamen und Aufbau eines DATEV-Exports hängen von Programm, Version und Exporteinstellungen ab. Das Beispiel ist nachgebaut und wurde nicht mit einem echten DATEV-Export geprüft; kontrollieren Sie die Vorschau im Dialog. CallerHub liest nur die exportierte Datei und greift nicht auf DATEV selbst zu.

REST-API (HubSpot, Salesforce, Pipedrive, SuiteCRM, SugarCRM, Zoho, Odoo, SAP, Dynamics 365, eigene API)

FeldBeispielHinweis
Benutzer / Client-ID3MVG9… (Salesforce Consumer Key) oder leerPlatzhalter {user}
Passwort / Token / Secretpat-eu1-… (HubSpot Private-App-Token)Platzhalter {password}; verschlüsselt gespeichert
Definitionje Zeile key=value; „Vorlage“ setzt ein Beispiel ein
SchlüsselBeispielBedeutung
urlhttps://crm.example.com/api/contacts?page_size=500Adresse; bei Direktabfrage mit {num_e164}, {num_national}, {num_digits}, {num_local}, {num_country}
method, body, content_typePOST, {"phone":"{num_e164}"}, application/jsonoptional
authbearernone, basic, bearer, oauth2 (Client Credentials), ntlm/windows
token_url, scope, token_authhttps://login.example.com/oauth2/token, contacts.read, basicnur bei auth=oauth2
grantclient_credentials, password, refresh_tokenOAuth2-Verfahren. client_credentials: Benutzer = Client-ID, Passwort = Secret; password: Benutzer und Passwort des Kontos; refresh_token: Benutzer = Client-ID, Passwort = Aktualisierungstoken
client_id, client_secretsugar, YOUR-CLIENT-SECRETWerte für die Token-Anfrage, wenn Benutzer/Passwort anderweitig belegt sind
token_format, token_param.Namejson, token_param.platform=custom_apiToken-Anfrage als JSON statt als Formular; zusätzliche Felder der Token-Anfrage
auth_header, auth_prefixOAuth-Token, Zoho-oauthtokenKopfzeile und Präfix des Tokens (Vorgabe Authorization und Bearer)
header.Nameheader.X-Api-Key={password}eigene Kopfzeilen
itemsdata, results, recordsPfad zur Liste im JSON
numbersphone,mobileFelder mit Telefonnummern (Punkt für verschachtelte Felder: properties.phone)
name{company} - {name}Vorlage des Anzeigenamens
country, id, linkcountry, id, https://crm.example.com/c/{id}optional
next, max_pages, timeoutlinks.next, 1000, 30seitenweise laden (Pfad der nächsten Adresse), Obergrenze, Zeitlimit in Sekunden
next_token, next_param, next_end, moreinfo.next_page_token, page_token, -1, info.more_recordsSeiten-Token als Parameter der nächsten Anfrage; Endwert; Pfad „weitere Datensätze vorhanden“
next_offset, page_sizeoffset, 500seitenweise per Offset: erhöht den Parameter der Adresse um die Seitengröße, solange eine Seite voll ist (z. B. bexio)
{next} in body"variables":{"after":{next}}GraphQL-Cursor: null auf der ersten Seite, danach der Wert von next_token in Anführungszeichen (z. B. Jobber)
errorerror.data.message,error.messagePfade einer Fehlermeldung in der Antwort (z. B. JSON-RPC)
Pfade dürfen [*] enthalten (alle Elemente einer Liste), z. B. addresses[*].phones[*].number; einzelne Elemente mit [0].

Die REST-Vorlagen (HubSpot, Salesforce, SuiteCRM, SugarCRM, Zoho CRM, Odoo, SAP S/4HANA, Microsoft Dynamics 365, Business Central online, Finance & Supply Chain, Infor ION API, bexio, HERO, Clio, Jobber) sind Beispiele und wurden nicht mit echten Konten geprüft; für ServiceTitan gibt es keine Vorlage, weil dessen Kontaktschnittstelle keine Namen liefert; die Anmeldeverfahren wurden mit einem Testserver geprüft. Gleichen Sie Feldnamen und API-Versionen mit der Dokumentation des Anbieters ab. Für Oracle NetSuite gibt es noch keine Vorlage, weil dessen Anmeldung ein JWT-Zertifikat erfordert.

LDAP / Active Directory

FeldBeispielHinweis
LDAP-Server / Portdc01.company.local / 636389 = LDAP, 636 = LDAPS (verschlüsselt, empfohlen)
Basis-DNDC=company,DC=local oder OU=Kontakte,DC=company,DC=localStartpunkt der Suche
Benutzer / PasswortCOMPANY\svc-callerhub / ••••••••leer = Konto des Programms bzw. Dienstes
Definitionfilter=…, numbers=telephoneNumber,mobile, name={company} - {displayName}, country=c, id=objectGUID, bind=negotiatebind=simple für OpenLDAP; ssl=true erzwingt SSL

Microsoft 365 (Graph)

FeldBeispielHinweis
Mandantcompany.onmicrosoft.com oder Tenant-ID
Postfächersales@company.com, reception@company.comnur bei what=contacts
Client-ID11111111-2222-3333-4444-555555555555App-Registrierung in Entra ID
Geheimer Clientschlüssel••••••••Ablaufdatum des Schlüssels beachten
Definitionwhat=contacts (Kontakte der Postfächer) oder what=users (Telefonbuch des Mandanten)Anwendungsberechtigung Contacts.Read bzw. User.Read.All mit Administratorzustimmung

Exchange (EWS)

FeldBeispielHinweis
EWS-Adressehttps://mail.company.com/EWS/Exchange.asmxExchange Server lokal (On-Premises)
Postfächersales@company.comleer = Postfach des Benutzers; fremde Postfächer erfordern Berechtigungen
Benutzer / PasswortCOMPANY\svc-callerhub / ••••••••
Definitionfolder=contacts, version=Exchange2013_SP1

Microsoft hat angekündigt, EWS in Exchange Online abzuschalten; verwenden Sie für Microsoft 365 stattdessen die Quelle „Microsoft 365 (Graph)“. Prüfen Sie den aktuellen Stand bei Microsoft.

Telefonnummernliste und Direktabfrage

Telefonnummernliste (empfohlen): lädt alle Telefonnummern beim Start und im Intervall; jeder Anruf wird aus dem Arbeitsspeicher beantwortet. Schlägt eine Aktualisierung fehl, bleibt die bisherige Liste aktiv.

SpalteBeispielInhalt
nummer0711 / 45 67-890Telefonnummer in beliebiger Schreibweise (Pflicht)
anzeigenameMusterfirma AG - Frau Beispielangezeigter Name (Pflicht)
rang0 (Firma), 1 (Ansprechpartner)bei doppelten Telefonnummern gewinnt der kleinere Rang
landCH, Schweiz, 41Land des Anschlusses (siehe Länder)
id, link1001, https://crm.company.com/contact/1001für den Link zum Datensatz

Direktabfrage bei jedem Anruf: Parameter (in allen Datenbanken gleich geschrieben; CallerHub übersetzt sie in @name bzw. ?):

ParameterBeispiel für +41 44 123 45 67 (eigene Ländervorwahl 49)
:num_national0041441234567 (deutsche Telefonnummer z. B. 07114567890)
:num_e164+41441234567
:num_digits41441234567
:num_local0441234567 (nationale Schreibweise im Land des Anrufers)
:num_countryCH (ISO-Code aus der Ländervorwahl)

Telefonnummern werden vereinheitlicht: Leerzeichen, Bindestriche, Schrägstriche, Klammern und „(0)“ werden entfernt; + und 00 kennzeichnen internationale Telefonnummern. Das SQL-Feld hebt Schlüsselwörter, Zeichenketten, Zahlen, Kommentare und Parameter farbig hervor; Mit KI entwerfen bereitet eine Frage für den Chat vor.

Lesebenutzer CALLERHUB anlegen (Oracle, SQL Server)

SQL-Assistent: Schritt 2 einer Datenbankquelle enthält die Schaltfläche SQL-Assistent …. Er liest den Datenbankkatalog (nur lesend, ändert nichts), schlägt Tabellen mit Spalten für Telefonnummer und Name vor (vorausgewählt: die wahrscheinlichsten, mit Anzahl der Einträge), baut die Abfrage für die Telefonnummernliste (schließt dabei auch gelöschte oder inaktive Datensätze aus, sofern eine passende Spalte vorhanden ist) und zeigt eine Vorschau der ersten Zeilen. Nach Übernehmen zeigt er ein Skript für einen auf die gewählten Tabellen beschränkten Lesebenutzer (SQL Server, Oracle, MySQL/MariaDB, PostgreSQL), das Sie dem Datenbankadministrator übergeben. Viele CRM- und ERP-Systeme führen Telefonnummern in einer eigenen Kommunikationstabelle (eine Zeile je Telefonnummer, Faxnummer oder E-Mail-Adresse). Der Assistent erkennt solche Tabellen und schlägt eine verknüpfte Abfrage vor: Er verbindet die Tabelle über ihre Schlüsselspalten – auch über Zwischentabellen – mit den Tabellen der Firmen- und Personennamen (LEFT JOIN, wo eine Person optional ist) und ergänzt einen Kommentar, wenn eine Spalte Telefon, Fax und E-Mail unterscheidet, sodass Sie danach filtern können.

CallerHub braucht nur Leserechte auf die Tabellen oder Sichten, aus denen die SQL-Abfrage liest. Verwenden Sie kein Verwaltungskonto (z. B. SYSTEM oder sa): Ein eigenes Konto begrenzt die Rechte, und eine Kontosperre trifft nicht die Datenbankverwaltung. CallerHub schlägt deshalb den Benutzer CALLERHUB vor.

Alle Namen unten sind Beispiele: Schema bzw. Datenbank CRM, Tabellen KONTAKTE und FIRMEN, Container ORCLPDB1. Ersetzen Sie sie durch die Namen Ihres Systems, und lassen Sie die Befehle vom Datenbankadministrator prüfen und ausführen.

Oracle

Melden Sie sich als DBA am Dienst der Datenbank an, die das Schema enthält. Bei einer Container-Datenbank (CDB) ist das die Pluggable Database, nicht der Root (CDB$ROOT).

-- container database only: switch to the correct PDB
ALTER SESSION SET CONTAINER = ORCLPDB1;

CREATE USER CALLERHUB IDENTIFIED BY "Secure#Password1";
GRANT CREATE SESSION TO CALLERHUB;

-- read only (READ from Oracle 12c; older versions: SELECT)
GRANT READ ON CRM.KONTAKTE TO CALLERHUB;
GRANT READ ON CRM.FIRMEN   TO CALLERHUB;

Optional legen Sie ein eigenes Profil an, damit das Passwort nicht nach der Standardfrist abläuft (sonst ORA-28001). Ob das zu Ihren Sicherheitsvorgaben passt, entscheidet der Administrator:

CREATE PROFILE CALLERHUB_PROFILE LIMIT
  PASSWORD_LIFE_TIME    UNLIMITED
  FAILED_LOGIN_ATTEMPTS 10
  PASSWORD_LOCK_TIME    1/24;   -- locked for 1 hour after 10 failed attempts
ALTER USER CALLERHUB PROFILE CALLERHUB_PROFILE;

Prüfen (angemeldet als CALLERHUB): SELECT COUNT(*) FROM CRM.KONTAKTE;

MeldungUrsache und Abhilfe
ORA-01917 beim GRANTBenutzer an dieser Stelle nicht vorhanden: CREATE USER lief nicht (in DBeaver führt Strg+Enter nur eine Anweisung aus, Alt+X das Skript) oder lief in einem anderen Container. Prüfen mit SELECT SYS_CONTEXT('USERENV','CON_NAME') FROM DUAL;
ORA-65096 beim CREATE USERSie befinden sich im Root der Container-Datenbank. Wechseln Sie mit ALTER SESSION SET CONTAINER in die PDB.
ORA-01017 / ORA-28000Passwort falsch bzw. Konto gesperrt. Entsperren: ALTER USER CALLERHUB ACCOUNT UNLOCK;
ORA-28001Passwort abgelaufen: neues Passwort setzen oder Profil anpassen.
ORA-00942Tabelle nicht gefunden oder kein Leserecht: Schema in der SQL-Abfrage und GRANT prüfen.

Microsoft SQL Server

SQL-Anmeldungen setzen den gemischten Modus voraus (Servereigenschaften → Sicherheit → „SQL Server- und Windows-Authentifizierungsmodus“). Alternativ verwenden Sie die Windows-Anmeldung mit dem Dienstkonto von CallerHub (siehe unten).

USE master;
CREATE LOGIN CALLERHUB WITH PASSWORD = N'Secure#Password1',
       CHECK_POLICY = ON, CHECK_EXPIRATION = OFF;

USE CRM;
CREATE USER CALLERHUB FOR LOGIN CALLERHUB;

-- read only the tables needed ...
GRANT SELECT ON dbo.KONTAKTE TO CALLERHUB;
GRANT SELECT ON dbo.FIRMEN   TO CALLERHUB;
-- ... or read all tables of the database
-- ALTER ROLE db_datareader ADD MEMBER CALLERHUB;

Prüfen: EXECUTE AS LOGIN = 'CALLERHUB'; SELECT TOP 1 * FROM dbo.KONTAKTE; REVERT;

Windows-Anmeldung statt Passwort: CREATE LOGIN [COMPANY\svc-callerhub] FROM WINDOWS;, dann CREATE USER und GRANT wie oben mit diesem Namen; betreiben Sie CallerHub als Dienst unter diesem Konto, und wählen Sie in der Karte Datenbank Windows-Anmeldung.

MeldungUrsache und Abhilfe
18456 Login failedPasswort falsch, Anmeldung nicht vorhanden oder gemischter Modus ausgeschaltet (Details im SQL-Server-Fehlerprotokoll).
18486 account is locked outMit CHECK_POLICY = ON gilt die Sperrrichtlinie von Windows. Entsperren: ALTER LOGIN CALLERHUB WITH PASSWORD = N'…' UNLOCK;
229 / 208Kein Leserecht bzw. Tabelle nicht gefunden: GRANT, Datenbank und Schema prüfen.

Schutz vor Kontosperre

Lehnt die Datenbank die Anmeldung ab (Oracle ORA-01017/ORA-28000, SQL Server 18456, MySQL/MariaDB 1045, PostgreSQL 28P01), unternimmt CallerHub keine weiteren automatischen Anmeldeversuche – weder bei der Aktualisierung der Telefonnummernliste noch bei der Direktabfrage je Anruf. Die Leiste Datenquelle zeigt dann „Angehalten“ mit dem Grund, ebenso Systemzustand und Benachrichtigungen. Die Pause endet, sobald die Zugangsdaten geändert und gespeichert werden oder Verbindung testen erfolgreich ist.

Abfrage für die eigene Datenbank finden (Oracle, SQL Server)

Am schnellsten geht es mit dem SQL-Assistent … in Schritt 2 (siehe oben). Die folgenden Schritte beschreiben den manuellen Weg, z. B. wenn der Assistent keine passende Tabelle findet.

Gibt es für Ihr CRM oder ERP keine fertige Vorlage, ermitteln Sie Tabellen und Spalten in vier Schritten selbst. Alle Abfragen lesen nur. Am besten führen Sie sie als Lesebenutzer CALLERHUB in SQL Developer bzw. sqlplus (Oracle) oder SQL Server Management Studio aus. Die Namen CRM, CUSTOMERS und CONTACTS sowie alle Spaltennamen sind Beispiele.

1. Spalten mit Telefonnummer, Name und Land suchen

Oracle:

SELECT owner, table_name, column_name, data_type
  FROM all_tab_columns
 WHERE owner NOT IN ('SYS', 'SYSTEM', 'XDB', 'MDSYS', 'CTXSYS', 'ORDSYS', 'OLAPSYS', 'WMSYS')
   AND REGEXP_LIKE(column_name, 'TEL|PHON|FON|MOBIL|HANDY|NAME|FIRMA|COMPANY|LAND|COUNTRY|LKZ', 'i')
 ORDER BY owner, table_name, column_id;

Microsoft SQL Server (in der richtigen Datenbank ausführen, z. B. nach USE CRM;):

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE COLUMN_NAME LIKE '%tel%'   OR COLUMN_NAME LIKE '%phon%' OR COLUMN_NAME LIKE '%fon%'
    OR COLUMN_NAME LIKE '%mobil%' OR COLUMN_NAME LIKE '%handy%'
    OR COLUMN_NAME LIKE '%name%'  OR COLUMN_NAME LIKE '%firma%' OR COLUMN_NAME LIKE '%company%'
    OR COLUMN_NAME LIKE '%land%'  OR COLUMN_NAME LIKE '%country%'
 ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;

Kandidaten sind Tabellen mit mehreren Treffern, z. B. CUSTOMERS mit PHONE, MOBILE, COMPANY_NAME und COUNTRY. Bei Oracle zeigt SELECT table_name, num_rows FROM all_tables WHERE owner = 'CRM' ORDER BY num_rows DESC NULLS LAST; die größten Tabellen.

2. Eine bekannte Telefonnummer suchen

Helfen die Spaltennamen nicht weiter, suchen Sie eine bekannte Telefonnummer, z. B. die eigene Zentrale. Verwenden Sie nur die letzten Ziffern (4567890), weil die Schreibweise abweicht. Die folgende Abfrage erzeugt je Textspalte eine Prüfabfrage. Kopieren Sie die Ausgabe, entfernen Sie das letzte UNION ALL, und führen Sie sie aus; das Ergebnis nennt Tabelle und Spalte mit Treffern.

Oracle:

SELECT 'SELECT ''' || owner || '.' || table_name || '.' || column_name || ''' AS location, COUNT(*) AS hits FROM '
       || owner || '.' || table_name || ' WHERE ' || column_name || ' LIKE ''%4567890%'' HAVING COUNT(*) > 0 UNION ALL'
  FROM all_tab_columns
 WHERE owner = 'CRM' AND data_type IN ('VARCHAR2', 'NVARCHAR2', 'CHAR', 'NCHAR');

Microsoft SQL Server:

SELECT 'SELECT ''' + TABLE_SCHEMA + '.' + TABLE_NAME + '.' + COLUMN_NAME + ''' AS location, COUNT(*) AS hits FROM ['
       + TABLE_SCHEMA + '].[' + TABLE_NAME + '] WHERE [' + COLUMN_NAME + '] LIKE ''%4567890%'' HAVING COUNT(*) > 0 UNION ALL'
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE TABLE_SCHEMA = 'dbo' AND DATA_TYPE IN ('varchar', 'nvarchar', 'char', 'nchar');

Begrenzen Sie die Suche bei großen Datenbanken auf ein Schema oder einzelne Tabellen, sonst dauert sie lange.

3. Inhalte ansehen

-- Oracle (12c and later; older versions: WHERE ROWNUM <= 20)
SELECT customer_no, company_name, company_name2, phone, mobile, country FROM crm.customers FETCH FIRST 20 ROWS ONLY;
-- SQL Server
SELECT TOP 20 customer_no, company_name, company_name2, phone, mobile, country FROM dbo.customers;

Prüfen Sie: Welche Spalte enthält den Namen, der am Telefon erscheinen soll? Stehen Ansprechpartner in einer eigenen Tabelle? Stehen die Telefonnummern in einer eigenen Kommunikationstabelle (dafür schlägt der SQL-Assistent … eine verknüpfte Abfrage vor)? Enthält country einen ISO-Code (DE), einen Namen oder eine Vorwahl? Die Schreibweise der Telefonnummern ist gleichgültig; CallerHub vereinheitlicht sie.

4. Abfrage für die Telefonnummernliste ableiten

CallerHub erwartet die Spalten nummer (Telefonnummer) und anzeigename (Anzeigename), optional rang (Rang), land (Land), id und link (siehe Telefonnummernliste). Diese Aliasse sind feste Namen und stehen auch über dem SQL-Feld; nur die Tabellen- und Spaltennamen nach SELECT und FROM hängen von Ihrer Datenbank ab. CallerHub akzeptiert auch die englischen Aliasse displayname, country und rank. Jede Spalte mit Telefonnummern ergibt einen Teil; UNION ALL verbindet die Teile.

Oracle:

SELECT c.phone AS nummer, c.company_name AS anzeigename, 0 AS rang, c.country AS land, c.customer_no AS id
  FROM crm.customers c WHERE c.phone IS NOT NULL
UNION ALL
SELECT c.mobile, c.company_name, 0, c.country, c.customer_no
  FROM crm.customers c WHERE c.mobile IS NOT NULL
UNION ALL
SELECT p.phone, c.company_name || ' - ' || p.first_name || ' ' || p.last_name, 1, c.country, c.customer_no
  FROM crm.contacts p JOIN crm.customers c ON c.customer_no = p.customer_no
 WHERE p.phone IS NOT NULL

Microsoft SQL Server:

SELECT c.phone AS nummer, c.company_name AS anzeigename, 0 AS rang, c.country AS land, c.customer_no AS id
  FROM dbo.customers c WHERE c.phone <> ''
UNION ALL
SELECT c.mobile, c.company_name, 0, c.country, c.customer_no
  FROM dbo.customers c WHERE c.mobile <> ''
UNION ALL
SELECT p.phone, CONCAT(c.company_name, ' - ', p.first_name, ' ', p.last_name), 1, c.country, c.customer_no
  FROM dbo.contacts p JOIN dbo.customers c ON c.customer_no = p.customer_no
 WHERE p.phone <> ''
  • rang 0 für Firmen, 1 für Ansprechpartner: Steht dieselbe Telefonnummer bei beiden (z. B. die Zentrale), gewinnt die Firma.
  • Tragen Sie die Abfrage unter Datenquellen → Schritt 2: Telefonnummernliste ein. Verbindung testen lädt die ganze Liste und meldet die Anzahl; danach Speichern und übernehmen.
  • Geben Sie dem Lesebenutzer Leserechte auf die verwendeten Tabellen (siehe Lesebenutzer).

Direktabfrage (nur bei Bedarf)

Bei sehr großen Tabellen kann CallerHub die Datenbank bei jedem Anruf mit Parametern abfragen (siehe Direktabfrage). Weil die Datenbank Telefonnummern in beliebiger Schreibweise enthält, vergleichen Sie nur die Ziffern:

-- Oracle
SELECT company_name AS anzeigename FROM crm.customers
 WHERE REGEXP_REPLACE(phone, '[^0-9]', '') IN (:num_national, :num_digits, '00' || :num_digits)
-- SQL Server
SELECT TOP 1 company_name AS anzeigename FROM dbo.customers
 WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(phone, ' ', ''), '-', ''), '/', ''), '(', ''), ')', ''), '+', '')
       IN (:num_national, :num_digits, '00' + :num_digits)

Eine Funktion auf der Spalte verhindert die Nutzung des Index; bei großen Tabellen wird die Abfrage langsam. Besser ist eine Sicht oder Spalte mit bereits vereinheitlichter Telefonnummer – oder die Telefonnummernliste.

Vorlagen für CRM- und ERP-Systeme

Vorlage (Karte Telefonnummernliste) setzt SQL bzw. eine Definition für die gewählte Quelle ein. Beim Wechsel der Quelle wird eine unveränderte Vorlage automatisch ersetzt; eigenes SQL bleibt erhalten.

SystemQuelleTabellen bzw. ObjekteSpalte landStand
Infor COMOracleRELKOMM, RELADRESSE, RELFIRMA, RELPERSON–mit R7.9 geprüft
Infor CRM (Saleslogix)SQL Serversysdba.ACCOUNT, sysdba.CONTACT–Beispiel, ungeprüft
Infor CloudSuite Industrial / SyteLineSQL Servercustaddr_mst, vendaddr_mst–Beispiel, ungeprüft
Infor VISUALSQL Server, OracleCUSTOMER, VENDOR–Beispiel, ungeprüft
Infor M3SQL ServerOCUSMA, CIDMAS (Firma 100)–Beispiel, ungeprüft
Infor LN / BaanSQL Server, Oraclettccom100, ttccom130 mit Firmennummer–Beispiel, ungeprüft
Microsoft Dynamics CRM / 365 CE (on-premises)SQL ServerAccountBase, ContactBase–Beispiel
SAP Business OneSQL ServerOCRD, OCPRISO-CodeBeispiel
Microsoft Dynamics 365 Business Central / NAV (on-premises)SQL ServerCustomer, Vendor, Contact je FirmaISO-CodeBeispiel
Sage CRMSQL ServerPhone, PhoneLink, Company, Person–Beispiel, ungeprüft
Oracle E-Business SuiteOracleHZ_CONTACT_POINTS, HZ_PARTIESISO-CodeBeispiel, ungeprüft
Oracle JD Edwards EnterpriseOneOracle, SQL ServerF0115, F0101, F0111 (Schema PRODDTA)–Beispiel, ungeprüft
SAP Business One auf SAP HANAODBC (HDBODBC)OCRD, OCPR im Schema der FirmaISO-CodeBeispiel, ungeprüft
SuiteCRM / SugarCRM CEMySQL/MariaDBaccounts, contacts, accounts_contactsLändernameBeispiel, Syntax mit Testtabellen geprüft
vtiger CRMMySQL/MariaDBvtiger_account, vtiger_contactdetails, vtiger_crmentityLändernameBeispiel, Syntax mit Testtabellen geprüft
Dolibarr ERP/CRMMySQL/MariaDBllx_societe, llx_socpeople, llx_c_countryISO-CodeBeispiel, Syntax mit Testtabellen geprüft
Open Dental (Zahnarztpraxen)MySQL/MariaDBpatient (PatStatus 4 = gelöscht)–Beispiel, Syntax mit Testtabellen geprüft; Patientendaten sind Gesundheitsdaten
Firebird (kleine Branchenlösungen)ODBCTabelle KONTAKTE anzupassen–Vorlage zum Anpassen
SAP SQL Anywhere (kleine Branchenlösungen)ODBCTabelle kontakte anzupassen–Vorlage zum Anpassen
OdooPostgreSQLres_partner, res_countryISO-CodeBeispiel, Syntax mit Testtabellen geprüft
HubSpot CRMRESTcrm/v3/objects/contacts, companiesFeld countryBeispiel, ungeprüft
Salesforce (Accounts, Kontakte, Leads, Suche über alle Telefonfelder)RESTSOQL über /services/data, je Anruf SOSL FIND … IN PHONE FIELDSBillingCountry / MailingCountryBeispiel, ungeprüft
SuiteCRM 8 / 7.x (V8-API: Kontakte, Firmen)RESTApi/V8/module/Contacts bzw. AccountsAdressfeldBeispiel, ungeprüft
SugarCRM (REST v11)RESTContactsprimary_address_countryBeispiel, ungeprüft
Zoho CRMRESTContacts, Accounts, LeadsMailing_Country, Billing_Country, CountryBeispiel, ungeprüft
Odoo (JSON-RPC)RESTres.partnercountry_idBeispiel, ungeprüft
SAP S/4HANA (OData API_BUSINESS_PARTNER)RESTA_BusinessPartner mit AdressenCountryBeispiel, ungeprüft
Microsoft Dynamics 365 / Dataverse (online: Kontakte, Firmen, Leads)RESTcontacts, accounts, leads (Web API)address1_countryBeispiel, ungeprüft
Microsoft Dynamics 365 Business Central (online)REST, OAuth2API v2.0: contacts, customers, vendors je FirmacountryBeispiel, ungeprüft
Microsoft Dynamics 365 Finance & Supply ChainREST, OAuth2OData CustomersV3AddressCountryRegionIdBeispiel, ungeprüft
Infor CloudSuite über ION APIREST, OAuth2 (Werte der .ionapi-Datei)Mongoose-IDO SLCustomers–Beispiel, ungeprüft
bexio (Schweiz)REST2.0/contact, seitenweise über offset–Beispiel, ungeprüft
HERO (Handwerkersoftware)REST (GraphQL)contacts–Beispiel, ungeprüft
Clio (Anwaltskanzleien)REST, OAuth2api/v4/contacts–Beispiel, ungeprüft
Jobber (Außendienst)REST (GraphQL), OAuth2clients mit Cursor–Beispiel, ungeprüft
DATEV (Export Debitoren/Kreditoren)CSV-Dateiexportierte Datei, Spalten zuordnenfrei wählbarkeine Vorlage; Vorschlag anhand der Spaltennamen
Active Directory, OpenLDAPLDAPuser, contact bzw. inetOrgPersonAttribut cBeispiel, mit OpenLDAP geprüft
Microsoft 365 Kontakte bzw. BenutzerGraphcontacts, userscountryOrRegionBeispiel, ungeprüft
Exchange KontakteEWSKontaktordnerGeschäftsadresseBeispiel, ungeprüft
Allgemeinalleeine Tabelle kontakte bzw. eine REST-ListeoptionalVorlage zum Anpassen

Außer Infor COM wurde keine Vorlage mit einer echten Installation des jeweiligen Systems geprüft. Tabellen-, Spalten- und Feldnamen beruhen auf veröffentlichten Datenmodellen und können je nach Version und Anpassung abweichen. Prüfen Sie sie vor dem Einsatz mit Verbindung testen und einer Testabfrage.

Mehrere Datenquellen

  • Legen Sie in der festen Leiste der Seite Datenquellen mit Datenquelle hinzufügen bis zu 10 Quellen an (der Zähler zeigt z. B. „2 von 10“; mehr mit einer Sonderlizenz, siehe callerhub.de), z. B. „CRM“ (SQL Server) und „Telefonbuch“ (Active Directory). Jede Quelle hat eine eigene Verbindung, Abfrage und einen eigenen Abfragemodus.
  • Die Quellen werden in der angezeigten Reihenfolge abgefragt; die erste Quelle mit Treffer liefert den Namen. Die Schaltflächen nach oben und nach unten im Kopf der geöffneten Karte ändern die Reihenfolge; alternativ ziehen Sie eine Karte an ihrem Kopf an eine andere Position. Danach Speichern und übernehmen.
  • Welche Quellen eine Telefonanlage abfragt, legt ihre Schnittstelle fest: Schnittstellen → Telefonanlage → Abgefragte Datenquellen (Vorgabe: alle, auch später hinzugefügte).
  • Fällt eine Quelle aus, liefern die anderen weiter. Findet keine Quelle die Telefonnummer und ist eine Quelle gestört, antwortet CallerHub mit 503, damit der Ausfall nicht als „unbekannt“ zwischengespeichert wird. Die Statusanzeige zeigt „Datenfehler“ mit dem Namen der Quelle.
  • Die Spalte Quelle in Protokoll und Status zeigt, woher der Name kam, z. B. Liste/CRM; mit Plugin z. B. Liste/CRM/Plugin.

Länder und Vorwahlen

Nationale Telefonnummern (z. B. 044 123 45 67) brauchen eine Ländervorwahl. Liefert die Liste eine Spalte land (bzw. country) oder die CSV-Datei eine dritte Spalte, gilt die Ländervorwahl je Zeile. Die Ländervorwahl unter Administration → Erweitert (Beispiel 49) gilt nur, wenn das Land fehlt oder unbekannt ist.

Schreibweise in landBeispiele
ISO-3166-Code (2 oder 3 Buchstaben)CH, AT, DEU
Internationales Kfz-KennzeichenD, A, I, FL
Ländervorwahl41, +41, 0041
Ländername (Deutsch/Englisch, gängige Länder)Schweiz, Österreich, Germany
  • Telefonnummern mit + oder 00 sind bereits international.
  • Die Verkehrsausscheidungsziffer wird je Land berücksichtigt: meist 0; keine z. B. in Italien (die führende 0 bleibt Teil der Telefonnummer), Spanien, Portugal, Griechenland, Dänemark, Norwegen, Luxemburg, Polen und Tschechien; 1 in Nordamerika, 06 in Ungarn, 8 in Russland und Kasachstan.
  • Unbekannte Landangaben meldet das Protokoll als Warnung mit Beispielen und Anzahl.

Die Regeln decken gängige Länder ab; prüfen Sie Sonderfälle (z. B. Änderungen von Nummernplänen) mit einer Testabfrage.

Zwischenspeicher

Die Telefonnummern liegen nur im Arbeitsspeicher des laufenden Programms – nicht in einer Datenbank und nicht in einer Datei. Nach dem Beenden oder Stoppen sind sie weg und werden beim nächsten Start neu geladen.

SpeicherInhaltErneuerung
Telefonnummernliste (je Quelle)Telefonnummern in internationaler Form mit Anzeigenamebeim Start und im Intervall; bei Fehlern bleibt die bisherige Liste aktiv, ohne Liste neuer Versuch nach 1 Minute
CSV-DateiInhalt der Dateisobald sich die Datei ändert
Cache der DirektabfrageErgebnisse einzelner Abfragen (höchstens 20.000)Treffer nach „Cache Direktabfrage: Treffer“ (Beispiel 300 s), unbekannte Nummern nach „Cache: unbekannte Telefonnummern“ (Beispiel 60 s)

Neu laden lädt die Listen sofort neu; Cache leeren verwirft zusätzlich die Ergebnisse der Direktabfrage. Während des Ladens bleibt die bisherige Liste aktiv.

Schnittstellen und Telefonanlagen

Auf der Seite Schnittstellen wird jede Telefonanlage (bzw. jedes Telefon mit Telefonbuch-Abfrage) als eigene Schnittstelle angebunden, jede als eigene Karte. Höchstens 10 Schnittstellen sind möglich – der Zähler oben zeigt z. B. „1 von 10“; die Edition Basic erlaubt eine, mehr sind mit einer Sonderlizenz möglich (callerhub.de). Wie bei den Datenquellen lassen sich die Karten der Schnittstellen an ihrem Kopf ziehen, um die Reihenfolge zu ändern. Alle Schnittstellen teilen Port und HTTPS (Administration › Server; die Zeile oben auf der Seite zeigt die Adresse und verweist dorthin); CallerHub erkennt die anfragende Anlage an ihrem API-Key. Je Schnittstelle gelten eigene erlaubte IP-Adressen und eine eigene Auswahl der abgefragten Datenquellen. Eine neue Installation beginnt ohne Schnittstelle: Die Karte Erste Schnittstelle hinzufügen öffnet die Auswahl der Telefonanlage. Bis dahin beantwortet CallerHub Anfragen mit 503 „Keine Schnittstelle eingerichtet“.

Anleitung anzeigen (Link rechts in der Karte) öffnet die Einrichtungsanleitung für die gewählte Telefonanlage. Alle Anleitungen folgen denselben Schritten: 1. Adresse (die URL, unter der CallerHub antwortet), 2. In der Telefonanlage eintragen (wohin die Adresse gehört), 3. Antwort (was die Telefonanlage erhält), 4. Test (im Browser, dann mit einem Anruf) und, sofern vorhanden, Optional: Anrufanalyse (wie Anrufdaten zu CallerHub gelangen).

Seite Schnittstellen
Seite Schnittstellen: eine Karte je Telefonanlage; die geöffnete Karte zeigt Bezeichnung, Zustand und die Einstellungen der Telefonanlage.
FeldBeispielBedeutung
Karte der Schnittstelle1. Zentrale · STARFACEein Klick öffnet die Karte; der Zustand zeigt die letzte Anfrage dieser Anlage; Anleitung kopieren kopiert die Anleitung mit dem echten API-Key
Bezeichnung, AktivZentrale, NiederlassungName in Protokoll und Statistik; inaktive Schnittstellen erhalten keine Namen
Schnittstelle hinzufügen, EntfernenSchnittstelle hinzufügen bietet alle Profile von Telefonanlagen an (STARFACE, 3CX, Asterisk / FreePBX, VitalPBX, Issabel, XML-Telefonbuch (Yealink-Format), XML-Telefonbuch (Snom-Format), Allgemein (HTTP)) und legt eine Schnittstelle mit eigenem API-Key an. Alle Telefonanlagen sind immer verfügbar.
TelefonanlageSTARFACE, 3CXbestimmt Antwortformat und Anleitung; fest, sobald erlaubte IP-Adressen eingetragen sind (für eine andere Anlage eine neue Schnittstelle hinzufügen)
Anleitungeingeklappt; Anleitung anzeigen klappt sie auf
Abgefragte DatenquellenAlle Datenquellen oder CRM, ERPAuswahl mit Häkchen; mindestens eine Quelle bleibt gewählt
API-Key(zufällig, 43 Zeichen)Neu erzeugen macht den alten Schlüssel ungültig; Kopieren kopiert ihn
Erlaubte IP-Adressen192.168.10.20, 203.0.113.0/28leer = alle Absender (nicht empfohlen)
Server (Administration, für alle)8080, HTTPSPort, HTTPS, automatischer Start, Start mit der Windows-Anmeldung, Starten/Stoppen; erweitert: vertrauenswürdige Reverse Proxys
Karte Telefonanlage
Karte „Telefonanlage“ mit Anleitung für die STARFACE.
AnlageFormatBeispiel-AdresseStand
STARFACETexthttp://callerhub:8080/lookup?number= + Header X-Api-Keyüber ein Modul der STARFACE (siehe Telefonanlagen einrichten)
3CXJSON…/lookup?format=json&apikey=…&number=[Number]Schaltfläche „3CX-Vorlage …“ speichert die Vorlage; ungeprüft
Asterisk / FreePBXText…/lookup?apikey=…&called=${EXTEN}&number=${URIENCODE(${CALLERID(num)})}Wählplan mit CURL; ungeprüft
VitalPBXText…/lookup?apikey=…&number=[CIDNUM]CID-Lookup-Quelle (HTTP/HTTPS) in der eingehenden Route; ungeprüft
Issabel (auch FreePBX)TextHost, Port, Pfad /lookup, Abfrage format=text&apikey=…&number=[NUMBER]CallerID Lookup Sources; ungeprüft
XML-Telefonbuch (Yealink-Format)XML-Telefonbuch…/lookup?format=yealink&apikey=…&number=#SEARCHRemote-Telefonbuch (Yealink, Fanvil); ungeprüft
XML-Telefonbuch (Snom-Format)XML-Telefonbuch…/lookup?format=snom&apikey=…&number=#SEARCHungeprüft
Allgemein (HTTP)Text, JSON, XML…/lookup?format=json&apikey=…&number=071112345678für jede Anlage mit HTTP-Abfrage

Nur die STARFACE-Anbindung ist im Einsatz erprobt. Die Anleitungen für 3CX, Asterisk/FreePBX, VitalPBX, Issabel, Yealink/Fanvil und Snom beruhen auf veröffentlichten Schnittstellen; gleichen Sie Platzhalter, Menüpfade und Einstellungsnamen mit der Dokumentation Ihrer Version ab.

Telefonanlagen einrichten

Bevor Sie beginnen

  • Mindestens eine Datenquelle ist bereit (Zustand „Bereit“ auf der Startseite), und eine Testabfrage mit einer bekannten Nummer liefert den erwarteten Namen.
  • Netzwerk: Die Telefonanlage (bzw. die Telefone) erreicht den CallerHub-Rechner über den Port (Vorgabe 8080, HTTPS z. B. 8443). Die Windows-Firewall lässt den Port zu; Administration → Systemzustand bietet eine Schaltfläche für die Firewall-Regel.
  • Bekannte Adressen: die IP-Adresse der Telefonanlage bzw. das Netz der Telefone, für Erlaubte IP-Adressen.
  • Administratorzugang zur Weboberfläche der Telefonanlage bzw. zur Provisionierung der Telefone.
  • CallerHub läuft nur an einer Stelle – entweder als Dienst oder im Programmfenster (siehe Windows-Dienst).

So funktioniert die Abfrage

Bei jedem eingehenden Anruf ruft die Telefonanlage eine Adresse von CallerHub auf und erhält den Namen. Parameter von /lookup:

ParameterBedeutungBeispiel
numberRufnummer des Anrufers in beliebiger Schreibweise (national, +49, 0049, mit Leerzeichen)0711 1234567, %2B497111234567
apikey oder Header X-Api-KeyAPI-Key der Schnittstelle (Header bevorzugt: Er erscheint nicht in Protokollen von Proxys)48 Zeichen
formatAntwort: text (nur der Name), json, xml, yealink, snomjson
called, user (optional)angerufene Nummer und Benutzer für Statistik und Anrufanalyse200

Antworten: 200 mit dem Namen (leer, wenn unbekannt), 401 API-Key falsch oder fehlend, 403 IP-Adresse für diese Schnittstelle nicht erlaubt, 429 nach zu vielen falschen Schlüsseln vorübergehend gesperrt, 503 keine Datenquelle bereit. /health liefert OK ohne Schlüssel (Prüfung der Erreichbarkeit).

Ablauf

Für jede Anlage gilt derselbe Ablauf. Die Beispiele verwenden 192.168.10.5 als Server von CallerHub, Port 8080 und den Platzhalter API-KEY; die vollständige Adresse mit dem echten Schlüssel liefert Anleitung kopieren.

  1. Schnittstellen → Hinzufügen (bei einer neuen Installation Erste Schnittstelle hinzufügen), Telefonanlage wählen, Bezeichnung eingeben.
  2. Erlaubte IP-Adressen: die IP-Adresse der Anlage bzw. der Telefone eintragen (z. B. 192.168.10.20 oder 192.168.20.0/24 für ein Telefonnetz).
  3. Abgefragte Datenquellen prüfen, dann Speichern und übernehmen.
  4. Im Browser eines Rechners im selben Netz testen: http://192.168.10.5:8080/lookup?apikey=API-KEY&number=030 1234560 liefert den Namen (leer, wenn unbekannt). 401 = Schlüssel falsch, 403 = IP-Adresse nicht erlaubt.
  5. Die Anlage wie unten beschrieben einrichten und einen Testanruf führen. Die Leiste zeigt danach „Anfrage hh:mm“; die Startseite listet den Zugriff unter Letzte Zugriffe.

STARFACE

Die STARFACE hat keine eingebaute Namensabfrage per Web-Adresse; sie fragt CallerHub über ein Modul ab. Bei einem eingehenden Anruf ruft das Modul die Adresse von CallerHub auf und zeigt die Antwort (Text) als Anrufernamen an.

  1. Adresse und API-Key: http://192.168.10.5:8080/lookup?number=<number>, API-Key als Header X-Api-Key oder Parameter apikey. Test im Browser: http://192.168.10.5:8080/lookup?number=07114567890&apikey=API-KEY.
  2. Modul anlegen: In der Weboberfläche der STARFACE Admin → Module → Modul-Library; im Module Designer eine Funktion für eingehende Anrufe mit den Bausteinen CreateHttpUrlWithParams, HttpRequest (GET), ReadFromStream (UTF-8) und SetCallerId (Name = Antwort) anlegen. Bildschirmfotos dieser Bausteine zeigt das STARFACE-Wiki: Webservices aus dem Modulsystem ansteuern.
  3. Oder ein fertiges Modul importieren: Admin → Module → Modul-Library → Modul importieren, die Datei .sfm wählen, eine Modulkonfiguration mit Adresse und API-Key anlegen und aktivieren. Bildschirmfotos: Import von neuen Modulen.
  4. Einen Testanruf von einer im CRM gespeicherten Nummer führen. Der Zugriff erscheint in CallerHub unter Letzte Zugriffe.

Als Vorlage liegt das Beispielmodul Samples\CRM-Lookup_v3.sfm bei; Aufbau und Einschränkungen beschreibt der Abschnitt STARFACE-Beispielmodul. CallerHub zeigt diese Anleitung mit dem echten API-Key auch unter Schnittstellen → Telefonanlage → Anleitung.

3CX

  1. In der Karte Telefonanlage „3CX (CRM-Vorlage)“ wählen, Speichern und übernehmen klicken, dann 3CX-Vorlage … speichern. Die Datei enthält Adresse und API-Key.
  2. In der 3CX-Verwaltungskonsole unter Integrationen → CRM (Menüpfad je nach Version) die Vorlage hochladen und CallerHub als CRM auswählen.
  3. Die Suche nach Telefonnummern einschalten. 3CX fragt mit format=json und erhält name, phone und – falls hinterlegt – die url des Datensatzes.

Asterisk / FreePBX

  1. Voraussetzung: Das Modul func_curl ist geladen (asterisk -rx "module show like curl").
  2. Im eingehenden Kontext (FreePBX: /etc/asterisk/extensions_custom.conf, Kontext from-pstn-custom o. ä.) vor dem Wählen den Namen setzen:
exten => _X.,1,Set(CURLOPT(httptimeout)=2)
 same => n,Set(CALLERID(name)=${CURL(http://192.168.10.5:8080/lookup?apikey=API-KEY&called=${EXTEN}&number=${URIENCODE(${CALLERID(num)})})})
 same => n,Goto(from-pstn,${EXTEN},1)
  • Wählplan neu laden: asterisk -rx "dialplan reload". Ist CallerHub nicht erreichbar, bleibt der Name nach 2 Sekunden leer.
  • Bei HTTPS muss Asterisk dem Zertifikat vertrauen (Stammzertifikat auf dem Asterisk-Server hinterlegen).

Yealink / Fanvil (Remote-Telefonbuch)

  1. Weboberfläche des Telefons: Telefonbuch → Remote-Telefonbuch, Adresse http://192.168.10.5:8080/lookup?format=yealink&apikey=API-KEY&number=#SEARCH, Name CallerHub.
  2. Unter Funktionen bzw. Telefonbuch die Namenssuche für eingehende Anrufe im Remote-Telefonbuch einschalten (Bezeichnung je nach Firmware).
  3. Für viele Telefone per Provisionierung:
remote_phonebook.data.1.url = http://192.168.10.5:8080/lookup?format=yealink&apikey=API-KEY&number=#SEARCH
remote_phonebook.data.1.name = CallerHub
features.remote_phonebook.enable = 1

Erlaubte IP-Adressen: das Netz der Telefone, z. B. 192.168.20.0/24.

Snom

  1. Weboberfläche bzw. Provisionierung: Adresse des XML-Telefonbuchs http://192.168.10.5:8080/lookup?format=snom&apikey=API-KEY&number=#SEARCH.
  2. Die Suche für eingehende Anrufe im XML-Telefonbuch einschalten; Einstellungsnamen und Platzhalter mit der Snom-Dokumentation Ihrer Firmware abgleichen.

Andere Anlagen (allgemein)

Jede Anlage, die bei einem Anruf eine Adresse per HTTP GET abrufen kann, lässt sich anbinden. format= wählt die Antwort: text (nur der Name), json oder xml. Optional ergänzen &called= (angerufene Nummer) und &user= (Benutzer) die Statistik. Beispiel für einen Test mit curl:

curl -H "X-Api-Key: API-KEY" "http://192.168.10.5:8080/lookup?format=json&number=%2B49301234560"

Anlagen ohne HTTP-Abfrage

Unify OpenScape Business, Auerswald, Avaya IP Office, Gigaset und viele Tischtelefone lösen Namen über LDAP auf; Cloud-Anlagen (Teams, Zoom, NFON, Placetel …) und die FRITZ!Box verwenden eigene Kontaktlisten. Verwenden Sie für diese das Modul Telefonbuch (LDAP-Telefonbuch oder Export).

Typische Fehler bei der Anbindung

SymptomUrsache und Abhilfe
Kein Eintrag unter Letzte Zugriffe beim Testanruf, Status „Wartet auf Anfragen“Die Anfrage erreicht CallerHub nicht: Adresse in der Telefonanlage (IP, Port, http/https), Windows-Firewall und eine etwaige Firewall zwischen den Netzen prüfen. Aus dem Netz der Telefonanlage mit dem Browser oder curl testen.
Protokoll: Warnung mit status=401API-Key falsch oder fehlend. Die Anleitung erneut kopieren (Anleitung kopieren) – ein neu erzeugter Schlüssel muss auch in der Telefonanlage geändert werden.
Protokoll: Warnung mit status=403Die Absenderadresse steht nicht in Erlaubte IP-Adressen dieser Schnittstelle. Das Protokoll zeigt den tatsächlichen Absender (ip=…); hinter NAT oder einem Reverse Proxy weicht er von der erwarteten Adresse ab (einen Proxy unter Administration → Server → Vertrauenswürdige Reverse Proxys eintragen).
status=429Zu viele falsche Schlüssel von dieser Adresse: das Ende der Sperre abwarten (Vorgabe 5 Minuten), dann den Schlüssel korrigieren.
Anfrage kommt an, aber das Telefon zeigt keinen NamenAntwort leer (Nummer unbekannt: Testabfrage mit derselben Nummer), falsches format für die Anlage, oder die Zeitüberschreitung der Telefonanlage ist kürzer als die Antwortzeit (siehe Ø Antwortzeit; Direktabfragen an eine langsame Datenbank dauern länger als Telefonnummernlisten).
HTTPS: Verbindung schlägt fehlDie Telefonanlage vertraut dem Zertifikat nicht, oder der Zertifikatsname passt nicht zur Adresse. Das Stammzertifikat in die Telefonanlage importieren.
Name abgeschnitten oder Umlaute falschMit Administration → Erweitert → Max. Namenslänge kürzen; Antworten sind UTF-8 – die Zeichensatz-Einstellung des Moduls prüfen (STARFACE: ReadFromStream mit UTF-8).

Bleibt die Ursache unklar: ☰ → Fehleranalyse → Erweiterte Aufzeichnung starten …, einen Testanruf führen und die Aufzeichnung prüfen oder sie in einem Diagnosepaket senden. Die Aufzeichnung enthält jede Anfrage mit allen Headern und Parametern (Schlüssel maskiert).

Telefonbuch: LDAP, Export und FRITZ!Box (Modul)

Viele Telefonanlagen und Tischtelefone rufen keine Web-Adresse auf, sondern fragen ein LDAP-Verzeichnis ab – etwa Unify OpenScape Business, Auerswald COMtrexx/COMpact (als LDAP-Proxy für ihre Telefone), Avaya J100 an IP Office, Yeastar P-Series, innovaphone (Reverse Lookup), Ascom IP-DECT, Grandstream UCM und pascom sowie Telefone von Yealink, Snom, Gigaset, Fanvil und Grandstream. Cloud-Anlagen (Microsoft Teams, Zoom, RingCentral, Webex, NFON, Placetel) und die FRITZ!Box zeigen Namen nur aus ihren eigenen Kontaktlisten. Das Modul Telefonbuch (LDAP und Export) deckt beides ab. Schalten Sie es unter Administration → Module ein; die Karte Telefonbuch erscheint auf der Seite Schnittstellen.

Telefonbuch
Schnittstellen → Telefonbuch: LDAP-Telefonbuch, Anleitung je Gerät und Export.

LDAP-Telefonbuch

  • Nur Lesen (LDAPv3): Anmeldung, Suche, Abmeldung. Schreibversuche werden abgelehnt.
  • Rückwärtssuche: Sucht das Telefon nach einer Nummer (z. B. (telephoneNumber=07111234567)), fragt CallerHub alle aktiven Datenquellen – auch Direktabfragen – mit Regeln, Sperrliste und VIP-Liste ab. Die Nummer darf national, mit +49 oder 0049 geschrieben sein.
  • Namenssuche (Telefonbuch am Telefon, z. B. (|(cn=Mül*)(sn=Mül*))) und Suchen mit Platzhaltern nutzen die Telefonnummernlisten im Arbeitsspeicher; Quellen mit Direktabfrage lassen sich nicht nach Namen durchsuchen.
  • Einträge: uid (internationale Nummer), cn/sn/displayName (Anzeigename), telephoneNumber (national und E.164), labeledURI (Link zum Datensatz), objectClass inetOrgPerson. Höchstens 200 Einträge je Suche.
  • Abfragen erscheinen in Protokoll und Statistik mit der Schnittstelle LDAP.
EinstellungBeispielHinweis
Port389 (LDAP), 636 (LDAPS)Ports unter 1024 brauchen unter Windows keine besonderen Rechte; legen Sie eine Firewall-Regel für den Port an.
Basis-DNou=callerhubIm Telefon als „Base“ bzw. „Search Base“ eintragen.
Erlaubte IP-Adressen192.168.20.0/24Netz der Telefone bzw. die Telefonanlage; leer = alle.
Benutzer, Kennworttelefon, mindestens 8 ZeichenLeer = anonymer Zugriff. Mit Kennwort liefert eine anonyme Suche nichts. Das Kennwort wird mit DPAPI verschlüsselt gespeichert; falsche Kennwörter zählen zur Sperre bei Fehlversuchen.
Zertifikat für LDAPSFingerabdruckZertifikat mit privatem Schlüssel aus „Eigene Zertifikate“ (Computer oder Benutzer); dann nur TLS 1.2/1.3. StartTLS wird nicht unterstützt.

Die Karte zeigt zu jedem Gerät die einzutragenden Werte. Allgemein gilt:

Server:            Name oder IP-Adresse des CallerHub-Rechners, Port 389 (636 mit LDAPS)
Base DN:           ou=callerhub
Namensfilter:      (|(cn=%)(sn=%))
Nummernfilter:     (|(telephoneNumber=%)(mobile=%))
Anzeige-Attribut:  cn          Nummern-Attribut: telephoneNumber
Rückwärtssuche bei eingehenden Anrufen: ein

Die Bezeichnungen der Felder und der Platzhalter (%, %s oder *) unterscheiden sich je nach Hersteller und Firmware; ziehen Sie das Handbuch des Geräts heran. Yealink: Weboberfläche Directory → LDAP. Bei Telefonanlagen (Unify, Auerswald, Avaya) wird CallerHub als externes LDAP-Verzeichnis der Anlage eingetragen; die Anlage gibt die Namen an ihre Telefone weiter.

Mitel-100-Familie (Mitel 112, 130, 150; früher Aastra OpenCom 100)

Diese Anlagen fragen keine Web-Adresse ab, können aber je Firma ein externes LDAP-Verzeichnis einbinden. Einstellungen in der Web-Konsole der Anlage (Release 12.1, mit CallerHub noch nicht getestet):

  1. Telefonie → Erweitert → Firmen → (Ihre Firma) → LDAP-Server: Status ein, Server = Name oder IP-Adresse des CallerHub-Rechners, Port 389, Benutzername und Kennwort wie in der Karte von CallerHub, BaseDN ou=callerhub.
  2. Doppelter Telefonbucheintrag: LDAP + zentral verwenden behält die Einträge des zentralen Telefonbuchs. Rufnummer: mit transparent beginnen; erscheint kein Name, konvertieren versuchen. Cache löschen: z. B. 60 Minuten.
  3. User Manager → Benutzergruppen: Telefonbuch: LDAP verwenden für die betroffenen Gruppen ankreuzen.
  4. In CallerHub die IP-Adresse der Anlage unter Erlaubte IP-Adressen eintragen und die Firewall-Regel anlegen (Systemzustand).

Ob die Anlage den LDAP-Namen bei eingehenden Anrufen oder nur in der Telefonbuchsuche anzeigt, hängt vom Release ab; prüfen Sie das mit einem Testanruf.

Telefonbuch exportieren

Die Schaltflächen der Karte speichern die Einträge der Telefonnummernlisten (nach Regeln, ohne gesperrte Nummern) als Datei. Voraussetzung: Die Schnittstelle läuft.

FormatVerwendung
FRITZ!Box (XML)FRITZ!Box: Telefonie → Telefonbuch → Wiederherstellen und die Datei wählen. Die Anzahl der Einträge je Telefonbuch ist begrenzt (je nach Modell).
vCard 3.0 (.vcf)Outlook, Auerswald, Gigaset, viele Cloud-Anlagen (Import der Kontakte)
CSVExcel; Import in Cloud-Anlagen (z. B. Zoom, NFON, Placetel) über deren Kontakt-Import, Spalten bei Bedarf anpassen
Yealink (XML)Remote-Telefonbuch für Yealink und kompatible Telefone

Telefone mit Remote-Telefonbuch können die Liste auch direkt laden (Modul Browser-Zugang, Zugangsschlüssel aus Administration → Browser-Zugang):

http://192.168.10.5:8080/phonebook?format=yealink&key=ZUGANGSSCHLUESSEL
(format: yealink, fritzbox, vcard, csv)

FRITZ!Box

  • Namen bei eingehenden Anrufen: Die FRITZ!Box fragt keine externe Adresse ab. Exportieren Sie das Telefonbuch als FRITZ!Box-XML und importieren Sie es (siehe oben); nach Änderungen im CRM erneut exportieren.
  • Anrufanalyse: Tragen Sie unter Administration → Modul: Anrufanalyse die Adresse der FRITZ!Box ein (z. B. fritz.box). CallerHub liest den Anrufmonitor (Port 1012) und schreibt jeden beendeten Anruf in CallData\FRITZ!Box\fritzbox-YYYY-MM.csv. Schalten Sie den Anrufmonitor einmalig an einem angeschlossenen Telefon mit #96*5* ein (#96*4* schaltet ihn aus). Bei einem Verbindungsabbruch verbindet CallerHub alle 30 Sekunden neu.

STARFACE-Beispielmodul

Das Beispiel „CRM-Lookup“ zeigt, wie ein Modul für CallerHub im Module Designer der STARFACE aussehen kann. Es ergänzt die allgemeine Anleitung unter Telefonanlagen einrichten.

Einschränkungen des Beispiels Samples\CRM-Lookup_v3.sfm:

  • nur als Vorlage zum Nachschlagen gedacht, auf keiner STARFACE getestet und nicht von STARFACE geprüft;
  • Bausteinnamen aus einem STARFACE-Export (Version 10); Menü- und Feldbezeichnungen können je nach Version abweichen;
  • nach dem Import zeigt die STARFACE einen Lizenzhinweis;
  • nur eingehende Anrufe; anonyme Anrufe werden nicht abgefragt.

1. Voraussetzungen

  • CallerHub läuft und ist von der STARFACE erreichbar (siehe Firewall).
  • Die Adresse (z. B. https://lookup.company.com:8443/lookup) und der API-Key liegen vor (Schnittstellen → Telefonanlage).
  • Test im Browser: https://lookup.company.com:8443/lookup?number=07114567890&apikey=API-KEY liefert einen Namen.

2. Modul anlegen

  1. Den Module Designer öffnen und ein neues Modul anlegen. Name: CRM-Lookup, Hersteller: z. B. Ihr Firmenname.
  2. Den Reiter Einstellungen mit dem Textfeld GUI_LOOKUP_URL (STRING) und dem Passwortfeld GUI_API_KEY (STRING) anlegen.
  3. Die Funktion lookupCaller anlegen.

3. Bausteine in lookupCaller

#BausteinEinstellungen
1Call → GetCallerAusgaben callerSignallingNumber, isAnonymous
2Call → GetCalledNumberAusgabe calledNumber (für die Statistik)
3ifisAnonymous wahr → keine Abfrage; die folgenden Schritte im else-Zweig
4Call → CreateMapAusgabe map
5Call → Addkey = number, value = callerSignallingNumber
6Call → Addkey = called, value = calledNumber; optional user
7Call → Addkey = apikey, value = GUI_API_KEY
8Call → CreateHttpUrlWithParamsrequestUrl = GUI_LOOKUP_URL, params = Map → createdUrl
9Call → HttpRequestGET, url = createdUrl → responseStream, httpStatusCode
10Call → ReadFromStreamUTF-8 → text
11Call → IsNotBlanktext → result
12ifresult wahr (optional httpStatusCode = 200)
13Call → SetCallerIdcallerName = text, callerNumber = callerSignallingNumber, resolved = true

Statt des Parameters apikey kann der Schlüssel als Header X-Api-Key gesendet werden (eine zweite Map als httpHeaders bei HttpRequest). Header erscheinen nicht in Proxy- oder Firewall-Protokollen.

4. Einstiegspunkt, Instanz, Test

  1. Einen Einstiegspunkt für eingehende Anrufe mit dem Ziel lookupCaller anlegen; das Modul speichern.
  2. Eine Instanz anlegen, URL und API-Key eintragen und unter „Log-Datei“ vorübergehend INFO wählen.
  3. Von einer Telefonnummer anrufen, die im CRM gepflegt ist. Die Anfrage erscheint in CallerHub mit Absender-IP, angerufener Telefonnummer und Ergebnis. Kommt keine Anfrage an, prüfen Sie Adresse, Firewall und erlaubte IP-Adressen. Kommt eine Anfrage an, erscheint aber kein Name, prüfen Sie das Modul-Log und die Bedingung in Schritt 12.

Schnittstelle (HTTP)

GET /lookup?number=+4930123456                  Header X-Api-Key: <Schlüssel>  (oder Parameter apikey)
  → 200, Text: "Musterfirma AG - Frau Beispiel"   (leer, wenn unbekannt)
GET /lookup?number=…&called=201&user=zentrale    optionale Angaben für die Statistik
GET /lookup?number=…&format=json               → {"found":true,"name":"…","phone":"+4930123456","url":"…","source":"CRM"}
GET /lookup?number=…&format=xml                → <lookup found="true"><name>…</name><phone>…</phone></lookup>
GET /lookup?number=…&format=yealink|snom       → XML-Telefonbuch
GET /health                                      → OK (Verfügbarkeitsprüfung, zählt nicht in der Statistik)
GET /stats, /stats/data                          Statistik im Browser (Modul Browser-Zugang)
GET /open?number=…&key=…                        Weiterleitung zum CRM-Datensatz
GET /metrics, /status                            Monitoring (Prometheus-Text bzw. JSON)

Jede Schnittstelle hat einen eigenen API-Key; CallerHub beantwortet die Anfrage mit den Datenquellen dieser Schnittstelle. Fehlercodes: 401 falscher Schlüssel, 403 IP nicht erlaubt (allgemein oder für diese Schnittstelle), 404 unbekannter Pfad oder Modul ausgeschaltet, 405 falsche Methode, 503 Telefonnummernliste nicht bereit, Datenquellenfehler oder keine Datenquelle eingerichtet.

Konsolenbefehle

BefehlWirkung
CallerHub.exeOberfläche (bzw. Dienst, wenn Windows das Programm als Dienst startet)
CallerHub.exe minimizedOberfläche im Infobereich (Autostart)
CallerHub.exe checkVerbindung und Abfrage aller aktiven Quellen prüfen
CallerHub.exe test 07114567890Eine Telefonnummer abfragen
CallerHub.exe templates MYSQLSQL-Vorlagen ausgeben (ORACLE, SQLSERVER, MYSQL, POSTGRESQL, ODBC)
CallerHub.exe consoleSchnittstelle ohne Oberfläche (Enter beendet sie)

Rückgabewerte: 0 = Erfolg, 1 = Laufzeitfehler, 2 = Bedien- oder Konfigurationsfehler.

Anzeigename, Sperr- und VIP-Liste

Modul „Anzeigename, Sperr- und VIP-Liste“. Die Regeln gibt es zweimal, beide ergänzen sich:

  • Global (Administration → Modul: Anzeigename, Sperr- und VIP-Liste): gilt für alle Datenquellen und Schnittstellen.
  • Je Datenquelle (erweiterter Modus, Datenquellen → Anzeigename, Sperr- und VIP-Liste): gilt nur für die gewählte Quelle.
FeldBeispielWirkung
Ersetzungen (je Zeile suchen;ersetzen)GmbH & Co. KG;GmbH & Co.kürzt Namen für schmale Displays
Sperrliste (je Zeile Telefonnummer;Text)+49900*
0711 999888;Advertising
gesperrte Telefonnummern erhalten keinen bzw. den angegebenen Namen; * = alle Nummern mit diesem Anfang
Text bei SperreAdvertisingStandardtext für Einträge ohne eigenen Text (global: leer = kein Name; je Quelle: leer = globaler Text)
VIP-Liste (je Zeile Telefonnummer;Name)0711 123456;Musterfirma main officeohne Treffer gilt der angegebene Name; mit Treffer stellt CallerHub „Text vor VIP-Namen“ voran
Text vor VIP-NamenVIP oder ★ steht vor dem Namen (je Quelle: leer = globaler Text)

Reihenfolge bei jedem Anruf

  1. Globale Sperrliste: Steht die Nummer darin, endet die Suche.
  2. Die Datenquellen der Schnittstelle nacheinander: zuerst die Sperrliste der Quelle, dann die Abfrage; die erste Quelle mit Treffer liefert den Namen.
  3. Ersetzungen der Quelle mit Treffer, danach die globalen Ersetzungen.
  4. VIP-Liste der Quelle mit Treffer, sonst die globale VIP-Liste.
  5. Zuletzt die Plugins.

Statistik

Statistik
Statistik der letzten 30 Tage mit Kennzahlen, Verlauf und Tabelle.
  • Zeitraum: heute, gestern, letzte 7/30 Tage, dieser/letzter Monat, dieses Jahr oder frei. Bis 2 Tage nach Stunden, bis 92 Tage nach Tagen, darüber nach Monaten.
  • Auswerten nach: alle Anfragen, angerufene Telefonnummer, Benutzer, IP-Adresse, Datenquelle (Trefferquote je Quelle), Schnittstelle (je Telefonanlage) oder Anrufer (Top-Anrufer, Telefonnummer maskiert, Name nur bei eingeschalteter Option).
  • Wochentag × Stunde: Wärmebild der Anfragen; zeigt Stoßzeiten.
  • Exportieren speichert Diagramm und Tabelle als CSV-Datei.
  • Im Browser (Leiste über der Auswertung): Ist der Browser-Zugang eingerichtet, öffnet Im Browser öffnen die Seite /stats. Sonst richtet Im Browser bereitstellen … ihn ein (schaltet das Modul ein, erzeugt einen Zugangsschlüssel, öffnet die Karte Administration → Modul: Browser-Zugang); prüfen Sie danach die erlaubten IP-Adressen und klicken Sie auf Speichern und übernehmen.
Wochentag mal Stunde
Wärmebild Wochentag × Stunde; die Maus über einer Zelle zeigt die Werte.

Gespeichert werden je Anfrage: Zeit, IP-Adresse, Status, Treffer, Dauer, Quelle, Schnittstelle, angerufene Telefonnummer, Benutzer, maskierte Telefonnummer und ein nicht umkehrbares Kürzel (für Top-Anrufer). Die vollständige Telefonnummer speichert CallerHub nicht.

Anrufanalyse (Modul)

Das Modul Anrufanalyse wertet alle Anrufe aus den Verbindungsdaten (CDR) der Telefonanlage aus – auch Anrufe, bei denen CallerHub nicht gefragt wurde. Nach dem Einschalten unter Administration → Module erscheinen der Reiter Anrufanalyse und die Karte Administration → Modul: Anrufanalyse.

Anrufanalyse
Anrufanalyse der letzten 30 Tage mit Testdaten.

Um das Programmmenü kurz zu halten, wählen Sie Administration → Modul: Anrufanalyse → Nicht im Menü zeigen. Die Anrufanalyse ist dann nur im Browser unter /calls erreichbar.

BereichInhalt
Zeitraum, Richtungheute bis dieses Jahr; alle, eingehend (Vorgabe), ausgehend oder intern
KennzahlenAnrufe, angenommen, verpasst, Erreichbarkeit (Anteil angenommener Anrufe), Ø Wartezeit bis zur Annahme, Ø Gesprächsdauer; Vollversion zusätzlich Service-Level (Anteil der innerhalb von 20 Sekunden angenommenen Anrufe, wie beim üblichen 80/20-Ziel) und Rückrufquote (Anteil der verpassten eingehenden Anrufe, die innerhalb von 24 Stunden zurückgerufen oder später erreicht wurden)
VerlaufAnrufe und angenommene Anrufe je Stunde, Tag oder Monat
Verpasste nach Uhrzeit (Vollversion)verpasste Anrufe je Wochentag und Stunde – zeigt, wann Personal fehlt
Auswerten nachTag (Grundversion); Vollversion zusätzlich Wochentag, Uhrzeit, Nebenstelle, Anrufer (mit Namen aus den Datenquellen, Telefonnummer maskiert) und Schnittstelle – jeweils mit Erreichbarkeit, Wartezeit, Dauer, Service-Level und Rückrufquote
ExportierenTabelle als CSV-Datei
Im BrowserIm Browser öffnen (auf der Seite und in der Karte Modul: Anrufanalyse) öffnet dieselbe Auswertung unter /calls (siehe Browser-Zugang)

Die Auswertungen folgen üblichen Berichten der Gesprächsdatenerfassung und des Contact-Centers (z. B. ProCall Analytics): Erreichbarkeit, Wartezeiten, Service-Level, Rückrufquote und Verteilung über Wochentage und Stunden.

Verbindungsdaten bereitstellen

Die Telefonanlage legt ihre Verbindungsdaten als CSV-Datei in den Ordner CallData im Programmordner (einen anderen Ordner stellen Sie unter Modul: Anrufanalyse ein). Ein Unterordner je Anlage (z. B. CallData\Head office) ordnet die Anrufe einer Schnittstelle zu. CallerHub liest den Ordner bei jedem Aufruf der Seite und mit Aktualisieren; die Dateien verändert CallerHub nicht.

  • Asterisk / FreePBX: Kopieren Sie die Datei /var/log/asterisk/cdr-csv/Master.csv regelmäßig in den Ordner (z. B. per Freigabe oder geplanter Aufgabe). CallerHub erkennt den Aufbau automatisch.
  • STARFACE: in der Weboberfläche Admin → Auswertung → Verbindungsdaten exportieren (je Benutzer oder Gruppe, Zeitraum wählbar); legen Sie die Datei output.csv in den Ordner. CallerHub erkennt den Aufbau (Spalten callid, starttime, linktime, incoming, answered, duration, login …) und fasst die Rufschritte eines Anrufs (z. B. Gruppe, dann Benutzer) zusammen. Wartezeit: Beginn bis Annahme; Nebenstelle: der Benutzer, der angenommen hat. Laut STARFACE-Wiki erfolgt der Export von Hand.
  • 3CX und andere: Exportieren Sie die Anrufliste bzw. den Anrufbericht als CSV (Menüpfad je nach Version). CallerHub erkennt Spalten mit Namen wie Start, Direction, From, To, Extension, Answered/Status, Wait, Duration (Sekunden oder hh:mm:ss).
  • FRITZ!Box: live über den Anrufmonitor, siehe FRITZ!Box.
  • Ohne Spalte Direction unterscheidet CallerHub nach der Länge der Rufnummer: Nebenstellen haben höchstens so viele Ziffern wie unter Nebenstellen bis (Ziffern) eingestellt (Vorgabe 4).
Start;Direction;From;To;Extension;Answered;Wait;Duration
2026-10-16 09:12:05;incoming;+49711456789;200;201;yes;8;00:03:41
2026-10-16 09:15:40;incoming;+4930123456;200;;no;35;0

Live-Empfang (ohne Datei)

Viele Telefonanlagen melden jeden Anruf, sobald er endet. CallerHub schreibt die Anrufe dann selbst in den Ordner (ein Unterordner je Schnittstelle bzw. Empfänger, eine Datei je Monat, gleiche Spalten wie oben), sodass die Anrufanalyse keinen Export benötigt:

QuelleEinstellung in CallerHubEinstellung in der Telefonanlage
Beliebige Anlage oder Skriptnichts (Modul Anrufanalyse eingeschaltet)/event mit callid (Beginn, angenommen, beendet; siehe unten)
PlacetelnichtsNotify-API: URL https://callerhub.company.com/event?apikey=API-KEY (Ereignisse IncomingCall, OutgoingCall, CallAccepted, HungUp)
sipgate.ionichtsURL für eingehende und ausgehende Anrufe https://callerhub.company.com/event?apikey=API-KEY; CallerHub beantwortet newCall mit derselben Adresse für answer und hangup
3CX (v18/v20)Empfänger 3CX, CallerHub wartet (Port z. B. 5100) oder verbindet sich (passiver Socket)Admin → Einstellungen → CDR: aktiver Socket an CallerHub-Adresse:5100 oder passiver Socket; Feldliste unverändert lassen
Asterisk / FreePBXEmpfänger Asterisk (AMI), CallerHub verbindet sich mit Port 5038manager.conf: Benutzer mit read = cdr; cdr_manager.conf: enabled = yes
Mitel MiVoice Office 400Empfänger Mitel, CallerHub verbindet sich mit Port 1080SMDR (Ausgabe der Verbindungsdaten) im Format PC5 über TCP
OpenScape BusinessEmpfänger OpenScape, CallerHub wartet (Port z. B. 5101)Gebührendaten per LAN (TCP-Client) an CallerHub-Adresse:5101
innovaphoneEmpfänger innovaphone (TCP) – oder nichts bei HTTPGateway → CDR0: TCP an CallerHub-Adresse:Port oder HTTP mit Pfad /cdr?apikey=API-KEY
FRITZ!BoxEmpfänger FRITZ!Box (Anrufmonitor), CallerHub verbindet sich mit Port 1012Anrufmonitor einmalig mit #96*5* einschalten
3CX V20 (Cloud oder lokal installiert)Empfänger 3CX V20 (XAPI), CallerHub ruft absiehe Verbindungsdaten per API
Microsoft Teams TelefonieEmpfänger Microsoft Teams, CallerHub ruft absiehe Verbindungsdaten per API
Webex CallingEmpfänger Webex Calling, CallerHub ruft absiehe Verbindungsdaten per API
Socket / TCP 3CX CDR, OpenScape, innovaphone CallerHub verbindet sich AMI, Mitel SMDR, FRITZ!Box API (CallerHub ruft ab) 3CX XAPI, Teams Graph, Webex HTTP /event und /cdr Placetel, sipgate, Skripte CallerHub Modul Anrufanalyse ein Datensatz je Anruf Anrufanalyse Seite, Browser, PDF-Bericht Anrufereignisse CRM, Ticketsystem, Programm

Empfänger richten Sie in der Karte Administration → Modul: Anrufanalyse unter Live-Empfang ein (bis zu 5): Empfänger hinzufügen … fragt zuerst nach der Telefonanlage; Port und Richtung sind vorausgefüllt. Wartet CallerHub, tragen Sie die IP-Adresse der Telefonanlage als zugelassenen Absender ein (Pflicht; andere Absender weist CallerHub ab). Datensatz prüfen liest eine eingefügte Beispielzeile und zeigt, wie CallerHub sie speichert – nützlich, bevor die Telefonanlage angeschlossen ist. Den Zustand jedes Empfängers (wartet, verbunden, Anzahl der Anrufe, Fehler) zeigt CallerHub unter der Liste und im Systemzustand.

Verbindungsdaten per API (3CX V20, Microsoft Teams, Webex Calling)

Cloud-Telefonanlagen speichern die Verbindungsdaten selbst. Mit einem Empfänger der Art CallerHub holt die Daten per API ab holt CallerHub neue Anrufe im eingestellten Abstand ab (Feld Abstand (min), Vorgabe 15 bzw. 30) und schreibt sie in die Anrufanalyse. CallerHub merkt sich den Zeitpunkt des letzten Abrufs, sodass nach einem Neustart nichts verloren geht oder doppelt zählt; der erste Abruf holt die letzten 24 Stunden. Datensatz prüfen im Empfänger-Dialog führt einen Probeabruf aus, ohne sich etwas zu merken.

TelefonanlageFelder in CallerHubVorbereitung
3CX V20Adresse (z. B. company.3cx.eu), Client-ID, geheimer Schlüssel (Client Secret)3CX-Verwaltungskonsole → Integrationen → API: Client hinzufügen, XAPI-Zugriff einschalten, Schlüssel kopieren. CallerHub meldet sich unter /connect/token an und liest /xapi/v1/ReportCallLogData.
Microsoft Teams Telefonie (Anrufpläne, Operator Connect, Direct Routing)Mandanten-ID oder Domäne, Client-ID, geheimer Schlüssel (Client Secret)Microsoft Entra Admin Center → App-Registrierungen: neue App, API-Berechtigung Microsoft Graph → Anwendungsberechtigungen → CallRecords.Read.All, Administratorzustimmung erteilen, geheimen Clientschlüssel erstellen. CallerHub liest getPstnCalls und getDirectRoutingCalls.
Webex CallingAPI-Adresse (Vorgabe analytics.webexapis.com), ZugangstokenControl Hub: Weisen Sie dem Benutzer die Rolle Webex Calling Detailed Call History API access zu; Token mit dem Scope spark-admin:calling_cdr_read (Service-App oder Integration). Die Datensätze stehen etwa 5 Minuten nach dem Anruf bereit; höchstens 12 Stunden je Anfrage (CallerHub teilt längere Zeiträume auf).

Wählen Sie den Abstand nicht kürzer als nötig: Cloud-Dienste begrenzen die Zahl der Anfragen. Tokens von Integrationen laufen ab; einen fehlgeschlagenen Abruf zeigen die Karte, der Systemzustand und das Monitoring (call_data_receivers_error). CallerHub speichert den geheimen Schlüssel verschlüsselt.

Anrufe an /event melden

…/event?apikey=API-KEY&event=incoming&callid=4711&number=07111234567&called=0711999200
…/event?apikey=API-KEY&event=answered&callid=4711&extension=201
…/event?apikey=API-KEY&event=ended&callid=4711&duration=95

Ereignisse mit derselben callid (auch callId, call_id) bilden einen Anruf: Wartezeit vom Beginn bis zur Annahme, Dauer aus duration oder aus der Zeit bis zum Ende. Ohne Anruf-ID verknüpfen Nummer und Nebenstelle die Ereignisse. Ein einzelnes Ereignis ended oder missed mit duration und answered=1|0 genügt ebenfalls. Mit POST nimmt CallerHub auch Formulardaten und JSON-Objekte an.

Verbindungsdaten per HTTP (/cdr)

POST /cdr?apikey=API-KEY&format=3cx (oder mitel, openscape, callerhub) nimmt eine oder mehrere Zeilen an; innovaphone-XML erkennt CallerHub automatisch (auch als Parameter msg). CallerHub ordnet die Anrufe der Schnittstelle des API-Keys zu.

Die Verbindungsdaten enthalten vollständige Telefonnummern. Sie bleiben im angegebenen Ordner; CallerHub speichert keine Kopie. Halten Sie die Aufbewahrungsdauer im Verzeichnis von Verarbeitungstätigkeiten fest.

Testdaten

Zum Ausprobieren zeigen beide Auswertungen erfundene Daten, solange noch keine echten Daten vorliegen:

  • Administration → Modul: Statistik → Testdaten anzeigen, solange keine echten Anfragen vorliegen
  • Administration → Modul: Anrufanalyse → Testdaten anzeigen, solange keine Verbindungsdaten vorliegen

CallerHub kennzeichnet Testdaten („Testdaten“ in Orange) und speichert sie nicht. Sobald die erste echte Anfrage bzw. die erste Datei mit Verbindungsdaten vorliegt, zeigt CallerHub nur noch echte Daten.

Browser-Zugang

Browser-Zugang
Administration → Modul: Browser-Zugang. Schneller Weg: Seite Statistik → Im Browser bereitstellen …

Modul „Browser-Zugang“, Karte Administration → Modul: Browser-Zugang. Alle Funktionen nutzen einen eigenen Zugangsschlüssel (getrennt vom API-Key) und optional eigene IP-Freigaben.

FeldBeispiel
ZugangsschlüsselHn4sT8vB2qL6wK9xR3mZ7pD1 („Neu erzeugen“ macht den alten ungültig)
Erlaubte IP-Adressen für den Browser-Zugang192.168.10.0/24 (leer = alle mit Zugangsschlüssel)

Statistik im Browser (/stats)

Gleiche Auswertung wie im Programm, auch auf dem Smartphone. Adresse: http://callerhub:8080/stats; Zugangsschlüssel eingeben, „Auf diesem Gerät merken“ ist optional. Die Seite lädt keine externen Inhalte.

Anrufanalyse im Browser (/calls)

Mit den Modulen Browser-Zugang und Anrufanalyse zeigt http://callerhub:8080/calls die Anrufanalyse mit demselben Zugangsschlüssel: Zeitraum, Richtung, Auswertung, Kennzahlen, Verlauf und Tabelle. Auch dort erscheinen Testdaten, solange keine Verbindungsdaten vorliegen. Die Statistikseite verweist auf die Anrufanalyse und umgekehrt.

CRM-Link (/open)

Für CTI-Popups: http://callerhub:8080/open?number=07114567890&key=ACCESS-KEY leitet zum Datensatz weiter (Link je Quelle, siehe Datenquellen).

Das Monitoring (/metrics, /status, /check, /prtg) ist seit Version 3.0 ein eigenes Modul: siehe Monitoring. CallerHub übernimmt Einstellungen früherer Versionen automatisch.

Über HTTP wird der Schlüssel unverschlüsselt übertragen. Bieten Sie den Browser-Zugang nur im internen Netz oder über HTTPS an.

Monitoring (Nagios, Icinga, Checkmk, PRTG, Zabbix, Prometheus, Grafana)

Modul Monitoring (Vollversion), Karte Administration → Modul: Monitoring. Überwachungssysteme fragen CallerHub über HTTP(S) am Port der Schnittstelle ab. Sie wählen, welche Kennzahlen CallerHub liefert; jede Adresse benötigt den Zugangsschlüssel (Parameter key, Header X-Monitoring-Key oder Authorization: Bearer …) und ist optional nur von den erlaubten IP-Adressen aus erreichbar.

Nagios / Icinga / Checkmk check_http → /check PRTG HTTP Data Advanced → /prtg Zabbix HTTP-Agent → /status Prometheus / Grafana scrape → /metrics CallerHub Modul Monitoring Schlüssel + erlaubte IP-Adressen wählbare Kennzahlen Kennzahlen Schnittstelle, Quellen Anfragen, Antwortzeit Live-Empfang Anrufereignisse, Lizenz System Auswahl
SystemAdresseEinstellung im Überwachungssystem
Nagios, Icinga, Checkmk/check?key=KEYcheck_http -H callerhub -p 8080 -u "/check?key=KEY" -s "OK -" oder das erste Wort auswerten (OK, WARNING, CRITICAL); Leistungsdaten nach |. Mit &http=1 antwortet CallerHub bei CRITICAL mit HTTP 503 für einfache HTTP-Prüfungen. Der Header X-Nagios-State enthält 0, 1 oder 2.
PRTG/prtg?key=KEYSensor HTTP Data Advanced; Kanäle: Zustand, Datenquellen bereit, beantwortet, unbekannt, abgewiesen, Fehler, mittlere Antwortzeit, Lizenztage, Arbeitsspeicher.
Zabbix/status?key=KEYElement vom Typ HTTP-Agent (JSON), abhängige Elemente mit JSONPath, z. B. $.state, $.requests.averageMs, $.sources[0].ready.
Prometheus / Grafana/metricsauthorization: { credentials: KEY } in der Scrape-Konfiguration; Grafana zeigt die Prometheus-Daten.
curl "http://callerhub:8080/check?key=KEY"
CALLERHUB OK - 2/2 data sources ready, 1146 requests | sources_ready=2;;;0;2 answered=1146c unknown=212c rejected=0c errors=0c avg_ms=4ms;500;2000

Wählbare Kennzahlen

GruppeInhalt
Zustand der Schnittstelleläuft, Laufzeit, Gesamtzustand (0 OK, 1 WARNING, 2 CRITICAL mit Gründen)
Datenquellenbereit, Einträge im Arbeitsspeicher, mittlere und höchste Antwortzeit je Quelle
Anfragenbeantwortet, unbekannt, abgewiesen, Fehler seit dem Start
Leistungmittlere Antwortzeit mit den Schwellen WARNING ab (ms) und CRITICAL ab (ms), Einträge im Zwischenspeicher, gesperrte Adressen
Live-EmpfangAnzahl der Empfänger und ob einer einen Fehler meldet
Anrufereignisseob die Weitergabe fehlschlägt
LizenzTage bis zum Ablauf der Lizenz (WARNING ab 14 Tagen, CRITICAL ab 3 Tagen)
SystemArbeitsspeicher, Threads, Laufzeit

Über HTTP wird der Schlüssel unverschlüsselt übertragen. Nutzen Sie HTTPS oder das interne Netz und tragen Sie die Adresse des Überwachungsservers unter Erlaubte IP-Adressen ein. Auch die Regel der Windows-Firewall muss diese Adresse zulassen; der Systemzustand zeigt eine Abweichung an und bietet Regel anpassen an (siehe Prüfungen des Systemzustands).

Benachrichtigungen

Modul „Benachrichtigungen“, Karte Administration → Modul: Benachrichtigungen. Meldet Störung und Behebung – ohne Telefonnummern. Die Karte hat drei Abschnitte; Störungsmeldungen und geplante Berichte arbeiten unabhängig voneinander.

Abschnitt / FeldBeispiel
1. E-Mail-Versand (SMTP) – genutzt von Störungsmeldungen und geplanten Berichten
SMTP-Server / Port / Verschlüsselungsmtp.office365.com / 587 / STARTTLS; außerdem SSL/TLS – SMTPS (Port 465) oder keine (Port 25).
Absender / Benutzer / Passwortcallerhub@company.com / callerhub@company.com / •••••••• (Benutzer leer = ohne Anmeldung)
2. Störungsmeldungen (sofort, wenn etwas passiert) – eingerahmt; alle Felder im Rahmen gehören zusammen
E-Mail Aktiv / Empfänger der Störungsmeldungenit@company.com; support@company.com (mit ; trennen)
Webhook Aktiv / Webhook-Adresse / Formathttps://hooks.company.com/callerhub / teams, slack oder json
Datenquellen-Fehler melden nach (min)5; daneben E-Mail und/oder Webhook
Keine Anfragen melden nach (min; 0 = aus)60; daneben E-Mail und/oder Webhook
Von / Bis (Stunde), nur Mo–Fr8 / 18: Zeitfenster für „keine Anfragen“
3. Geplante Berichte (zu festen Zeiten) – eigene Empfänger je Bericht, siehe Geplante Berichte

Kanal je Ereignis: Für jedes der beiden Ereignisse (Datenquellen-Fehler, keine Anfragen) wählen die Kontrollkästchen E-Mail und Webhook neben dem Feld, wie gemeldet wird – über einen Kanal, über beide oder gar nicht. Ein Kontrollkästchen steht nur zur Verfügung, wenn der Kanal selbst eingeschaltet und vollständig ist. Das Modul zeigt nur dann „aktiv“, wenn mindestens ein Kanal vollständig ist und die Schnittstelle läuft.

Die Netzwerk-Discovery findet auch Mailserver (Ports 587, 465, 25); Verwenden trägt Server, Port und Verschlüsselung hier ein. Beim Speichern werden alle fehlenden Felder der E-Mail-Einstellungen gemeinsam markiert. Testnachricht senden prüft die Werte im Formular, ohne zu speichern. Welche Webhook-Adresse Teams bzw. Slack erwartet (z. B. Workflows bzw. Incoming Webhooks), hängt vom jeweiligen Dienst ab; lesen Sie dazu dessen Dokumentation.

Geplante Berichte

Karte Administration → Modul: Benachrichtigungen, Liste Geplante Berichte (Vollversion). Jede Zeile ist ein Bericht; Bericht hinzufügen … legt einen an, der Stift in der Zeile bearbeitet ihn, der Papierkorb entfernt ihn. Bis zu 20 Berichte, jeweils mit:

FeldBeispiel
KanalE-Mail (PDF), Microsoft Teams, Slack oder JSON (Webhook)
Empfänger / Webhook-AdresseE-Mail: management@company.com; it@company.com; Teams, Slack, JSON: Adresse des Webhooks
Inhaltbeliebige Kombination aus Statistik, Anrufanalyse und Protokoll (Warnungen und Fehler des Zeitraums, höchstens 400 Zeilen)
Abstand / Wochentag / Uhrzeittäglich (Vortag), wöchentlich am gewählten Wochentag (letzte 7 Tage), monatlich am 1. (Vormonat); Uhrzeit z. B. 07:30
Aktivschaltet den Bericht aus, ohne ihn zu löschen

Per E-Mail kommt der Bericht als PDF mit den Kennzahlen im Text; Teams und Slack erhalten die Kennzahlen als Nachricht; JSON erhält die Kennzahlen und das PDF als Base64 (pdfBase64). Jedes PDF hat oben rechts das Logo, Seitenzahlen und die Fußzeile „(c) Simon Bernhard - CallerHub.de“ (mit Rebranding Ihre eigene). Jetzt senden (Vorperiode) im Berichtsdialog sendet den Bericht sofort, um die Einstellungen zu prüfen. Berichte werden gesendet, während die Schnittstelle läuft; gesendete Zeiträume merkt sich CallerHub in Statistics\report-last.txt, sodass nach einem Neustart nichts doppelt gesendet wird. Der Ausdruck des Datenflusses hat dasselbe Logo und dieselbe Fußzeile.

Für Sprachen mit nicht lateinischer Schrift (z. B. Russisch, Chinesisch, Arabisch, Hindi) wird das PDF auf Englisch erstellt.

Anrufereignisse

Modul Anrufereignisse weitergeben (Vollversion), Karte Administration → Modul: Anrufereignisse weitergeben. CallerHub gibt Anrufe an andere Systeme weiter – an ein CRM, das Anrufe protokolliert (z. B. Infor CRM), an ein Ticketsystem, eine Zeiterfassung oder ein eigenes Skript. Jede Aktion legt fest, welche Ereignisse sie verarbeitet und wohin sie gehen; bis zu 10 Aktionen.

Ereignisse

Ereignis{direction}Quellen
Eingehend (incoming)Ijede Abfrage der Telefonanlage (Option Jede Abfrage der Telefonanlage als eingehenden Anruf melden), /event, FRITZ!Box
Ausgehend (outgoing)O/event, FRITZ!Box
Verpasst/abgewiesen (missed)R/event, FRITZ!Box (eingehender Anruf nicht angenommen)
Umgeleitet (forwarded)C/event
Angenommen (answered)A/event, FRITZ!Box
Beendet (ended)E/event, FRITZ!Box

Die Buchstaben I, O, R und C sind dieselben wie bei ProCall, sodass vorhandene CRM-Befehle weiter funktionieren.

Ereignisse an /event melden

Die Telefonanlage (oder ein beliebiges anderes System) meldet ein Ereignis mit dem API-Schlüssel einer Schnittstelle; es gelten die erlaubten IP-Adressen dieser Schnittstelle:

http://192.168.10.5:8080/event?apikey=API-KEY&event=outgoing&number=07111234567&extension=201

Parameter: event (oder type, direction: auch die Buchstaben I, O, R, C, A, E), number (Gegenstelle), called (eigene Nummer), extension, user, name (optional). CallerHub akzeptiert GET und POST mit Formulardaten (application/x-www-form-urlencoded); die Antwort lautet 200 OK. Ereignisse zählen in der Statistik nicht als Abfragen.

Aktionen

Aktion hinzufügen … öffnet die Aktion: Wählen Sie zuerst den Typ, dann optional eine typische Vorlage dieses Typs (z. B. Infor CRM); Bearbeiten und testen … öffnet die Aktion mit allen Feldern und einer Schaltfläche Test senden, die sie sofort mit Beispielwerten ausführt und genau anzeigt, was gesendet wurde.

TypEinstellungenEinsatz
Text per TCP an einen Server sendenServer, Port, Format, optional Benutzer und Kennwort, Zeilenende, TextDas Format Benutzer|Kennwort|Text ist das Protokoll von remoteCmd.exe (Infor CRM): CallerHub sendet user|password|text in ANSI und schließt die Verbindung; auf den Arbeitsplätzen ist kein Programm nötig. Das Format Nur Text sendet den Text als UTF-8, optional mit Zeilenende.
Programm oder Skript startenPfad (exe, cmd, bat, ps1), Argumente, auf das Ende wartenVorhandene Werkzeuge, z. B. remoteCmd.exe. Beim Warten prüft CallerHub den Rückgabecode und beendet das Programm nach dem Zeitlimit (z. B. wenn es ein Fehlerfenster zeigt).
HTTP-AufrufAdresse, InhaltOhne Inhalt GET, sonst POST; ein Inhalt, der mit { beginnt, wird als JSON gesendet.

Platzhalter: {event}, {direction}, {number}, {numberE164} (+497111234567), {numberNational} (07111234567), {numberDigits}, {extension} (Nebenstelle, sonst eigene Nummer), {called}, {user}, {name}, {id}, {link} (gefundener Datensatz; CallerHub sucht die Nummer nur nach, wenn eine Aktion diese verwendet), {interface}, {time}, {date}, {clock}. CallerHub bereinigt die Werte vor dem Einsetzen: Nummern behalten nur Ziffern und +, Texte verlieren Anführungszeichen, Trennzeichen und Steuerzeichen; in Adressen werden Werte URL-kodiert, in JSON maskiert.

Beispiel: Infor CRM

Vorlage Infor CRM – direkt an den Server: Server crm-server (durch Namen oder Adresse des CRM-Servers ersetzen), Port 4921, Format Benutzer|Kennwort|Text, Ereignisse eingehend, ausgehend, verpasst und umgeleitet, Text:

CTIPG0C1RegisterCall "application=CTIPTEST" "callNumber={numberE164}" "targetNumber={extension}" "direction={direction}"

Testen Sie mit der Anwendung CTIPTEST und ändern Sie sie danach in CTIPROD. Das CRM ordnet den Anruf über die Nebenstelle (targetNumber) dem Benutzer zu. Die Vorlage Infor CRM – remoteCmd.exe aufrufen ruft stattdessen das vorhandene Programm mit demselben Befehl auf.

Betrieb

  • Aktionen laufen im Hintergrund; die Antwort an die Telefonanlage wartet nie auf sie. Ist ein Ziel nicht erreichbar, versucht CallerHub es nach 2 und nach 10 Sekunden erneut; die Karte und der Systemzustand zeigen gesendete und fehlgeschlagene Ereignisse sowie den letzten Fehler.
  • Das Textprotokoll von remoteCmd.exe ist unverschlüsselt und hat keine Antwort: Verwenden Sie es nur im internen Netz und geben Sie den Port auf dem CRM-Server nur für den CallerHub-Rechner frei.
  • Die erweiterte Aufzeichnung (Fehleranalyse) enthält jedes gesendete Ereignis.

Module

Der Kern – Telefonnummer annehmen, Datenquellen abfragen, Namen liefern – ist immer aktiv. Jede Modulkarte in der Administration zeigt ihren Zustand in der Titelzeile (z. B. „Läuft · 2 aktive Aktionen“, „Unvollständig“, „Fehler“). Alles Weitere lässt sich unter Administration → Module ein- und ausschalten; Änderungen wirken nach dem Speichern. Die Einstellungen eines eingeschalteten Moduls stehen in der Karte Modul: … darunter. Ausgeschaltete Module erscheinen nicht in der Oberfläche, ihre Adressen antworten mit 404.

Module
Module mit Kurzbeschreibung.
ModulStandardFunktion
StatistikeinAnfragen und Treffer, Diagramme, Top-Anrufer, Wochentag × Stunde
AnrufanalyseausAuswertung aller Anrufe aus den Verbindungsdaten (siehe Anrufanalyse)
Anzeigename, Sperr- und VIP-ListeeinErsetzungen, gesperrte und wichtige Telefonnummern
Telefonbuch (LDAP und Export)ausLDAP-Telefonbuch für Telefone und Telefonanlagen, Export für FRITZ!Box, Outlook und Cloud-Telefonanlagen, /phonebook (siehe Telefonbuch)
Browser-Zugangein/stats, /calls, /open (zusätzlich je Funktion einzuschalten)
Monitoringaus/check, /prtg, /status, /metrics für Überwachungssysteme (siehe Monitoring)
Rebrandingauseigener Produktname, eigenes Logo und eigener Kontakt für Wiederverkäufer; erfordert eine Sonderlizenz (siehe Rebranding)
BenachrichtigungeneinE-Mail, Teams/Slack (zusätzlich einzurichten)
Anrufereignisse weitergebenausAnrufe an CRM, Ticketsystem oder eigene Programme melden (siehe Anrufereignisse)
KI-Assistent (Chat)einAnonymisierte Fragen für den Claude-Chat
Netzwerk-DiscoveryausSuche nach Datenbanken, Verzeichnissen und Telefonanlagen
PluginsausEigene Erweiterungen

Rebranding für Wiederverkäufer

Modul Rebranding, Karte Administration → Modul: Rebranding. Wiederverkäufer liefern CallerHub unter eigenem Namen aus. Das Modul erfordert eine Sonderlizenz mit dem Merkmal modul:rebranding; es ist nicht Teil der Vollversion oder von „alle Module“. Tragen Sie sie als zweite Lizenz unter Administration → Lizenz ein (siehe Grundversion und Vollversion, Lizenzschlüssel).

FeldBeispielWo es erscheint
FirmennameMusterhaus IT GmbHFußzeile von Berichten und Ausdrucken, „Über“, Copyright-Zeile der Browserseiten; leer = kein Rebranding
ProgrammnamePhoneLink ProFenstertitel, Titelleiste, Infobereich, Betreffzeilen und Signatur der E-Mails, Browserseiten, PDF-Berichte, Ausgaben für das Monitoring
Anschrift, Support, Vertrieb, E-MailHauptstraße 1, 70173 Stuttgart · +49 711 123450Dialog „Über“
Internetseitewww.musterhaus-it.deFußzeile, Links im Programm
LogoPNG oder JPG, quer, z. B. 400 × 120 Pixel, höchstens 2 MBTitelleiste, PDF-Berichte (oben rechts), Ausdrucke; wird in den Ordner Branding kopiert

Bewusst unverändert bleiben: Lizenztexte und Lizenzschlüssel (sie bleiben die von CallerHub), die Hilfe, der Name des Windows-Dienstes CallerHub und die Programmdateien. „Über“ zeigt Ihre Angaben und „Basiert auf CallerHub (c) 2026 - Simon Bernhard“. Änderungen wirken nach Speichern und übernehmen; der Fenstertitel folgt sofort.

Plugins

Plugins erweitern die Antwort an die Telefonanlage, hängen z. B. „außerhalb der Geschäftszeit“ an den Namen an oder zeigen bei unbekannten Anrufern das Land an. Sie erhalten bewusst wenige Rechte, können aber, was Einstellungen nicht können: beliebige Logik je Anruf ausführen.

Plugins
Administration → Modul: Plugins (Modul „Plugins“ eingeschaltet): gefundene Plugins, Ein/Aus, Einstellungen je Plugin.

Sicherheit

  • Plugins laufen in einem eigenen Prozess. Unter Windows startet CallerHub ihn in einem AppContainer (kein Netzwerk, keine Registrierung, Dateien nur im Programmordner lesbar) und in einem Windows-Job (nur ein Prozess, höchstens 512 MB Arbeitsspeicher, keine Fenster, endet mit CallerHub).
  • Steht der AppContainer nicht zur Verfügung, läuft der Plugin-Prozess nur im Windows-Job; die Plugin-Karte und das Protokoll melden „Abschottung eingeschränkt“.
  • Alle Plugins zusammen benötigen höchstens 300 ms je Anruf; dauert es länger, beendet CallerHub den Plugin-Prozess, beantwortet den Anruf ohne Plugin-Ergebnis und lässt die Plugins angehalten, bis sie mit „Neu laden“ oder beim nächsten Start wieder geladen werden.
  • Plugins sehen nur: Telefonnummer (E.164 und national), Land, angerufene Telefonnummer, gefundenen Namen, Quelle, VIP, Ortszeit. Keine Passwörter, keine Einstellungen anderer Bereiche.
  • Das Modul „Plugins“ ist standardmäßig aus; jedes Plugin muss zusätzlich einzeln eingeschaltet werden.

Installieren Sie Plugins nur aus vertrauenswürdiger Quelle und schützen Sie den Ordner Plugins vor Schreibzugriff. Unter Linux/Mono (nur für Tests) gibt es keine Abschottung.

Beispiel-Plugins (Plugins\CallerHub.Sample.dll)

KennungFunktionEinstellungen (Beispiel)
beispiel.geschaeftszeitenhängt außerhalb der Geschäftszeit einen Hinweis anzeiten=08:00-17:00, tage=1-5, hinweis= (after hours)
beispiel.herkunftzeigt bei Anrufern ohne Treffer Mobilfunk bzw. Landmobil=Mobile ({land}), ausland=Call from {land}, inland=
beispiel.schreibweisewandelt GROSSSCHREIBUNG in normale Schreibweise um–

Einstellungen der Plugins (Feld unter der Liste):

[beispiel.geschaeftszeiten]
zeiten=08:00-17:00
tage=1-5
hinweis= (after hours)

Eigenes Plugin schreiben

' MeinPlugin.vb – class library for netstandard2.0 with a reference to Plugins\CallerHub.Plugins.dll, compile with the .NET SDK:
'   dotnet new classlib -lang VB -f netstandard2.0 -n MeinPlugin   (add the reference, replace the file)
'   dotnet build -c Release
Imports System.Collections.Generic
Imports CallerHub.Plugins

Public NotInheritable Class ZentralePlugin
    Implements ICallerHubPlugin

    Private suffix As String = " (Zentrale)"

    Public ReadOnly Property id As String Implements ICallerHubPlugin.id
        Get
            Return "firma.zentrale"
        End Get
    End Property
    Public ReadOnly Property name As String Implements ICallerHubPlugin.name
        Get
            Return "Mark main office"
        End Get
    End Property
    Public ReadOnly Property description As String Implements ICallerHubPlugin.description
        Get
            Return "Appends a note to calls to the main office (called number 200)."
        End Get
    End Property
    Public ReadOnly Property settingsExample As String Implements ICallerHubPlugin.settingsExample
        Get
            Return "hinweis= (Zentrale)"
        End Get
    End Property

    Public Sub configure(settings As IDictionary(Of String, String)) Implements ICallerHubPlugin.configure
        Dim value As String = Nothing
        If settings.TryGetValue("hinweis", value) Then suffix = value
    End Sub

    Public Function process(callInfo As PluginCall) As PluginResult Implements ICallerHubPlugin.process
        ' Nothing = change nothing
        If callInfo.calledNumber <> "200" OrElse String.IsNullOrEmpty(callInfo.displayName) Then Return Nothing
        Return New PluginResult With {.displayName = callInfo.displayName & suffix, .note = "Zentrale"}
    End Function
End Class

Kopieren Sie die DLL nach Plugins, klicken Sie unter Administration → Modul: Plugins auf „Neu laden“, schalten Sie das Plugin ein und speichern Sie. Felder von PluginCall: phoneNumberE164, phoneNumberNational, countryIso, countryCode, calledNumber, displayName, sourceLabel, found, isVip, localTime. Der vollständige Quelltext der Beispiele (C#, Projekt CallerHub.Sample.csproj) liegt im Quellcode unter plugins\beispiele.

KI-Assistent (Chat)

CallerHub nutzt den Claude-Chat im Browser – keine API, kein Schlüssel, keine automatische Übermittlung. Ablauf: CallerHub stellt eine Frage mit Kontext zusammen, macht persönliche Angaben unkenntlich, zeigt sie zur Prüfung und Bearbeitung an, kopiert sie in die Zwischenablage und öffnet https://claude.ai/new. Fügen Sie sie dort ein (Strg+V) und senden Sie sie ab.

FunktionWoBeispiel
Letzten Fehler analysieren☰ → KI-Assistent (Claude-Chat); Fehlermeldung„ORA-12514 nach einem Serverwechsel – was sollte ich prüfen?“
SQL bzw. Definition entwerfenKarte Telefonnummernliste → Mit KI entwerfenSELECT für Odoo-Kontakte mit Mobilnummern
Statistik auswerten☰ → KI-Assistent (Claude-Chat)Stoßzeiten und Trefferquote je Quelle deuten
Systemzustand besprechenAdministration → Systemzustand → Mit KI besprechenReihenfolge der Maßnahmen bei gelben und roten Punkten

Anonymisiert werden: Telefonnummern (letzte Ziffern durch **** ersetzt), E-Mail-Adressen (<E-Mail>), IPv4-Adressen (192.168.x.x), Passwörter und Schlüssel. Prüfen Sie den Text vor dem Absenden trotzdem.

KI-Antworten können falsch sein. Prüfen Sie SQL und Einstellungen vor dem Einsatz mit Verbindung testen und einer Testabfrage.

Netzwerk-Discovery

Findet Datenbanken, Verzeichnisse und Telefonanlagen im Netz und prüft die eingetragenen Dienste – auch externe wie Cloud-CRM, Microsoft 365 oder den SMTP-Server. Damit die Suche in klaren Grenzen bleibt, gilt:

  • Das Modul Netzwerk-Discovery ist standardmäßig aus; ist es eingeschaltet, erscheint im Systemzustand ein gelber Hinweis.
  • Eine Suche läuft nur nach Klick auf Suche starten und Bestätigung; jede Suche wird protokolliert.
  • Nur Verbindungsaufbau (TCP) bzw. Standardanfragen (SQL Server Browser UDP 1434, SSDP UDP 1900) – keine Anmeldung, keine Passwörter.
  • Höchstens 1.024 Adressen je Suche, Netzbereiche /22 bis /32, Zeitlimit 400 ms je Versuch, „Abbrechen“ jederzeit.
Feld / AuswahlBeispiel
Netzbereiche192.168.10.0/24, 10.0.5.20 (leer = eigene Netze als /24)
DatenbankenPorts 1433, 1521, 3306, 5432 und SQL Server Browser
Verzeichnisse und E-MailPorts 389, 636, 3268; Mailserver 587, 465, 25
Telefonanlagen und GeräteSIP 5060/5061, FRITZ!Box-Anrufmonitor 1012, Asterisk AMI 5038, Mitel SMDR 1080, UPnP/SSDP (auch der Telefonanlagen-Simulator)
Eingetragene Dienste prüfenDNS-Auflösung und Port der konfigurierten Quellen, SMTP, Webhook

Ergebnisse erscheinen bereits während der Suche in der Liste. Verwenden übernimmt das ausgewählte Ergebnis: Eine Datenquelle öffnet den Dialog Neue Datenquelle mit vorausgewähltem passendem Typ und Namen, danach werden Server und Port eingetragen; ein Mailserver geht an die Benachrichtigungen; Asterisk AMI und Mitel SMDR legen einen Empfänger der Anrufanalyse an; eine FRITZ!Box wird zum Anrufmonitor. Zugangsdaten ergänzen Sie selbst.

Suchen Sie nur in eigenen Netzen oder mit Erlaubnis. Portsuchen können von Sicherheitssystemen (IDS/IPS) gemeldet werden; informieren Sie vorher die IT-Sicherheit.

Firewall-Beispiele

Grundregel: eingehend nur der Port von CallerHub (Beispiel 8443, HTTPS) und nur von den IP-Adressen der Telefonanlage; ausgehend nur zu den Datenquellen. Alle Beispiele verwenden Dokumentationsadressen: Telefonanlage/Cloud 203.0.113.10, öffentliche Adresse der Firewall 198.51.100.10, CallerHub-Server 192.168.10.5, Datenbank 192.168.10.30.

Portweiterleitung / Destination NAT – neue Regel SchnittstelleWAN ProtokollTCP QuelleSTARFACE_Cloud (203.0.113.10) Ziel / PortWAN-Adresse / 8443 Weiterleiten an / Port192.168.10.5 / 8443 BeschreibungCallerHub Filterregelzugehörige Filterregel anlegen Worauf es ankommt • Quelle einschränken (nicht „any“) • nur den einen Port weiterleiten • Quell-IP bleibt erhalten (sichtbar im CallerHub-Protokoll) • HTTPS über das Internet
Schema (kein Bildschirmfoto): die typischen Felder einer Portweiterleitung. Die Bezeichnungen unterscheiden sich je Hersteller und Version.

1 · OPNsense / pfSense

  1. Firewall → Aliases: STARFACE_Cloud (Host: 203.0.113.10), CALLERHUB (Host: 192.168.10.5).
  2. Firewall → NAT → Port Forward (neuere OPNsense-Versionen ggf. „Destination NAT“), „+“: Interface WAN, Protocol TCP, Source STARFACE_Cloud (über „Advanced“), Destination WAN address, Port 8443, Redirect target CALLERHUB / 8443, Description CallerHub, Filter rule association „Add associated filter rule“.
  3. Speichern, Apply changes. Prüfen Sie unter Firewall → Log Files → Live View (Filter Port 8443) mit einem Testanruf.

2 · Sophos Firewall (SFOS)

  1. Hosts and services → IP host: STARFACE_Cloud = 203.0.113.10, CallerHub = 192.168.10.5; Services: CallerHub-8443 = TCP 8443.
  2. Rules and policies → NAT rules → Add NAT rule (bzw. der Assistent „Server access assistant (DNAT)“): Original source STARFACE_Cloud, Original destination die WAN-Adresse, Original service CallerHub-8443, Translated destination CallerHub.
  3. Rules and policies → Firewall rules: Regel WAN → LAN, Quelle STARFACE_Cloud, Ziel CallerHub, Dienst CallerHub-8443, Aktion Accept, Protokollierung an.

3 · Fortinet FortiGate (FortiOS, CLI)

config firewall address
    edit "STARFACE_Cloud"
        set subnet 203.0.113.10 255.255.255.255
    next
end
config firewall vip
    edit "CallerHub-VIP"
        set extintf "wan1"
        set extip 198.51.100.10
        set mappedip "192.168.10.5"
        set portforward enable
        set extport 8443
        set mappedport 8443
    next
end
config firewall service custom
    edit "CallerHub-8443"
        set tcp-portrange 8443
    next
end
config firewall policy
    edit 0
        set name "STARFACE-zu-CallerHub"
        set srcintf "wan1"
        set dstintf "internal"
        set srcaddr "STARFACE_Cloud"
        set dstaddr "CallerHub-VIP"
        set service "CallerHub-8443"
        set schedule "always"
        set action accept
        set logtraffic all
    next
end

In der Weboberfläche entspricht das Policy & Objects → Virtual IPs und Firewall Policy. Passen Sie die Schnittstellennamen (wan1, internal) an Ihr Gerät an.

4 · AWS (CallerHub auf EC2)

# inbound: only the phone system on port 8443
aws ec2 authorize-security-group-ingress --group-id sg-0aaa1111bbbb2222c \
    --protocol tcp --port 8443 --cidr 203.0.113.10/32
# database (e.g. RDS SQL Server) only from the CallerHub security group
aws ec2 authorize-security-group-ingress --group-id sg-0ddd3333eeee4444f \
    --protocol tcp --port 1433 --source-group sg-0aaa1111bbbb2222c

Konsole: EC2 → Security Groups → Inbound rules → Edit inbound rules. Beschränken Sie bei Bedarf die ausgehenden Regeln auf die Ports der Datenquellen.

5 · Microsoft Azure (Network Security Group)

az network nsg rule create --resource-group rg-telefonie --nsg-name nsg-callerhub \
    --name Allow-Telefonanlage-8443 --priority 310 --direction Inbound --access Allow \
    --protocol Tcp --source-address-prefixes 203.0.113.10/32 --source-port-ranges '*' \
    --destination-address-prefixes '*' --destination-port-ranges 8443

Portal: Netzwerksicherheitsgruppe → Eingangssicherheitsregeln → Hinzufügen. Geben Sie zusätzlich die Windows-Firewall auf der VM frei (siehe Windows).

Menüpfade und Befehle beziehen sich auf aktuelle Versionen der Hersteller und können abweichen. Gleichen Sie sie mit der Herstellerdokumentation ab und prüfen Sie die Änderung mit einem Testanruf. Wird statt NAT ein Reverse Proxy verwendet, tragen Sie dessen IP unter Administration → Server → Vertrauenswürdige Reverse Proxys ein (erweiterter Modus).

Windows-Einstellungen (neue und alte Versionen)

CallerHub bietet alle Schritte im Systemzustand als Schaltfläche an (Rückfrage nach Administratorrechten). Für Skripte und Gruppenrichtlinien stehen hier die Befehle; Port 8443, Benutzer FIRMA\svc-callerhub und die Adressen sind Beispiele.

Windows Defender Firewall mit erweiterter Sicherheit › Eingehende Regeln › Neue Regel ✓ Regeltyp: Port✓ Protokoll: TCP 8443✓ Aktion: zulassen✓ Profil: Domäne› Name: CallerHub Bereich (Eigenschaften der Regel → Bereich): Remote-IP-Adressen:203.0.113.10 Beschreibung:Telefonanlage fragt CallerHub nach Namen (HTTP/HTTPS) Gleiche Regel per PowerShell bzw. netsh: siehe unten.
Schema (kein Bildschirmfoto) der Firewall-Regel, wie CallerHub sie anlegt.

Windows Server 2016/2019/2022/2025, Windows 10/11 (PowerShell als Administrator)

# Firewall-Regel (nur von der Telefonanlage)
New-NetFirewallRule -DisplayName "CallerHub" -Direction Inbound -Protocol TCP -LocalPort 8443 `
    -RemoteAddress 203.0.113.10 -Action Allow -Profile Domain,Private
# URL-Reservierung für den Benutzer bzw. Dienst
netsh http add urlacl url=https://+:8443/ user="FIRMA\svc-callerhub"
# Zertifikat binden (Fingerabdruck aus der Zertifikatsverwaltung, Computerkonto)
netsh http add sslcert ipport=0.0.0.0:8443 certhash=<Fingerabdruck> appid={6b1e1c0a-4f6e-4d3a-9c55-2f7a8e0b6a11}
# Windows-Dienst (alternativ: Administration → Betrieb → Installieren)
New-Service -Name CallerHub -DisplayName CallerHub -BinaryPathName '"C:\CallerHub\CallerHub.exe"' -StartupType Automatic
Start-Service CallerHub
# Prüfen
Get-NetFirewallRule -DisplayName CallerHub | Get-NetFirewallAddressFilter
Get-Service CallerHub

Ältere Systeme: Windows Server 2012 / 2012 R2 (cmd als Administrator)

netsh advfirewall firewall add rule name="CallerHub" dir=in action=allow protocol=TCP localport=8443 remoteip=203.0.113.10
netsh http add urlacl url=https://+:8443/ user="FIRMA\svc-callerhub"
netsh http add sslcert ipport=0.0.0.0:8443 certhash=<Fingerabdruck> appid={6b1e1c0a-4f6e-4d3a-9c55-2f7a8e0b6a11}
sc.exe create CallerHub binPath= "C:\CallerHub\CallerHub.exe" start= auto DisplayName= "CallerHub"
sc.exe start CallerHub

Windows Server 2012 und 2012 R2 erhalten Sicherheitsupdates nur noch über kostenpflichtige Erweiterungen (den aktuellen Stand bitte bei Microsoft prüfen). Windows 7, 8.1 und Server 2008 R2 werden von .NET 10 und damit von CallerHub 3.0 nicht mehr unterstützt. Verwenden Sie für den Dauerbetrieb ein aktuelles System.

Dienstkonto und Rechte

  • Empfohlen: virtuelles Dienstkonto NT SERVICE\CallerHub (Auswahl unter Administration → Sicherheit; gilt beim Einrichten des Dienstes). Beim Einrichten des Dienstes gibt CallerHub diesem Konto Schreibrecht auf den Programmordner (und auf eigene Ordner für Protokoll, Statistik und Verbindungsdaten) sowie die Adresse der Schnittstelle in http.sys. Nach einer Änderung von Port oder HTTPS den Dienst entfernen und neu einrichten.
  • Alternativ ein eigenes Konto (z. B. FIRMA\svc-callerhub, nötig bei Windows-Anmeldung an SQL Server bzw. LDAP mit einem Benutzerkonto statt des Computerkontos); LocalSystem nur, wenn nichts anderes möglich ist (der Systemzustand warnt).
  • icacls "C:\CallerHub" /grant "FIRMA\svc-callerhub:(OI)(CI)M" gibt Änderungsrecht auf den Ordner.
  • Dienst und Oberfläche nicht gleichzeitig auf demselben Port betreiben (der Systemzustand meldet das).

Linux

CallerHub ist ein Windows-Programm (.NET 10, Windows Forms) und läuft nicht unter Linux. Für die automatischen Tests lässt sich derselbe Quellcode mit Mono übersetzen; dieser Betrieb ist nicht für den Produktivbetrieb gedacht (kein Windows-Dienst, keine DPAPI-Verschlüsselung, keine URL-Reservierung, kein Ereignisprotokoll, keine Plugin-Abschottung).

Häufiger ist Linux auf der Gegenseite: Datenbank, Telefonanlage (Asterisk/FreePBX) oder Verzeichnis. Beispiele, mit denen CallerHub (192.168.10.5) dort zugreifen darf:

# ufw (Ubuntu/Debian): PostgreSQL nur für CallerHub
sudo ufw allow from 192.168.10.5 to any port 5432 proto tcp
# firewalld (RHEL, Rocky, Alma, SUSE): MariaDB nur für CallerHub
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.5" port port="3306" protocol="tcp" accept'
sudo firewall-cmd --reload
# nftables (Tabelle inet filter, Kette input vorhanden)
sudo nft add rule inet filter input ip saddr 192.168.10.5 tcp dport 5432 accept
# iptables (ältere Systeme)
sudo iptables -A INPUT -p tcp -s 192.168.10.5 --dport 5432 -j ACCEPT
  • PostgreSQL: listen_addresses in postgresql.conf passend setzen, in pg_hba.conf z. B. host odoo odoo_ro 192.168.10.5/32 scram-sha-256, danach neu laden.
  • MariaDB/MySQL: bind-address in der Serverkonfiguration prüfen; Benutzer nur mit Leserecht: CREATE USER 'crm_leser'@'192.168.10.5' IDENTIFIED BY '…'; GRANT SELECT ON suitecrm.* TO 'crm_leser'@'192.168.10.5';
  • Asterisk: Ausgehend muss die Telefonanlage CallerHub auf Port 8080/8443 erreichen; für HTTPS muss Asterisk dem Zertifikat vertrauen.

Sicherheit und Standards

Sicherheit
Administration → Sicherheit: Schlüssel, Sperre nach Fehlversuchen, Dienstkonto, signierte Plugins und Zustand.

Die Karte Administration → Sicherheit fasst alle Entscheidungen zusammen, die der Betreiber treffen muss; der Systemzustand zeigt offene Empfehlungen.

EinstellungEmpfehlungWirkung und Abwägung
API-Keys und Schlüssel verschlüsselt speichern (DPAPI)einAPI-Keys, Zugangsschlüssel des Browsers, Salt, Webhook-Adresse und Plugin-Einstellungen stehen nur verschlüsselt in der Einstellungsdatei (Schlüssel des Computers). Nach einem Umzug auf einen anderen Computer müssen die API-Keys neu eingetragen und in der Telefonanlage angepasst werden. Passwörter sind immer verschlüsselt.
Sperre nach Fehlversuchen20 je Minute, 5 MinutenEine IP-Adresse mit zu vielen falschen API-Keys, Zugangsschlüsseln oder LDAP-Passwörtern erhält für die Dauer der Sperre die Antwort 429 (Schutz gegen Durchprobieren). Der Systemzustand und /metrics (callerhub_blocked_addresses) zeigen gesperrte Adressen.
Konto des Windows-Dienstesvirtuelles DienstkontoMinimale Rechte statt LocalSystem (siehe Windows).
Nur Plugins mit gültiger digitaler Signatur ladenein, sobald alle Plugins signiert sindPlugins ohne gültige Authenticode-Signatur werden nicht geladen (Prüfung durch Windows, ohne Internetzugriff auf Sperrlisten).

Weitere Schutzmaßnahmen im Programm

  • Vergleich von Schlüsseln ohne Zeitunterschiede (SHA-256); Antworten mit Sicherheits-Headern (CSP, X-Frame-Options, nosniff, no-store); die JSON-Ausgabe maskiert < > &.
  • Höchstens 8 gleichzeitige Direktabfragen je Datenquelle, Schutzschalter nach 5 Fehlern in Folge (30 Sekunden), Schutz vor Kontosperre bei Datenbank, LDAP, Exchange und REST.
  • Folgeseiten einer REST-API nur vom selben Server und ohne Wechsel auf http; Antworten höchstens 100 MB; Retry-After wird beachtet.
  • Plugins in einem eigenen Prozess mit minimalen Rechten; Protokoll ohne Schlüssel und Passwörter, Telefonnummern maskiert.
  • Der Systemzustand meldet: Dienstkonto mit vollen Rechten, veraltete TLS-Versionen (SSL 3.0, TLS 1.0/1.1) bei HTTPS, fehlende Signatur der Programmdatei, nicht lesbare Schlüssel, Netzlaufwerke, die der Dienst nicht sieht.

Lieferkette

  • Fremdpakete mit festen Versionen und Prüfsummen (packages.lock.json); der Build prüft sie auf bekannte Schwachstellen.
  • Jede Lieferung enthält eine Stückliste der Fremdpakete (SBOM.cdx.json, CycloneDX 1.5) und SHA-256-Prüfsummen (SHA256SUMS.txt). Prüfen: tools\lieferung\lieferung.cmd pruefen <Ordner> <Ordner>\SHA256SUMS.txt.
  • Digitale Signatur (Authenticode, SHA-256): Der Build signiert CallerHub.exe und die Beispiel-Plugins mit dem Code-Signing-Zertifikat von CallerHub (ausgestellt von der eigenen Zertifizierungsstelle CallerHub Root CA). CallerHub selbst vertraut dieser Signatur ohne weitere Schritte (z. B. für Nur Plugins mit gültiger digitaler Signatur laden); Über CallerHub und der Systemzustand zeigen die Signatur an. Für Windows selbst (Anzeige des Herausgebers, Richtlinien) führen Sie zertifikat-vertrauen.cmd im Programmordner als Administrator aus oder verteilen CallerHub-Root-CA.cer (Vertrauenswürdige Stammzertifizierungsstellen) und CallerHub-Codesignatur.cer (Vertrauenswürdige Herausgeber) per Gruppenrichtlinie. SmartScreen kann bei heruntergeladenen Dateien weiterhin warnen, bis ein Zertifikat einer öffentlichen Zertifizierungsstelle verwendet wird. Alternativ mit einem eigenen Zertifikat signieren: tools\signieren\signieren.cmd.
  • Schwachstellen bitte vertraulich melden (siehe SECURITY.md).

Eigene Sicherheitstests

TestInhalt
tests/linux/Security.csAnmeldung (fehlende, verkürzte, verlängerte Schlüssel), Sperre nach Fehlversuchen, HTTP-Methoden, Pfade mit .., Header-Injektion, sehr lange Eingaben, SQL-Zeichen, XSS in Namen, Weiterleitung nur auf http(s), Sicherheits-Header, keine Schlüssel im Protokoll und im Diagnosepaket, DPAPI, Signaturpflicht für Plugins
tests/linux/Fuzz.csZufalls- und Mutationstests der Parser (Telefonnummern, JSON, CSV, IP-Listen, Einstellungsdatei, Plugin-Protokoll, Lizenzschlüssel, Verbindungsdaten), Verschachtelung ohne Stapelüberlauf
tests/linux/Telefonbuch.csLDAP-Telefonbuch mit ldapsearch: Suche, Anmeldung, Sperre, nur Lesen, 200 fehlerhafte Nachrichten
tools/geheimnisse.pySuche nach Schlüsseln, Token und Passwörtern in den versionierten Dateien
build.cmdPrüfung der Fremdpakete auf bekannte Schwachstellen (dotnet list package --vulnerable, NuGetAudit)

Bezug zu Standards

CallerHub ist nicht zertifiziert. Die folgenden Standards dienen als Maßstab; der Abgleich und die offenen Punkte stehen in doc/sicherheitstests.md.

StandardBezug
BSI IT-Grundschutz (Bausteine CON.8 Software-Entwicklung, APP.6 Allgemeine Software, OPS.1.1.6 Software-Tests und -Freigaben)Betrieb in Behörden und Unternehmen, Entwicklungs- und Testprozess
BSI TR-02102-1 und -2Kryptografie (RSA 3072 für Lizenzen, SHA-256) und TLS 1.2/1.3
BSI TR-03185 (sicherer Software-Lebenszyklus)Lieferkette, Schwachstellenbehandlung, Updates
OWASP ASVS 4.0Maßstab der eigenen Sicherheitstests (Ziel: Stufe 2, für Behörden Stufe 3)
Common Criteria (ISO/IEC 15408), BSI-Schnellzertifizierung (BSZ)mögliche spätere Zertifizierung durch eine anerkannte Prüfstelle
EU Cyber Resilience Act (Verordnung (EU) 2024/2847)Stückliste (SBOM), Meldeweg für Schwachstellen, Sicherheitsupdates; Fristen bitte in der Verordnung prüfen
DSGVOsiehe Datenschutz

Technischer Hintergrund für Administratoren

Aufbau

  • Eine Programmdatei (CallerHub.exe, .NET 10, eigenständig) für das Programmfenster, den Infobereich und den Windows-Dienst. Keine Installation, keine eigene Datenbank, keine Registrierungseinträge außer dem optionalen Dienst, der Ereignisquelle und der URL-Reservierung.
  • Die HTTP-Schnittstelle beruht auf dem Windows-HTTP-Server (http.sys); Anfragen werden parallel bearbeitet. Alle Schnittstellen teilen sich einen Port; der API-Key in der Anfrage entscheidet, welche Schnittstelle (und welche Datenquellen und erlaubten IP-Adressen) gilt.
  • Telefonnummernlisten: Quellen vom Typ Liste (Datenbank, CSV, LDAP/AD, Microsoft 365, REST) werden beim Start vollständig in den Arbeitsspeicher geladen und im Hintergrund aktualisiert (Standard alle 15 Minuten, je Quelle). Eine Abfrage ist ein Speicherzugriff und dauert deutlich unter einer Millisekunde; eine langsame oder nicht erreichbare Datenbank verzögert die Antwort nicht, die zuletzt geladene Liste bleibt in Gebrauch.
  • Direktabfragen (SQL mit einem Parameter) fragen die Datenbank bei jedem Anruf: höchstens 8 gleichzeitig je Quelle, Schutzschalter nach 5 Fehlern in Folge (30 Sekunden).
  • Cache: Antworten von Direktabfragen werden im Arbeitsspeicher gehalten (Beispiel: Treffer 300 s, unbekannte Nummern 60 s; siehe Cache).
  • Die Quellen werden in der Reihenfolge der Karten gefragt; der erste Treffer gilt. Regeln, Sperrliste und VIP-Liste greifen danach.

Globale Einstellungen und Einstellungen je Schnittstelle

Global (Administration)Je SchnittstelleJe Datenquelle
Port, HTTPS und Zertifikat, vertrauenswürdige Reverse-Proxys, Ländervorwahl, Namenslänge, Cache, Protokoll, BenachrichtigungenBezeichnung, Telefonanlage, API-Key, erlaubte IP-Adressen, abgefragte DatenquellenVerbindung, Telefonnummernliste oder Direktabfrage, Aktualisierungsintervall, Anzeige und Link, Regeln

Die von CallerHub angelegte Windows-Firewall-Regel fasst die erlaubten IP-Adressen aller Schnittstellen zusammen, weil alle Schnittstellen denselben Port verwenden.

Dateien im Programmordner

PfadInhalt
CallerHub.settings.xmlalle Einstellungen; Passwörter (und mit der Sicherheitsoption die API-Keys) mit Windows DPAPI für diesen Computer verschlüsselt
Backups\die letzten 20 Stände der Einstellungsdatei
Logs\tägliche Protokolldateien (Standard 90 Tage), erweiterte Aufzeichnungen trace-*.log
Drivers\Datenbanktreiber und native Bibliotheken (Oracle, SQL Server); werden automatisch von dort geladen
Plugins\, Languages\, Samples\customers.csvPlugins, zusätzliche Sprachen, Beispieldaten
Statistics\, CallData\Tageszähler ohne Telefonnummern; Verbindungsdaten des Moduls Anrufanalyse

Betrieb und Überwachung

  • /health (ohne Schlüssel) für Lastverteiler und Überwachung; /status und /metrics (Prometheus) mit dem Modul Browser-Zugang.
  • Fehler wahlweise im Windows-Anwendungsprotokoll (Quelle CallerHub); Benachrichtigungen per E-Mail oder Webhook.
  • Einstellungen lassen sich bei laufender Schnittstelle ändern: Speichern und übernehmen übernimmt sie ohne Neustart; der Dienst liest sie bei seinem nächsten Start.
  • Update: den Inhalt des Programmordners ersetzen und die Einstellungsdatei, Logs, Statistics und CallData behalten (siehe Installation).

Protokollierung und Diagnose

  • Protokollstufen Info, Zugriff, Warnung, Fehler, Debug; Telefonnummern maskiert, sofern vollständige Nummern nicht eingeschaltet sind; Schlüssel, Passwörter, Authorization und Cookie immer maskiert.
  • Die Debug-Protokollierung und die erweiterte Aufzeichnung schalten sich selbst ab; die erweiterte Aufzeichnung ist auf 10 MB begrenzt.
  • Das Diagnosepaket wird vor der Anzeige anonymisiert (siehe Diagnosepaket).

Dienst, Sicherung, Diagnose

Alles für den Dauerbetrieb steht in der Karte Administration → Betrieb, in fünf Abschnitten mit kurzer Erklärung und den jeweils passenden Schaltflächen.

Betrieb
Administration → Betrieb: Windows-Dienst, HTTPS, Windows-Ereignisprotokoll, Fehlersuche, Einstellungen sichern.

Windows-Dienst

  • Der Abschnitt zeigt den Zustand und nur die passenden Schaltflächen: Als Dienst installieren, Dienst starten, Dienst anhalten, Dienst entfernen (Dienstname CallerHub, Start automatisch, Neustart nach Fehler nach 1, 1 und 5 Minuten). Der Dienst verwendet dieselben Einstellungen wie die Oberfläche.
  • Solange der Dienst läuft, die Schnittstelle in der Oberfläche gestoppt lassen; die Oberfläche dient dann nur zum Einstellen und Auswerten. Nach dem Speichern den Dienst neu starten.
  • Ohne Dienst: Mit Windows-Anmeldung starten (minimiert) startet die Oberfläche im Infobereich.

Läuft CallerHub als Dienst? Jede dieser Stellen zeigt es:

  • Administration → Betrieb → Windows-Dienst zeigt den Zustand (z. B. „Dienst 'CallerHub' ist gestartet.“) und das Konto; der Systemzustand warnt mit „Dienst und Programm laufen gleichzeitig“, wenn beide den Port verwenden.
  • Windows: services.msc, Eintrag CallerHub; oder in einer Eingabeaufforderung:
sc.exe query CallerHub
tasklist /fi "imagename eq CallerHub.exe" /v

Ein Prozess CallerHub.exe mit dem Sitzungsnamen Services ist der Dienst; einer in Ihrer Sitzung ist das Programmfenster oder das Symbol im Infobereich.

Beenden: Dienst anhalten in der Karte (Administratorrechte) oder als Administrator:

sc.exe stop CallerHub
rem dauerhaft: nicht mehr automatisch starten
sc.exe config CallerHub start= disabled

Dienst entfernen löscht die Registrierung des Dienstes; Programmordner und Einstellungen bleiben erhalten.

HTTPS-Assistent

☰ → Schnittstelle → HTTPS einrichten …: Zertifikat mit privatem Schlüssel aus dem Zertifikatspeicher „Eigene Zertifikate“ des Computers (certlm.msc) wählen, Port (z. B. 8443) und Windows-Benutzer (z. B. FIRMA\svc-callerhub) angeben, auf Einrichten klicken. Der Assistent bindet das Zertifikat und setzt die URL-Reservierung; „Befehle kopieren“ liefert dieselben netsh-Befehle für die manuelle Ausführung. Der Name im Zertifikat (z. B. lookup.firma.de) muss zur Adresse passen, die die Telefonanlage aufruft.

  • Noch kein Zertifikat? Der Assistent weist darauf hin und bietet Zertifikat erzeugen … an: CallerHub erzeugt ein selbst signiertes Zertifikat für diesen Rechner (RSA 3072, SHA-256, 3 Jahre gültig, Namen: Rechnername, vollständiger DNS-Name, localhost und die IPv4-Adressen) im Speicher „Eigene Zertifikate“ des Computers und speichert den öffentlichen Teil als Certificates\callerhub-<Rechner>.cer. Dieser Rechner vertraut dem Zertifikat automatisch (CallerHub trägt es unter „Vertrauenswürdige Stammzertifizierungsstellen“ ein), sodass Browser auf diesem Rechner nicht mehr „Nicht sicher“ anzeigen – die Adresse mit einem im Zertifikat enthaltenen Namen öffnen, z. B. https://<Rechner>:8443/stats. Andere Rechner und die Telefonanlage: diese Datei importieren (vertrauenswürdige Zertifikate, z. B. per Gruppenrichtlinie; Firefox verwendet die Windows-Zertifikate, wenn security.enterprise_roots.enabled eingeschaltet ist). Für den Zugriff über das Internet stattdessen ein Zertifikat einer öffentlichen Zertifizierungsstelle oder der Firmen-Zertifizierungsstelle verwenden.
  • Beim Wechsel zwischen HTTP und HTTPS auf demselben Port verweigert Windows den Start mit „Konflikt mit einer vorhandenen Registrierung“. CallerHub erkennt das und bietet an, die Reservierung zu ändern (Administratorrechte).

Windows-Ereignisprotokoll

Ereignisquelle anlegen registriert die Quelle CallerHub einmalig (Administratorrechte) und zeigt danach „Eingerichtet“; die Schaltfläche wechselt zu Ereignisquelle entfernen. Fehler erscheinen in der Ereignisanzeige unter Windows-Protokolle → Anwendung, sobald „Fehler zusätzlich ins Ereignisprotokoll schreiben“ eingeschaltet und gespeichert ist.

Sicherung, Export, Import

  • Vor jedem Speichern legt CallerHub eine Sicherung in Backups an (höchstens 20). Sicherung wiederherstellen spielt eine davon zurück.
  • Exportieren/Importieren überträgt die Einstellungen als XML-Datei. Passwörter sind mit dem Schlüssel dieses Computers verschlüsselt; auf einem anderen Computer geben Sie sie nach dem Import neu ein.

Fehleranalyse

Alle Werkzeuge stehen im Menü ☰ → Fehleranalyse (Gruppe Betrieb):

EintragZweck
Fehleranalyse starten (4 h Debug-Protokollierung)Protokolliert für die eingestellte Anzahl Stunden zusätzlich Funktionsaufrufe, Abfragen und Zeiten; Passwörter und Schlüssel werden maskiert. Schaltet sich danach selbst ab. Während sie läuft, zeigt das Menü die Restzeit, z. B. Fehleranalyse (noch 3:12 h), und der Systemzustand zeigt sie gelb.
Erweiterte Aufzeichnung starten (30 min, max. 10 MB) …Für Probleme mit der Anbindung der Telefonanlage. Nach einer Bestätigung schreibt CallerHub jede Anfrage der Telefonanlage mit allen Headern und Parametern, jede Antwort mit ihrer Dauer und alle Protokolleinträge nach Logs\trace-yyyyMMdd-HHmmss.log. Schlüssel, Passwörter, Authorization und Cookie werden maskiert. Die Aufzeichnung endet nach 30 Minuten oder bei 10 MB; das Menü zeigt die Restzeit und bietet an, sie früher zu beenden. Starten Sie die Aufzeichnung und stellen Sie dann den Fehler nach (z. B. mit einem Testanruf).
Protokoll anzeigen / Protokolldatei öffnenDas Protokollfenster bzw. die heutige Protokolldatei im zugeordneten Editor.
Diagnosepaket erstellen und ansehen …Siehe unten.

Diagnosepaket

Das Paket (ZIP) enthält die Einstellungen ohne Geheimnisse, Systeminformationen (Version, Windows, Arbeitsspeicher, Anzeigeskalierung, Module, Lizenz, Schnittstellen, HTTPS, Port, Proxys, Benachrichtigungen), den Status (JSON), die Antwortzeiten der Oberfläche (ui-performance.txt: Seitenwechsel, Scrollen, Hänger), die Protokolle der letzten Tage und die erweiterten Aufzeichnungen der letzten Tage (Trace\…). Bevor das Paket angezeigt wird, anonymisiert CallerHub jeden Eintrag:

  • Benutzer-, Domänen- und Rechnernamen, Benutzerordner, Netzwerkfreigaben und Ordnernamen werden zu Platzhaltern wie user-1, <folder-2> oder <program folder>.
  • Server- und Hostnamen aus den Einstellungen und den Protokollen werden zu server-1.example, E-Mail-Adressen zu mail-1@example.invalid, IPv4-Adressen zu ip-1; Datenbankbenutzer in Verbindungszeichenfolgen werden zu user-N.
  • Erhalten bleiben: öffentliche Domänen (z. B. microsoft.com), 127.0.0.1 und 0.0.0.0, Datei- und Programmnamen, weil sie für die Analyse nötig sind.
  • Derselbe Originalwert erhält immer denselben Platzhalter, sodass Zusammenhänge sichtbar bleiben. ANONYMISATION.txt im Paket listet auf, was ersetzt wurde (Kategorien und Anzahl, nicht die Originalwerte).

Das Fenster Diagnosepaket listet alle Einträge auf; die Auswahl eines Eintrags zeigt dessen Inhalt. Schaltflächen:

  • Speichern unter … – speichert die ZIP-Datei.
  • Mit E-Mail-Programm senden … – öffnet eine neue Nachricht im Standard-E-Mail-Programm mit dem Paket als Anhang (ist kein E-Mail-Programm registriert, öffnet sich der Explorer mit markierter Datei).
  • Hochladen – überträgt das Paket an den Support-Server (FTP mit TLS, sofern angeboten, Ersatzadresse, falls der Name nicht aufgelöst werden kann). Der Dateiname erhält einen zufälligen Zusatz; nennen Sie dem Support den nach dem Hochladen angezeigten Namen. Ein anderes Ziel lässt sich mit DiagnosticUploadUrl in der Einstellungsdatei festlegen.

Prüfen Sie den Inhalt, bevor Sie das Paket weitergeben. Telefonnummern sind im Protokoll ohnehin maskiert.

Ereignisprotokoll: Fehler zusätzlich ins Windows-Anwendungsprotokoll (Quelle CallerHub) schreiben, z. B. für die Überwachung.

Protokoll

Protokollfenster
Fenster „Protokoll“: Tag wählen, Typen filtern, suchen; „Live“ liest neue Zeilen alle 2 Sekunden nach.

Das Protokoll öffnet sich als eigenes Fenster mit eigenem Eintrag in der Taskleiste (☰ → Fehleranalyse → Protokoll anzeigen). Es bleibt nicht im Vordergrund und lässt sich neben dem Hauptfenster verwenden; beim Beenden von CallerHub schließt es sich mit.

TypBedeutung
InfoStart, Laden der Listen, Einstellungen, Plugins
Zugrifferfolgreiche Anfrage (auch Verfügbarkeitsprüfungen)
Warnungabgelehnte Anfrage (z. B. IP nicht erlaubt, API-Key falsch), unbekannte Landangaben
FehlerFehler mit Ursache und Vorschlag
Debugnur bei eingeschalteter Debug-Protokollierung
2026-10-14 17:03:58.164 WARN   ip=198.51.100.23 pfad=/lookup nummer=- status=403 quelle=- dauer=0ms ergebnis=IP nicht erlaubt

Leistungszeile

Während die Schnittstelle läuft, schreibt CallerHub je Minute mit Anfragen eine Zeile (und beim Stoppen):

INFO   Performance 60 s: requests=41230 rate=687.2/s avg=4ms p50=≤2ms p95=≤10ms p99=≤50ms max=380ms queue_avg=0ms queue_max=12ms concurrent_max=24 errors=0 rejected=0 threads=61 pool_busy=3 memory=88MB gc=120/4/1 call_events_queue=0
WertBedeutung
rate, avg, p50/p95/p99, maxAnfragen je Sekunde und Antwortzeiten (Perzentile als Obergrenze einer Klasse)
queue_avg, queue_maxZeit zwischen der Annahme einer Anfrage und ihrer Bearbeitung – hohe Werte bedeuten zu wenige Threads oder einen langsamen Server
concurrent_max, threads, pool_busygleichzeitig bearbeitete Anfragen, Threads des Prozesses, belegte Threads des Thread-Pools
memory, gcverwalteter Arbeitsspeicher und Speicherbereinigungen (Generation 0/1/2) im Zeitraum
call_events_queuewartende Anrufereignisse (Modul Anrufereignisse weitergeben)

Unter hoher Last bleibt die Protokolldatei geöffnet, und das Hauptfenster aktualisiert die Anfrageliste gebündelt, sodass beides die Schnittstelle nicht bremst.

Telefonanlagen-Simulator

☰ → Fehleranalyse → Telefonanlagen-Simulator (Test und Lasttest) … oder Telefonanlagen-Simulator.cmd im Programmordner (CallerHub.exe simulator) öffnet ein eigenes Fenster, das Telefonanlagen gegenüber einer CallerHub-Installation simuliert – zum Testen einer neuen Einrichtung und für Lasttests.

  • Adresse von CallerHub und API-Key werden aus den Einstellungen übernommen; Bekannte Nummern (Treffer in den Datenquellen) und Unbekannte Nummern (%) steuern die Mischung.
  • Beliebig viele simulierte Anlagen gleichzeitig; je Anlage der Typ und die Last: Ruhig (1 Anruf je Minute), Normal (6 je Minute), Belebt (1 je Sekunde), Hoch (10 je Sekunde), Sehr hoch (50 je Sekunde), Extrem (so schnell wie möglich, 32 parallele Schleifen). Ruhige Stufen laufen in Echtzeit (Klingeln, Gespräch); hohe Stufen melden die Zeiten ohne Wartezeit.
  • Typen: Abfrage je Anruf (STARFACE, 3CX, Asterisk, Yealink, Snom), Ereignisse (/event, Placetel, sipgate.io), an CallerHub gesendete Verbindungsdaten (3CX aktiver Socket, OpenScape Business, innovaphone TCP und HTTP) und Anlagen, mit denen sich CallerHub verbindet (3CX passiver Socket, Mitel SMDR, Asterisk AMI, FRITZ!Box-Anrufmonitor).
  • Die simulierten Anlagen beantworten SSDP-Suchen und lauschen auf ihren Ports, sodass die Netzwerk-Discovery sie findet.
  • Das Fenster zeigt je Anlage Anrufe, Übertragungen, Fehler, Rate und Antwortzeiten; CallerHub schreibt seine Sicht in die Leistungszeile.

Verwenden Sie den Simulator nur gegen eigene Testsysteme: Hohe Stufen erzeugen sehr viele Anfragen, Protokollzeilen und Verbindungsdaten.

Diagnoselauf

Menü Fehleranalyse → Diagnoselauf (höchstens 1 Minute) …, Schaltfläche Diagnoselauf … in Administration → Betrieb oder auf der Kommandozeile CallerHub.exe diagnoselauf. Der Lauf testet die gesamte Einrichtung auf diesem Rechner und erstellt einen Bericht für den Support – innerhalb von 60 Sekunden.

Ihre Einstellungen kopiert, nie geändert am Ende erneut geprüft Test-Schnittstelle localhost, freie Ports Ihre Quellen + Test-CSV alle Module, temporäre Ordner Telefonanlagen-Simulator 11 Telefonanlagen, steigende Last Endpunkt- und Einstellungsproben falsche Schlüssel, unlogische Einstellungen Bericht (ZIP) Fehler, Grenzen, Lücken in der Hilfe Kopie ≤ 60 s
  1. Aktuelle Einrichtung: die Prüfungen beim Speichern, doppelt vergebene Ports, der Systemzustand.
  2. Rechner und Netzwerk: Domänenmitgliedschaft, DNS-Name, Netzwerkadressen, ob der Port frei ist oder von CallerHub belegt wird, ob die Datenbank- und Mailserver antworten, freier Speicherplatz, Schreibrecht auf die Ordner für Protokoll und Statistik, ob die Fehleranalyse noch aktiv ist und wie schnell die Oberfläche reagiert hat.
  3. Unlogische Einstellungen: etwa 16 Kombinationen, die ein Administrator einstellen kann (z. B. zwei Schnittstellen mit demselben API-Key, ein Empfänger auf dem Port der Schnittstelle, ein Webhook ohne Adresse, alle Datenquellen ausgeschaltet, eine fehlende CSV-Datei); jede muss erkannt werden. Ein Start mit fehlender Datei darf die Schnittstelle nicht zum Absturz bringen.
  4. Live-Test: eine zweite Schnittstelle nur auf localhost mit freien Ports und temporären Ordnern, mit Ihren Datenquellen und Schnittstellen sowie einer Testdatenbank (Samples\simulator-contacts.csv, 20.000 erfundene Kontakte), allen Modulen, fünf Live-Empfängern und einer Aktion für Anrufereignisse an einen lokalen Testempfänger. Der Simulator sendet mit 11 Telefonanlagen; danach werden etwa 25 Adressen mit richtigen und falschen Schlüsseln, ungewöhnlichen Nummern und Methoden aufgerufen.
  5. Laststufen: 10/s, 50/s, so schnell wie möglich mit einer und mit drei Telefonanlagen; der Lauf stoppt bei mehr als 5 % Fehlern oder 5 Sekunden Antwortzeit und meldet die Grenze.
  6. Hilfe und Benutzeraktionen: ob die Hilfe die verwendeten Funktionen beschreibt und was Sie selbst tun müssen (z. B. Firewall-Regel, Einstellungen in der Telefonanlage).

Ihre gespeicherten Einstellungen werden nie geändert: Der Lauf verwendet nur Kopien und prüft am Ende, dass die Einstellungsdatei und die geladenen Einstellungen unverändert sind. Echte Ziele werden nicht angesprochen – keine CRM-Aktionen, E-Mails, Webhooks, Plugins oder Verbindungen zu Ihren Telefonanlagen; Ihre Datenquellen erhalten nur wenige Abfragen. Windows fragt eventuell einmal, ob CallerHub Verbindungen annehmen darf (Firewall).

Der Bericht diagnostic-run.txt ist für Menschen geschrieben, nicht nur für den Support:

  • Ergebnis – ein Satz: Alles ist in Ordnung, oder wie viele Punkte Aufmerksamkeit brauchen.
  • Empfehlungen – gruppiert nach Wichtig, Empfohlen und Optional; jeweils mit Wo, der Stelle in der Anwendung (z. B. Administration > Sicherheit). Doppelte Hinweise werden einmal aufgeführt.
  • Leistung – in Worten, z. B. wie viele Anrufe je Minute CallerHub beantworten kann.
  • Übersicht je Bereich und am Ende die Technischen Einzelheiten (Laststufen, jede Prüfung).

Während der Lauf aktiv ist, gehen Meldungen der Test-Schnittstelle nur ins Protokoll; Fußzeile und Startseite sind nicht betroffen.

Anschließend öffnet sich das Diagnosepaket mit der Datei diagnostic-run.txt; speichern, senden oder hochladen Sie es wie unter Diagnosepaket beschrieben. Wie das Paket ist auch der Bericht anonymisiert.

Fehlersuche

Fehlermeldungen nennen Ursache und Vorschlag; Details stehen im Protokoll. Der Systemzustand zeigt die meisten Ursachen mit passender Schaltfläche. Für eine zweite Meinung: ☰ → KI-Assistent (Claude-Chat) → Letzten Fehler analysieren ….

MeldungUrsache und Abhilfe
Der Programmordner lässt sich nicht löschenLäuft CallerHub noch im Infobereich oder als Dienst? Über Infobereich → Beenden oder sc.exe stop CallerHub beenden; der Prozess endet dann vollständig.
Oracle: ORA-12514 oder unbekannter DienstDienstnamen (Service Name, nicht SID) und Port prüfen, z. B. mit lsnrctl status auf dem Datenbankserver. Der Treiber liegt bei (Drivers\Oracle.ManagedDataAccess.dll).
SQL Server: Microsoft.Data.SqlClient.SNI.dll nicht gefundenDer Ordner Drivers neben CallerHub.exe fehlt: den Programmordner vollständig kopieren.
CSV: „Spalte nicht gefunden“ oder 0 EinträgeSpaltennamen, Trennzeichen oder Kopfzeile der Datei haben sich geändert: Spalten zuordnen öffnen und die Vorschau prüfen. Falsche Umlaute: die Codierung auf ANSI oder UTF-8 stellen.
Anmeldung fehlgeschlagen, obwohl „Verbindung testen“ funktioniertDer Test verwendet die Werte im Formular, die laufende Schnittstelle die gespeicherten: Speichern und übernehmen.
Port bereits belegtLäuft das Programm bereits (Infobereich) oder als Dienst? Eine Instanz beenden oder einen anderen Port wählen.
Windows verweigert das Öffnen des PortsURL-Reservierung fehlt: Schaltfläche im Systemzustand oder netsh http add urlacl … als Administrator.
ODBC: Datenquellenname nicht gefundenEinen 64-Bit-ODBC-Treiber installieren oder einen installierten Treiber wählen.
Kein Treffer für eine bekannte TelefonnummerEine Testabfrage mit der gespeicherten Schreibweise ausführen. Ist statt der Hauptnummer eine Durchwahl hinterlegt? Für eine ausländische Telefonnummer im nationalen Format die Spalte land ergänzen.
Zustandsanzeige „Datenfehler“Eine von mehreren Quellen fällt aus; die übrigen liefern weiter. Zugangsdaten prüfen oder die Quelle vorübergehend ausschalten.
Browser-Zugang: 403 / 401 / 404403 IP-Adresse nicht zugelassen; 401 falscher Zugangsschlüssel; 404 Funktion oder Modul ausgeschaltet oder nicht gespeichert.
Plugins wurden ausgesetztEin Plugin hat länger als 300 ms gebraucht. Das Plugin prüfen, dann Administration → Modul: Plugins → Neu laden.
Microsoft 365: 401/403Geheimer Clientschlüssel abgelaufen oder Administratorzustimmung für Contacts.Read/User.Read.All fehlt.

Häufige Fragen

Eine Datenquelle oder Schnittstelle zeigt „Unvollständig“. Was fehlt?

Der Grund steht neben dem Untertitel der Karte und als Tooltip über ihrer Kopfzeile; auch die Speicherleiste nennt die erste fehlende Angabe. Administration → Systemzustand listet jede unvollständige oder ungültige Einstellung. Öffnen neben einem Eintrag öffnet Seite und Karte und rahmt das betroffene Feld rot ein. Beim Speichern werden ungültige Felder der aktuellen Ansicht ebenfalls eingerahmt.

Das Fenster reagiert manchmal langsam. Was kann ich tun?

CallerHub misst, wie schnell sich Seiten öffnen, wie lange das Blättern dauert und ob das Fenster nicht mehr reagiert. Langsame Aktionen (ab 150 ms) schreibt CallerHub einmal pro Minute ins Protokoll, z. B. UI performance: page:administration took 260 ms; das Diagnosepaket enthält die Zusammenfassung in ui-performance.txt. Senden Sie das Paket an den Support. Typische Ursachen sind eine laufende Fehleranalyse (ausführliche Protokollierung), ein voller Datenträger oder ein Virenscanner, der den Programmordner prüft.

Warum hat Starten nicht alles gestartet?

Starten startet alles, was vollständig ist. Unvollständige Datenquellen und Schnittstellen werden übersprungen; CallerHub nennt sie einmal, und der Systemzustand listet sie weiter, bis sie vollständig sind.

Wie viele Datenquellen und Schnittstellen sind möglich?

Jeweils bis zu 10; der Zähler zeigt z. B. „3 von 10“. Mehr sind mit einer Sonderlizenz möglich (callerhub.de).

Wie ändere ich die Reihenfolge der Datenquellen?

Ziehen Sie die Kopfzeile einer Karte an die neue Position (eine Linie zeigt, wo sie eingefügt wird), oder verwenden Sie die Pfeilschaltflächen in der geöffneten Karte. Die erste Quelle mit Treffer liefert den Namen.

Wo liegen die Datenbanktreiber?

Im Ordner Drivers neben CallerHub.exe. Nach einer Aktualisierung von einer älteren Version werden der Ordner native und eine Oracle.ManagedDataAccess.dll neben der Programmdatei nicht mehr benötigt und können gelöscht werden.

Der SQL-Assistent findet Mitarbeiter, aber keine Kunden oder Lieferanten.

In vielen ERP-Systemen stehen die Telefonnummern in einer eigenen Kommunikationstabelle, die über einen Schlüssel mit der Firma oder Person verknüpft ist. Der Assistent erkennt solche Verknüpfungen und schlägt eine Abfrage vor, die die Tabellen verbindet (eine oder zwei Ebenen, z. B. Firma und Ansprechpartner). Prüfen Sie den Vorschlag vor dem Speichern mit Testen.

Welches Trennzeichen verwenden Listen?

Überall ein Semikolon, z. B. in der Sperrliste, der VIP-Liste, bei Empfängern und Ersetzungen (je Zeile eine, z. B. Limited;Ltd). Die frühere Schreibweise => für Ersetzungen wird weiterhin akzeptiert.

Wie sende ich Diagnosedaten an den Support?

☰ → Fehleranalyse → Diagnosepaket erstellen und ansehen …; die Einträge im Fenster prüfen, dann Speichern unter … oder Mit E-Mail-Programm senden …. Benutzer-, Computer- und Servernamen, Ordner, E-Mail- und IP-Adressen werden durch Platzhalter ersetzt (siehe Diagnosepaket).

Die Telefonanlage zeigt keine Namen an. Wie finde ich die Ursache?

Siehe Typische Fehler beim Anbinden. Hilft das nicht: ☰ → Fehleranalyse → Erweiterte Aufzeichnung starten …, einen Testanruf führen, dann ein Diagnosepaket erstellen – es enthält die Aufzeichnung.

Was bedeutet „Wartet auf Anfragen“?

Die Schnittstelle läuft, aber noch keine Telefonanlage hat eine Anfrage gesendet. Nach der ersten Anfrage wechselt die Anzeige auf „Läuft“. Bleibt sie bei einem Testanruf auf „Wartet auf Anfragen“, erreicht die Anfrage CallerHub nicht (Adresse, Port, Firewall).

Wie erkenne ich, ob CallerHub als Windows-Dienst läuft, und wie beende ich ihn?

Siehe Windows-Dienst: die Karte zeigt den Zustand; in einer Eingabeaufforderung funktionieren sc.exe query CallerHub und sc.exe stop CallerHub.

Ich habe die Sprache geändert, aber nichts ist passiert.

Eine neue Sprache wird nach einem Neustart wirksam. Der Dialog „Select Language“ bietet Jetzt neu starten oder Später an.

Wo sind alle Einstellungen? Einige Karten fehlen.

Der einfache Modus zeigt nur, was für den Betrieb nötig ist. ☰ → Erweiterte Einstellungen anzeigen zeigt alles, z. B. „Anzeige und Link“ einer Datenquelle oder die Karten Sicherheit und Betrieb in der Administration.

Wie sehe ich die aktuellen Einstellungen, wenn die Datei verschlüsselt ist?

Administration → Datenschutz → Aktuelle Einstellungen anzeigen … listet alle gespeicherten Einstellungen; Passwörter, Schlüssel und Zugangsdaten erscheinen als ***.

Versionen und Lizenzschlüssel

CallerHub gibt es in zwei Versionen. Einen Lizenzschlüssel geben Sie unter Administration → Lizenz ein; CallerHub prüft ihn ohne Internetverbindung anhand einer Signatur (RSA 3072 Bit, SHA-256, nach BSI TR-02102-1) und zeigt Kunde, Ablaufdatum und die freigeschalteten Funktionen.

VersionInhalt
Grundversion (kostenlos, private und gewerbliche Nutzung)eine Datenquelle, eine Schnittstelle, alle Arten von Datenquellen und Telefonanlagen, Statistik, Anrufanalyse (Kennzahlen, Verlauf, nach Tag), Regeln für Anzeigename/Sperre/VIP, HTTPS, SQL-Assistent
Vollversion (Lizenzschlüssel)bis zu 10 Datenquellen und 10 Schnittstellen (mehr mit Sonderlizenz), erweiterte Anrufanalyse (nach Wochentag, Uhrzeit, Nebenstelle, Anrufer, Schnittstelle, verpasste Anrufe nach Uhrzeit, Servicelevel, Rückrufquote), erweiterte Einstellungen, Betrieb als Windows-Dienst, Browser-Zugang, Netzwerksuche, Telefonbuch (LDAP und Export), Plugins, Benachrichtigungen (einschließlich geplanter Berichte), Anrufereignisse weiterleiten, Überwachung
Sonderlizenz RebrandingModul Rebranding für Wiederverkäufer; eigener Schlüssel zusätzlich zur Vollversion
Testversionbis Sie einen eigenen Schlüssel eingeben, schaltet der mitgelieferte Testschlüssel die Vollversion für 90 Tage frei (Anzeige „Testversion: Vollversion bis …“); danach arbeitet CallerHub als Grundversion weiter, ohne Einstellungen oder Daten zu verlieren

Mehrere Lizenzen: die Karte zeigt alle eingegebenen Schlüssel als Liste (Kunde, Lizenznummer, Funktionen, gültig bis, Zustand). Lizenz hinzufügen … fügt einen Schlüssel hinzu, der Stift ersetzt ihn, der Papierkorb entfernt ihn. Die Funktionen aller gültigen Schlüssel addieren sich – z. B. die Vollversion plus die Sonderlizenz Rebranding oder ein zusätzliches Schnittstellenpaket. Die Statuszeile zeigt das Gesamtergebnis.

Die Karte Lizenz listet jede lizenzpflichtige Funktion und jedes lizenzpflichtige Modul mit seinem Zustand (Lizenziert oder Nicht lizenziert) für den eingegebenen Schlüssel oder die Testversion. Module der Vollversion sind unter Administration → Module zusätzlich mit „· Vollversion“ gekennzeichnet. Lizenzschlüssel erhalten Sie über callerhub.de.

AnzeigeBedeutung
Gültig für … bis …Schlüssel ist in Ordnung
Abgelaufen am …Signatur ist in Ordnung, Ablaufdatum überschritten
Ungültiger LizenzschlüsselSchlüssel unvollständig, verändert oder nicht vom Herausgeber

Lizenzvertrag und Datenschutzhinweise

Lizenzvertrag und Datenschutzhinweise liegen im Programmordner: LICENSE.txt (Englisch) und LICENSE.de.txt (Deutsch, maßgeblich), PRIVACY.txt und PRIVACY.de.txt.

  • Grundversion: kostenlos für private und gewerbliche Nutzung auf beliebig vielen Computern; kein Anspruch auf Support oder Aktualisierungen.
  • Vollversion: einfaches, nicht ausschließliches Nutzungsrecht für die im Lizenzschlüssel genannten Funktionen und Laufzeit, für den darin genannten Kunden.
  • Nicht erlaubt: die Lizenzprüfung umgehen, das Programm verändern oder zurückentwickeln (soweit nicht gesetzlich erlaubt), Hinweise entfernen. Die Weitergabe des unveränderten Programmordners ist erlaubt (ohne Lizenzschlüssel und Einstellungen).
  • Daten: CallerHub arbeitet nur auf Ihren Computern und sendet keine Daten an den Anbieter – keine Telemetrie, keine Werbung. Sie sind Verantwortlicher im Sinne der DSGVO; die Datenschutzhinweise nennen alle Daten, Ordner, Aufbewahrungsfristen und Empfänger für Ihr Verzeichnis (Art. 30 DSGVO) und Ihre Datenschutzinformation (Art. 13/14 DSGVO).
  • Haftung: Grundversion nur bei Vorsatz und grober Fahrlässigkeit; Vollversion nach den gesetzlichen Vorschriften mit der üblichen Beschränkung bei leichter Fahrlässigkeit. Es gilt deutsches Recht; zwingende Verbraucherrechte bleiben unberührt.

Lizenzen

CallerHub (c) 2026 - Simon Bernhard · callerhub.de

Symbole: Bootstrap Icons, MIT-Lizenz, Copyright (c) 2019-2024 The Bootstrap Authors.

CallerHub enthält die .NET-10-Laufzeit und Microsoft.Data.SqlClient (Microsoft, MIT-Lizenz), System.Data.Odbc sowie Oracle.ManagedDataAccess.Core (Oracle Corporation). Die Lizenztexte liegen im Ordner Licenses (Übersicht OVERVIEW.txt). ODBC-Treiber stammen von den jeweiligen Herstellern. Genannte Produktnamen sind Marken ihrer Inhaber; CallerHub steht in keiner Verbindung zu diesen Herstellern.