Telefonbücher für Gigaset und Snom - Workaround

jörg.giencke

Free User
Basic Certified
Mitglied seit
28. August 2020
Beiträge
59
Ich habe mich einmal des leidigen Problems der unvollständigen Telefonbücher auf Endgeräten angenommen. Im Speziellen für Geräte von Snom und Gigaset. Dazu habe ich zwei Bash Skripte erstellt (vielen Dank an mOrbo für die Steilvorlage / Vorarbeit), die alle Nummern aus dem 3CX Telefonbuch in die jeweiligen Gerätetelefonbücher übernehmen.

Beiden Skripten ist gemeinsam:
  • Alle Nummern werden übernommen (2 x geschäftlich, 2 x mobil und 2 x privat - auch bei Snom).
  • Es kann via Einstellung bestimmt werden, ob Nebenstellen und / oder Signalisierungsgruppen mit ins Telefonbuch übernommen werden.
  • Auch Kontakte, die nur einen Firmennamen enthalten, werden übernommen (Nachname wird auf Firmennamen gesetzt).
  • Reservierte Zeichen werden korrekt gehandhabt (meint, in den Namensfeldern muss man sich an - fast - keinerlei Konventionen halten).
  • Sie laufen nur unter Debian (die Skripte in Powershell umzuschreiben sollte aber kein Problem sein - Fleißarbeit halt).
Zusätzlich für Snom Endgeräte:
  • Es kann bestimmt werden, welcher Typ Nummer (geschäftlich, mobil oder privat) als Standardnummer gesetzt wird.
  • Die Attribute VIP (Alarmierung trotz DND) und Favorit können gesetzt werden.
  • Das Feld E-Mail wird übernommen (sagen wir mal so: schaden kann es nicht).
Das Skript für Gigaset wurde mit einer Gigaset N670 IP PRO mit Firmware V2.33.1 getestet. Die N870 nutzt das gleiche Adressbuchformat, somit sollte es dort auch funktionieren.

Das Skript für Snom wurde mit einem D375 mit Firmware 10.1.54.16 getestet. Da Snom für aktuelle Geräte mit halbwegs aktueller Firmware das gleiche Adressbuchformat nutzt, dürften auch andere Telefone keine Probleme machen.

Zur Automatisierung des Vorgangs sollte ein Cronjob eingerichtet werden, der mehrmals am Tag läuft. Dadurch ist man "auf der sicheren Seite" und braucht den Zeitpunkt der täglichen Neuprovisionierung nicht in Betracht zu ziehen. Außerdem werden dann auch bei manueller Neuprovisionierung immer halbwegs aktuelle Daten übernommern.

Weitere Informationen finden sich in den Kommentaren in den Skripten.
 

Anhänge

  • make_custom_gigaset_nx70_phonebook_0.4.zip
    2,5 KB · Aufrufe: 141
  • make_custom_snom_phonebook_0.1.zip
    3,1 KB · Aufrufe: 154
UPDATE

make_custom_snom_phonebook v 0.2


Neben der globalen Möglichkeit zu bestimmen, welcher Typ Telefonnummer (business, mobile oder home) - falls vorhanden - bevorzugt als Masternummer gesetzt wird, kann jetzt auch pro Kontakt individuell bestimmt werden, welcher Typ Telefonnummer als Masternummer gesetzt werden soll.

Dies geschieht durch Hinzufügen eines der Schlüsselwörter business, mobile oder home im Feld Sonstiges in einem Kontakt.
 

Anhänge

  • make_custom_snom_phonebook_0.2.zip
    3,3 KB · Aufrufe: 99
Zuletzt bearbeitet:
UPDATE

make_custom_gigaset_phonebook v 0.5


Wartungsupdate, eine der temporär angelegten Dateien wurde nicht wieder gelöscht.
 

Anhänge

  • make_custom_gigaset_nx70_phonebook_0.5.zip
    2,5 KB · Aufrufe: 148
Zuletzt bearbeitet:
Vielen Dank für das Skript. Es funktioniert super. Endlich muss man nicht für jeden Kontakt mehrere Einträge pflegen.

Damit ich immer aktuell bin, habe ich einen cron Job um 22:55 Uhr eingerichtet, der das Skript ausführt. Die Gigaset lädt sich dann lt. 3CX Template um 23:00 Uhr das Telefonbuch neu herunter.

Im Skript habe ich den Namen des Telefonbuchs auf "gigaset_phonebook.xml" gesetzt (3CX Standard).
Das Skript liegt im root Verzeichnis, mit folgenden Befehlen wird es aktiviert:

chmod u+x make_custom_gigaset_nx70_phonebook.sh
crontab -e
55 22 * * * /root/make_custom_gigaset_nx70_phonebook.sh
 
A) Freut mich.
B) Der Name gigaset_phonebook.xml ist ein ganz klein wenig problematisch. In dem eher unwahrscheinlichen Fall, dass jemand um 22:57 Uhr Änderungen an den Kontakten via 3CX WebUI vornimmt, sind Ihre Kontakte zumindest für die nächsten 24 Stunden wieder 'wie früher', da 3CX das Telefonbuch bei jeder Änderung sofort überschreibt.

