[Release] Fritz.box Cisco Phonebook XML Applikation

...das mein tolles Cisco nicht fähig ist die Ausgabe des Servers richtig umzusetzen. Weder das Directory noch die Services funktionieren. Ich erhalte nur einen 404 not found. Ich habe ein Cisco 7975 mit der 9 Firmware am laufen, denke die firmware ist das Problem...

Hallo jonasius und loeppel

Nach etwas Rumprobieren hab ich rausgefunden, das der XML-Tag <SoftKeyItem> bei meinem Cisco 7960G (mit SIP-Firmware) nicht funktioniert. Das selbe Telefon mit SCCP-Firmware kann diesen Tag wohl korrekt interpetrieren.

Man müsste die Aussgaben der .sh-Scripts so anpassen, das sie ohne diesen Tag auskommen.

Dazu hab ich noch einige Stellen im Forum/Inet gefunden:
http://www.ip-phone-forum.de/showthread.php?t=152540&p=1098094&viewfull=1#post1098094 und https://supportforums.cisco.com/thread/323771

Es fehlt mir an einer genauen Dokumentation was mit meinem 7960G (SIP) geht und was nicht. Aus den Dokus bei Cisco
http://www.cisco.com/en/US/docs/voice_ip_comm/cucme/admin/configuration/guide/cmesoftk.html
genauer:
http://www.cisco.com/en/US/docs/voi...n/configuration/guide/cmesoftk.html#wp1011759
werde ich so nicht recht schlau.

Wer kann Licht ins dunkel bringen? :eek:

eman
 
Zuletzt bearbeitet:
Ergänzungsvorschlag

Hallo disorganizer,

hier mal ein kleiner Vorschlag für die V4, PB-Full.sh.

Da in meinem Telefonbuch nicht jeder Buchstabe belegt ist, habe ich was gebaut, das die Alphabete entsprechend anpasst, so dass nicht belegte Buchstaben ausgelassen werden.

Beispiel:
Nehmen wir an, ich habe nur drei Kontakte drin:

Andrea, Erich und Siegfried.

Dann enthalten die Alphabete jetzt lediglich AES, ESA und SAE, und man springt mit den Softkeys direkt zum nächsten Eintrag.

Vielleicht möchtest Du das ja mit einbauen:

Code:
# Prepare Aditional Variables and modify Searchregexp for LETTER-Mode
if [ "$MODE" = "L" ]
then
  ALPHABET="$(grep -i "MenuItem" $DATAXMLFILE | sed -r -e 's/.*(<Name>)(.).*/\2/g' | sed '$!N; /^\(.*\)\n\1$/!P; D' |  tr -d '\n')"
  NEXTLIST=$(echo $ALPHABET | sed -r -e 's/^(.)(.*)/\2\1/g')
  PREVLIST=$(echo $ALPHABET | sed -r -e 's/(.*)(.)$/\2\1/g')
  POSITION=`expr index $ALPHABET $SEARCHPAT - 1`
  NEXTLETTER=${NEXTLIST:$POSITION:1}
  PREVLETTER=${PREVLIST:$POSITION:1}
  GREPPAT="<name>[$SEARCHPAT]"
  PROMPTT="Showing $SEARCHPAT*"
fi

Ich habe die Variablen ALPHABET, NEXTLIST und PREVLIST modifiziert. Ist momentan dynamisch, Geschwindigkeit reicht jedenfalls bei mir aus. Könnte man noch mit in den Update-Prozess reinnehmen und statifizieren.

Jedenfalls vielen Dank für Deine exzellente Arbeit :)
 
Das 'Ganze' mal für Cisco 7940 und 7960 angepasst

Hallo zusammen,

nachdem meine ersten Erfahrungen eher frustrierend waren (alle Beschreibungen die ich fand waren nur für neuere Cisco IP-Phones oder welche mit MGCP oder SCCP-Firmware) bin ich doch noch bei Cisco fündig geworden:

OL-0921-02 http://www.cisco.com/en/US/docs/voi...si/3_0/english/programming/guide/phsvcdev.pdf

... und hab mich mal drangesetzt das ganze umzubauen und abzuändern - allerdings (noch) auf Basis von package-3.1. Ergebnis ist im Anhang. Wäre schön, wenn's der eine oder andere mal mit 7940 oder 7960 (G oder non G) testen kann.

Gruß

eman

PS: natürlich ebenfalls ein riesengroßes Dankeschöön an disorganizer für die tolle Arbeit :oops:
 

Anhänge

  • 7940_7960_package_20121209.zip
    359.5 KB · Aufrufe: 11
  • 7940_7960_package_20121210.zip
    365.4 KB · Aufrufe: 47
Zuletzt bearbeitet:
Hallo,

zunächst will ich disorganizer für seine Arbeit herzlich danken! Ich habe schon einiges mit den Skript rumgespielt und es funktioniert bis Version 3.1 perfekt :p

Leider klappt es mit der 4.0 beta 1/2 nicht wie es soll.

Ich habe ein Cisco Telefon und eine FB 7270 v2. Das Skript habe ich so wie in der Anleitung gefordert auf einen USB-Stick gelegt. Mit dem Telefon ist aber der Zugriff auf das Adressbuch nicht möglich, die Einstellungen habe ich alle kontrolliert und die müssten so passen.

