Placetel / LDAP / MySQL-Datenbank
Adressbuch Synchronisation mit Cisco IP Telefonen (8841 / 8861)
Seit einiger Zeit setze ich die Cloud-Telefonanlage Placetel PROFI bei mir selbst und den ersten Kunden ein. Da Placetel zu Cisco gehört, gibt es attraktive Komplettangebote mit den Cisco IP-Telefonen. Ich selbst wäre nicht auf die Idee gekommen im KMU-Bereich auf Cisco Endgeräte zu setzen (zu kompliziert, zu teuer, zu wenig verbreitet), sondern wäre bei den mir bekannten Marken Snom, Gigaset und Yealink geblieben. Aber gut, das Cisco 8841 ist ein feines Telefon und für diesen Preis mehr als ordentlich ausgestattet.
Bei der nahtlosen Zusammenarbeit zwischen Placetel und den Endgeräten aus dem eigenen Haus hätte ich mir aber doch mehr erwartet. Die Autoprovisionierung funktioniert gut (mit Ausnahme der ATA-Adapter für Faxgeräte, die überhaupt nicht provisioniert werden). Die Bedienung der Cisco-Telefone ist aber so eine Sache, die Cisco-eigene Weboberfläche ist eine Katastrophe mit dem Feeling der frühen 2000er Jahre und einige Funktionen wünsche ich mir eben doch direkt am Tischtelefon einstellen zu können (anstatt in der Weboberfläche). Im großen und ganzen aber halb so schlimm. Wäre da nicht diese Sache mit dem Telefonbuch. Placetel betreibt einen eigenen LDAP Vezeichnisdienst, Einträge können bequem über die Weboberfläche bearbeitet werden. Nur können gerade die Cisco-Endgeräte darauf nicht zugreifen. Snom und Yealink-Geräte schon, und zwar ohne jegliche Konfiguration. (https://www.placetel.de/hilfe/telefonanlage/ldap-telefonbuch)
In der Praxis heißt das: In einem Unternehmen kann kein unternehmensweites Telefonbuch geführt werden, jedes Cisco-Endgerät kann nur auf sein eigenes, internes Telefonbuch zugreifen.
Um dieses Ärgernis aus der Welt zu schaffen, habe ich ein kleines PHP-Skript geschrieben. Dieses kann am Ende des Artikels kostenlos heruntergeladen werden.
Die Funktionsweise ist wie folgt:
- Der Placetel LDAP Dienst oder eine beliebige andere Datenquelle (z.B. die SQL-Datenbank vom CRM) wird angefragt. Die Cisco-Telefone können nur die vier Felder Name, Telefon, Telefon geschäftlich und Mobiltelefon verarbeiten. Daher werden die Daten entsprechend zusammengefügt.
- Alle Cisco-Telefone im lokalen Netzwerk werden der Reihe nach angefragt.
- Aus jedem Telefon wird das aktuelle Telefonbuch ausgelesen und mit dem Stand aus (1) verglichen. Neue Einträge werden hinzugefügt, bestehende bei Notwendigkeit aktualisiert und auf dem Server gelöschte Eintrage auch im Telefon gelöscht.
Einschränkungen
- Die Cisco-Telefone unterstützen maximal 1.500 Einträge.
- Lokal auf dem Telefon vorgenommene Änderungen werden überschrieben bzw. gelöscht (Oneway-Sync)
- Das Feld „Name“ am Telefon setzt sich aus den Feldern „Vorname“, „Nachname“, „Firma“ (jeweils abgekürzt) der Datenquelle zusammen. Gefolgt von einer # und einer ID. Die internen IDs auf den Cisco-Telefonen folgen leider einer anderen Logik, deswegen muss die ID im Namen stehen.
- Das Cisco-Telefon darf nicht mit einem Benutzerpasswort geschützt sein.
- Das Skript muss auf einem lokalen Webserver ausgeführt werden. Zum Beispiel auf einer Synology DiskStation, einem QNAP NAS, Raspberry PI, xampp,… Ich lasse es per cronjob alle 60 Minuten ausführen. Das ist ein guter Kompromiss aus aktuellen Daten und Netzwerklast.
Nutzung:
Das Skript ist ein Schnell-schnell-Werk, kommt ohne Garantie und wird auf eigenes Risiko ausgeführt! Es wird unter der CC-BY Lizenz veröffentlicht.
Verbesserungen:
Sehr gerne in die Kommentare! Ich freue mich über zusätzliche Funktionen oder andere Verbesserungen.