Ich verwende einen eigenen Namen und habe das Template meiner N670 dahingehend geändert. Aber das hat natürlich auch so seine Tücken (Support).
 
Danke... ich nutze schon länger die Version von mOrbo werde bei gelegenheit auf diese hier umstellen...

Problem B nutze ich: incrontab muss per apt-get nachinstalliert werden... und bedarf noch etwas config... (wer nicht weis was er da macht sollte es evtl auch lassen..)

der Eintrag:
Code:
/var/lib/3cxpbx/Instance1/Data/Http/Interface/provisioning/xxxxxxxx/yealink_phonebook.xml IN_CLOSE_WRITE /root/make_custom_gigaset_nx70_phonebook.sh

überwacht auf Änderungen am Yealink telefonbuch (das ich nicht brauche... ) hab noch ein

sleep 5

in dem bashscript... damit er 5 Sekunden wartet dann sollten auch alle anderen Telefonbücher geschrieben sein... und so sind die Telefonbücher immer schön aktuell...
 
sicher dass der incrontab beim root user eingetragen ist ?
 
sicher dass der incrontab beim root user eingetragen ist ?
Ja.
Es ist schräg: Die drei temporären Dateien der drei Datenbankabfragen werden erzeugt und beinhalten auch richtige Ergebnisse. Aber der Teil danach, das Schreiben und Kopieren des Gesamtergebnisses, geschieht nicht.
 
Das ist alles, was produziert wird:
XML:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE LocalDirectory>
<list>
</list>
 
Hallo Jörg,
ich habe die Lösung mit dem Script noch nicht getestet, möchte mich aber schon mal für deine Arbeit bedanken. Der Test folgt :)
Hammer Leistung
 
Hallo,
kann man das (gigaset) Script auch für Gigaset N510 IP Pro DECT Base Stations benutzen?
Bei den N510 kann auch ein XML Telefonbuch einbinden.
Oder gibt es bei diesen eine andere Lösung?
LG, Lucky2019
 
  • Like
Reaktionen: Marco Bohl
Ich habe auch etwas mit dem 3CX Phonebook experimentiert und mich dann lieber für die (auf den Gigaset Nx70 ja ebenso vorgesehene) Integration eines LDAP-Telefonbuchs entschieden.
Die Konfiguration geht recht einfach und die Tastenbelegung kann auch per Autoprovisionierung auf alle Handsets verteilt werden. Das LDAP Telefonbuch funktioniert bei mir deutlich schneller als das von 3CX, obwohl der LDAP-Server remote ist und mein 3CX lokal.
Zur Einrichtung muss die Datei
/var/lib/3cxpbx/Instance1/Data/Http/Templates/fxs/gigasetN870.fxs.xml
entsprechend angepasst werden (vorher bitte ein Backup machen). Die folgenden Einstellungen deaktiveren das 3CX Phonebook und stellen auf allen Handsets die Tasten für Telefonbuch und -Suche auf das Telefonbuch "LDAP 1" ein:

<param name="Netdir.21.Activated" value="0"/>
<param name="[email protected]" value="10"/>
<param name="[email protected]" value="10"/>
 
  • Like
Reaktionen: NaturaGart
Hallo in die Runde,
Klasse, dass sich die Community der Sache annimmt. Verstehe nicht, warum 3CX selber das nicht auf die Kette bringt.
Hat das jmd. auf einer M700 zum Fliegen bekommen? Ich habe das Problem, dass die XML sauber geschrieben wird, augenscheinlich vom Format mit den SNOM Vorgaben auch übereinstimmt. Bei Einträgen mit mehreren Rufnummern werden die Master Einträge und die dazugehörigen Einträge auch sauber in der XML erzeugt und sind über die Master Nummer "verkettet". Aber auf den Handteilen (M65) gibt es nur jeweils Einträge mit Master Nummern und dann viele Einträge die nur als "Member_Alias "+Rufnummer aufgelistet werden. Offensichtlich kriegt das Telefon das nicht aufgelöst. Muss da noch irgendwo ein Parameter gesetzt werden, dass die Einträge mit mehreren Rufnummern sauber funktionieren?
 
hab noch mal recherchiert. Die M300/M700 hat wohl ein etwas anderes Format für die XML Ausgabe. Hier ein Beispiel aus dem Deployment Guide:

<?xml version="1.0" encoding="utf-8"?> <settings>
<tbook>
<item>
<first_name>Max</first_name> <last_name>Mustermann</last_name> <number idx=”1”>9000</number> <number_type idx=”1”>work</number_type> <number idx="2">1122334455</number> <number_type idx="2">mobile</number_type> <number idx="3">6789546</number> <number_type idx="3">home</number_type> </item>
<item>
<name>Peter</name> <last_name>Jansen</last_name> <number>9001</number> <number_type>mobile</number_type> </item>
</tbook>
</settings>

lt. Beschreibung kann man in einem Item bis zu 3 Nummern hinterlegen, die mit idx=x Tags separiert werden. Insofern müsste man das Skript entsprechend überarbeiten. Ich werde mich da mal ranmachen...
 
