FritzBox Telefonbuch Service für Cisco Telefone

das weiß ich nicht, müsste man jetzt alles untersuchen. welche ist denn drauf, mal so rum gefragt?

mach mal ein dokument mit:

<?php
phpinfo();
?>

um himmels willen nicht alles 1:1 hier posten.
 
1.JPG
das ma die Konsole schalt ich die aus kommt der text der php 1:1 auf dem Display des Telefons schalt ich sie ein kommt die Fehlermeldung
 
habe den Apache intern auf einer 7390 (OS 06.01) mit PHP 5.3.27 laufen. Beim Aufruf der directory.php auf meinem Cisco 7960 (latest SIP FW), bekomme ich einen CMXML Error - XML Parse Error.

Pfade sind in der config angepasst, habe auch schon zum Testen $runon_Fritzbox = false auf "true" gesetzt und den Pfad angepasst, ebenso per Telnet das Telefonbuch manuell exportiert und als 0.xml in den Ordner books geschoben.

Hat jemand eine Loesung fuer das XML Parse Problem?
 
Was passiert den wenn du die Website mit einen Browser aufrufst und nicht vom Telefon, evtl dann auch mal den Quelltext anzeigen lassen.
 
das hatte ich natuerlich beim troubleshooting nicht bedacht...:( Es werden die Eintraege des Telefonbuches aufgelistet...scheint also zu laufen, aber beim Cisco kommt nichts an?

im Browser sieht es nach Aufruf der Adresse (nur ein kleiner Auszug und Namen ge xxx t) so aus:

FRITZ!Box TelefonbuchAuswählen1SoftKey:SelectVerlassen3Init:DirectoriesSuche2http://Fritz.Box/directory.php?search=1Aktualisieren4http://Fritz.Box/directory.php?refresh XXXXXXXhttp://Fritz.Box/directory.php?&id=0XXXXXXXhttp://Fritz.Box/directory.php?&id=1AVM Ansage (HD)http://Fritz.Box/directory.php?&id=...http://Fritz.Box/directory.php?&id=5XXXXXXXXX usw.

die Namen enthalten Sonderzeichen wie ( ) und Umlaute, manche Einträge sind recht lang, habe nach dem Parsing Error bei Google gesucht und auch etwas ueber die string Laenge gefunden, habe aber keine Ahnung ob das das Problem ist.

Vielen Dank fuer Deine Hilfe.
 
Ein 7960 hat ich noch nie, evtl. liegt es an der Locale Konfig, sprich steht das Telefon auf Deutsch und kann Umlaute.

Ist die XML im Browser den ordentlich geformt?
 
soweit mir bekannt gibt es fuer das 7960 mit SIP Firmware keine Deutsche localization, habe ich auch schon in der Directory.php auf Englisch geaendert ohne Aenderung des Verhaltens.

Die Fritzbox gibt bei eingehenden Anrufen die zugeordneten Namen der im Telefonbuch gespeicherten Nummern an das Cisco weiter. Dort habe ich dann Umlaute nur die "spaces" zwischen Vor- und Nachnamen fehlen.

Im Browser (Firefox) sieht die XML genau so aus, wie ich sie oben gepasted habe, mit dem Internet Explorer sieht es schon besser aus. Ich habe nun mal die 0.xml (die wurde ja manuell exportiert) aus /books gelöscht, es wird keine neue 0.xml angelegt und im Browser erscheint die Meldung, dass kein Telefonbuch gefunden werden konnte.

Sag einfach welche files Du sehen moechtest, dann werde ich diese zur Verfuegung stellen...muss doch irgendwie zum Laufen kommen :noidea:
 
Zuletzt bearbeitet:
Also wenn deine XML so aussieht wie du oben gepostest hast, kann das nichts werden. Poste bitte mal den Quellcode der Seite in Code Klammern, dann passt auch die Formatierung.
 
hier mal der Source wir er im Internet Explorer angezeigt wird, wie erwaehnt wird das Telefonbuch erst gar nicht aus der Fritzbox geholt. Umlaute habe ich nun auch entfernt bringt ebenso wenig eine Aenderung wie die localisation in der directory.php auf english zu aendern.

Code:
<?xml version="1.0" encoding="UTF-8"?>

-<CiscoIPPhoneText>

<Title>Telefonbücher</Title>

<Prompt>Keine Telefonbücher vorhanden</Prompt>


-<SoftKeyItem>

<Name>Verlassen</Name>

<Position>1</Position>

<URL>Init:Directories</URL>

</SoftKeyItem>


-<SoftKeyItem>

<Name>Aktualisieren</Name>

<Position>4</Position>

<URL>http://Fritz.Box/directory.php?refresh</URL>

</SoftKeyItem>

<Text>Es sind derzeit keine Telefonbücher vorhanden, durch "Aktualisieren" kann die FRITZ!Box ausgelesen werden. Dies kann einige Sekunden dauern! Nach Änderungen im FRITZ!Box-Telefonbuch muss erneut das Aktualisieren ausgeführt werden.</Text>

</CiscoIPPhoneText>
 
Zuletzt bearbeitet:
Sieht eigentlich sehr gut aus und sollte so auch auf den Telefon ordentlich angezeigt werden können.

Ruf mal http://Fritz.Box/directory.php?refresh auf um das Telefonbuch zu erstellen.

Anschließend ruf mal http://Fritz.Box/directory.php?book=0.xml
Jetzt solltest du die einzelnen Einträge sehen

Mit http://Fritz.Box/directory.php?book=0.xml&id=1
solltest du den ersten Eintrag sehen.

Probiere alle Links mal als direkte Directory URL auf den Telefon aus.
Die drei Seiten sind alle verschiedene Grundstrukturen, nämlich CiscoIPPhoneText, CiscoIPPhoneMenu und CiscoIPPhoneDirectory
Eigentlich sollten dein 7960 alle verstehen laut dieser Liste:
http://www.cisco.com/en/US/docs/voice_ip_comm/cuipph/all_models/xsi/7_1_3/xmlobjects.html#wp1033107

Hast du mal eine neue/andere Firmware für das Telefon verwendet?

Du kannst testweise auch mal ein ganz einfaches, statisches Telefonbuch probieren:
Code:
<?php
header("Content-type: text/xml");
?>
<CiscoIPPhoneMenu>
        <Title>Telefonbuch</Title>
        <Prompt>Dir External</Prompt>
        <MenuItem>
            <Name>Oma</Name>
            <URL>Dial:0123456</URL>
        </MenuItem>
        <MenuItem>
            <Name>Frisoer</Name>
            <URL>Dial:01265432</URL>
        </MenuItem>
</CiscoIPPhoneMenu>

oder

Code:
<?php
header("Content-type: text/xml");
?>
<CiscoIPPhoneDirectory>
  <Title>Telefonbuch</Title>
  <Prompt>Telefonbuch</Prompt>
  <DirectoryEntry>
    <Name>Name</Name>
    <Telephone>0123456</Telephone>
  </DirectoryEntry>
  <DirectoryEntry>
    <Name>Name</Name>
    <Telephone>0123456</Telephone>
  </DirectoryEntry>
</CiscoIPPhoneDirectory>


Edit:

Eine Idee hab ich noch:
Ich denke das 7960 kann mit <URL>Init:Directories</URL> nichts anfangen, ersetze das mal durch <URL>SoftKey:Exit</URL>
 
Zuletzt bearbeitet:
alle 3 Links funktionieren im Browser. Als external Directory URL eingetragen ergeben die beiden ersten den gleichen XML error, der 3. Link bringt einen 500 Internal Error?

Das erste Deiner Beispiel Directories bringt sichtbare Eintrage im Cisco, allerdings haben die Softkeys keinerlei Funktion. Das zweite Beispiel Directory funktioniert hingegen einwandfrei.

Ich habe in der directory.php alle Init:directories mit SoftKey:exit ersetzt. Firmware ist die 8.12, dies ist die aktuelleste fuer das 7960.

Ich schliesse aus dem positiven Test mit dem 2. Beispiel Directory, dass es grundsaetzlich funktionieren wuerde, allerdings passt noch was am Format der XML nicht ganz, richtig?
 
Also dein Telefon kann grundsätzlich mit CiscoIPPhoneMenu und CiscoIPPhoneDirectory umgehen, wenn das Telefonbuch nicht geht musst du dort den Fehler suchen.

Vorschlag:
http://Fritz.Box/directory.php?book=0.xml am PC aufrufen und die sichtbare XML, mal direkt als php auf deinen Webserver ablegen.
Dabei nicht den header vergessen:
Code:
<?php
header("Content-type: text/xml");
?>
...
...
Jetzt kommt die Fleißarbeit -> so lange Sachen löschen bis es mit den Cisco geht um herauszufinden, was das Cisco nicht daran mag.
zB mal die Softkeys raus nehmen, Texte in der Länge kürzen usw.
 
Normal sollte die XML-Library schon meutern wenn da Texte zu lang sind. Aber ich bin gespannt was bei der Recherche rauskommt.
 
vielen Dank euch beiden, leider bringt das rausnehmen der Softkeys erstmal keine Aenderung. Nachdem das 2. Beispiel von bt43a ja funktioniert habe ich jetzt noch eine Idee (habe von PHP und XML nicht wirklich viel Ahnung, komme eher aus der Assembler Fraktion :D)
Mit ist aufgefallen, dass die Label? heisst das in diesem Fall so? also wie im Beispiel <DirectoryEntry> <Name>Name</Name> <Telephone>0123456</Telephone> in dem vom PHP Skript generierten Telefonbuch ganz anders sind, ebenfalls finde ich "mod_time" und "category" sowie "prio", muessen diese Felder nicht irgendwo definiert werden, oder werden die einfach automatisch vom Cisco ignoriert?

Hier ein Beispiel aus dem source code der generierten 0.xml

Code:
<contact><category>0</category><person><realName>Mustermann Max</realName></person><telephony
nid="2"><number type="home" prio="1" id="0">0123456789</number><number
type="mobile" prio="0" id="1">017212345678</number></telephony><services /><setup /><mod_time>1387432665</mod_time><uniqueid>17</uniqueid></contact>

Oder kann es ein Problem sein, dass fuer manche Kontakte 2 Nummern hinterlegt sind also z.B. Festnetz und Mobil?

Kommando zurueck...der code ist von der xml aus der Fritzbox...der richtige Code sieht so aus:

Code:
<?xml version="1.0" encoding="UTF-8"?>

-<CiscoIPPhoneMenu>

<Title>FRITZ!Box Telefonbuch</Title>


-<SoftKeyItem>

<Name>Auswählen</Name>

<Position>1</Position>

<URL>SoftKey:Select</URL>

</SoftKeyItem>


-<SoftKeyItem>

<Name>Verlassen</Name>

<Position>3</Position>

<URL>Init:Directories</URL>

</SoftKeyItem>


-<SoftKeyItem>

<Name>Suche</Name>

<Position>2</Position>

<URL>http://Fritz.Box/directory.php?%3Frefresh=&search=1</URL>

</SoftKeyItem>


-<SoftKeyItem>

<Name>Aktualisieren</Name>

<Position>4</Position>

<URL>http://Fritz.Box/directory.php?refresh</URL>

</SoftKeyItem>


-<MenuItem>

<Name> Mustermann Max </Name>

<URL>http://Fritz.Box/directory.php?%3Frefresh=&id=0</URL>

</MenuItem>
 
Zuletzt bearbeitet:
Magst du mal schreiben welche URL du im Telefon eingetragen hast? Ich habe gerade das Gefühl dass du dem Telefon das Fritzbox Telefonbuch vorlegst und nicht das PHP-Script.
 
im Moment steht diese wie von bt43a zum troubleshooting vorgeschlagen direkt auf der vom PHP-Script via ?refresh generierten 0.xml, Aufruf vom Browser funktioniert ebenfalls einwandfrei wenn ich das PHP-Script nehme, das sollte also passen:

directory_url: "http://192.168.178.253:85/books/0.xml"

nachdem mich hier jetzt ganz massiv der Ehrgeiz packt, habe ich mir einige Cisco manuals zum Thema XML Format fuer das 7960 angeschaut...ich werde das Gefuehl nicht los, dass es tatsaechlich an den Tags (sind also keine Label) liegt, hier der Auszug vom Cisco manual speziell zum Thema XML directory (es duerfen auch nur max. 32 Eintraege ich das Directory):

Code:
<CiscoIPPhoneDirectory>
<Title>Name Of Directory</Title>
<Prompt>Prompt text.</Prompt>
<DirectoryEntry>
<Name>Name of Person or Company</Name>
<Telephone>TelephoneNumber</Telephone>
</DirectoryEntry>
<DirectoryEntry>
<Name>Name of Person or Company</Name>
<Telephone>TelephoneNumber</Telephone>
</DirectoryEntry>
</CiscoIPPhoneDirectory>

das naechste was mir einfaellt ist, dass ich mal ein neues Telefonbuch anlege und nur einen Eintrag mache und dann mal schaue was dabei rum kommt. Wie sieht dass nun mit den Eintraegen wo 2 Nummern hinterlegt sind aus, werden diese gesplittet, oder muss hier manuell eingegriffen werden, da das Cisco wohl keine mehrfach Nummern pro Eintrag vorsieht

Habe eben den Eintrag mit den Tags nochmal editiert...habe versehentlich den source code vom Fritzbox directory genommen...
 
Zuletzt bearbeitet:
Du hast das nicht ganz richtig gelesen. Der Vorschlag war diese URL: http://192.168.178.253:85/directory.php?book=0.xml
Das was du aufrufst ist die zwischengespeicherte XML die sich das Script von der FritzBox holt. Mit dem Format kann dein Telefon nichts anfangen.

Zu den 32 Einträgen: Das Script macht dann eine neue Seite, zwischen den Seiten kannst du mit den SoftKeys navigieren
Zu den 2 Nummern pro Eintrag: Das Script ist so aufgebaut dass du zunächst den Namen auswählst, dort kommt dann eine neue Liste mit den Nummern zu dem Kontakt.
 
ich habe die 0.xml aus dem im Browser aufgerufenen PHP-Script abgespeichert, wie auch das Beispiel von bt43a, dass ja funktioniert hat, nur um erstmal zu sehen worueber das Cisco stolpert.

Habe eben nochmals die XML durchforstet...der Aufruf mit Fritz.box in Zusammenhang mit der .php sollte doch dann auf den Apache verweisen? Also in meinem Fall dann, 192.168.178.253:85? Werde das jetzt mal testen.

wo wird im Script festgelegt wie diese Eintraege in die 0.xml kommen?

<URL>http://Fritz.Box/directory.php?book=0.xml&id=0</URL>

das kann mit Fritz.Box doch nicht funktionieren, hier sollte <URL>http://192.168.178.253:85/directory.php?book=0.xml&id=0</URL> stehen, oder?
Ich habe es in der directory.php nicht direkt gefunden, also wird das irgendwo her gezogen, aber wo?
 
Zuletzt bearbeitet:
Ich glaube wir sollten erst mal klären wie du deinen Webserver erreichst.
Jetzt hast du geschrieben <URL>http://192.168.178.253:85/directory.php?book=0.xml&id=0</URL>
was heißt du gehst über den Port 85 und nicht den Standard Port für http 80.
Ist soweit kein Problem, aber dann musst du das den Telefon auch explizit sagen.
Evtl. ist auch eine kleine Anpassung im Script nötig damit die Verlinkungen richtig erstellt werden.

Ich denke ohne Screenshots kommen wir hier nicht weiter, poste doch bitte mal ein Screenshot wie du mit einen Browser die Drirectory.php aufrufst (inkl. Adressleiste)
Private Daten kannst du ja schwärzen.


edit:
Hab mir das eben noch mal durchgelesen und noch eine Idee.
Füg das mal als erste Zeile nach den copyright Kommentar in die Directory.php ein:
Code:
$_SERVER['SERVER_NAME']="192.168.178.253:85";

Vlt verstehe ich dich aber auch komplett falsch :/
deswegen poste lieber auch mal den Screeshot
 
Zuletzt bearbeitet:
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.