Unter http://fritz.box:81/cgi-bin/Directory.sh kann ich die Directory-Datei problemlos im Browser öffnen, beim Ansprechen mit Telnet kann ich die Datei "fbpb2cisco.sh" auch ausführen und im Terminal werden alle Kontakte runtergeratert, eine Ausgabe in eine Datei bekomme ich nicht hin. Das Telefonbuch kann ich auch mit dem Cisco öffnen, aber die Datei ist leer (0 KB).

Ich weiß jetzt nicht mehr weiter, habe es mit der beta 1 und 2 probiert, beides erfolglos, habe auch verschiedene BusyBox-Versionen probiert, alles erfolglos.

Kann mir jemand helfen?


Nachtrag:
Wie kann ich auf den TFTP-Server zugreifen? Der Port 69 lässt sich nicht öffnen, ich würde gerne Klingeltöne dort abladen und mit dem Cisco drauf zugreifen.
 
Heureka!

Der Bug liegt in der PB-Constants.sh:

#!/bin/sh
# Define constants here for all Scripts.

# Base path for scripts is path of PB-Constants.sh
SCRIPTBASE=`echo $0 | sed -e 's,\(/*.*/*\)/\([^/]*\),\1,g'`
if [ "$SCRIPTBASE" = "$0" ]
then
SCRIPTBASE="."
fi

# Prefix for data-files. Name of the phonebook and .xml will be added by script
#DATAXMLPREFIX="/tmp/PB-"
DATAXMLPREFIX="$SCRIPTBASE/../PB-"

# Maximum number of lines. Keep 2 lines available for previous/next page entries
PAGELENGTH=98

# Base url for Webserver.
WEBBASEURL="http://fritz.box:81"

# Script Names. You also need to add this as executable scripts in http daemon
BASESCRIPT="cgi-bin/PB-Full.sh"
SRCHSCRIPT="cgi-bin/PB-Search.sh"
UPDTSCRIPT="cgi-bin/PB-Update.sh"

# Which Phonebooks are exported from Fritzbox
PHONEBOOKLIST="Telefonbuch1 Telefonbuch2"

So muss es richtig heißen:

#!/bin/sh
# Define constants here for all Scripts.

# Base path for scripts is path of PB-Constants.sh
SCRIPTBASE=`echo $0 | sed -e 's,\(/*.*/*\)/\([^/]*\),\1,g'`
if [ "$SCRIPTBASE" = "$0" ]
then
SCRIPTBASE="."
fi

# Prefix for data-files. Name of the phonebook and .xml will be added by script
#DATAXMLPREFIX="/tmp/PB-"
DATAXMLPREFIX="$SCRIPTBASE/PB-"

# Maximum number of lines. Keep 2 lines available for previous/next page entries
PAGELENGTH=98

# Base url for Webserver.
WEBBASEURL="http://fritz.box:81"

# Script Names. You also need to add this as executable scripts in http daemon
BASESCRIPT="cgi-bin/PB-Full.sh"
SRCHSCRIPT="cgi-bin/PB-Search.sh"
UPDTSCRIPT="cgi-bin/PB-Update.sh"

# Which Phonebooks are exported from Fritzbox
PHONEBOOKLIST="Telefonbuch"

Nach der Anpassung läuft auch alles so wie es soll!


Nachtrag:
Wie kann ich auf den TFTP-Server zugreifen? Der Port 69 lässt sich nicht öffnen, ich würde gerne Klingeltöne dort abladen und mit dem Cisco drauf zugreifen?
Kann mir keiner dazu helfen?
 
Zuletzt bearbeitet:
Kleiner Bug, das Telefonbuch kann das e von André nicht darstellen. Daher ist ein kleiner Eingriff in die fbpb2cisco.sh notwendig.

Die Umlaute werde so übersetzt:
# do some sed magic
cat /tmp/pbd.export \
| tr "\n" " " \
| sed -r \
-e 's,[ \t]+, ,g' \
-e 's, />,/>,g' \
-e 's,(</?phonebook>|</?phonebooks>|<contact[^<]*>|<featureflags>|<phonebook[^<]*>),\n\1,g' \
-e 's,‰,ae,g;s,ˆ,oe,g;s,¸,ue,g;s,fl,ss,g;s,ƒ,Ae,g;s,÷,Oe,g;s,‹,Ue,g;s,&amp;,+,g' \
| sed -r \
-n "/name=.$1./,/<\/phonebook>/p" \
| sed -r \
-e "s,.*${REALNAME_PATTERN}.*${NUMBER_PATTERN}.*${NUMBER_PATTERN}.*${NUMBER_PATTERN}.*,${OUTPUTLINE23}\n${OUTPUTLINE45}\n${OUTPUTLINE67},g" \
-e "s,.*${REALNAME_PATTERN}.*${NUMBER_PATTERN}.*${NUMBER_PATTERN}.*,${OUTPUTLINE23}\n${OUTPUTLINE45},g" \
-e "s,.*${REALNAME_PATTERN}.*${NUMBER_PATTERN}.*,${OUTPUTLINE23},g"

# remove /tmp/pbd.export file
rm /tmp/pbd.export

Es muss daher in der 8. Zeile ein
;s,é,e,g;s,É,e,g;
eingefügt werden (mit Notepad++ machen) oder fertige Datei aus dem Anhang laden (keine weiteren Änderungen notwendig).

:dance:
 

Anhänge

  • fbpb2cisco-Akzent_fix.zip
    743 Bytes · Aufrufe: 27
Zuletzt bearbeitet:
Hallo,

nachdem zahlreiche Änderungen eingeflossen sind gibt es hierzu wieder eine fertige version für alle zum download? Der Thread ist ja jetzt schon sehr gross :)
 
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.