Habs grad mal mit dem Test Schnipsel probiert. Damit klappt es und auf dem Handteil kann man mehrere Nummern über das Navigationsrad auswählen. Dann mach ich mich mal an das Skript... :)
@joerg.giencke: Hoffe, es ist ok für dich, wenn ich dein Skipt als Vorlage nehme...
 
Hallo in die Runde,
habe das Skript make_snom_phonebook_0.2.sh angepasst und um das Telefonbuch Format für die M300 / M700 ergänzt. Hatte erst noch das Problem, dass ich auf dem M65 nur 2 Nummern bekam, bis mir noch aufgefallen war, dass der Nummerntyp "business" dort "work" heißen muss. Danach hatte ich dann 3 Nummern.

Zur Konfig:
Wenn im Skript die Variable ISM300M700=1 gesetzt wird, wird das Telefonbuch für M300 / M700 generiert. bei jedem anderen, werden die proceduren aus dem bisherigen Skript für die Tischtelefone erzeugt.

um festzulegern, in welcher Priorisierung die 3 verfügbaren Nummernplätze vergeben werden pro Eintrag habe ich das Array number_priority ergänzt. Die Erklärung ist im Skript vermerkt mit Beispiel.

alles andere ist unverändert.

Have Fun und ein frohes neues Jahr.

@3cx: nach so viel Vorarbeit sollte es euch doch nun ein Leichtes sein, diesen Mangel in eurer Software endlich zu beseitigen. Ist wirklich kein Hexenwerk.
 

Anhänge

  • make_custom_phonebook_snomM300.zip
    4,7 KB · Aufrufe: 94
Hallo, ich wollte das Skript testen, allerdings bricht die Ausführung bereits zu Beginn ab mit diesen Fehlern:

Code:
./make_custom_snom_phonebook_0.2.sh: line 67: /var/lib/3cxpbx/Instance1/Data/Http/Interface/provisioning/**********: Is a directory
./make_custom_snom_phonebook_0.2.sh: line 96: syntax error near unexpected token `newline'
./make_custom_snom_phonebook_0.2.sh: line 96: `                 echo ' <number>'${cols[$colno]}'</number>' >> '

Was mache ich falsch?
 
Ok, Fehler gefunden, lag an fehlerhaften Zeilenumbrüchen, die beim kopieren entstanden sind.
Danke an @fxbastler für die schnelle Hilfe!
 
  • Like
Reaktionen: autohaus
Hi!

Danke für eure Arbeit!

Ich hätte noch ein kleines Anliegen, da ich mit Shellscripts nicht viel angefangen hab:
Bei z.B. einem snom M65 wird eine Nummer am DECT nicht angezeigt, wenn ein Leerzeichen in der Nummer ist (welches z.B. Outlook immer reinmacht).

funktioniert nicht:
XML:
<item context="active" type="" fav="false" mod="false" index="3">
<number>+43 50123456</number>
<number_type>business</number_type>
<first_name>Vorname</first_name>
<last_name>Nachname</last_name>
<organization>Firmenname</organization>
<email>[email protected]</email>
</item>

funktioniert:
XML:
<item context="active" type="" fav="false" mod="false" index="3">
<number>+4350123456</number>
<number_type>business</number_type>
<first_name>Vorname</first_name>
<last_name>Nachname</last_name>
<organization>Firmenname</organization>
<email>[email protected]</email>
</item>

Welche Codezeile betrifft das und wie bekomm ich die Leerzeichen raus?
Ich kann dafür gern mal aushelfen, wenn jmd was in der Powershell braucht ;-)

Greets
Dennis
 
Ich habe 5 Stellen gefunden:
Bash:
Zeile 144:
echo '      <number>'${cols[$colno]}'</number>' >> $tmp_snomboo   
ändern in
echo '      <number>'${cols[$colno]// /}'</number>' >> $tmp_snomboo

Zeile 264:
echo '          <number idx="'$num_id'">'${cols[$current_master_col]}'</number>' >> $tmp_snombook
ändern in
echo '          <number idx="'$num_id'">'${cols[$current_master_col]// /}'</number>' >> $tmp_snombook

Zeile 289:
echo '          <number idx="'$num_id'">'${cols[$colno]}'</number>' >> $tmp_snombook
ändern in
echo '          <number idx="'$num_id'">'${cols[$colno]// /}'</number>' >> $tmp_snombook

Zeile 380:
echo '      <number>'$current_master_number'</number>' >> $tmp_snombook
ändern in
echo '      <number>'${current_master_number// /}'</number>' >> $tmp_snombook

Zeile 411:
echo '      <number>'${cols[$colno]}'</number>' >> $tmp_snombook
ändern in
echo '      <number>'${cols[$colno]// /}'</number>' >> $tmp_snombook
 
  • Like
Reaktionen: bitworx

Statistik des Forums

Themen
20.812
Beiträge
104.495
Mitglieder
69.714
Neuestes Mitglied
metori
Holen Sie sich 3CX - völlig kostenlos!

Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX register cta
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.