Fritzbox Adressbuch für SPA525g2

hermann.a

Neuer User
Mitglied seit
18 Aug 2011
Beiträge
87
Punkte für Reaktionen
3
Punkte
8
Hallo,

nachdem ich nun mein Cisco SPA525g2 an der Fritzbox am laufen habe, incl. letzter Firmware und deutschem Sprachpaket, es nun um ein Bluetooth Headset von Jabra ergänzt habe, würde ich gern das Fritzbox Adressbuch irgendwie importieren. Es muss auch keine laufende Aktualisierung sein, das kann ich bei Bedarf manuell machen. Meine Idee wäre nun, ich lade das Adressbuch auf meinen Rechner, finde irgendeine Anwendung, die das Format in ein Cisco-taugliches Format konvertiert, speichere das irgendwo ab (Webserver) und geb die Adresse bei "XML Directory Service URL:" ein. Das Programm "Contact_Conversion_Wizard_v3.5.0.0" kann leider nicht in Cisco-Format exportieren, und die hier im Forum befindlichen Scripte krieg ich irgendwie nicht zum Laufen. (Server-Fehler, usw.).
Wie kann ich das am einfachsten konvertieren?

Vielen Dank schon mal im Voraus.

Mfg
Hermann
 
Moinsen


Im Prinzip würde es Klientseitig komplett im normalen Webbrowser* gehen.
Dafür braucht es nur ein XSLT welches das FRITZ!Box Telefonbuch XML nach Cisco XML transformiert.


* Auch die grottige Formatierung des exportierten Telefonbuchs ist im Webbrowser plötzlich lesbar ;)
 
Hallo,

ähm, ok. Hab die verlinkte Seite gelesen. Nur, wie mach ich das dann?

Mfg
Hermann
 
Mit einen bequemen Texteditor.

Wie muss denn so ein Cisco XML Telefonbuch aussehen?
 
Hallo,

hier die Formate, exemplarisch:

Cisco:

HTML:
<?xml version="1.0"?>
-<CiscoIPPhoneDirectory>
<Title>Cisco Coporate Directory</Title>
<Prompt>Select the User</Prompt>
-<DirectoryEntry>
<Name>Ich bins</Name>
<Telephone>0123456789</Telephone>
</DirectoryEntry>
-<DirectoryEntry>
<Name>Wieder ich</Name>
<Telephone>0123456789</Telephone>
</DirectoryEntry>
</CiscoIPPhoneDirectory>

Fritzbox:
<?xml version="1.0" encoding="UTF-8"?>
-<phonebooks>
-<phonebook name="Telefonbuch">
-<contact>
<category>0</category>
-<person>
<realName>Ich bins</realName>
</person>
-<telephony nid="1">
<number id="0" prio="1" type="home">0123456789</number>
</telephony>
<services/>
<setup/>
<mod_time>1458589155</mod_time>
<uniqueid>11</uniqueid>
</contact>
-<contact>
<category>0</category>
-<person>
<realName>Wieder ich</realName>
</person>
-<telephony nid="1">
<number id="0" prio="1" type="home">0123456789</number>
</telephony>
<services/>
<setup/>
<mod_time>1453031842</mod_time>
<uniqueid>42</uniqueid>
</contact>

Mfg
Hermann

[HTML] TAG [/HTML] gesetzt by stoney
 
Zuletzt bearbeitet von einem Moderator:
XML sehen am Lesbarsten in...
[html]<div>Tagchen, Planet</div>[/html]
...Tags aus.

Das "Grundgerüst", was die XSLT braucht die eine Cisco Telefonbuch XML bauen soll, ist demnach...
HTML:
<CiscoIPPhoneDirectory>
<Title></Title>
<Prompt></Prompt>
<DirectoryEntry>
<Name></Name>
<Telephone></Telephone>
</DirectoryEntry>
</CiscoIPPhoneDirectory>

