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.
Schnellstart
- Kopieren Sie den Programmordner
CallerHubauf den Server, z. B. nachC:\CallerHub(siehe Installation). - Starten Sie
CallerHub.exe. Beim ersten Start öffnet sich der Einrichtungsassistent. - 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 mit030 1234560aus – das Ergebnis lautet „Testkunde GmbH - Frau Beispiel“. - Tragen Sie die angezeigte Adresse und den API-Key in der Telefonanlage ein (Anleitung je Telefonanlage unter Schnittstellen → Telefonanlage, siehe Telefonanlagen einrichten).
- 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.
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
| Punkt | Anforderung |
|---|---|
| Betriebssystem | Windows 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. |
| .NET | keine Installation nötig: Die .NET-10-Laufzeit ist in CallerHub.exe eingebettet. |
| Rechte | Normaler 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). |
| Arbeitsspeicher | Grob einige Hundert Byte je Telefonnummer; 100.000 Telefonnummern ≈ 50–100 MB (den tatsächlichen Wert im Task-Manager prüfen). |
| Netz | Eingehend: 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) | Inhalt | Wer schreibt? |
|---|---|---|
CallerHub.exe | Programm (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.dll | nur Sie |
Samples\customers.csv | Beispiel-Telefonbuch | nur Sie |
CallerHub.settings.xml | Einstellungen; Passwörter mit Windows DPAPI verschlüsselt | CallerHub beim Speichern |
Logs\lookup-YYYYMMDD.log, Logs\trace-YYYYMMDD-HHMMSS.log | Tagesprotokolle (Standard: 90 Tage); Dateien einer erweiterten Aufzeichnung | CallerHub |
Statistics\statistik-YYYY-MM.csv | Statistik je Monat (Standard: 24 Monate) | CallerHub |
Backups\CallerHub.settings-YYYYMMDD-HHMMSS.xml | Sicherungen vor jedem Speichern (höchstens 20) | CallerHub |
Help\, Temp\ | Hilfeseiten zur Anzeige, Ergebnisdateien von Verwaltungsaufgaben | CallerHub |
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
- Kopieren Sie den Programmordner nach
C:\CallerHub(ZIP-Archiv entpacken odereinrichten.cmdaus 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. - 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. - Port öffnen: Administration → Systemzustand zeigt eine fehlende Port-Reservierung oder Firewall-Regel mit einer Schaltfläche zum Beheben an (Rückfrage nach Administratorrechten).
- 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 nebenCallerHub.exe. Reste früherer Versionen – der Ordnernativeund eine DateiOracle.ManagedDataAccess.dlldirekt nebenCallerHub.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(bisherkunden.csv). Einstellungen, die noch aufkunden.csvverweisen, 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.
| Ort | Was | Wie lange | Einsehen |
|---|---|---|---|
| Arbeitsspeicher (RAM) | Telefonnummernlisten (Telefonnummer, Anzeigename, Link), Zwischenspeicher der Direktabfrage, letzte 500 Zugriffe auf der Startseite | bis zur nächsten Aktualisierung bzw. bis zum Beenden | Startseite, Testabfrage |
CallerHub.settings.xml | Einstellungen; Passwörter und Schlüssel mit Windows DPAPI verschlüsselt | bis zur Änderung | Texteditor (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 eingeschaltet | Standard 24 Monate | Seite Statistik, Export als CSV |
Backups\ | Kopien der Einstellungen vor jedem Speichern | die letzten 20 | Administration → 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.sys | bis zum Entfernen | siehe Prüfschritte |
Prüfschritte für Administratoren
- Dateizugriffe: Starten Sie Sysinternals Process Monitor, setzen Sie die Filter
Process Name is CallerHub.exeundOperation 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). - Geöffnete Dateien:
handle.exe -p CallerHub.exe(Sysinternals) oder Ressourcenmonitor → CPU → Zugeordnete Handles → Suche nach „CallerHub“. - 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. - 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. - 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.
- Aufbewahrung: CallerHub löscht ältere Dateien in
LogsundStatisticsgemäß 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.
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
| Speicherart | In CallerHub |
|---|---|
| Datenbank | Keine 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. |
| Dateien | Nur 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). |
| Übermittlung | An 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
| Vorschrift | Was CallerHub dazu beiträgt | Was 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 aus | angemessene Aufbewahrungsfristen |
| Art. 6 DSGVO (Rechtsgrundlage) | – | z. B. berechtigtes Interesse an der Anzeige bekannter Geschäftskontakte |
| Art. 13/14 DSGVO (Informationspflichten) | Übersicht und Vorlage als Grundlage | Datenschutzhinweise 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-Freigaben | Voreinstellungen beibehalten oder begründet ändern |
| Art. 28 DSGVO (Auftragsverarbeiter) | listet Cloud-Datenquellen und gehostete Telefonanlagen in der Übersicht auf | Verträ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 Plugins | HTTPS bei Zugriff über das Internet, Leserechte der Datenbankbenutzer |
| Kapitel V DSGVO (Art. 44 ff., Übermittlungen an Drittländer) | kennzeichnet Cloud-Dienste in der Übersicht | Standort 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 ab | Prozess 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 Telefonnummern | Einstellung 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.
A · STARFACE Cloud, Datenbank im eigenen Netz
B · Telefonanlage im eigenen Netz, Active Directory und CSV
C · Cloud-Quellen, Benachrichtigungen, Browser und Überwachung
Alle Verbindungen
| Verbindung | Richtung | Port (Beispiel) | Inhalt | Wann |
|---|---|---|---|---|
| Telefonanlage → CallerHub | eingehend | 8080 HTTP / 8443 HTTPS | Telefonnummer, optional angerufene Telefonnummer und Benutzer, API-Key → Name, optional Link | je Anruf |
| CallerHub → SQL-Datenbank | ausgehend | 1433, 1521, 3306, 5432 | Anmeldung, SELECT → Telefonnummern und Namen | Liste im Intervall bzw. je Anruf |
| CallerHub → LDAP/AD | ausgehend | 389 / 636 | Anmeldung, Suche → Telefonnummern und Namen | im Intervall |
| CallerHub → Microsoft 365, EWS, REST | ausgehend | 443 | Token-Anfrage, Abruf der Kontakte | im Intervall bzw. je Anruf |
| CallerHub → SMTP / Webhook | ausgehend | 587 / 443 | Störung und Behebung, ohne Telefonnummern | bei Störung |
| Browser → CallerHub | eingehend | wie Schnittstelle | /stats, /open, /metrics, /status mit Zugangsschlüssel | bei Aufruf |
| CallerHub → nuget.org | ausgehend | 443 | Download des Oracle-Treibers | nur, wenn der Treiber in Drivers fehlt und Sie den Download bestätigen |
| Netzwerk-Discovery | ausgehend | 1433, 1521, 3306, 5432, 389, 636, 3268, 587, 465, 25, 5060, 5061, 1012, 5038, 1080; UDP 1434, 1900 | Verbindungsversuch ohne Anmeldung | nur 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.
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.
| Kachel | Standard | Inhalt |
|---|---|---|
| Einrichtung (nur solange etwas fehlt) | eingeblendet, links | der nächste offene Einrichtungsschritt; die Kachel verschwindet, sobald alles eingerichtet ist |
| Kennzahlen | eingeblendet, links | seit dem Start: Anfragen, Treffer, Fehler / abgelehnt; im erweiterten Modus zusätzlich Unbekannt und Ø Antwortzeit. Verfügbarkeitsprüfungen (/health) zählen nicht mit. |
| Letzte Zugriffe | eingeblendet, links | bis 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ührlich | ausgeblendet | vollständige Grafik, welche Daten wohin fließen; Drucken … druckt sie |
| Datenfluss kompakt | eingeblendet, rechts | Telefonanlagen → CallerHub → Datenquellen, jeweils mit Zustand (z. B. Bereit, Unvollständig); Details … öffnet die vollständige Grafik |
| Testabfrage | eingeblendet, rechts | beliebige Telefonnummer, z. B. 0711 1234567 oder +41 44 123 45 67; fragt alle aktiven Quellen ab |
| Zustand der Datenquellen | ausgeblendet | Zustand jeder Datenquelle |
| Anfragen der letzten 7 Tage | ausgeblendet | Anfragen 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.
Menü
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.
| Gruppe | Punkte |
|---|---|
| Einstellungen | Einstellungen speichern (Strg+S), Änderungen verwerfen, Sichern und übertragen (Einstellungen exportieren …, Einstellungen importieren …, Sicherung wiederherstellen …) |
| Betrieb | Schnittstelle (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) |
| Ansicht | Sprache / Language, Darstellung (Wie Windows, Hell, Dunkel), Erweiterte Einstellungen anzeigen |
| Hilfe | Hilfe 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.
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.
| Seite | Einfacher Modus | Zusätzlich im erweiterten Modus |
|---|---|---|
| Datenquellen | eine Karte je Quelle mit Schritt 1 Verbindung und Schritt 2 Telefonnummernliste | Schritt 3 Anzeige und Link (Präfix vor dem Namen, Link zum Datensatz), Schritt 4 Regeln dieser Datenquelle (Anzeigename, Sperr- und VIP-Liste); eigene Verbindungszeichenfolge |
| Schnittstellen | eine Karte je Telefonanlage | – |
| Administration | Systemzustand, Server, Benachrichtigungen, Lizenz, Module, Datenschutz und die Karte Weitere Einstellungen, die auf den erweiterten Modus verweist | Betrieb, Sicherheit, die Modulkarten (Statistik, Anrufanalyse, globaler Anzeigename, Sperr- und VIP-Liste, Browser-Zugang, Plugins, Netzwerk-Discovery) und Erweitert; in Server: vertrauenswürdige Reverse Proxys |
| Startseite | Kennzahlen Anfragen, Treffer, Fehler / abgelehnt | Kennzahlen Unbekannt und Ø Antwortzeit; Starten, Stoppen, Neu laden, Cache leeren |
| Statuszeile (unten im Fenster) | nur Fehler | auch 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: enund 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\nbleiben erhalten. Webadressen, Pfade, Dateinamen und technische Bezeichnungen werden nicht übersetzt. Speichern Sie die Datei als UTF-8. Einzelheiten stehen inLanguages\README.txt. - Fehlt eine Übersetzung, erscheint der englische Text.
lang_de.txtenthä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.
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.
| Bereich | Geprüft wird (Auszug) |
|---|---|
| Schnittstelle | läuft im Programm oder als Dienst, gestoppt, Startfehler, Dienst und Programm gleichzeitig (Port-Konflikt) |
| Netzwerk | Port 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) |
| Sicherheit | IP-Freigabe je Schnittstelle aktiv oder alle Absender erlaubt, HTTP/HTTPS, Zertifikat gebunden und Ablaufdatum (Warnung 30 Tage vorher) |
| Datenquellen | Quelle bereit mit Anzahl der Telefonnummern, letzter Fehler, Oracle-Treiber, Einstellungen vollständig, letzte Anfrage der Telefonanlage |
| Rechte und Speicher | Programmordner beschreibbar (sonst Rückfallordner), freier Speicher, .NET-Version |
| Betrieb | Benachrichtigungen, 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:
| Eintrag | Schaltfläche | Was geschieht |
|---|---|---|
| Windows-Firewall: keine Regel 'CallerHub' | Regel anlegen | legt 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 Einrichtung | Regel anpassen | der 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 vergeben | Freien Port wählen | zwei 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 belegt | Freien Port wählen | ein anderes Programm nutzt den Port eines Empfängers |
| Adresse nicht reserviert (URL-Reservierung) | Reservieren | Windows 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.
Felder für alle Quellen
| Feld | Beispiel | Bedeutung |
|---|---|---|
| Karte der Datenquelle | 1. CRM · Microsoft SQL Server | eine 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-Datei | Art der Quelle: Datenbank, Datei, REST-API oder Verzeichnis (fest, sobald Verbindungsdaten eingetragen sind) |
| Bezeichnung | CRM, ERP, Phone book | Name 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*;Advertising | Regeln 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 |
| Abfragemodus | Telefonnummernliste zwischenspeichern (empfohlen) | Liste im Arbeitsspeicher oder Direktabfrage je Anruf |
| Aktualisierung (min) | 15 | Intervall der Telefonnummernliste (1 bis 1440) |
Microsoft SQL Server
| Feld | Beispiel | Hinweis |
|---|---|---|
| Server | sql01 oder sql01\SQLEXPRESS | benannte Instanz mit \; dann Port leer lassen oder den festen Port der Instanz eintragen |
| Port | 1433 | Standard |
| Datenbank (Initial Catalog) | CRM | |
| Windows-Anmeldung | ☐ | ☑ = Konto des Programms bzw. Dienstes (Benutzer/Passwort leer) |
| Benutzer / Passwort | CALLERHUB / •••••••• | 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
| Feld | Beispiel | Hinweis |
|---|---|---|
| Treiber | als 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 / Port | ora01.company.local / 1521 | Listener-Port; Infor COM etwa kann auch andere Ports verwenden |
| Dienstname | ORCLPDB1 | Service Name (nicht SID); lsnrctl status listet die Dienste |
| Benutzer / Passwort | CALLERHUB / •••••••• | Leserechte auf die Tabellen (siehe Lesebenutzer anlegen); Passwort ohne Anführungszeichen |
MySQL / MariaDB, PostgreSQL, andere ODBC-Datenbanken
| Feld | MySQL/MariaDB | PostgreSQL | Andere (ODBC) |
|---|---|---|---|
| ODBC-Treiber | MariaDB ODBC 3.1 Driver oder MySQL ODBC 8.0 Unicode Driver | PostgreSQL Unicode(x64) | Name des installierten 64-Bit-Treibers |
| Server / Port | db01 / 3306 | pg01 / 5432 | je Datenbank |
| Datenbank | suitecrm | odoo | |
| Benutzer / Passwort | crm_leser | odoo_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)
| Feld | Beispiel | Hinweis |
|---|---|---|
| CSV-Datei | Samples\customers.csv oder \\fs01\export\debitoren.csv | relativ zum Programmordner oder vollständiger Pfad; wird bei jeder Änderung neu eingelesen |
| Spalten zuordnen | Standardformat oder eigene Zuordnung | Schaltflä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.
| Einstellung | Beispiel | Bedeutung |
|---|---|---|
| Trennzeichen | Automatisch, ;, ,, Tabulator, | | Automatisch: das häufigste dieser Zeichen in der ersten Zeile |
| Kodierung | Automatisch, 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 überspringen | Automatisch (DATEV), 0 bis 10 | Automatisch ü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 … |
| Telefonnummern | Telefon, Telefon GL, Mobil | eine 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, ID | Land, (keine), Konto | Land 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)
| Feld | Beispiel | Hinweis |
|---|---|---|
| Benutzer / Client-ID | 3MVG9… (Salesforce Consumer Key) oder leer | Platzhalter {user} |
| Passwort / Token / Secret | pat-eu1-… (HubSpot Private-App-Token) | Platzhalter {password}; verschlüsselt gespeichert |
| Definition | je Zeile key=value; „Vorlage“ setzt ein Beispiel ein | |
| Schlüssel | Beispiel | Bedeutung |
|---|---|---|
url | https://crm.example.com/api/contacts?page_size=500 | Adresse; bei Direktabfrage mit {num_e164}, {num_national}, {num_digits}, {num_local}, {num_country} |
method, body, content_type | POST, {"phone":"{num_e164}"}, application/json | optional |
auth | bearer | none, basic, bearer, oauth2 (Client Credentials), ntlm/windows |
token_url, scope, token_auth | https://login.example.com/oauth2/token, contacts.read, basic | nur bei auth=oauth2 |
grant | client_credentials, password, refresh_token | OAuth2-Verfahren. client_credentials: Benutzer = Client-ID, Passwort = Secret; password: Benutzer und Passwort des Kontos; refresh_token: Benutzer = Client-ID, Passwort = Aktualisierungstoken |
client_id, client_secret | sugar, YOUR-CLIENT-SECRET | Werte für die Token-Anfrage, wenn Benutzer/Passwort anderweitig belegt sind |
token_format, token_param.Name | json, token_param.platform=custom_api | Token-Anfrage als JSON statt als Formular; zusätzliche Felder der Token-Anfrage |
auth_header, auth_prefix | OAuth-Token, Zoho-oauthtoken | Kopfzeile und Präfix des Tokens (Vorgabe Authorization und Bearer) |
header.Name | header.X-Api-Key={password} | eigene Kopfzeilen |
items | data, results, records | Pfad zur Liste im JSON |
numbers | phone,mobile | Felder mit Telefonnummern (Punkt für verschachtelte Felder: properties.phone) |
name | {company} - {name} | Vorlage des Anzeigenamens |
country, id, link | country, id, https://crm.example.com/c/{id} | optional |
next, max_pages, timeout | links.next, 1000, 30 | seitenweise laden (Pfad der nächsten Adresse), Obergrenze, Zeitlimit in Sekunden |
next_token, next_param, next_end, more | info.next_page_token, page_token, -1, info.more_records | Seiten-Token als Parameter der nächsten Anfrage; Endwert; Pfad „weitere Datensätze vorhanden“ |
next_offset, page_size | offset, 500 | seitenweise 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) |
error | error.data.message,error.message | Pfade 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
| Feld | Beispiel | Hinweis |
|---|---|---|
| LDAP-Server / Port | dc01.company.local / 636 | 389 = LDAP, 636 = LDAPS (verschlüsselt, empfohlen) |
| Basis-DN | DC=company,DC=local oder OU=Kontakte,DC=company,DC=local | Startpunkt der Suche |
| Benutzer / Passwort | COMPANY\svc-callerhub / •••••••• | leer = Konto des Programms bzw. Dienstes |
| Definition | filter=…, numbers=telephoneNumber,mobile, name={company} - {displayName}, country=c, id=objectGUID, bind=negotiate | bind=simple für OpenLDAP; ssl=true erzwingt SSL |
Microsoft 365 (Graph)
| Feld | Beispiel | Hinweis |
|---|---|---|
| Mandant | company.onmicrosoft.com oder Tenant-ID | |
| Postfächer | sales@company.com, reception@company.com | nur bei what=contacts |
| Client-ID | 11111111-2222-3333-4444-555555555555 | App-Registrierung in Entra ID |
| Geheimer Clientschlüssel | •••••••• | Ablaufdatum des Schlüssels beachten |
| Definition | what=contacts (Kontakte der Postfächer) oder what=users (Telefonbuch des Mandanten) | Anwendungsberechtigung Contacts.Read bzw. User.Read.All mit Administratorzustimmung |
Exchange (EWS)
| Feld | Beispiel | Hinweis |
|---|---|---|
| EWS-Adresse | https://mail.company.com/EWS/Exchange.asmx | Exchange Server lokal (On-Premises) |
| Postfächer | sales@company.com | leer = Postfach des Benutzers; fremde Postfächer erfordern Berechtigungen |
| Benutzer / Passwort | COMPANY\svc-callerhub / •••••••• | |
| Definition | folder=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.
| Spalte | Beispiel | Inhalt |
|---|---|---|
nummer | 0711 / 45 67-890 | Telefonnummer in beliebiger Schreibweise (Pflicht) |
anzeigename | Musterfirma AG - Frau Beispiel | angezeigter Name (Pflicht) |
rang | 0 (Firma), 1 (Ansprechpartner) | bei doppelten Telefonnummern gewinnt der kleinere Rang |
land | CH, Schweiz, 41 | Land des Anschlusses (siehe Länder) |
id, link | 1001, https://crm.company.com/contact/1001 | für den Link zum Datensatz |
Direktabfrage bei jedem Anruf: Parameter (in allen Datenbanken gleich geschrieben; CallerHub übersetzt sie in @name bzw. ?):
| Parameter | Beispiel für +41 44 123 45 67 (eigene Ländervorwahl 49) |
|---|---|
:num_national | 0041441234567 (deutsche Telefonnummer z. B. 07114567890) |
:num_e164 | +41441234567 |
:num_digits | 41441234567 |
:num_local | 0441234567 (nationale Schreibweise im Land des Anrufers) |
:num_country | CH (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;
| Meldung | Ursache und Abhilfe |
|---|---|
ORA-01917 beim GRANT | Benutzer 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 USER | Sie befinden sich im Root der Container-Datenbank. Wechseln Sie mit ALTER SESSION SET CONTAINER in die PDB. |
| ORA-01017 / ORA-28000 | Passwort falsch bzw. Konto gesperrt. Entsperren: ALTER USER CALLERHUB ACCOUNT UNLOCK; |
| ORA-28001 | Passwort abgelaufen: neues Passwort setzen oder Profil anpassen. |
| ORA-00942 | Tabelle 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.
| Meldung | Ursache und Abhilfe |
|---|---|
| 18456 Login failed | Passwort falsch, Anmeldung nicht vorhanden oder gemischter Modus ausgeschaltet (Details im SQL-Server-Fehlerprotokoll). |
| 18486 account is locked out | Mit CHECK_POLICY = ON gilt die Sperrrichtlinie von Windows. Entsperren: ALTER LOGIN CALLERHUB WITH PASSWORD = N'…' UNLOCK; |
| 229 / 208 | Kein 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 <> ''
rang0 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.
| System | Quelle | Tabellen bzw. Objekte | Spalte land | Stand |
|---|---|---|---|---|
| Infor COM | Oracle | RELKOMM, RELADRESSE, RELFIRMA, RELPERSON | – | mit R7.9 geprüft |
| Infor CRM (Saleslogix) | SQL Server | sysdba.ACCOUNT, sysdba.CONTACT | – | Beispiel, ungeprüft |
| Infor CloudSuite Industrial / SyteLine | SQL Server | custaddr_mst, vendaddr_mst | – | Beispiel, ungeprüft |
| Infor VISUAL | SQL Server, Oracle | CUSTOMER, VENDOR | – | Beispiel, ungeprüft |
| Infor M3 | SQL Server | OCUSMA, CIDMAS (Firma 100) | – | Beispiel, ungeprüft |
| Infor LN / Baan | SQL Server, Oracle | ttccom100, ttccom130 mit Firmennummer | – | Beispiel, ungeprüft |
| Microsoft Dynamics CRM / 365 CE (on-premises) | SQL Server | AccountBase, ContactBase | – | Beispiel |
| SAP Business One | SQL Server | OCRD, OCPR | ISO-Code | Beispiel |
| Microsoft Dynamics 365 Business Central / NAV (on-premises) | SQL Server | Customer, Vendor, Contact je Firma | ISO-Code | Beispiel |
| Sage CRM | SQL Server | Phone, PhoneLink, Company, Person | – | Beispiel, ungeprüft |
| Oracle E-Business Suite | Oracle | HZ_CONTACT_POINTS, HZ_PARTIES | ISO-Code | Beispiel, ungeprüft |
| Oracle JD Edwards EnterpriseOne | Oracle, SQL Server | F0115, F0101, F0111 (Schema PRODDTA) | – | Beispiel, ungeprüft |
| SAP Business One auf SAP HANA | ODBC (HDBODBC) | OCRD, OCPR im Schema der Firma | ISO-Code | Beispiel, ungeprüft |
| SuiteCRM / SugarCRM CE | MySQL/MariaDB | accounts, contacts, accounts_contacts | Ländername | Beispiel, Syntax mit Testtabellen geprüft |
| vtiger CRM | MySQL/MariaDB | vtiger_account, vtiger_contactdetails, vtiger_crmentity | Ländername | Beispiel, Syntax mit Testtabellen geprüft |
| Dolibarr ERP/CRM | MySQL/MariaDB | llx_societe, llx_socpeople, llx_c_country | ISO-Code | Beispiel, Syntax mit Testtabellen geprüft |
| Open Dental (Zahnarztpraxen) | MySQL/MariaDB | patient (PatStatus 4 = gelöscht) | – | Beispiel, Syntax mit Testtabellen geprüft; Patientendaten sind Gesundheitsdaten |
| Firebird (kleine Branchenlösungen) | ODBC | Tabelle KONTAKTE anzupassen | – | Vorlage zum Anpassen |
| SAP SQL Anywhere (kleine Branchenlösungen) | ODBC | Tabelle kontakte anzupassen | – | Vorlage zum Anpassen |
| Odoo | PostgreSQL | res_partner, res_country | ISO-Code | Beispiel, Syntax mit Testtabellen geprüft |
| HubSpot CRM | REST | crm/v3/objects/contacts, companies | Feld country | Beispiel, ungeprüft |
| Salesforce (Accounts, Kontakte, Leads, Suche über alle Telefonfelder) | REST | SOQL über /services/data, je Anruf SOSL FIND … IN PHONE FIELDS | BillingCountry / MailingCountry | Beispiel, ungeprüft |
| SuiteCRM 8 / 7.x (V8-API: Kontakte, Firmen) | REST | Api/V8/module/Contacts bzw. Accounts | Adressfeld | Beispiel, ungeprüft |
| SugarCRM (REST v11) | REST | Contacts | primary_address_country | Beispiel, ungeprüft |
| Zoho CRM | REST | Contacts, Accounts, Leads | Mailing_Country, Billing_Country, Country | Beispiel, ungeprüft |
| Odoo (JSON-RPC) | REST | res.partner | country_id | Beispiel, ungeprüft |
| SAP S/4HANA (OData API_BUSINESS_PARTNER) | REST | A_BusinessPartner mit Adressen | Country | Beispiel, ungeprüft |
| Microsoft Dynamics 365 / Dataverse (online: Kontakte, Firmen, Leads) | REST | contacts, accounts, leads (Web API) | address1_country | Beispiel, ungeprüft |
| Microsoft Dynamics 365 Business Central (online) | REST, OAuth2 | API v2.0: contacts, customers, vendors je Firma | country | Beispiel, ungeprüft |
| Microsoft Dynamics 365 Finance & Supply Chain | REST, OAuth2 | OData CustomersV3 | AddressCountryRegionId | Beispiel, ungeprüft |
| Infor CloudSuite über ION API | REST, OAuth2 (Werte der .ionapi-Datei) | Mongoose-IDO SLCustomers | – | Beispiel, ungeprüft |
| bexio (Schweiz) | REST | 2.0/contact, seitenweise über offset | – | Beispiel, ungeprüft |
| HERO (Handwerkersoftware) | REST (GraphQL) | contacts | – | Beispiel, ungeprüft |
| Clio (Anwaltskanzleien) | REST, OAuth2 | api/v4/contacts | – | Beispiel, ungeprüft |
| Jobber (Außendienst) | REST (GraphQL), OAuth2 | clients mit Cursor | – | Beispiel, ungeprüft |
| DATEV (Export Debitoren/Kreditoren) | CSV-Datei | exportierte Datei, Spalten zuordnen | frei wählbar | keine Vorlage; Vorschlag anhand der Spaltennamen |
| Active Directory, OpenLDAP | LDAP | user, contact bzw. inetOrgPerson | Attribut c | Beispiel, mit OpenLDAP geprüft |
| Microsoft 365 Kontakte bzw. Benutzer | Graph | contacts, users | countryOrRegion | Beispiel, ungeprüft |
| Exchange Kontakte | EWS | Kontaktordner | Geschäftsadresse | Beispiel, ungeprüft |
| Allgemein | alle | eine Tabelle kontakte bzw. eine REST-Liste | optional | Vorlage 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 land | Beispiele |
|---|---|
| ISO-3166-Code (2 oder 3 Buchstaben) | CH, AT, DEU |
| Internationales Kfz-Kennzeichen | D, A, I, FL |
| Ländervorwahl | 41, +41, 0041 |
| Ländername (Deutsch/Englisch, gängige Länder) | Schweiz, Österreich, Germany |
- Telefonnummern mit
+oder00sind 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;1in Nordamerika,06in Ungarn,8in 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.
| Speicher | Inhalt | Erneuerung |
|---|---|---|
| Telefonnummernliste (je Quelle) | Telefonnummern in internationaler Form mit Anzeigename | beim Start und im Intervall; bei Fehlern bleibt die bisherige Liste aktiv, ohne Liste neuer Versuch nach 1 Minute |
| CSV-Datei | Inhalt der Datei | sobald sich die Datei ändert |
| Cache der Direktabfrage | Ergebnisse 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).
| Feld | Beispiel | Bedeutung |
|---|---|---|
| Karte der Schnittstelle | 1. Zentrale · STARFACE | ein Klick öffnet die Karte; der Zustand zeigt die letzte Anfrage dieser Anlage; Anleitung kopieren kopiert die Anleitung mit dem echten API-Key |
| Bezeichnung, Aktiv | Zentrale, Niederlassung | Name in Protokoll und Statistik; inaktive Schnittstellen erhalten keine Namen |
| Schnittstelle hinzufügen, Entfernen | Schnittstelle 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. | |
| Telefonanlage | STARFACE, 3CX | bestimmt Antwortformat und Anleitung; fest, sobald erlaubte IP-Adressen eingetragen sind (für eine andere Anlage eine neue Schnittstelle hinzufügen) |
| Anleitung | eingeklappt; Anleitung anzeigen klappt sie auf | |
| Abgefragte Datenquellen | Alle Datenquellen oder CRM, ERP | Auswahl 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-Adressen | 192.168.10.20, 203.0.113.0/28 | leer = alle Absender (nicht empfohlen) |
| Server (Administration, für alle) | 8080, HTTPS | Port, HTTPS, automatischer Start, Start mit der Windows-Anmeldung, Starten/Stoppen; erweitert: vertrauenswürdige Reverse Proxys |
| Anlage | Format | Beispiel-Adresse | Stand |
|---|---|---|---|
| STARFACE | Text | http://callerhub:8080/lookup?number= + Header X-Api-Key | über ein Modul der STARFACE (siehe Telefonanlagen einrichten) |
| 3CX | JSON | …/lookup?format=json&apikey=…&number=[Number] | Schaltfläche „3CX-Vorlage …“ speichert die Vorlage; ungeprüft |
| Asterisk / FreePBX | Text | …/lookup?apikey=…&called=${EXTEN}&number=${URIENCODE(${CALLERID(num)})} | Wählplan mit CURL; ungeprüft |
| VitalPBX | Text | …/lookup?apikey=…&number=[CIDNUM] | CID-Lookup-Quelle (HTTP/HTTPS) in der eingehenden Route; ungeprüft |
| Issabel (auch FreePBX) | Text | Host, 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=#SEARCH | Remote-Telefonbuch (Yealink, Fanvil); ungeprüft |
| XML-Telefonbuch (Snom-Format) | XML-Telefonbuch | …/lookup?format=snom&apikey=…&number=#SEARCH | ungeprüft |
| Allgemein (HTTP) | Text, JSON, XML | …/lookup?format=json&apikey=…&number=071112345678 | fü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:
| Parameter | Bedeutung | Beispiel |
|---|---|---|
number | Rufnummer des Anrufers in beliebiger Schreibweise (national, +49, 0049, mit Leerzeichen) | 0711 1234567, %2B497111234567 |
apikey oder Header X-Api-Key | API-Key der Schnittstelle (Header bevorzugt: Er erscheint nicht in Protokollen von Proxys) | 48 Zeichen |
format | Antwort: text (nur der Name), json, xml, yealink, snom | json |
called, user (optional) | angerufene Nummer und Benutzer für Statistik und Anrufanalyse | 200 |
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.
- Schnittstellen → Hinzufügen (bei einer neuen Installation Erste Schnittstelle hinzufügen), Telefonanlage wählen, Bezeichnung eingeben.
- Erlaubte IP-Adressen: die IP-Adresse der Anlage bzw. der Telefone eintragen (z. B.
192.168.10.20oder192.168.20.0/24für ein Telefonnetz). - Abgefragte Datenquellen prüfen, dann Speichern und übernehmen.
- Im Browser eines Rechners im selben Netz testen:
http://192.168.10.5:8080/lookup?apikey=API-KEY&number=030 1234560liefert den Namen (leer, wenn unbekannt). 401 = Schlüssel falsch, 403 = IP-Adresse nicht erlaubt. - 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.
- Adresse und API-Key:
http://192.168.10.5:8080/lookup?number=<number>, API-Key als HeaderX-Api-Keyoder Parameterapikey. Test im Browser:http://192.168.10.5:8080/lookup?number=07114567890&apikey=API-KEY. - 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.
- Oder ein fertiges Modul importieren: Admin → Module → Modul-Library → Modul importieren, die Datei
.sfmwählen, eine Modulkonfiguration mit Adresse und API-Key anlegen und aktivieren. Bildschirmfotos: Import von neuen Modulen. - 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
- 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.
- In der 3CX-Verwaltungskonsole unter Integrationen → CRM (Menüpfad je nach Version) die Vorlage hochladen und CallerHub als CRM auswählen.
- Die Suche nach Telefonnummern einschalten. 3CX fragt mit
format=jsonund erhältname,phoneund – falls hinterlegt – dieurldes Datensatzes.
Asterisk / FreePBX
- Voraussetzung: Das Modul
func_curlist geladen (asterisk -rx "module show like curl"). - Im eingehenden Kontext (FreePBX:
/etc/asterisk/extensions_custom.conf, Kontextfrom-pstn-customo. ä.) 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)
- Weboberfläche des Telefons: Telefonbuch → Remote-Telefonbuch, Adresse
http://192.168.10.5:8080/lookup?format=yealink&apikey=API-KEY&number=#SEARCH, NameCallerHub. - Unter Funktionen bzw. Telefonbuch die Namenssuche für eingehende Anrufe im Remote-Telefonbuch einschalten (Bezeichnung je nach Firmware).
- 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
- Weboberfläche bzw. Provisionierung: Adresse des XML-Telefonbuchs
http://192.168.10.5:8080/lookup?format=snom&apikey=API-KEY&number=#SEARCH. - 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
| Symptom | Ursache 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=401 | API-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=403 | Die 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=429 | Zu 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 Namen | Antwort 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 fehl | Die Telefonanlage vertraut dem Zertifikat nicht, oder der Zertifikatsname passt nicht zur Adresse. Das Stammzertifikat in die Telefonanlage importieren. |
| Name abgeschnitten oder Umlaute falsch | Mit 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.
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+49oder0049geschrieben 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),objectClassinetOrgPerson. Höchstens 200 Einträge je Suche. - Abfragen erscheinen in Protokoll und Statistik mit der Schnittstelle LDAP.
| Einstellung | Beispiel | Hinweis |
|---|---|---|
| Port | 389 (LDAP), 636 (LDAPS) | Ports unter 1024 brauchen unter Windows keine besonderen Rechte; legen Sie eine Firewall-Regel für den Port an. |
| Basis-DN | ou=callerhub | Im Telefon als „Base“ bzw. „Search Base“ eintragen. |
| Erlaubte IP-Adressen | 192.168.20.0/24 | Netz der Telefone bzw. die Telefonanlage; leer = alle. |
| Benutzer, Kennwort | telefon, mindestens 8 Zeichen | Leer = 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 LDAPS | Fingerabdruck | Zertifikat 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):
- 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, BaseDNou=callerhub. - 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.
- User Manager → Benutzergruppen: Telefonbuch: LDAP verwenden für die betroffenen Gruppen ankreuzen.
- 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.
| Format | Verwendung |
|---|---|
| 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) |
| CSV | Excel; 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 inCallData\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-KEYliefert einen Namen.
2. Modul anlegen
- Den Module Designer öffnen und ein neues Modul anlegen. Name:
CRM-Lookup, Hersteller: z. B. Ihr Firmenname. - Den Reiter
Einstellungenmit dem TextfeldGUI_LOOKUP_URL(STRING) und dem PasswortfeldGUI_API_KEY(STRING) anlegen. - Die Funktion
lookupCalleranlegen.
3. Bausteine in lookupCaller
| # | Baustein | Einstellungen |
|---|---|---|
| 1 | Call → GetCaller | Ausgaben callerSignallingNumber, isAnonymous |
| 2 | Call → GetCalledNumber | Ausgabe calledNumber (für die Statistik) |
| 3 | if | isAnonymous wahr → keine Abfrage; die folgenden Schritte im else-Zweig |
| 4 | Call → CreateMap | Ausgabe map |
| 5 | Call → Add | key = number, value = callerSignallingNumber |
| 6 | Call → Add | key = called, value = calledNumber; optional user |
| 7 | Call → Add | key = apikey, value = GUI_API_KEY |
| 8 | Call → CreateHttpUrlWithParams | requestUrl = GUI_LOOKUP_URL, params = Map → createdUrl |
| 9 | Call → HttpRequest | GET, url = createdUrl → responseStream, httpStatusCode |
| 10 | Call → ReadFromStream | UTF-8 → text |
| 11 | Call → IsNotBlank | text → result |
| 12 | if | result wahr (optional httpStatusCode = 200) |
| 13 | Call → SetCallerId | callerName = 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
- Einen Einstiegspunkt für eingehende Anrufe mit dem Ziel
lookupCalleranlegen; das Modul speichern. - Eine Instanz anlegen, URL und API-Key eintragen und unter „Log-Datei“ vorübergehend INFO wählen.
- 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
| Befehl | Wirkung |
|---|---|
CallerHub.exe | Oberfläche (bzw. Dienst, wenn Windows das Programm als Dienst startet) |
CallerHub.exe minimized | Oberfläche im Infobereich (Autostart) |
CallerHub.exe check | Verbindung und Abfrage aller aktiven Quellen prüfen |
CallerHub.exe test 07114567890 | Eine Telefonnummer abfragen |
CallerHub.exe templates MYSQL | SQL-Vorlagen ausgeben (ORACLE, SQLSERVER, MYSQL, POSTGRESQL, ODBC) |
CallerHub.exe console | Schnittstelle 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.
| Feld | Beispiel | Wirkung |
|---|---|---|
| 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 Sperre | Advertising | Standardtext 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 office | ohne Treffer gilt der angegebene Name; mit Treffer stellt CallerHub „Text vor VIP-Namen“ voran |
| Text vor VIP-Namen | VIP oder ★ | steht vor dem Namen (je Quelle: leer = globaler Text) |
Reihenfolge bei jedem Anruf
- Globale Sperrliste: Steht die Nummer darin, endet die Suche.
- Die Datenquellen der Schnittstelle nacheinander: zuerst die Sperrliste der Quelle, dann die Abfrage; die erste Quelle mit Treffer liefert den Namen.
- Ersetzungen der Quelle mit Treffer, danach die globalen Ersetzungen.
- VIP-Liste der Quelle mit Treffer, sonst die globale VIP-Liste.
- Zuletzt die Plugins.
Statistik
- 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.
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.
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.
| Bereich | Inhalt |
|---|---|
| Zeitraum, Richtung | heute bis dieses Jahr; alle, eingehend (Vorgabe), ausgehend oder intern |
| Kennzahlen | Anrufe, 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) |
| Verlauf | Anrufe und angenommene Anrufe je Stunde, Tag oder Monat |
| Verpasste nach Uhrzeit (Vollversion) | verpasste Anrufe je Wochentag und Stunde – zeigt, wann Personal fehlt |
| Auswerten nach | Tag (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 |
| Exportieren | Tabelle als CSV-Datei |
| Im Browser | Im 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.csvregelmäß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.csvin den Ordner. CallerHub erkennt den Aufbau (Spaltencallid,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 oderhh:mm:ss). - FRITZ!Box: live über den Anrufmonitor, siehe FRITZ!Box.
- Ohne Spalte
Directionunterscheidet 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:
| Quelle | Einstellung in CallerHub | Einstellung in der Telefonanlage |
|---|---|---|
| Beliebige Anlage oder Skript | nichts (Modul Anrufanalyse eingeschaltet) | /event mit callid (Beginn, angenommen, beendet; siehe unten) |
| Placetel | nichts | Notify-API: URL https://callerhub.company.com/event?apikey=API-KEY (Ereignisse IncomingCall, OutgoingCall, CallAccepted, HungUp) |
| sipgate.io | nichts | URL 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 / FreePBX | Empfänger Asterisk (AMI), CallerHub verbindet sich mit Port 5038 | manager.conf: Benutzer mit read = cdr; cdr_manager.conf: enabled = yes |
| Mitel MiVoice Office 400 | Empfänger Mitel, CallerHub verbindet sich mit Port 1080 | SMDR (Ausgabe der Verbindungsdaten) im Format PC5 über TCP |
| OpenScape Business | Empfänger OpenScape, CallerHub wartet (Port z. B. 5101) | Gebührendaten per LAN (TCP-Client) an CallerHub-Adresse:5101 |
| innovaphone | Empfänger innovaphone (TCP) – oder nichts bei HTTP | Gateway → CDR0: TCP an CallerHub-Adresse:Port oder HTTP mit Pfad /cdr?apikey=API-KEY |
| FRITZ!Box | Empfänger FRITZ!Box (Anrufmonitor), CallerHub verbindet sich mit Port 1012 | Anrufmonitor einmalig mit #96*5* einschalten |
| 3CX V20 (Cloud oder lokal installiert) | Empfänger 3CX V20 (XAPI), CallerHub ruft ab | siehe Verbindungsdaten per API |
| Microsoft Teams Telefonie | Empfänger Microsoft Teams, CallerHub ruft ab | siehe Verbindungsdaten per API |
| Webex Calling | Empfänger Webex Calling, CallerHub ruft ab | siehe Verbindungsdaten per API |
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.
| Telefonanlage | Felder in CallerHub | Vorbereitung |
|---|---|---|
| 3CX V20 | Adresse (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 Calling | API-Adresse (Vorgabe analytics.webexapis.com), Zugangstoken | Control 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
Modul „Browser-Zugang“, Karte Administration → Modul: Browser-Zugang. Alle Funktionen nutzen einen eigenen Zugangsschlüssel (getrennt vom API-Key) und optional eigene IP-Freigaben.
| Feld | Beispiel |
|---|---|
| Zugangsschlüssel | Hn4sT8vB2qL6wK9xR3mZ7pD1 („Neu erzeugen“ macht den alten ungültig) |
| Erlaubte IP-Adressen für den Browser-Zugang | 192.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.
| System | Adresse | Einstellung im Überwachungssystem |
|---|---|---|
| Nagios, Icinga, Checkmk | /check?key=KEY | check_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=KEY | Sensor HTTP Data Advanced; Kanäle: Zustand, Datenquellen bereit, beantwortet, unbekannt, abgewiesen, Fehler, mittlere Antwortzeit, Lizenztage, Arbeitsspeicher. |
| Zabbix | /status?key=KEY | Element vom Typ HTTP-Agent (JSON), abhängige Elemente mit JSONPath, z. B. $.state, $.requests.averageMs, $.sources[0].ready. |
| Prometheus / Grafana | /metrics | authorization: { 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
| Gruppe | Inhalt |
|---|---|
| Zustand der Schnittstelle | läuft, Laufzeit, Gesamtzustand (0 OK, 1 WARNING, 2 CRITICAL mit Gründen) |
| Datenquellen | bereit, Einträge im Arbeitsspeicher, mittlere und höchste Antwortzeit je Quelle |
| Anfragen | beantwortet, unbekannt, abgewiesen, Fehler seit dem Start |
| Leistung | mittlere Antwortzeit mit den Schwellen WARNING ab (ms) und CRITICAL ab (ms), Einträge im Zwischenspeicher, gesperrte Adressen |
| Live-Empfang | Anzahl der Empfänger und ob einer einen Fehler meldet |
| Anrufereignisse | ob die Weitergabe fehlschlägt |
| Lizenz | Tage bis zum Ablauf der Lizenz (WARNING ab 14 Tagen, CRITICAL ab 3 Tagen) |
| System | Arbeitsspeicher, 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 / Feld | Beispiel |
|---|---|
| 1. E-Mail-Versand (SMTP) – genutzt von Störungsmeldungen und geplanten Berichten | |
| SMTP-Server / Port / Verschlüsselung | smtp.office365.com / 587 / STARTTLS; außerdem SSL/TLS – SMTPS (Port 465) oder keine (Port 25). |
| Absender / Benutzer / Passwort | callerhub@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örungsmeldungen | it@company.com; support@company.com (mit ; trennen) |
| Webhook Aktiv / Webhook-Adresse / Format | https://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–Fr | 8 / 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:
| Feld | Beispiel |
|---|---|
| Kanal | E-Mail (PDF), Microsoft Teams, Slack oder JSON (Webhook) |
| Empfänger / Webhook-Adresse | E-Mail: management@company.com; it@company.com; Teams, Slack, JSON: Adresse des Webhooks |
| Inhalt | beliebige Kombination aus Statistik, Anrufanalyse und Protokoll (Warnungen und Fehler des Zeitraums, höchstens 400 Zeilen) |
| Abstand / Wochentag / Uhrzeit | täglich (Vortag), wöchentlich am gewählten Wochentag (letzte 7 Tage), monatlich am 1. (Vormonat); Uhrzeit z. B. 07:30 |
| Aktiv | schaltet 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) | I | jede 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.
| Typ | Einstellungen | Einsatz |
|---|---|---|
| Text per TCP an einen Server senden | Server, Port, Format, optional Benutzer und Kennwort, Zeilenende, Text | Das 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 starten | Pfad (exe, cmd, bat, ps1), Argumente, auf das Ende warten | Vorhandene 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-Aufruf | Adresse, Inhalt | Ohne 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.exeist 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.
| Modul | Standard | Funktion |
|---|---|---|
| Statistik | ein | Anfragen und Treffer, Diagramme, Top-Anrufer, Wochentag × Stunde |
| Anrufanalyse | aus | Auswertung aller Anrufe aus den Verbindungsdaten (siehe Anrufanalyse) |
| Anzeigename, Sperr- und VIP-Liste | ein | Ersetzungen, gesperrte und wichtige Telefonnummern |
| Telefonbuch (LDAP und Export) | aus | LDAP-Telefonbuch für Telefone und Telefonanlagen, Export für FRITZ!Box, Outlook und Cloud-Telefonanlagen, /phonebook (siehe Telefonbuch) |
| Browser-Zugang | ein | /stats, /calls, /open (zusätzlich je Funktion einzuschalten) |
| Monitoring | aus | /check, /prtg, /status, /metrics für Überwachungssysteme (siehe Monitoring) |
| Rebranding | aus | eigener Produktname, eigenes Logo und eigener Kontakt für Wiederverkäufer; erfordert eine Sonderlizenz (siehe Rebranding) |
| Benachrichtigungen | ein | E-Mail, Teams/Slack (zusätzlich einzurichten) |
| Anrufereignisse weitergeben | aus | Anrufe an CRM, Ticketsystem oder eigene Programme melden (siehe Anrufereignisse) |
| KI-Assistent (Chat) | ein | Anonymisierte Fragen für den Claude-Chat |
| Netzwerk-Discovery | aus | Suche nach Datenbanken, Verzeichnissen und Telefonanlagen |
| Plugins | aus | Eigene 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).
| Feld | Beispiel | Wo es erscheint |
|---|---|---|
| Firmenname | Musterhaus IT GmbH | Fußzeile von Berichten und Ausdrucken, „Über“, Copyright-Zeile der Browserseiten; leer = kein Rebranding |
| Programmname | PhoneLink Pro | Fenstertitel, Titelleiste, Infobereich, Betreffzeilen und Signatur der E-Mails, Browserseiten, PDF-Berichte, Ausgaben für das Monitoring |
| Anschrift, Support, Vertrieb, E-Mail | Hauptstraße 1, 70173 Stuttgart · +49 711 123450 | Dialog „Über“ |
| Internetseite | www.musterhaus-it.de | Fußzeile, Links im Programm |
| Logo | PNG oder JPG, quer, z. B. 400 × 120 Pixel, höchstens 2 MB | Titelleiste, 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.
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)
| Kennung | Funktion | Einstellungen (Beispiel) |
|---|---|---|
beispiel.geschaeftszeiten | hängt außerhalb der Geschäftszeit einen Hinweis an | zeiten=08:00-17:00, tage=1-5, hinweis= (after hours) |
beispiel.herkunft | zeigt bei Anrufern ohne Treffer Mobilfunk bzw. Land | mobil=Mobile ({land}), ausland=Call from {land}, inland= |
beispiel.schreibweise | wandelt 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.
| Funktion | Wo | Beispiel |
|---|---|---|
| Letzten Fehler analysieren | ☰ → KI-Assistent (Claude-Chat); Fehlermeldung | „ORA-12514 nach einem Serverwechsel – was sollte ich prüfen?“ |
| SQL bzw. Definition entwerfen | Karte Telefonnummernliste → Mit KI entwerfen | SELECT für Odoo-Kontakte mit Mobilnummern |
| Statistik auswerten | ☰ → KI-Assistent (Claude-Chat) | Stoßzeiten und Trefferquote je Quelle deuten |
| Systemzustand besprechen | Administration → Systemzustand → Mit KI besprechen | Reihenfolge 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 / Auswahl | Beispiel |
|---|---|
| Netzbereiche | 192.168.10.0/24, 10.0.5.20 (leer = eigene Netze als /24) |
| Datenbanken | Ports 1433, 1521, 3306, 5432 und SQL Server Browser |
| Verzeichnisse und E-Mail | Ports 389, 636, 3268; Mailserver 587, 465, 25 |
| Telefonanlagen und Geräte | SIP 5060/5061, FRITZ!Box-Anrufmonitor 1012, Asterisk AMI 5038, Mitel SMDR 1080, UPnP/SSDP (auch der Telefonanlagen-Simulator) |
| Eingetragene Dienste prüfen | DNS-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.
1 · OPNsense / pfSense
- Firewall → Aliases:
STARFACE_Cloud(Host:203.0.113.10),CALLERHUB(Host:192.168.10.5). - Firewall → NAT → Port Forward (neuere OPNsense-Versionen ggf. „Destination NAT“), „+“: Interface
WAN, ProtocolTCP, SourceSTARFACE_Cloud(über „Advanced“), DestinationWAN address, Port8443, Redirect targetCALLERHUB/8443, DescriptionCallerHub, Filter rule association „Add associated filter rule“. - Speichern, Apply changes. Prüfen Sie unter Firewall → Log Files → Live View (Filter Port 8443) mit einem Testanruf.
2 · Sophos Firewall (SFOS)
- Hosts and services → IP host:
STARFACE_Cloud=203.0.113.10,CallerHub=192.168.10.5; Services:CallerHub-8443= TCP 8443. - 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 serviceCallerHub-8443, Translated destinationCallerHub. - Rules and policies → Firewall rules: Regel WAN → LAN, Quelle
STARFACE_Cloud, ZielCallerHub, DienstCallerHub-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 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_addressesinpostgresql.confpassend setzen, inpg_hba.confz. B.host odoo odoo_ro 192.168.10.5/32 scram-sha-256, danach neu laden. - MariaDB/MySQL:
bind-addressin 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
Die Karte Administration → Sicherheit fasst alle Entscheidungen zusammen, die der Betreiber treffen muss; der Systemzustand zeigt offene Empfehlungen.
| Einstellung | Empfehlung | Wirkung und Abwägung |
|---|---|---|
| API-Keys und Schlüssel verschlüsselt speichern (DPAPI) | ein | API-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 Fehlversuchen | 20 je Minute, 5 Minuten | Eine 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-Dienstes | virtuelles Dienstkonto | Minimale Rechte statt LocalSystem (siehe Windows). |
| Nur Plugins mit gültiger digitaler Signatur laden | ein, sobald alle Plugins signiert sind | Plugins 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.exeund 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 Siezertifikat-vertrauen.cmdim Programmordner als Administrator aus oder verteilenCallerHub-Root-CA.cer(Vertrauenswürdige Stammzertifizierungsstellen) undCallerHub-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
| Test | Inhalt |
|---|---|
tests/linux/Security.cs | Anmeldung (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.cs | Zufalls- und Mutationstests der Parser (Telefonnummern, JSON, CSV, IP-Listen, Einstellungsdatei, Plugin-Protokoll, Lizenzschlüssel, Verbindungsdaten), Verschachtelung ohne Stapelüberlauf |
tests/linux/Telefonbuch.cs | LDAP-Telefonbuch mit ldapsearch: Suche, Anmeldung, Sperre, nur Lesen, 200 fehlerhafte Nachrichten |
tools/geheimnisse.py | Suche nach Schlüsseln, Token und Passwörtern in den versionierten Dateien |
build.cmd | Prü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.
| Standard | Bezug |
|---|---|
| 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 -2 | Kryptografie (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.0 | Maß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 |
| DSGVO | siehe 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 Schnittstelle | Je Datenquelle |
|---|---|---|
| Port, HTTPS und Zertifikat, vertrauenswürdige Reverse-Proxys, Ländervorwahl, Namenslänge, Cache, Protokoll, Benachrichtigungen | Bezeichnung, Telefonanlage, API-Key, erlaubte IP-Adressen, abgefragte Datenquellen | Verbindung, 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
| Pfad | Inhalt |
|---|---|
CallerHub.settings.xml | alle 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.csv | Plugins, 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;/statusund/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,StatisticsundCallDatabehalten (siehe Installation).
Protokollierung und Diagnose
- Protokollstufen Info, Zugriff, Warnung, Fehler, Debug; Telefonnummern maskiert, sofern vollständige Nummern nicht eingeschaltet sind; Schlüssel, Passwörter,
AuthorizationundCookieimmer 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.
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,
localhostund die IPv4-Adressen) im Speicher „Eigene Zertifikate“ des Computers und speichert den öffentlichen Teil alsCertificates\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, wennsecurity.enterprise_roots.enabledeingeschaltet 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
Backupsan (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):
| Eintrag | Zweck |
|---|---|
| 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 öffnen | Das 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 zumail-1@example.invalid, IPv4-Adressen zuip-1; Datenbankbenutzer in Verbindungszeichenfolgen werden zuuser-N. - Erhalten bleiben: öffentliche Domänen (z. B.
microsoft.com),127.0.0.1und0.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.txtim 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
DiagnosticUploadUrlin 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
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.
| Typ | Bedeutung |
|---|---|
| Info | Start, Laden der Listen, Einstellungen, Plugins |
| Zugriff | erfolgreiche Anfrage (auch Verfügbarkeitsprüfungen) |
| Warnung | abgelehnte Anfrage (z. B. IP nicht erlaubt, API-Key falsch), unbekannte Landangaben |
| Fehler | Fehler mit Ursache und Vorschlag |
| Debug | nur 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
| Wert | Bedeutung |
|---|---|
rate, avg, p50/p95/p99, max | Anfragen je Sekunde und Antwortzeiten (Perzentile als Obergrenze einer Klasse) |
queue_avg, queue_max | Zeit zwischen der Annahme einer Anfrage und ihrer Bearbeitung – hohe Werte bedeuten zu wenige Threads oder einen langsamen Server |
concurrent_max, threads, pool_busy | gleichzeitig bearbeitete Anfragen, Threads des Prozesses, belegte Threads des Thread-Pools |
memory, gc | verwalteter Arbeitsspeicher und Speicherbereinigungen (Generation 0/1/2) im Zeitraum |
call_events_queue | wartende 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.
- Aktuelle Einrichtung: die Prüfungen beim Speichern, doppelt vergebene Ports, der Systemzustand.
- 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.
- 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.
- Live-Test: eine zweite Schnittstelle nur auf
localhostmit 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. - 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.
- 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 ….
| Meldung | Ursache und Abhilfe |
|---|---|
| Der Programmordner lässt sich nicht löschen | Lä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 Dienst | Dienstnamen (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 gefunden | Der Ordner Drivers neben CallerHub.exe fehlt: den Programmordner vollständig kopieren. |
| CSV: „Spalte nicht gefunden“ oder 0 Einträge | Spaltennamen, 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“ funktioniert | Der Test verwendet die Werte im Formular, die laufende Schnittstelle die gespeicherten: Speichern und übernehmen. |
| Port bereits belegt | Läuft das Programm bereits (Infobereich) oder als Dienst? Eine Instanz beenden oder einen anderen Port wählen. |
| Windows verweigert das Öffnen des Ports | URL-Reservierung fehlt: Schaltfläche im Systemzustand oder netsh http add urlacl … als Administrator. |
| ODBC: Datenquellenname nicht gefunden | Einen 64-Bit-ODBC-Treiber installieren oder einen installierten Treiber wählen. |
| Kein Treffer für eine bekannte Telefonnummer | Eine 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 / 404 | 403 IP-Adresse nicht zugelassen; 401 falscher Zugangsschlüssel; 404 Funktion oder Modul ausgeschaltet oder nicht gespeichert. |
| Plugins wurden ausgesetzt | Ein Plugin hat länger als 300 ms gebraucht. Das Plugin prüfen, dann Administration → Modul: Plugins → Neu laden. |
| Microsoft 365: 401/403 | Geheimer 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.
| Version | Inhalt |
|---|---|
| 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 Rebranding | Modul Rebranding für Wiederverkäufer; eigener Schlüssel zusätzlich zur Vollversion |
| Testversion | bis 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.
| Anzeige | Bedeutung |
|---|---|
| Gültig für … bis … | Schlüssel ist in Ordnung |
| Abgelaufen am … | Signatur ist in Ordnung, Ablaufdatum überschritten |
| Ungültiger Lizenzschlüssel | Schlü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.