[HowTo] Cisco 797x an Fitzbox - MWI Steuerung bei AB Nachrichten

FantasticPauly

Neuer User
Mitglied seit
3 Jul 2013
Beiträge
48
Punkte für Reaktionen
10
Punkte
8
Seit Ende letzte Jahres betreibe ich ein Cisco 7975 IP Phone an meiner 7270v3 Fritzbox und bin soweit eigentlich recht zufrieden (siehe dazu auch meinen vorheriges HOWTO dazu). Einziges Ärgernis ist jedoch, dass bei anstehenden AB-Nachrichten, keine Signalisierung im Display (Briefumschlag) und Hörer (rote LED) erfolgt.

Grund dafür schient ein nicht-standardkonfomes Verhalten des Cisco-IP-Phones zu sein (Phone sendet keine Subscription an den SIP-Server). Trotzdem wollte ich dieses Manko nicht einfach so hinnehmen und hab mich auf die Suche nach einer Lösung gemacht. Das folgende Skript basiert auf meiner im vorherigen Thread beschriebenen Lösung mit Freetz und läuft seit ein paar Tagen sehr zufriedenstellend auf meiner Box.

Nötig ist dazu, dass man sich aus dem aktuellen Freetz-Trunk das Binary sipsak (SIP-Swiss Army Knife) besorgt bzw. mit ins Image einbaut, damit das Skript einen SIP-Notify versenden kann

Mit folgendem Skript vm_monitor.sh, das über die rc.custom gestartet wird, wird im Hintergrund der Status der AB-Nachrichten gemonitort und bei Aktualisierung eine entsprechende SIP-Notify Message ans Cisco-IP-Phone gesendet.

Code:
#!/bin/bash

# SIP settings: USER, IP_PHONE und SIP_SERVER etc. hier anpassen
USER="620"
IP_PHONE="192.168.178.10"
SIP_SERVER="192.168.178.1" 
SIP_PORT=5060
SIP_FROM="FRITZ!Box"

LAST=$( ctlmgr_ctl r tam settings/TAM0/NumNewMessages )

while test 1; do

  NEW_MESSAGES=$( ctlmgr_ctl r tam settings/TAM0/NumNewMessages )

  if test "$LAST" != "$NEW_MESSAGES"; then
    OLD_MESSAGES=$( ctlmgr_ctl r tam settings/TAM0/NumOldMessages )
    TOTAL_MESSAGES=$(($NEW_MESSAGES + $OLD_MESSAGES))
 
    if [ "$NEW_MESSAGES" != "0" ]; then
      HAS_NEW="yes"
    else
      HAS_NEW="no"
    fi

    CONTENT_LENGTH=$(( 34 + ${#HAS_NEW} + ${#NEW_MESSAGES} + ${#OLD_MESSAGES} ))
    RAND=$( awk 'BEGIN { srand(); print(int(rand()*1000000)) }' )
    SEQUENCE=$( printf "%06d" $RAND )

    (
      cat <<-EOM
      NOTIFY sip:${USER}@${IP_PHONE} SIP/2.0
      From: <sip:${SIP_FROM}@${SIP_SERVER}>
      To: <sip:${USER}@${IP_PHONE}>
      Contact: <sip:${USER}@${SIP_SERVER}>
      Call-ID: ${SEQUENCE}@${SIP_SERVER}
      CSeq: ${SEQUENCE} NOTIFY
      Event: message-summary
      Content-Type: application/simple-message-summary
      Content-Length: ${CONTENT_LENGTH}

      Messages-Waiting: ${HAS_NEW}
      Voicemail: ${NEW_MESSAGES}/${OLD_MESSAGES}
 
EOM
    ) | /usr/bin/sipsak -s sip:${USER}@${IP_PHONE} -f -
    LAST=$NEW_MESSAGES
  fi
  sleep 5
done
exit 0

Unbedingt benötigt wird das Binary sipsak (SIP Swiss Army Knife). Dieses ist in der Version 0.9.6 im aktuellen freetz-trunk enthalten und muss beim Build, des Images ausgewählt werden.

In der rc.custom muss das Skript wie folgt zum Starten eingetragen werden (Pfad zur Voicebox und zum Skript müssen entsprechend angepasst werden):
Code:
#Hintergrund-Überwachung, ob neue Voicemails vorhanden sind.
{
VMDIR="/var/media/ftp/uStor01/FRITZ/voicebox"
while [ ! -d "$VMDIR" ]; do sleep 5; done
sh /var/media/ftp/uStor01/wwwroot/htdocs/cgi-bin/vm_monitor.sh
} &

In der SEP<MAC-Adresse>.cnf.xml
lautet der zugehörige Eintrag:
Code:
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
 
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.