:p Oups, schon so spät, ich mach morgen weiter ;)
...
Sontag mach ich Blau
...
So...
Die XSLT hab ich mal CiscoIPPhoneDirectory.xsl genannt...
HTML:
<?xml version="1.0" encoding="UTF-8"?>                                 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>  
<xsl:template match="/">                                                
<CiscoIPPhoneDirectory>                                    
<Title><xsl:value-of select="/phonebooks/phonebook/@name"/></Title>
<Prompt>Select the User</Prompt>                                          
<xsl:for-each select="/phonebooks/phonebook/contact">    
<DirectoryEntry>                                         
<Name><xsl:value-of select="person/realName" /></Name>   
<Telephone><xsl:value-of select="telephony/number" /></Telephone>
</DirectoryEntry>                                        
</xsl:for-each> 
</CiscoIPPhoneDirectory>
</xsl:template> 
</xsl:stylesheet>
Das Original XML des exportierten FRITZ!Box Telefonbuchs benötigt dann noch die Angabe des "Stylesheets"...
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="CiscoIPPhoneDirectory.xsl" ?>
<phonebooks>
<!-- id:1 , name: Testbuch -->
<phonebook owner="1" name="Testbuch">
Wird diese XML im Browser aufgerufen ( Bei mir liegt es auf einen lokalen Apache Webserver im Doc-Root-Verzeichnis ), führt das zu...
Bildschirmfoto vom 2020-03-09 17-30-29.png
( Ansicht: Rechte Maustaste und: Untersuchen (Entwickler Tool) )
...im Webbrowser.

Anmerkung
Die Transformation ist gelungen, das siehste aber nur in dem Entwickler Tool.
Momentan weigert sich Chrome ( FireFox auch ), die XML nicht als HTML anzuzeigen.
...muss mal sehen weshalb das verhindert wird :cool:
Webbrowser hab ich bis jetzt nicht dazu bekommen die Transformation nach XML anzeigen zu lassen.
...aber egal, unter Linux gibts auch dafür ein Tool: xsltproc
Also mal kurz ein beherztes...
Code:
xsltproc CiscoIPPhoneDirectory.xsl fritzboxtelefonbuch.xml > cisco_directory.xml
( Hierfür benötigt die fritzboxtelefonbuch.xml das
<?xml-stylesheet type="text/xsl" href="CiscoIPPhoneDirectory.xsl" ?>
nicht )
...und...
cisco_directory.xml
HTML:
<?xml version="1.0" encoding="UTF-8"?>
<CiscoIPPhoneDirectory>
  <Title>Testbuch</Title>
  <Prompt/>
  <DirectoryEntry>
    <Name>Alarmanlage</Name>
    <Telephone>**6211</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Alle (Rundruf)</Name>
    <Telephone>**9</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Anrufbeantworter 1</Name>
    <Telephone>**600</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Anrufbeantworter 2</Name>
    <Telephone>**601</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Anrufbeantworter 3</Name>
    <Telephone>**602</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Anrufbeantworter 4</Name>
    <Telephone>**603</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Anrufbeantworter 5</Name>
    <Telephone>**604</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>FRITZ!App Fon (Ulefone Note_7P)</Name>
    <Telephone>**620</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>ISDN-Telefonanlage</Name>
    <Telephone>**51</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>ISDN/DECT Rundruf</Name>
    <Telephone>**50</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>koyaanisqatsi</Name>
    <Telephone>**621</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Niemand Keiner</Name>
    <Telephone/>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Wecker 1</Name>
    <Telephone>**41</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Wecker 2</Name>
    <Telephone>**42</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Wecker 3</Name>
    <Telephone>**43</Telephone>
  </DirectoryEntry>
</CiscoIPPhoneDirectory>
...die XSLT transformiert das F!B-Telefonbuch sauber nach Cisco-XML :)
Browser Screenshoot...
Bildschirmfoto vom 2020-03-09 22-40-22.png
Na gut, in <prompt/> muss noch was rein, aber das kann direkt in der XSLT stehen ;)
( <prompt/> in XSLT korrigiert )
 
Zuletzt bearbeitet:
Hallo,

da steh ich nun, und schau mit großen Augen... aber kapiert hab ich das jetzt nicht wirklich?

Mfg
Hermann

-- Zusammenführung Doppelpost by stoney

Hallo,

so, nach try and error (hab das transferdingens noch nie gehört) hab dann im IE in dem Debugger-Register die konvertierte Tabelle gesichtet! Schaut super aus. Hab die dann auf meinem WebServer abgelegt, siehe da, das Cisco kann drauf zugreifen. Blöderweise zeigt das Cisco aber nur 32 Einträge an ;-(
Das wird dann da wohl eine Hardware-Einschränkung sein?

Aber trotzdem DANKE dafür!!!!

Mfg
Hermann
 
Zuletzt bearbeitet von einem Moderator:
Blöderweise zeigt das Cisco aber nur 32 Einträge an
Die erzeugte XML ist von der Baumstruktur OK?
Hab mit Telefonbuch XML über TR-64 probiert, die haben nur die Struktur...
HTML:
<phonebooks>
<phonebook>
<!-- Nur Ein <phonebook /> -->
<phonebook>
<phonebooks>
...und hatten weniger als 32 Einträge.
...dafür geht aber über TR-64 das "Online-Telefonbuch" downzuloaden ;)

