Starface Adressbuch: SQL / CardDav Import via REST API

Zur Synchronisation eines Starface Adressbuches mit einem CRM System ist ein Zugriff auf die SQL Datenbank des CRM erforderlich.

Hierzu gibt es kostenpflichtige Module, die einige Nachteile mit sich bringen:

  • Sie werden i.d.R. mit jedem großen Starface Update zerschossen und erfordern manuelle Nacharbeiten bei jedem größeren Starface Update
  • Der Preis: hohe, monatliche Beträge, die mit der Anzahl der Kontakte skalieren sind genauso vertreten wie Module mit dreistelligem Einmalbetrag zzgl. jährlicher Wartungsgebühren.
  • Sie funktionieren nicht mit einer kostenfreien Starface Free Lizenz

Das folgende Python Skript übernimmt die Synchronisation. Es läuft direkt auf dem Linux der Starface und benötigt Netzwerkzugriff auf die SQL Datenbank. Das funktioniert i.d.R. sehr lange Updatestabil.

Hinweise:

  • Die Synchronisation funktioniert ebenfalls mit Carddav-Quellen wie Nextcloud/Owncload oder einem Synology NAS.
  • Der Carddav Adressbuch-Link muss der vollständige Link zum Adressbuch sein, nicht nur der zur Haupt-URL der Nextcloud Instanz wie im Quellcode ggf. suggeriert wird. Ggf. schauen Sie in ihrem Android Handy mit DAVx5 nach, dort steht der genaue Link.
  • Jetzt haben Sie schon so weit gelesen, aber: Ggf. müssen Sie ihre Kontakte gar nicht in die Starface importieren. Sie könnten z.B. ein LDAP Directory betreiben, in welchem sie ihre Kontakte ablegen
  • Sie können das Programm auch unter Windows laufen lassen, benötigen dann jedoch eine Python Laufzeitumgebung.
  • Ich biete das Skript für "Techies" hier als Ideengeber kostenfrei und ohne Gewährleistung oder Haftung zum Download. Sofern Sie an Support interessiert sind, können Sie ein Support Paket erwerben. Dieses beinhaltet Beratung, Einrichtung und übernahme einer Gewährleistung. Der Kostenpunkt liegt bei 400 € netto - ohne Folgekosten.

 

Um das Skript auf einer Starface Telefonanlage zu installieren wird zuerst eine SSH Verbindung auf die Starface hergestellt und dann die folgenden Pakete installiert:

dnf install python3-pip
pip3 install --upgrade pip
pip3 install vobject requests lxml
touch starface_addr.py
chmod +x starface_addr.py

# Nun das starface_addr.py Skript einfügen
#STRG+INS zum einfügen der Zwischenablage, STRG + C im Anschluss zum beenden. Letzte Zeile muss eine leere Zeile sein
cat > starface_addr.py


 # Nur für SQL: Neuere Versionen machen Probleme, daher die alte Version installieren
pip install pymssql==2.1.4


# Nur für VCard
pip install vobject 


 

Der Aufruf des Skriptes erfolgt mit Angabe von Input- und Output-Methode. Soll von SQL nach Starface übertragen werden, entsprechend:

 ./starface_addr.py -i sql -o starface

Um Daten von Carddav zu holen und testweise auf der Kommandozeile auszugeben wäre der Aufruf:

 ./starface_addr.py -i carddav -o print

Regelmäßiges Ausführen mit Cron via 'crontab -e'. Folgende Zeile einfügen für die tägliche Synchronisation um 07:00 Uhr morgens von Carddav nach Starface einfügen. An eigene Bedürfnisse dann individuell anpassen:

0 7 * * * PATH="$PATH:/usr/sbin:/usr/local/bin/" /root/starface_addr.py -i carddav -o starface > /dev/null

starface_add.cfg : Beispielconfig, liegt im gleichen Ordner wie das Skript

# Konfigurationsdatei fuer starface_addr.py
# Diese Datei muss neben dem Skript liegen.
# WICHTIG: Enthaelt Passwoerter -> chmod 600 starface_addr.cfg

[sql]
sqlServer = 192.168.178.250:49761
sqlDB = repdoc
sqlUser = sa
sqlPass = XXX
sqlTableName = Kunden

[carddav]
cdavUrl = https://nextcloud.krause-computer.de/remote.php/dav/addressbooks/users/Christian/contacts
cdavUser = nextclouduser
cdavPass = geheim123
cdavAuth = basic
cdavVerify = True

[starface]
sfProto = https
sfServer = 192.168.178.15
sfUser = 0001
sfPass = admpassword

[phone]
country = +49
city = 2133

Download Skript: starface_addr.py

 

Das Skript kann auch auf anderen Linux-Umgebungen (z.B. einem Proxmox Hypervisor) installiert werden. Es sind inkompatibilitäten mit Python 3.13 (Proxmox 9) bekannt: Die Rest Schnittstelle funktioniert nur noch, sofern die Starface über ein nicht selbst-signiertes Zertifikat verfügt. Wer eine schnelle Lösung hat, gerne per E-Mail zu mir.