[GELÖST] AB-Nachrichten und Anrufer auf Musicpal anzeigen

_ub_

Neuer User
Mitglied seit
8 Jan 2005
Beiträge
69
Punkte für Reaktionen
0
Punkte
0
Wer immer schon auf dem MusicPal sehen wollte, ob Nachrichten auf dem Anrufbeantworter der Fritz!Box vorliegen, kann das Bier kaltstellen ;)

So funktioniert es mit Freetz auf der 7270 in zwei kurzen Schritten:
Erst richten wir auf der Fritz!Box einen Server ein, der den AB-Zustand ausliefert. Dann bringen wir dem MusicPal bei, dies als Aktienkurs-Feed anzuzeigen - fertig.

Der MusicPal zeigt dann im Ruhezustand unter der Uhr, wieviele Anrufe auf dem Anrufbeantworter vorliegen und wann der letzte Anrufer "auf Band" gesprochen hat. Wenn man neue Nachrichten erhält oder beim Abhören Nachrichten löscht, wird die Anzeige am MusicPal nach maximal 60s automatisch aktualisiert.

Das erfordert bei Freetz nur einen einfachen Eintrag in die Standardkonfiguration, und beim MusicPal nur ein Konfigurationskommando vom Webbrowser aus :D.

So ein permanent aktualisiertes Statusdisplay eröffnet natürlich jede Menge Möglichkeiten für etliche andere Verfeinerungen und Anwendungszwecke als 'nur' der AB-Status: Twitter, Kontostand, Stromverbrauch, Heizkosten, Segelwetter, Badeseetemperatur, Kühlschranktemperatur, Servertemperatur...

Postet Eure Ideen und Verbesserungen!

Viel Spaß
Ulf


Beginn der LösungsbeschreibungANLEITUNG: AB-Nachrichtenanzeige auf dem MusicPal mit Freetz
Every bit counts... Code bitte nicht abtippen, sondern per copy & paste übertragen!
  1. Start-Skript für die Nachrichtenanzeige in Freetz eintragen
    Dieses Skript komplett in Freetz - Einstellungen - rc.custom hineinkopieren (copy & paste):
    Code:
    # netcat als Server an Port 86 ausführen, um den AB-Status von der FB auszugeben
    nc -ll -p 86 -e sh -c '
    
    MSGPATH="/var/media/ftp/uStor??/FRITZ/voicebox/rec" # Pfad zu AB-Dateien auf USB
    [ -d $MSGPATH ] || MSGPATH="/var" # Pfad, falls der AB Anrufe intern speichert
    MSGPATH="${MSGPATH}/rec.0.???" # Dateiname der aufgezeichneten Nachrichten
    
    # die vorhandenen Nachrichten zählen
    MSGS=$( echo $MSGPATH | grep -v "?" | wc -w )
    
    # falls Nachrichten vorliegen, das Datum der neusten Datei kompakt formatieren
    [ $MSGS -gt 0 ] && LAST=$( date -r $( ls -td1 $MSGPATH | head -n 1 ) "+%a %R" |
                     cut -c 1-2,4- | sed "s/Tu/Di/; s/We/Mi/; s/Th/Do/; s/Su/So/" );
    
    # $TXT enthält den auszugebenden Text, im Format wie der Yahoo Aktienkurs-Ticker
    case $MSGS in
            (0) TXT="" ;; # hier könnte man natürlich noch einiges andere einbauen
            (1) TXT="AB,1,\"Anruf - ${LAST}\"";;
            (*) TXT="AB,${MSGS},\"Anrufe - ${LAST}\"";;
    esac;
    
    # $TXT als HTTP-Response ausgeben:
    echo -en "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\n${TXT}\r\n";
    
    # auszuführendes Skript abschließen und den Server im Hintergrund ausführen
    ' &
    
    # den Server nach 3s ein erstes Mal abrufen und dann den Abruf terminieren
    # (umgeht einen bug in nc der die erste Abfrage nicht sauber abschließt)
    sleep 3; nc localhost:86 -w 30 -e kill $$

    Dann "Übernehmen" klicken um das Skript im der Freetz-Konfiguration zu speichern, und zum Aktivieren die FritzBox rebooten.
    [noparse] [/noparse]
  2. Nachrichtenanzeige im MusicPal aktivieren
    Den folgenden URL im Browser absetzen (ggf passende IP-Adresse bzw login von //musicpal und //fritz.box eintragen):
    Code:
    http://admin:admin@musicpal/admin/cgi-bin/admin.cgi?f=extras_quotes&n=../extras_quotes.html&a=a&u=http://fritz.box:86/x?http://download.finance.yahoo.com&s=fritz.box

    Dies ist ein ziemlicher Hack des Yahoo-Aktientickers auf dem MusicPal, den wir hier emulieren... :cool: Daher ist es wichtig, den URL erstmal bytegenau zu übernehmen. U.a. muß er pro forma tatsächlich diesen Link auf download.finance.yahoo.com enthalten, obwohl dieser nur simuliert und gar nicht aufgerufen wird (wer's nicht glaubt, mag's überprüfen...).

    Wichtig: Der URL oben setzt voraus, dass
    • der MusicPal im Browser über http://musicpal mit login=admin und password=admin zu erreichen ist
    • die Fritz!Box vom MusicPal aus über http://fritz.box zu erreichen ist.
    Im Zweifel vorher einmal hier testen:http://musicpal/admin/cgi-bin/admin.cgi, und ggf entsprechend statt "musicpal" die IP-Adresse und statt admin:admin das passende login und password eintragen.
    Entsprechend kann man in diesem http-request an der Stelle u=http://fritz.box:86/x den URL fritz.box durch die IP-Adresse der Fritz!Box im LAN ersetzen.

Ende der Lösungsbeschreibung
Das war's schon! Nach dem Aufruf dieses URL zeigt der Browser die MusicPal-Konfigurationsseite für das Aktienticker-Menü. Wiederholte Aufrufe dieses URL legen jedesmal einen neuen Aktienticker an, die man in diesem Menü auch wieder löschen kann.

Prinzipiell ist es aber auch kein Problem, hier mehrere verschiedene Statusmeldungen einzustellen. Sie werden im MusicPal dann nacheinander unter der Uhr angezeigt. Das Ticker-Format ist zwar recht starr -- es muss immer exakt im Format text1,text2,"text3 - text4" vorliegen, und es gibt Nachrichten immer als text1: text2 text3 (text4) aus, aber man kann schon eine Menge damit anstellen :).