Das übers F!B-Webinterface gesicherte Telefonbuch kann, bin mir nicht ganz sicher, mehrere <phonebook /> Elemente haben?

XSLT
Desweiteren könnten zum Beispiel irelevante Einträge, wie die internen Nummern, mit einem <xsl:if /> im <xsl:foreach /> rausgefiltert werden.
:rolleyes: ( Macht das Telefonbuch schlanker )
 
Hallo,

die Struktur schaut durchgängig gleich aus. Was mir noch aufgefallen ist, wenn im Telefonbuch mehrere Nummern pro Name drin sind, wird nur der erste übernommen.
Du kannst in der Fritzbox mehrere Telefonbücher anlegen, dann hättest auch mehr <phonebook>-Elemente.

Die internen hab ich eh nicht drinnen... Es sind leider wirklich ca. 180 Einträge...

Hab in einem anderen Forum gefunden, dass das Cicso SPA525g2 nur 32 im internen Speicher lesen kann. Ersatzweise sollte man auf "Ldap" gehen, was auch immer das ist (Forumsbeitrag ist von 2010...)

Mfg
Hermann
 
Für die zusätzlichen Einträge pro <contact/> hab ich eine XSLT, die mir nach HTML transformiert...
Beispiel für <number/>
HTML:
<xsl:element name="td">
<xsl:for-each select="telephony/number">

<xsl:choose>
<xsl:when test="@quickdial&lt;10">
<xsl:element name="div">
<xsl:attribute name="id">kurzwahl</xsl:attribute>Kurzwahl: **70<xsl:value-of select="@quickdial"/>
</xsl:element>
</xsl:when>

<xsl:when test="@quickdial&gt;9">                                                                                                                                                  
<xsl:element name="div">                                                                                                                                                              
<xsl:attribute name="id">kurzwahl</xsl:attribute>Kurzwahl: **7<xsl:value-of select="@quickdial"/>                                                                                  
</xsl:element>                                                                                                                                                                      
</xsl:when>
</xsl:choose>

<xsl:choose>                                                                                                                                                                             
<xsl:when test="@vanity!=''">
<xsl:element name="div">
<xsl:attribute name="id">vanity</xsl:attribute>Vanity: **8<xsl:value-of select="@vanity"/></xsl:element>
</xsl:when>                        
</xsl:choose>

<xsl:choose>
<xsl:when test="@type='home'"><xsl:element name="div"><xsl:attribute name="id">home</xsl:attribute>Privat: <xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='intern'"><xsl:element name="div"><xsl:attribute name="id">intern</xsl:attribute>Intern: <xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type=''"><xsl:element name="div"><xsl:attribute name="id">extra</xsl:attribute>Extra: <xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='memo'"><xsl:element name="div"><xsl:attribute name="id">memo</xsl:attribute>Aufnahme: <xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='work'"><xsl:element name="div"><xsl:attribute name="id">work</xsl:attribute>Arbeit: <xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='fax_work'"><xsl:element name="div"><xsl:attribute name="id">fax</xsl:attribute>Fax: <xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:when test="@type='mobile'"><xsl:element name="div"><xsl:attribute name="id">mobile</xsl:attribute>Mobile: <xsl:value-of select="."/></xsl:element></xsl:when>
<xsl:otherwise><xsl:element name="div"><xsl:attribute name="id">other</xsl:attribute>Andere: <xsl:value-of select="."/></xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:element>
Screenshot_20200312-204145.png
...wüsste jetzt nicht wie demnach die CiscoIPPhoneDirectory XML am End aussehen müsste.
 
Zuletzt bearbeitet:
So viel ich weiss, sollte die Konfiguration der Cisco SPA Phones identisch sein mit denen der 88xx MPP Reihe sein. Hast Du mal versucht die Skripte von hier zu nutzen? Als Voraussetzung benötigst Du einen Webserver (z.B. Rapsberry Pi mit Apache), wo Du die Skripte im cgi-bin Verzeichnis ablegst. Das sollte eigentlich relativ schnell zum Ziel führen... Falls Anpassungen nötig sind, kann ich Dir evtl. helfen.
 
