Telefonbücher für Gigaset und Snom - Workaround

danke @fxbastler - ich werds am Abend gleich testen!
 
Hi zusammen,

in unserem M70 werden die Nummern mit Klammern darin nicht angezeigt - genauso, wie die Nummern mit Leerzeichen darin, aber das wurde ja bereits wunderbar durch fxbasler behoben.
An dieser Stelle noch einmal ein dickes, dickes Dankeschön von unserem ganzen Team an alle, die hier mitgewirkt haben, einen Lösung zu entwickeln.

Ich wollte nun dem Code lediglich noch hinzufügen, auch Klammern durch Nichts zu replacen, jedoch habe ich wohl irgendetwas falsch gemacht. Muss dazu sagen, dass ich absolut nicht Bash-firm bin; hatte bisher noch nie mit Bash gearbeitet - nur viel PowerShell.
Habe also kurz gegoogelt, wie ihr das mit dem Replacen gemacht habt -> gefunden, dass es anscheindend "Bash Parameter Substitution" genannt wird? Und Ihr hierdrin die Syntax für "Global Replacement" genommen habt (Quelle: https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html - Global replacement (${var//Pattern/Replacement}) )?
Habe auch gelesen, dass man beim Paameter Substitution immer nur eine Zeichenfolge durch eine andere ersetzen kann und nicht mehrere Zeichenfolgen auf einmal. Ergo muss man jedes Mal, wenn man im String etwas replacen will eine eigene Parameter Substitution durchführen?

Habe das dann wie folgt umgesetzt (Zeile 143 aus hcjurkats Code):
if [ ${cols[$colno]} != "±" ]; then
# Replace spaces with nothing
number=${cols[$colno]// /}
# Replace open bracket/parentesis with nothing
number=${number//(/}
# Replace closed bracket/parentesis with nothing
number=${number//)/}

echo ' <number>'${number}'</number>' >> $tmp_snombook
echo ' <number_type>'${NUMBER_TYPES[$colno]}'</number_type>' >> $tmp_snombook
break
nums=$((nums+1));

Bekomme bei der Ausführung des Scripts jedoch folgende Errors zurück:
1618394137147.png

Kann mir jemand auf die Sprünge helfen?

Beste Grüße aus Troisdrof,

Micha
 
@Michael Schönburg musst du evtl die Klammer unter Hochkomma setzen?
also

Bash:
number=${number//"("/}
 
Vielen Dank für den Hinweis @bitworx, das war tatsächlich die Lösung. Nun werden auch Rufnummern mit Leerzeichen und/oder Klammern darin verarbeitet.
Hier noch einmal das komplette Script mit allen Änderungen aus diesem Forum.
Noch einmal vielen Dank an alle, die mitgewirkt haben, diese Lösung zu erarbeiten und ermöglichen! Vielleicht kann 3CX demnächst so etwas ja auch mal OOTB *zwinker*.
 

Anhänge

  • make_custom_phonebook_snom_0.4.sh.zip
    4,8 KB · Aufrufe: 82
Hallo :) Danke für das Skript. Könnte jemand nochmal bitte eine Anleitung geben, wie das Skript nun einzusetzen ist? Das ist irgendwie nicht so ganz klar.
Der Aufbau wäre hier wie folgt:
3CX V16 self hosted auf Raspberry Pi 4
Gigaset N670 IP Pro mit mehreren Gigaset S650H Pro
Aktueller Zustand: Telefonbuch von 3CX wird auf den Gigaset Telefonen nur mit Namen angezeigt, jedoch keinerlei Nummern.

Erzeugt das Skript nun eine neue Telefonbuchdatei, die man in der Gigaset-Admin-Oberfläche importieren muss?
 
#Installationsanleitung @exuded

1. Mit Putty o.Ä. zur Anlage verbinden und einloggen mit den Admin-Credentials vom Einrichten der Anlage
User: root / Passwort: müsste man wissen ;-)

2. am einfachsten im root-Verzeichnis (~) folgenden Befehl ausführen
Bash:
sudo nano mcpb.sh

3. dort Code aus dem File einfügen (Putty einfügen = rechtsklick) - ACHTUNG: beim Kopieren die korrekten Zeilenumbrüche beachten - am besten du öffnest dir das sh-File am Windows mit Notepad++

4. mit STRG+X schließen und mit Y das Abspeichern quittieren

5. im selben Folder folgenden Befehl:
Bash:
sudo chmod u+x mcpb.sh
damit wird die sh-File für Linux zur "exe" sprich ausführbar

6. mit
Bash:
sudo ./mcpb.sh
testen, obs läuft

7. wenn ja:
Bash:
crontab -e
falls nach dem Editor gefragt wird, nimm nano (Vorauswahl)

8. in die letzte Zeile mit der korrekten Zeitangabe folgendes eingeben
Bash:
0 * * * * /root/mcpb.sh
bedeutet z.B., dass das script jede Stunde 1x ausgeführt wird
STRG-X -> Y zum Verlassen

9. Im folgenden werden, wie im Script beschrieben, die Provision-Files so angepasst, dass sie auf das neue File schauen
Bash:
sudo nano /var/lib/3cxpbx/Instance1/Data/Http/Templates/fxs/gigasetN670.fxs.xml
dort mit STRG+W suchen nach der Zeile
XML:
<param name="CentralBook.0.ServerURL" value="%%PROVLINK%%/gigaset_phonebook.xml"/>
dort das "gigaset_phonebook.xml" durch "jgid_gigaset_phonebook.xml" ersetzen (siehe auch Anleitung im Script)
STRG-X -> Y zum Speichern

10. Gigaset neu provisionieren oder auf der Admin eintragen (weiß leider von Gigaset nix, hab nur Snom)
 
In welcher Datei wird die Formatierung festgelegt?
Bei mir funktioniert das Telefonbuch in der N670, nur sind Nachname und Vorname vertauscht.

Kann man das nicht einfach umschreiben?
 
@alexanderheinen doch.
entweder im Script oder in der File:
Code:
/var/lib/3cxpbx/Instance1/Data/Http/Templates/fxs/gigasetN670.fxs.xml
wobei ich das genau kontrollieren würde, da ich nicht glaub, dass der Threadstarter das nicht berücksichtigt hat im Script für die Gigaset.
 
@bitworx
wo im dem File steht denn wie Name, Vorname, surname oder lastname sortiert werden?

Das einzige was ich dort gefunden habe vom Phonebook ist das:
<!-- Central Phonebook -->
<param name="Netdir.21.Activated" value="1"/>
<param name="CentralBook.0.Name" value="3CX Phonebook"/>
<param name="CentralBook.0.ServerURL" value="%%PROVLINK%%/gigaset_phonebook.xml"/>
<param name="CentralBook.0.DownloadTime" value="23:00"/>
<param name="CentralBook.0.StartWithList" value="1"/>
<!-- Assign to all handsets the 3CX phonebook to the phonebook key -->
<param name="[email protected]" value="30"/>

Dort steht wo der Pfad vom Telefonbuch liegt, aber ich suche den Ort wo die Datei zusammengestellt wird.
 
@alexanderheinen wie ich geschrieben hab:
wenns da nicht drinsteht, dann im script. bin am handy und kanns dir jetzt nicht genau sagen wo, such mal nach lastname oder last_name
 
wenns da nicht drinsteht, dann im script. bin am handy und kanns dir jetzt nicht genau sagen wo, such mal nach lastname oder last_name
Welches Script?
Das Script das es hier in diesem Beitrag gibt, oder gibt es auch auf den 3cx ein vorhandenes Script was man ändern kann?
 
Ich besitze ein Gigaset, die Kontakte sind da nur halt Vorname und Nachname vertauscht.
In der 3cx sind die Kontakte richtig eingetragen, und hier /var/lib/3cxpbx/Instance1/Data/Http/Interface/provisioning/nrngdgx38gwd/
gibt es das gigaset_phonebook.xml, dort sind die Namen vertauscht, genau wie phonebook.xm.
In der yealink_phonebook.xml sind die Namen nicht deklariert in Nachname und Vorname, sondern die sind nur mit Leerzeichen geschrieben, aber Nachname zuerst.

Mir ist nun auch aufgefallen das die Kontakte in der Android app sehr seltsam sortiert sind.
Ich kann noch keine genaues Schema erkennen, die Namen sind nach Nachnamen sortiert, nur nicht durchgehend.
Es kommt A,B,C usw. aber nicht alle A zusammen sondern nur ein paar, dann geht es mit B weiter, nach dem Z kommt wieder A.

Ich suche jetzt nur die Stelle wo man das korrigieren kann.
 
Hi,
der Grund warum ich die 3CX-Kontakte verstoßen habe, war genau dieses. Prinzipiell kann man zwar in den Einstellungen der 3CX festlegen, wonach er sortieren soll - das funktioniert aber (wie du selber sagst) nur bescheiden. Eine andere Lösung, außer einem eigenem Programm kenne ich leider nicht
 
Servus,
hat zufällig schon jemand das Skript für Windows portiert (PowerShell)?
Aktuell sind die PowerShell Kenntnisse meinerseits noch zu gering.
 
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.
Ist das auch für Fanvil Telefon möglich?
Wenn ja wie funktioniert das?
 
Hi,
sagt mal funktioniert dieses Skript auch bei den M900?
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
21.298
Beiträge
107.101
Mitglieder
70.460
Neuestes Mitglied
wilson medina
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.