Wenn keine Nachrichten vorliegen, bleibt die Statusmeldung leer. Stattdessen könnte man hier mit entsprechender Erweiterung des Skripts natürlich auch etwas anderes anzeigen, wie gesagt: Wettervorhersage, Twitter oder ähnliches...

Sollte etwas nicht funktionieren, kann man nach dem Reboot der 7270 die Funktion des Skripts vom Browser aus mit http://fritz.box:86/ überprüfen. Wenn Nachrichten vorliegen, sollte der Browser dies nun ungefähr so anzeigen: AB,1,"Anruf - Mi 17:19"

Ist dies nicht der Fall sein, obwohl der AB beim Abhören ansagt, dass Nachrichten vorliegen, sollte man im Skript den Speicherort der erhaltenen AB-Nachrichten in der Variable MSGPATH überprüfen. Der Pfad zu den Aufnahmen (sie heißen rec.0.000, rec.0.001 etc) ist unterschiedlich, je nachdem, ob der AB der FritzBox die Nachrichten auf dem USB-Laufwerk speichert. Das Skript prüft die zwei üblichen Pfade automatisch; ggf kann man eine neue Nachricht aufsprechen und von telnet aus den Speicherort der AB-Nachrichten 'zu Fuß' überprüfen.


Jetzt machen wir die Lösung komplettErweiterung: Anrufer-Anzeige mit callmonitor auf dem MusicPal

Wer bei eingehenden Anrufen jetzt im MusicPal auch noch den Namen des Anrufers anzeigen will, kann zusätzlich die andere hübsche Lösung verwenden, die wir kürzlich gebaut haben. Dazu fügt man im Freetz callmonitor-Paket unter Freetz - Einstellungen - Listeners einfach folgenden Eintrag ein:

Code:
in:request ^ ^ musicpalmessage musicpal
Zum Testen "zu Fuß" funktioniert stattdessen auch dieser Listener-Eintrag:
Code:
in:request ^ ^ getmsg admin:admin@musicpal "/admin/cgi-bin/ipc_send?show_msg_box%%20%s" "Anruf für ${DEST_NAME}§von ${SOURCE_NAME}§#25"
Die Konfigurationsdetails und Diskussionen dazu findet Ihr in [post=1387932]diesem Thread[/post].

So ist die Anrufer-Anzeige mit dem MusicPal erstmal komplett!
 
Zuletzt bearbeitet:
Ist das schon irgendwo im Wiki verewigt?
 
noch nicht aber gerne, logo.

Würde ganz gern vorher noch gucken, ob wir eine Lösung finden, den Server mit nc -ll -e echo... zu starten, statt der Schleife mit {while true} &

Wenn nc -ll -e funktionieren würde, würde der Server das Display schneller refreshen und wäre auch einfacher zu implementieren und zu debuggen.
 
Das skript wurde ein erstes Mal grundüberholt. Es startet jetzt netcat als permanenten Server mit nc -ll -e. In diesem Modus können wir auf die Schleife mit {while true} & verzichten. Auch insgesamt ist die Programmierung jetzt etwas sauberer :)

Netcat hat in der aktuellen Busybox offenbar einen kleinen Bug, der dazu führt, dass die erste Abfrage nach Serverstart nicht abgeschlossen wird. Wir umgehen das Problem hier, indem wir die erste Abfrage direkt nach dem Serverstart selber ausführen und terminieren. Alle folgenden Anfragen an den Server -- insbes die vom MusicPal -- terminieren dann tadellos.
 
Hallo,

finde die Idee super! Kann man mit dem Skript evtl. auch seine Emails tickern?

Gruß, Thomas
 
Kann man mit dem Skript evtl. auch seine Emails tickern?

Klar, Du müßtest halt im Skript den Abschnitt entsprechend ersetzen, der die Anzahl der AB-Nachrichten auf der FB in die Variable TXT ausgibt. Mit einer geeigneten Routine zum Email-Abfragen sollte das kein Problem sein.

Gruß
Ulf
 
Kleine Ergänzung im skript:

es gibt den Wochentag jetzt auf deutsch aus, und sucht AB-Nachrichten auf dem USB-Stick im richtigen Verzeichnis.
 
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.