Hallo,

ich kann ja auf das Verzeichniss zugreifen (die Umwandlung des Fritz-books auf Cisco-Format hat ja geklappt), Problem ist wohl, dass das SPA525g2 eine interne Beschränkung auf 32 Nummern hat...

Mfg
Hermann
 
Die Beschränkung auf 32 Einträge pro Seite haben die 88xx auch. Du musst dann das Telefonbuch auf mehrere Seiten aufteilen, durch die Du mit den Knöpfen durchnavigierst...
 
Hallo,

hm, und wie sag ich dem Telefon, dass da mehrere Bücher da sind? Ich kann da in den Einstellungen ja nur 1 URL angeben?

Mfg
Hermann
 
Die URL, die Du angibst ist dann die Starseite (Seite 1). Über die Softkeys (XML Code am Ende der Seite) kannst Du weitere Seiten aufrufen:

Code:
<SoftKeyItem>
<Name>Weiter</Name>
<URL>
http://192.168.178.13/cgi-bin/fb_phonebook.cgi?book=0&page=2
</URL>
<Position>3</Position>
</SoftKeyItem>

In den Skripten werden die Seiten dynamisch über den Aufruf von fb_phonebook.cgi erzeugt. Du kannst hier aber auch statisch erzeugte Telefonbuchseiten aufrufen.
 
Hallo,
das muss ich mir nochmal anschauen, spätestens am WE.

Mfg
Hermann
 
Moinsen


Hab noch einen interessanten Weg recherchiert, um über XSLT dem transformierten XML ein Stylesheet zu verpassen.
HTML:
<xsl:template match="/">
<xsl:processing-instruction name="xml-stylesheet">
<xsl:text>type="text/xsl" href="http://osmc/sippd2html.xsl"</xsl:text>
</xsl:processing-instruction>
...erzeugtes XML...
HTML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://osmc/sippd2html.xsl"?>
...und wenn in der sippd2html.xsl alles richtig gemacht wurde, wird die XML nach HTML transformiert...
Screenshot_20200320-120245.png


Quelle und Beispiele: Irgendwo bei stackoverflow.com gefunden
 
Hallo,

Vollzitat entfernt by stoney (bitte mit Maß zietieren)

hab das mal eingebaut, als Adresse hab ich meine Web-Seite genommen (da wo auch das Telefonbuch abgelegt ist), http://www.xyz.de/tel2.xml.
Wenn ich dann das Telefonbuch aufrufe, wird mit bei Taste 3 auch "Weiter" angezeigt. Leider passiert nix, wenn ich da draufdrücke, die tel2.xml wird nicht nachgeladen...
Es werden auch nicht mehr die Standard-Belegungen "Wählen, Nummer bearbeiten, Abbruch" angezeigt, so dass ich keine Nummer auswählen kann, und das Verzeichnis auch nicht verlassen kann....

EDIT:
Hab jetzt mal versucht, die verschwundenen Softkey-Belegungen mit einzubauen:

HTML:
<SoftKeyItem>
<Name>Wählen</Name>
<URL>
SoftKey:Dial
</URL>
<Position>1</Position>
</SoftKeyItem>
<SoftKeyItem>
<Name>Exit</Name>
<URL>
SoftKey:Exit
</URL>
<Position>2</Position>
</SoftKeyItem>
<SoftKeyItem>
<Name>Weiter</Name>
<URL>
http://www.xyz.de/tel2.xml
</URL>
<Position>3</Position>
</SoftKeyItem>
Es werden mir zwar die Texte (Wählen, Exit) angezeigt, doch leider passiert auf Tastendruck nix. Ebenso mit dem Softkey 3. Muss ich da noch irgendwo was freischalten/zulassen?

Mfg
Hermann
 
Zuletzt bearbeitet:
Sicher, dass der SoftKey Block auch innerhalb des <CiscoIPPhoneDirectory>...</CiscoIPPhoneDirectory> liegt?
 
Hallo,

ja, wie geschrieben, der Text wird mir ja im Telefon angezeigt (Wählen, Exit, Weiter), aber es passiert nix bei Tastendruck...

Mfg
Hermann
 

Neueste Beiträge

Statistik des Forums

Themen
244,695
Beiträge
2,216,686
Mitglieder
371,314
Neuestes Mitglied
Gjorstn
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
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.