Start / Installation
Für Administration und IT · vom API-Zugang bis zum ersten Popup, etwa eine Stunde
| Bereich | Anforderung |
|---|---|
| 3CX | Version 20, AI- oder Enterprise-Edition. API-Zugänge („Dienstprinzipale") gibt es nur in diesen Editionen. Gehostet oder lokal ist egal. |
| ERPNext | Frappe und ERPNext 16 mit Bench-Installation, Zugriff auf die Kommandozeile als Bench-Benutzer und Rechte für Supervisor. |
| Netzwerk | Das ERP muss die 3CX per HTTPS auf Port 443 erreichen. Das ist die einzige nötige Verbindung. Sie geht immer vom ERP aus, eine Freigabe ins ERP ist nicht nötig. |
| Rechte | Administrator-Zugang zur 3CX-Verwaltung und die Rolle System Manager im ERP. |
Die Edition steht in der 3CX unter Admin → Systemübersicht, Kachel System Information:
In kleineren Editionen zeigt die API-Seite einen Hinweis statt des Formulars:
Admin → Integrationen → API → Hinzufügen. Als Client-ID
zum Beispiel erpnext eintragen.
Haken bei Aktivieren dieser Anwendung für den Zugriff auf die 3CX-Konfigurations-API.
Abteilung DEFAULT, Rolle „Systemeigentümer".
Haken bei Aktivieren des Zugriffs auf die 3CX Call Control API. Keine DID-Nummern eintragen, denn die Integration beobachtet Anrufe nur und nimmt selbst keine an. Die Chat-API bleibt aus.
Über Nebenstellen auswählen alle Nummern markieren, deren Anrufe das ERP sehen soll: die Benutzer-Nebenstellen und auch Warteschleifen und Ringgruppen. Nur so erkennt das Popup, dass ein Anruf über die Zentrale kommt.
Nach dem Speichern zeigt die 3CX den API-Schlüssel genau einmal an. Kopiere ihn direkt in das ERP (Schritt 4) oder in deinen Passwort-Tresor. Geht er verloren, erzeugst du im API-Zugang mit API-Schlüssel generieren einen neuen. Der alte wird damit ungültig.
Auf dem ERP-Server als Bench-Benutzer, vorher ein Backup:
cd ~/frappe-bench
bench --site erp.example.com backup
bench get-app https://github.com/itsdave-de/frappe_3cx --branch main
bench --site erp.example.com install-app frappe_3cx
bench --site erp.example.com migrate
bench build --app frappe_3cx
sudo supervisorctl restart all
Ersetze erp.example.com durch den Namen deiner Site. Die App bringt keine zusätzlichen
Python-Pakete mit. Die Verbindung zur 3CX nutzt Bibliotheken, die Frappe ohnehin installiert.
Im ERP ThreeCX → ThreeCX Settings öffnen:
Aktiviert setzen, PBX-URL der 3CX (zum Beispiel
https://ihre-firma.3cx.de), Client-ID und Client Secret
(den API-Schlüssel) eintragen und speichern.
Mit Verbindung testen holt das ERP ein Token von der 3CX. Erwartet wird „Verbindung erfolgreich!". Ein Fehler hier bedeutet fast immer eine falsche URL, einen falschen Schlüssel oder eine fehlende Netzfreigabe von ERP zu 3CX auf Port 443.
Jeder Benutzer, der Popups bekommen oder per Klick anrufen soll, braucht eine Zuordnung zu seiner Nebenstelle.
Nebenstellen von 3CX synchronisieren legt Zuordnungen überall dort an, wo die E-Mail-Adresse in der 3CX und im ERP übereinstimmt. Bestehende Zuordnungen bleiben unverändert.
Unter ThreeCX User Extension → Hinzufügen Benutzer und Nebenstellennummer eintragen. Das ist nötig, wenn in der 3CX andere E-Mail-Adressen hinterlegt sind als im ERP.
Was die Felder Popup bei eingehenden Anrufen und Primäre Nebenstelle bewirken, steht unter Funktionen im Detail.
Das ERP holt alle 5 Minuten die Anrufe seit dem jüngsten vorhandenen Eintrag im Anrufprotokoll. Ist das Protokoll noch leer, importiert der erste Lauf die gesamte Historie der 3CX. Bei großen Datenmengen startest du diesen Erstimport besser selbst auf dem Server, dort läuft er ohne Zeitlimit:
bench --site erp.example.com execute frappe_3cx.tasks.sync_call_history
Bei wenigen tausend Anrufen reicht auch der Button Anrufprotokoll von 3CX synchronisieren. Der Import ist wiederholbar, bereits vorhandene Anrufe werden erkannt und nicht doppelt angelegt.
Telefonbuch-Abgleich prüfen (Probelauf) zeigt, wie viele Kontakte angelegt, geändert und gelöscht würden, ohne etwas zu schreiben.
Telefonbuch jetzt abgleichen überträgt die Kontakte. Das Ergebnis steht rechts im Feld Ergebnis des letzten Abgleichs.
Telefonbuch-Abgleich aktivieren setzen und speichern. Danach gleicht das ERP alle 15 Minuten ab.
Für Popup und Live-Anrufprotokoll hält ein Hintergrunddienst, der Listener, eine dauerhafte Verbindung zur 3CX. Er läuft als eigenes Supervisor-Programm neben den übrigen Frappe-Diensten.
Als root die Datei /etc/supervisor/conf.d/frappe-3cx-callcontrol.conf anlegen. Pfade,
Benutzer und Site-Namen an deine Installation anpassen:
[program:frappe-3cx-callcontrol]
command=/home/frappe/frappe-bench/env/bin/python -m frappe.utils.bench_helper frappe --site erp.example.com threecx-callcontrol
directory=/home/frappe/frappe-bench/sites
user=frappe
autostart=true
autorestart=true
startsecs=10
stopsignal=TERM
stopwaitsecs=15
stopasgroup=true
killasgroup=true
stdout_logfile=/home/frappe/frappe-bench/logs/threecx-callcontrol.log
stderr_logfile=/home/frappe/frappe-bench/logs/threecx-callcontrol.error.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl status frappe-3cx-callcontrol
Die eigene Datei überlebt bench setup supervisor, das nur die von Bench erzeugte
Konfiguration neu schreibt.
In den Einstellungen Live-Anrufereignisse aktivieren setzen und speichern. Innerhalb von etwa 30 Sekunden verbindet sich der Listener. Der Status des Listeners wechselt auf Verbunden und zeigt die Zahl der überwachten Nummern.
Im Abschnitt Funktionen sind Click-to-Call, Popup und Anrufprotokollierung ab Werk
eingeschaltet. Unter Telefonnummer-Zuordnung steht die Landesvorwahl, für Deutschland
49.
| Test | Erwartung |
|---|---|
| Von einem Handy eine Nebenstelle anrufen, deren Benutzer das ERP geöffnet hat. | Popup erscheint beim Klingeln. Ist die Handynummer als Kontakt gepflegt, mit Name und Übersicht. Neuer Eintrag im Anrufprotokoll. |
| Den Anruf an einem anderen Telefon der Gruppe annehmen. | Das Popup bei den übrigen Benutzern schließt sich. |
| Im ERP auf ein Telefonsymbol klicken. | Das eigene Telefon klingelt, nach dem Abnehmen wird die Nummer gewählt. Ausgehender Eintrag im Anrufprotokoll. |
| Nach 15 Minuten einen neuen ERP-Kontakt mit Nummer in der 3CX-App suchen. | Kontakt ist im Firmentelefonbuch vorhanden. |
| Einen Anruf über die Zentrale (Warteschleife oder Ringgruppe) testen. | Popup zeigt die Gruppe als blaues Kennzeichen. |
Klappt ein Punkt nicht, hilft die Fehlersuche.