Callmonitor 1.20.9-git¶
- Package: master/make/pkgs/callmonitor/
- Steward: -
Der Callmonitor ermöglicht es, bei eingehenden Anrufen auf einer
FritzBox beliebige Aktionen
auszuführen, abhängig davon, wer wen anruft. Beliebt sind das Senden von
Benachrichtigungen an verschiedenste Arten von "Boxen"
(TV/Sat-Receiver, Spielekonsolen, PCs) oder das Aufwecken von Geräten
(Wake on LAN).
Dabei kann über eine Rückwärtssuche in Internet-Telefonbüchern oft auch
der Name des Anrufers angezeigt werden.
Das Besondere an diesem Callmonitor (leider gibt es viele Projekte mit
ähnlichem Namen) ist, dass er komplett auf der Fritzbox läuft; es ist
also nicht nötig, weitere Rechner eingeschaltet zu haben.
Installation¶
Der Callmonitor ist als Paket im Rahmen von Freetz
(Forum)
realisiert, und kann bei dessen Installation einfach ausgewählt werden.
Das Callmonitor-Paket kann nicht als Addon-Paket installiert werden.
Installation neuer Versionen¶
Bitte beachtet: Mit Freetz 1.1 können nur Callmonitor-Version bis 1.15
eingesetzt werden. Callmonitor 1.15.1 und höher benötigen Änderungen,
die in Freetz 1.2 oder der Freetz-Entwicklerversion enthalten sind.
Zum Einbinden der aktuellsten Version aus der Entwicklerversion in
Freetz 1.2 kann man so vorgehen (im Wurzelverzeichnis von Freetz):
svn switch http://svn_freetz_org/trunk/make/callmonitor/callmonitor.mk make/callmonitor/callmonitor.mk
Weiterführende Links¶
Konfiguration¶
Die Konfiguration des Callmonitors nimmt man sinnvollerweise in mehreren
Schritten vor, die sich auf verschiedene Seiten im Web-Interface von
Freetz verteilen:
- Basiskonfiguration durchführen (im Folgenden beschrieben)
- Listeners für bestimmte Aktionen definieren
- mit einem Testanruf die Konfiguration testen
Basiskonfiguration¶
Auf der Seite Pakete-Callmonitor des Web-Interfaces lassen sich einige
grundlegende Einstellungen vornehmen.
Als erstes wählt man den Starttyp - normalerweise "Automatisch", da
der Callmonitor sonst nach jedem Neustart der FritzBox per Hand
gestartet werden muss. Sollte es Probleme geben, kann man noch
zusätzlich die Debug-Ausgaben aktivieren, was jedoch normalerweise
unnötig ist.
Der nächste Block bietet lediglich Links zu den Listeners und zur
Durchführung von Testanrufen.
Im folgenden Block lassen sich die Standort-Angaben (Landes- und
Ortsvorwahl) noch einmal überprüfen und über einen Link zum AVM-WebGUI
auch anpassen. Es ist zu beachten, dass Änderungen der Landes- und/oder
Ortsvorwahl erst auf der Callmonitor-Seite angezeigt werden, wenn der
Callmonitor neu gestartet wurde.
So weit sind wir aber noch nicht, vorher sind noch die Einstellungen zur
Rückwärtssuche im dritten Block zu überprüfen. Sie kann komplett
deaktiviert werden, dafür ist die Checkbox vor "Rückwärtssuche
durchführen bei" zuständig. Möchte man sie benutzen, kann der "Dienst
für die Rückwärtssuche" ausgewählt werden,
an den die Anfragen geschickt werden. Achtung: Diese Funktion setzt
eine bestehende Internetverbindung voraus - es empfiehlt sich also
irgendeine Art von always-on Flatrate für den Internetzugang zu
verwenden (z.B. Volumentarif, komplette Flat).
Falls die Telefonnummer nicht gefunden werden kann (z.B. weil der
Teilnehmer der Rückwärtssuche widersprochen hat), wird ersatzweise die
Vorwahl bei dem dort ausgewählten Dienst nachgeschlagen. Dadurch kann
zumindest der Ort angezeigt werden. Zum Schluss kann noch ausgewählt
werden, ob die Ergebnisse der Rückwärtssuche dauerhaft im Telefonbuch
(also im Flash der Box) oder flüchtig (d.h. bis zum Neustart) im
Speicher abgelegt werden. Es ist auch möglich, die Zwischenspeicherung
ganz abzuschalten. Dann wird die Rückwärtssuche immer wieder neu
durchgeführt, selbst wenn dieselbe Rufnummer schon einmal nachgeschlagen
wurde.
Die Einstellung "Vorwahl für lokale Rufnummern" wird benötigt, da im
Ortsnetz nicht (immer) die Vorwahl mit übertragen wird. In aktuellen
Versionen wird die Vorwahl automatisch aus den Einstellungen zur
Internettelefonie übernommen (in der Weboberfläche von AVM).
Listeners definieren¶
Als nächstes müssen sogenannte Listeners definiert werden, die dann bei
eingehenden Anrufen die gewünschte Aktion starten. Genaueres hierzu auf
einer speziellen Seite für die Listeners.
Testanruf¶
Sind die Listeners einmal definiert, kann und sollte man sie mit einem
Testanruf ausprobieren. Dafür kann man natürlich einen echten Anruf
machen - allerdings hat man oft nicht die Möglichkeit, spezielle Regeln
zu testen. Daher gibt es die Möglichkeit, einen Testanruf über das
Web-Interface zu generieren.
Fehlersuche¶
Die Ausgaben des Testanrufs und ggf. die Debug-Meldungen (siehe oben, um
das log zu sehen vorher in freetz-konfig diese option aktivieren um sie
in das image einzubauen) geben in den meisten Fällen ausreichend
Hinweise, warum die Aktion nicht ausgeführt wurde bzw. der Callmonitor
nicht startet. Außerdem lohnt sich auch ein Blick auf die
Wartungsseite - falls die
Callmonitor-Schnittstelle deaktiviert ist, kann dieser auch nicht
funktionieren. Einschalten mit einem Anruf der Fritzbox von einem
angeschlossenem Telefon aus mit der Nummer: #965 kann
helfen. Wenn das alles nicht weiterhilft, kann man
auf der Forumsseite für Fragen und
Diskussionen
Unterstützung bekommen.
Regeln (Listeners)¶
Die Listeners-Datei enthält eine Liste von Regeln, die festlegen, welche
Aktionen unter welchen Bedingungen ausgeführt werden sollen.
Leerzeilen werden ignoriert, ebenso Zeilen, die mit # beginnen (das
sind Kommentare).
Jede Regel steht in einer Zeile und besteht aus vier Angaben, die durch
Leerraum getrennt in dieser Reihenfolge aufeinander folgen:
- Ereignis
- Quellrufnummer: Muster für SOURCE
- Zielrufnummer: Muster für DEST
- Aktion: Beliebiger Shell-Code
Die beiden Muster für SOURCE und DEST sind "extended
regular expressions"
(ERE),
wie sie von egrep verstanden werden. Das Ereignis (ein-/ausgehender
Anruf; Klingeln, Annahme, etc.) wird mit der unten angeführten Syntax
angegeben.
Man kann negative Muster bei den Listeners verwenden, indem man ein
Ausrufezeichen voranstellt: !123 passt auf alle Nummern, die nicht
irgendwo 123 enthalten.
Beispiele:
Muster passt auf
---------------- ---------------------------------------------------------------------
`^` alle Nummern
`^034` Nummern, die mit 034 beginnen
`4563$` Nummern, die auf 4563 enden
`!^(045|0164)` Nummern, die **nicht** mit 045 oder 0164 beginnen
`^0123456$` nur genau die Nummer 0123456
`^04553...$` die Nummern, bei denen nach 04553 genau drei weitere Zeichen folgen
---------------- ---------------------------------------------------------------------
Alle Regeln werden parallel abgearbeitet; eine bestimmte Reihenfolge ist
nicht garantiert.
Damit die Listeners über das Webinterface von Freetz bearbeitet werden
können, muss dessen Sicherheitsstufe auf 0 gesetzt werden. Das ist
nötig, da über die Listeners beliebiger Code ausgeführt werden kann.
Format¶
Seit Version 1.0 des Callmonitors gilt folgendes Format für die
Listeners, mit dem auf bis zu acht verschiedene Ereignisse
unterschiedlich reagiert werden kann:
- *:request: Anruf kommt an (es klingelt)
- *:cancel: Anruf wurde abgebrochen, bevor eine Verbindung
zustande kam (so kann man direkt auf "verpasste Anrufe" reagieren) - *:connect: Verbindung beginnt
- *:disconnect: Verbindung wurde beendet
Dazu kommt die Unterscheidung zwischen
- in:*: eingehenden und
- out:*: ausgehenden Anrufen.
Das ergibt folgende Menge von Ereignissen:
| *:request *:cancel *:connect *:disconnect
----------- --------------- -------------- --------------- ------------------
| in:* in:request in:cancel in:connect in:disconnect
| out:* out:request out:cancel out:connect out:disconnect
----------- --------------- -------------- --------------- ------------------
Dazu passend haben die Listeners eine zusätzliche erste Spalte bekommen,
in der (mit Hilfe von Abkürzungen und Wildcards) das gewünschte Ereignis
angegeben werden kann, auf das die betreffende Regel reagieren soll:
in:request ^ ^1234$ xboxmessage xbox
in:cancel ^ ^ mailmessage -t test@example.com
out:cancel ^1234$ ^0123 dboxpopup dbox-a "${DEST} geht nicht ran"
*:dis ^ ^ echo "Anruf beendet: ${DURATION} Sekunden" >> log
Es kann mehrere Regeln geben, die auf dasselbe Ereignis passen.
Die Präfixe "NT:", "E:" und ":" in der SOURCE*-Spalte gibt es
nicht mehr. Eure bisherige Listeners-Datei (vor Version 1.0) könnt ihr
nicht einfach weiterverwenden. Der CallMonitor versucht aber, beim
ersten Start eine grobe Konvertierung vorzunehmen, um euch den Umstieg
zu erleichtern. Auf jeden Fall solltet ihr aber die Listeners nach der
Umstellung einmal kontrollieren.
Die Spalten 2 und 3 in den Listeners sind weiterhin Muster (reguläre
Ausdrücke) für Quell- und Zielrufnummer (SOURCE und DEST).
Dabei ist jedoch zu beachten, dass in Spalte 2 bzw. 3 die MSNs, also die
Internet-Rufnummern, anzugeben sind und nicht wie früher bspw. SIP0
oder SIP1.
Ereignis-Informationen für Aktionen¶
Den Aktionen stehen Informationen über den auslösenden Anruf in
Umgebungsvariablen bereit. Sie werden in Shell-Scripten mit einem $
referenziert, also z.B. echo $SOURCE_NAME.
Variable Inhalt | seit Version
----------------- -------------------------------------------------------------------------------------------------------------------------------------------- -----------------
EVENT das auslösende Ereignis 1.0
ID die ID des Anrufs (direkt von der Callmonitor-Schnittstelle) 1.0
UUID Global eindeutige ID für diesen Anruf (nicht für dieses Ereignis!) 1.20
TIMESTAMP der Zeitpunkt des Ereignisses (im Format "DD.MM.YY HH:MM") 1.0
SOURCE Quellrufnummer ---
SOURCE_DISP "anzeigefreundlichere" Variante von SOURCE (Landesvorwahl weg, Call-by-Call-Vorwahlen weg, etc.) 1.8
SOURCE_NAME Name der Quelle, falls dieser bestimmt werden konnte ---
SOURCE_ADDRESS Die Adresse (Straße, Stadt, Land) ist seit 1.12 separat verfügbar und nicht mehr in SOURCE_NAME enthalten 1.12
SOURCE_ENTRY Der ganze Telefonbucheintrag (entspricht dem SOURCE_NAME vor 1.12) 1.12
DEST Zielrufnummer ---
DEST_DISP "anzeigefreundlichere" Variante von DEST (Landesvorwahl weg, Call-by-Call-Vorwahlen weg, etc.) 1.8
DEST_NAME Name des Ziels, falls dieses bestimmt werden konnte ---
DEST_ADDRESS Die Adresse (Straße, Stadt, Land) ist seit 1.12 separat verfügbar und nicht mehr in DEST_NAME enthalten 1.12
DEST_ENTRY Der ganze Telefonbucheintrag (entspricht dem DEST_NAME vor 1.12) 1.12
EXT die Nebenstelle, sofern bekannt (direkt von der Callmonitor-Schnittstelle) 1.0
DURATION bei *:disconnect die Dauer des Gesprächs in Sekunden 1.0
PROVIDER Dienstleister, über den der Anruf abgewickelt wird ("POTS" für Festnetz oder "SIP0", "SIP1", ... für die verschiedenen SIP-Provider) 1.5
----------------- -------------------------------------------------------------------------------------------------------------------------------------------- -----------------
EXT kann auf einer FritzBox 7050 folgende numerische Werte haben (bei
einem eingehenden Anruf liegt diese Information erst ab in:connect vor;
vorher ist die Zuordnung ja nicht klar):
Wert Bedeutung
-------- ------------------
0 FON 1
1 FON 2
2 FON 3
3 Durchwahl
4 Fon S0
5 Fon/Fax PC
6 Anrufbeantworter
36 Data S0
37 Data PC
-------- ------------------
Formatierung der Ausgaben¶
Zur Formatierung der Ausgaben stehen folgende Funktionen bereit:
seit Version 1.8:
-
f_duration: zur Darstellung von Zeitdauern als "hh
ss"
Beispiel:
führt zu einer Ausgabe
falls DURATION den Wert 3903 hat.
Als nützlich kann sich auch die Konstante $LF erweisen, die einen
Zeilenumbruch enthält (line feed):
Muster für Ereignisse¶
Es gibt mehrere Möglichkeiten, in den Listeners die Ereignisse
anzugeben, bei der eine Regel auslösen soll:
-
Vollständige Ereignisnamen:
-
Abkürzungen des vorderen und/oder hinteren Teils:
-
Wildcards für den vorderen Teil (Richtung), den hinteren oder beide:
-
Listen dieser Bestandteile (mit Komma getrennt (Vorsicht, kein
Whitespace); die Regel passt, wenn einer der Teile passt):
Beispiele:¶
Verpasster Anruf (in:cancel) mailmessage an mehrere Email Adressen
versenden:
Von einer bestimmten Rufnummer (0401234567) eine festgelegte Rufnummer
(0401234568) anrufen und den PC über WOL (Wake on Lan) einschalten:
Benachrichtigungen über Dreambox mit Enigma2 auf Fernseher anzeigen:
Benachrichtigung per Email bei Faxempfang:
Ereignisse¶
Ein erfolgreicher eingehender Anruf erzeugt nacheinander folgende
Ereignisse (analog für ausgehende Anrufe mit out:*):
- in:request
- in:connect
- in:disconnect
Ein Anruf, der abgebrochen wird, bevor die Gegenseite ihn annimmt,
erzeugt folgende Ereignisse:
- in:request
- in:cancel
Die Ereignisse sind nicht direkt die Rohereignisse, wie sie an der
JFritz-Schnittstelle (Port 1012) sichtbar sind, sondern entstehen aus
diesen (bei gleicher ID) mit Hilfe eines endlichen Automaten (an den
Kanten sind oben die Eingangsereignisse angegeben, unten die
Ausgangsereignisse; das Ereignis in:accept wird nur intern benutzt):
Aktionen¶
Aktionen werden anhand von Regeln ausgeführt, die in den sogenannten
Listeners definiert sind. Dabei kann beliebiger
der FritzBox bekannter Shell-Code (Programme/Befehle) ausgeführt werden.
Die Aktionen müssen im Listener als Parameter
werden (siehe Beispielbild unten für die Aktion dboxpopup), wobei
Umgebungsvariablen mit Informationen über den auslösenden Anruf
verwendet werden können.
Einige Standardfunktionen werden direkt vom callmonitor bereitgestellt
und sind im Folgenden beschrieben. Mit dem Script callaction lassen
sich alle Callmonitor-Aktionen von außerhalb (z.B. von der Kommandozeile
zum Testen) aus aufrufen.
Wenn man in Verbindung mit checkmaild neu eingetroffene Emails auf
einem VDR ausgeben will, kann man das machen, indem man die Datei
/var/mod/etc/maillog.cfg z.B. wie folgt anlegt:
#!/bin/sh
# neue Email empfangen
if [ "$1" = "0" ];
then
callaction vdr m741 "Am $6 um $7 Uhr schrieb $8: $9"
fi
Hintergrundinfos zur Datei maillog.cfg und dem checkmaild Paket kann
man auch hier im Wiki unter checkmaild
nachlesen.
Benachrichtigen¶
Benachrichtigungen sind dafür da, eingehende und/oder verpasste Anrufe
über verschiedene Kommunikationswege und auf verschiedenen Geräten zu
signalisieren.
Die vorgegebenen Standardtexte der Funktionen können an die eigenen
Bedürfnisse angepasst werden.
Funktionen, die auf getmsg basieren:
- DGStation Relook 400S
- DBox
- DreamBox
- XBox
- Freecom MusicPal
Falls nötig, können beim Aufruf auch Passwörter und Benutzernamen
angegeben werden.
Funktionen, die auf rawmsg basieren:
- SoundBridge von Roku
- VDR
- YACwiki}: Yet Another Caller ID Program
Benachrichtung auf ganz anderem Wege:
- mailmessage: Benachrichtigung per Mail
- Samsung TV: Benachrichtigung
SOAP-Nachricht - Snarl: Benachrichtigung für Snarl
Wählen, Wecken, Konfigurieren¶
- Wählhilfe: Ansprechen der Wählhilfe der
FritzBox - WOL}: Wake on LAN
- Fritz!Box-Konfiguration: WLAN, SIP,
Portforwarding ein- und ausschalten
Eigene Aktionen¶
Mit den beiden Basisfunktionen getmsg und rawmsg können auf den
Zielmaschinen nahezu beliebige Funktionen ausgeführt werden --- sofern
sie dort entsprechend realisiert sind (Start über den Webserver oder
Lauschen an einem TCP-Port).
- getmsg: HTTP-GET-Requests
- rawmsg: Nachrichten über "rohe"
TCP-Verbindungen - Aufruf: Hinweise zu Funktionsaufrufen
Auch andere, selbst-definierte Aktionen sind möglich:
- Selbst-definierte Aktionen
Third-Party Software¶
CallMon2: auf Windows und Linux laufendes Perl-Skript,
http://zephyrsoftware.sf.net/
(dort genaue Informationen zum Einrichten des ganzen!)
Telefonbuch (Callers)¶
Format:
Ergebnisse der Rückwärtssuche können hier
gespeichert werden für schnelleren Zugriff in der Zukunft; natürlich
können auch von Hand Nummer-Name-Paare eingetragen oder geändert werden
- 49er-Rufnummern (ohne 00, länger als 10 Zeichen) werden erkannt
- Name des Angerufenen steht zur Verfügung (vor allem für SIP0 bis
SIP9); man kann die Zuordnung zu Namen im Telefonbuch (Callers)
vornehmen, entweder direkt für SIP0 bis SIP9 oder für Adressen der
Form "username@registrar" (das zweite hat den Vorteil, dass man
im Telefonbuch nichts anpassen muss, wenn man seine SIP-Accounts in
anderer Reihenfolge einträgt). Beim Start werden Kurznamen für alle
Accounts generiert und als Vorgabe in die Callers eingetragen. - Suchstrategie: Erst Nummer unverändert in den lokalen Telefonbüchern
(Callers, AVM-Telefonbuch) nachschlagen, dann normalisieren (evtl.
Orts- /Landesvorwahl davor; SIP[0-9] wird zu username@registrar)
und noch einmal lokal probieren. Dann erst über Rückwärtssuche im
Internet probieren.
HTTP-Requests (getmsg)¶
Die Funktion getmsg sendet eine Benachrichtigung, indem sie diese per
HTTP GET an einen Webserver schickt. Es ist möglich, die URL (nur Pfad +
Query-String, also den Teil hinter dem Host-Namen) mit
printf-Templates)
anzugeben. Im einfachsten Fall bedeutet dies, dass die Stelle in der
URL, an der die Nachricht eingesetzt werden soll, mit %s markiert
wird. getmsg sorgt selbst für die richtige Kodierung der Nachrichten
(URL Encoding).
Syntax:¶
Usage: getmsg [OPTION]... <HOST> <url-template> [<message>]...
getmsg [OPTION]... -t <url-template> <host> [<message>]...
Send a message in a simple HTTP GET request.
-t, --template=FORMAT use this printf-style template to build the URL,
all following messages are URL-encoded and filled
into this template
-d, --default=CODE default for first parameter (eval'ed later)
-p, --port=PORT use a special target port (default 80)
-w, --timeout=SECONDS set connect timeout (default 3)
-v, --virtual=VIRT use a different virtual host (default HOST)
-U, --user=USER user for basic authorization
-P, --password=PASS password for basic authorization
--help show this help
Die folgenden Funktionen basieren auf getmsg und unterstützen daher
dieselben Optionen. Passend für den entsprechenden Empfänger sind
URL-Template (-t), die Standard-Nachricht (-d) und der Port (-p)
schon vorbelegt.
Beispiel:¶
*:* ^ ^ getmsg 192.168.0.111 -p 222 -t "/home/phone?event=%s&id=%s&time=%s&source=%s&source_name=%s&destination=%s&destination_name=%s&extension=%s&duration=%s&provider=%s" "${EVENT}" "${ID}" "${TIMESTAMP}" "${SOURCE}" "${SOURCE_NAME}" "${DEST}" "${DEST_NAME}" "${EXT}" "${DURATION}" "${PROVIDER}"
Das obere Beispiel bewirkt einen GET-Aufruf an
http://192.168.0.111:222/home/phone
mit allen relevanten Daten im Query-String.
DBox2¶
DBox2 mit Neutrino Image¶
Die Funktion unterscheiden sich nur darin, ob die angezeigte Nachricht
von alleine nach einiger Zeit verschwindet oder explizit bestätigt
werden muss.
default_dboxmessage und default_dboxpopup haben die Funktion default_dbox
als gemeinsame Grundlage.
Stellt eine Nachricht auf dem LCD der DBox dar.
DBox2 mit Enigma Image¶
Wenn ihr ein Enigma Image auf eurer Box habt und im Popup vor dem
eigentlichen Text ein "popup=" oder "nmsg=" erscheint, so könnt ihr
wie bei der Dreambox folgenden Befehl nutzen:
Wählhilfe¶
Die aus dem Webinterface von AVM bekannte Wählhilfe steht hier als
Funktion zur Verfügung (seit Callmonitor 1.1).
Das erste Argument ist die zu wählende Nummer, das zweite (optional) der
Port (1, 2, 3, 50, 51, ...), natürlich ohne die eckigen Klammern.
Die Ports 1 bis 3 sind die analogen Telefonen, 50 alle ISDN-Telefone, ab
51 die einzelnen ISDN-Telefone.
Auflegen ist auch möglich (seit Callmonitor 1.5):
Selbstdefinierte Aktionen¶
Eigene Aktionen können als Shell-Funktionen in einer oder mehreren
Dateien /tmp/flash/callmonitor/actions.local.d/*.sh abgelegt werden.
(Es können so auch Standard-Funktionen überschrieben werden, z.B.
default_message())
Natürlich können auch beliebige externe Programme aufgerufen werden.
Benutzernamen und Passwörter¶
Alle Aktionen, die auf getmsg basieren, verstehen folgende Optionen,
mit denen man Benutzername und Passwort für das Webinterface der Zielbox
angeben kann:
Außerdem können die Daten in einer Kurzschreibweise direkt beim
Hostnamen angegeben werden:
Beispiel¶
Also zum Beispiel:
Das bewirkt das gleiche wie
oder
Oder falls die D-Box auf einem anderen als dem Standardport lauscht:
dboxmessage john:secret@mydbox:3818
dboxmessage --user=john --password=secret --port=3818 mydbox
Freecom MusicPal¶
Version 1.15.1 enthält die neue Aktion musicalpalmessage, mit der
man Nachrichten auf dem Display eines MusicPals von Freecom darstellen
kann. Es werden maximal zwei Zeilen unterstützt; die Anzeigedauer
(standardmäßig 25 Sekunden) kann über die Umgebungsvariable
MUSICPAL_TIMEOUT verändert werden. Für den Fall, dass die Anzeige
vorher freigegeben werden soll, steht die Aktion musicalpalclear
bereit.
Einige Beispiele:
# Standardnachricht, Benutzername und Passwort "admin"
musicpalmessage musicpal.domain.my
# eigene Nachricht mit zwei Zeilen, andere Zugangsdaten
musicpalmessage --user="root" --password="secret" musicpal.domain.my "Wichtiger Anruf${LF}von ${SOURCE}!"
# alternative Syntax
musicpalmessage root:secret@musicpal.domain.my "Wichtiger Anruf${LF}von ${SOURCE}"
# Nachricht löschen
musicpalclear musicpal.domain.my
Zum Anpassen der Standardnachricht kann die Shell-Funktion
default_musicpalmessage überschrieben werden.
Roku SoundBridge¶
Die Roku
SoundBridge
kann auf ihrem Display Nachrichten darstellen. Seit Callmonitor 1.12.4
stehen drei Funktionen zur Ansteuerung zur Verfügung:
Zur Anzeige einer statischen Nachricht. Mit der Umgebungsvariable
SB_TIMEOUT kann die Dauer der Anzeige bestimmt werden.
Zur Anzeige eines Lauftexts. Mit der Umgebungsvariable SB_TIMES kann
festgelegt werden, wie oft die Nachricht wiederholt werden soll.
Zur Anzeige einer statischen, mehrzeiligen Nachricht. Mit der
Umgebungsvariable SB_TIMEOUT kann die Dauer der Anzeige bestimmt
werden.
VDR¶
VDR: Video Disk Recorder,
http://www.cadsoft.de/vdr/
Benachrichtigung auf einem Samsung TV¶
Die Funktion samsung verschickt eine Benachrichtigung über einen
Telefonanruf mit Hilfe der SOAP-Methode an ein Samsung TV:
Also z.B.:
Es werden der Anrufer-Name (sofern im Telefonbuch oder in den Callers
eingetragen, ansonsten die Telefonnummer), die angerufene Nummer, sowie
Datum und Uhrzeit angezeigt. Die Länge der darstellbaren Zeichen hängt
vom Inhalt ab. Wenn nicht mehr Text angezeigt werden kann (z.B. bei
Adresszusätzen in den Callers), wird er am Ende abgeschnitten, so dass
er mit "..." endet.
Der Listener-Eintrag im Callmonitor kann dazu z.B. so aussehen:
Zum Testen kann man folgendes direkt vom Terminal der Fritzbox
ausführen:
Die Funktion samsung_text verschickt eine Nachricht mit Hilfe der
SOAP-Methode an ein Samsung TV, z.B.:
echo "Hello, world!" | callaction samsung_text 192.168.178.19 \
--from="Absender" --from-number="069 123456" \
--to-number="089 987654" --to="Empfänger" \
--date="2010-05-21" --time="21:56:00"
Analog zum obigen Beispiel werden hier Anrufer-Name und dessen
Telefonnummer, Empfänger-Name und dessen Telefonnummer sowie Datum und
Uhrzeit angezeigt. D.h. die Nachricht wird mit derselben Methode (SOAP)
wie bei der Benachrichtigung über einen Telefonanruf verschickt, zzgl.
der o.g. Daten.
Snarl¶
Snarl ist
ähnlich wie Growl, welches einigen vielleicht bekannt ist, ist ein
Benachrichtigungs-Programm ("notification"), welches im Hintergrund
läuft und von verschiedenen Programmen etc. angesprochen werden kann.
Vorteil ist, dass man so benutzerdefinierte, systemweit einheitliche
Benachrichtigungen erhält.
Snarl verwendet ein eigenes Protokoll, welches sich SNP
(Snarl Network
Protocol) nennt.
Mittels "rawmsg" wird an eine IP (Port 9887) im Netzwerk, an dem Snarl
wiederum selbst lauschen muss, eine Nachricht gesendet. Snarl zeigt
diese vom Callmonitor über SNP übermittelte Benachrichtigung dann an.
Also z. B. so:
echo -n "type=SNP#?version=1.0#?action=notification#?title=Anruf#?text=${SOURCE}#?timeout=20"$'\r\n' | nc IP 9887
(buehmann hat in diesem
Thread
gezeigt, wie es geht. Danke!)
Listener-Eintrag:¶
Der Listener-Eintrag im Callmonitor kann dazu z.B. so aussehen:
in:request ^ ^ echo -n "type=SNP#?version=1.0#?action=notification#?title=eingehender Anruf#?text=von ${SOURCE} - ($SOURCE_NAME)${LF}für ${DEST_NAME} - (${DEST_DISP})${LF}#?timeout=20#?icon=C:\pic.png"$'\r\n' | nc 192.168.178.20 9887
Screenshots:¶
So könnte eine Benachrichtung von Snarl dann aussehen. Die Angaben
betreffend Anrufer, Rufnummer, Ereignis etc., lassen sich ja mittels des
Callmonitor entsprechend anpassen bzw. erweitern.
Wichtig: "Curl" oder "getmsg" können [nicht] benutzt
werden, diese sind nur für das HTTP (Protokoll) geeignet und
funktionieren nicht mit dem SNP von Snarl.
XBox¶
Für diese Funktion muss das XBox Media Center
(XBMC) laufen und dort unter
Einstellungen → Netzwerk der Webserver aktiviert werden. Ggf. mit den
Optionen (s.o.) Port, Username und Passwort übergeben. Das XBMC stellt
die Nachricht dann in einem kleinen Fenster dar, das automatisch
geschlossen wird.
Die XBox erlaubt mit xboxmessage keine Kommas in den Nachrichten. Der
Titel der Nachricht kann über die Umgebungsvariable
XBOX_CAPTION="Telefonanruf" beeinflusst werden.
Anpassungen auf der XBox¶
Anzeigedauer und Größe des Fensters können in der Datei
DialogKaiToast.xml angepasst werden. Je nach gewähltem TV-Typ ist die
jeweilige Datei unter skin\Project Mayhem III\PAL\ oder
skin\Project Mayhem III\PAL16x9\ zuständig. Folgende Überarbeitung der
"PAL"-Datei erreicht ein brauchbares Ergebnis (nur geänderte Zeilen):
...
<coordinates>
<system>1</system>
<posx>275</posx>
<posy>420</posy>
</coordinates>
<animation effect="slide" time="5000" start="300,0">WindowOpen</animation>
<animation effect="slide" time="5000" end="300,0">WindowClose</animation>
...
<control>
<description>Popup Kai Toast Dialog Background</description>
...
<width>400</width>
<height>125</height>
...
<control>
<description>avatar</description>
...
<posx>40</posx>
<posy>25</posy>
...
<control>
<description>Caption Label</description>
...
<posx>46</posx>
<posy>30</posy>
<width>305</width>
...
<control>
<description>Description Button</description>
...
<posx>46</posx>
<posy>46</posy>
<width>305</width>
...
Weitere Möglichkeiten¶
Es gibt außerdem einen
Python-Script,
das eine CallerID-Anzeige auf der Xbox ermöglicht. Dann kann die
Nachricht mit der Funktion yac an die XBox gesendet werden. Das Script
ist auch im Script
xbmcfritz
enthalten, das zusätzlich die Anruferliste der FritzBox auf der XBox
darstellen kann.
YAC¶
YAC: Yet Another Caller ID Program,
http://sunflowerhead.com/software/yac/
Syntax:
Allgemeine Hinweise zu Funktionsaufrufen¶
Der Aufruf von Funktionen, die auf getmsg oder rawmsg basieren,
sieht immer so aus:
Der einfachste und am meisten genutzte Fall ist dementsprechend
Als Optionen können alle Optionen verwendet werden, die auch
getmsg bzw. rawmsg verstehen.
Die Standard-Nachricht wird generell von einer Funktion mit der
Namenskonvention default_foomessage erzeugt und kann so einfach
überschrieben wird.
Bei den Funktionen können eventuell Umgebungsvariablen verwendet werden.
Diese werden vor dem Funktionsaufruf gesetzt. Der Callmonitor sorgt
automatisch für die Kodierung der Umgebungsvariablen, die Text enthalten
(z.B. XBOX_CAPTION und DREAM_CAPTION). Man kann also einfach
schreiben, ohne sich Gedanken über Kodierungen (URL- oder printf-)
machen zu müssen.
FritzBox-Konfiguration¶
Mit der Aktion config aus der config.sh (seit Callmonitor 1.8)
lassen sich einige Funktionen in der Konfiguration der FritzBox
umstellen.
Portforwarding¶
Das Portforwarding kann aktiviert und deaktiviert werden.
Syntax:
config forward <NUMMER> <on|off|toggle>
NUMMER Nummer des Portforwardings (beginnend bei 1)
on|off|toggle an- bzw. abschalten des Portforwardings: an, aus,
an-/abschalten des Forwardings abhängig der bereits
erfolgten Einstellung
Beispiele:
config forward 1 on # 1. Portforwarding aktivieren
config forward 3 off # 3. Portforwarding deaktivieren
config forward 5 toggle # 5. Portforwarding an-/abschalten
WLAN¶
Das WLAN kann aktiviert und deaktiviert werden.
Syntax:
config wlan [2.4|5|guest] <on|off>
2.4|5 gewünschtes Frequenzband: 2,4 oder 5 GHz
guest Gast-WLAN schalten (seit Version 1.20.1)
on|off an- bzw. abschalten des WLANs
Fehlt die Angabe des Frequenzbandes, werden beide geschaltet, aber nur
das 2,4er abgefragt.
Beispiele:
config wlan off # WLAN aus
config wlan on # WLAN an
config wlan 2.4 off # WLAN im 2,4-GHz-Band aus
config wlan 5 on # 5-GHz-WLAN an
DECT¶
DECT kann aktiviert und deaktiviert werden.
Beispiele:
SIP¶
Die SIP-Accounts können aktiviert und deaktiviert werden.
Syntax:
config sip <NUMMER> <on|off>
NUMMER Nummer des SIP-Accounts (beginnend bei 1)
on|off an- bzw. abschalten des SIP-Accounts
Beispiele:
config sip 4 on # 4. SIP-Account aktivieren
config sip 2 off # 2. SIP-Account deaktivieren
Rufumleitung¶
(De-)Aktivierung der Rufumleitungen. (Seit Version 1.8.2) Unterstützt
werden momentan nur Rufumleitungen des Typs "Anrufe von Rufnummer xy",
nicht aber "Alle Anrufe an Fon X".
Syntax
config diversion <NUMMER> <on|off>
NUMMER Nummer der Rufumleitung (beginnend bei 1)
on|off an- bzw. abschalten der Rufumleitung
Abfragen von Konfigurationswerten¶
(seit Version 1.9.1)
Einfach beim config-Aufruf den Wert weglassen:
Ausgabe ist einer der Werte "on", "off" oder "error" (wenn z.B.
die Wahlregel nicht existiert).
Alternative¶
In neueren Firmware-Versionen ist der Callmonitor nicht unbedingt
erforderlich, um die Funktionen anzuzeigen oder zu ändern. Alternativ
lassen sich diese mit dem
ctlmgr_ctl
von AVM bearbeiten.
DreamBox¶
Dreambox mit Enigma 1¶
Wie zu sehen ist, ist "host" (also Rechnername oder IP-Adresse) der
einzige Pflichtparameter. Damit die Nachricht aber auch wirklich
ankommt, muss die Authentifizierung berücksichtigt werden. Eine Lösung
ist es, wie beigefügter Screenshot aufzeigt, das Abschalten der
Nachrichten-Authentifizierung auf der Box selbst. Wer das nicht will,
dem bleibt zur Zeit nur, user:password@ vor den Host zu setzen - was
dann allerdings bei den Listeners im Klartext angezeigt wird.
dreammessage kennt ein Standard-Nachrichten-Template, was
normalerweise verwendet wird. Wer die Nachricht lieber selbst
formatieren will, findet bei den Listeners eine Liste mit
verwendbaren Platzhaltern für Telefonnummer, Zeilenumbrüche, usw.
Desweiteren gibt es drei Umgebungsvariablen, die das Verhalten von
dreammessage beeinflussen. Sie sind hier in einem typischen Aufruf mit
ihren Standardwerten gezeigt:
StandBy Check¶
Befindet sich die zu benachrichtigende Dreambox im StandBy, werden die
Nachrichten solange zwischengespeichert, bis sie wieder aus selbigem
aufwacht. An und für sich ganz nett - nur wenn man sie gerade mal ein
paar Tage nicht benutzt hat, und dann nach dem Anschalten erstmal
hunderte von "verpassten" Anrufen zu sehen bekommt. Daher wäre es für
manchen sicher praktisch, würden die Nachrichten nur dann (und zwar
sofort) zugestellt, wenn die Dreambox sich zum Zeitpunkt des Anrufes
nicht im StandBy befindet - während andernfalls die Benachrichtigung
komplett unterbliebe.
Glücklicherweise ist das machbar (getestet mit DM600, DM 7000 und
DM7020). Auf folgende Weise lässt sich nämlich der Status ermitteln:
# keine Passwort-Authentifizierung aktiv:
standby=`wget -O- "http://dreambox/cgi-bin/status" | awk '/Standby/' | sed -e 's/<[^>]*>//g'`
# mit Passwort-Authentifizierung:
standby=`wget -O- --http-user=root --http-passwd=dreambox "http://dreambox/cgi-bin/status" | awk '/Standby/' | sed -e 's/<[^>]*>//g'`
Je nachdem, ob das WebIF für Passwort-Authentifizierung konfiguriert ist
oder nicht, kann man also die entsprechende Variante nutzen. Das
busybox-wget unterstützt allerdings keine Authentifizierung. Daher muss
beim Bauen von freetz das Paket 'wget' installiert werden. Die
Variable $standby ist anschließend entweder mit STANDBY:ON oder
STANDBY:OFF belegt. Für unsere Benachrichtigungs-Aktion können wir uns
das wie folgt nutzbar machen:
[ "$(wget -O- "http://dreambox/cgi-bin/status" | awk '/Standby/' | sed -e 's/<[^>]*>//g')" = "Standby:OFF" ] && DREAM_TIMEOUT=10 dreammessage dreambox "${SOURCE_DISP} ruft an.${LF}${SOURCE_NAME}"
wobei natürlich dreambox mit dem Hostnamen bzw. der IP-Adresse der
Dreambox ersetzt, sowie ggf. die Passwort-Authentifizierung mit
eingebaut werden muss.
Quelle: IPPF
Thread
DreamBox mit Enigma 2¶
DREAM_TIMEOUT und DREAM_ICON werden auch hier unterstützt.
Beispiel für ein Popup das nur den Namen (sofern in der Callers
vorhanden) und die Telefonnummer des Anrufers anzeigt:
E-Mail-Benachrichtigung¶
Die Funktion mailmessage verschickt eine E-Mail mit Hilfe der Daten,
die für den Push-Service eingerichtet sind (falls man nicht beim Aufruf
etwas anderes befiehlt (mailer-Optionen)). Der Push-Service selbst kann
ruhig ausgeschaltet bleiben, wichtig sind die Einstellungen für
Adressen, Mailserver & Co. Beispiele zum Einsatz in Listeners:
- Mailadressen, Servereinstellungen, Passwörter & Co. werden aus der
Konfiguration des Push Service der FritzBox übernommen. Einzelne
Teile können durch Optionen überschrieben werden (im Beispiel zum
Beispiel die Zieladresse mit-t). -
Die Optionen werden an
maildurchgereicht; diese wiederum
größtenteils anmailer. Deswegen können folgende Optionen
verwendet werden: -
Zur Anpassung der Mails: siehe
mail_subjectundmail_bodyin
mail.sh(zum Überschreiben am besten
/tmp/flash/callmonitor/actions.local.d/verwenden, siehe Anpassen
der Benachrichtigungstexte).
mail¶
mail ist ein Skript, um Mails bei Mailserverfehlern
zwischenzuspeichern und erneut zu schicken (alle Parameter und
Attachments werden gepackt in /var/spool/mail/ abgelegt).
- Es wird von der Aktion mailmessage verwendet.
- Ihr solltet regelmäßig (mit cron) ein
mail processausführen, um
evtl. wartende Mail zu versenden. mailgehört streng genommen nicht unbedingt zum Callmonitor, weil
auch andere Dienste es brauchen könnten; vielleicht wird in Zukunft
mal ein eigenes Paket daraus.
Ersatz für mail_missed_call¶
Die Funktion mail_missed_call existiert seit Version 1.0 nicht mehr.
An ihre Stelle tritt eine allgemeine Benachrichtigungsfunktion per
E-Mail (mailmessage), die (auch) in Kombination mit dem Ereignis
in:cancel genutzt werden kann, um bei verpassten Anrufen eine Mail zu
verschicken:
Das schöne ist, dass die Mail sofort rausgeschickt wird, wenn der
Gesprächspartner aufgibt; es gibt keine Wartezeit von einer Minute mehr
wie in den Vorversionen. Außerdem kann jetzt zuverlässiger bestimmt
werden, wann ein Anruf verpasst wurde.
Aber natürlich kann man sich so auch per Mail über alle eingehenden
Anrufe informieren lassen, oder über alle ausgehenden an eine bestimmte
Nummer oder oder oder ...
DGStation Relook 400S¶
Die DGStation Relook
400S unterstützt nur die Anzeige
einer kurzen Zeile ohne Umlaute. Die Anzeigedauer kann über die
Umgebungsvariable RELOOK_TIMEOUT beeinflusst werden (in Sekunden).
Beispiel für Benutzung mit veränderter Anzeigedauer (25 Sekunden):
Einfache TCP-Verbindungen (rawmsg)¶
Usage: rawmsg [OPTION]... <HOST> <template> [<param>]...
rawmsg [OPTION]... -t <template> <host> [<param>]...
Send a message over a plain TCP connection.
-t, --template=FORMAT use this printf-style template to build the message,
all following parameters are filled in
-d, --default=CODE default for first parameter (eval'ed later)
-p, --port=PORT use a special target port (default 80)
-w, --timeout=SECONDS set connect timeout (default 3)
--help show this help
Die folgenden Funktionen basieren auf rawmsg und unterstützen daher
dieselben Optionen. Passend für den entsprechenden Empfänger sind
URL-Template (-t), die Standard-Nachricht (-d) und der Port (-p)
schon vorbelegt.
Wake on LAN¶
Zum Aufwecken eines Rechners im LAN --- sofern der Rechner dies generell
unterstützt --- dient das in Freetz
vorhandene Programm ether-wake. Zur Benutzung sei auf dessen
Online-Hilfe verwiesen:
Usage: ether-wake [-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC
Send a magic packet to wake up sleeping machines.
MAC must be a station address (00:11:22:33:44:55) or
a hostname with a known 'ethers' entry.
Options:
-b Send wake-up packet to the broadcast address
-i iface Use interface ifname instead of the default "eth0"
-p pass Append the four or six byte password PW to the packet
Wartung¶
Die Wartungsseite im Web-Interface ermöglicht folgendes:
- Telefonbuch aufräumen: Sortiert die Einträge im Telefonbuch und
entfernt Leerzeilen. - SIP-Update durchführen: Erstellt Standardeinträge im Telefonbuch für
neu angelegte Internetrufnummern. - Callmonitor-Schnittstelle (Port 1012) (de)aktivieren: Aktiviert bzw.
deaktiviert die Callmonitor-Schnittstelle an Port 1012. Der
Callmonitor funktioniert nur mit aktivierter Schnittstelle.
Die Wartungsseite findet man im Freetz Webinterface unter Extras ⇒
Wartung.
Rückwärtssuche¶
Die Rückwärtssuche wird in der Basiskonfiguration
des Callmonitors eingestellt. Sie wird bei einem der folgenden Dienste
durchgeführt:
- http://telefonbuch.de/
- http://inverssuche.de/
- http://goyellow.de/
- http://11880.com/
- http://www.dasoertliche.de/
- http://tel.search.ch/
- http://www.das-telefonbuch.at/
- http://www.anywho.com/
Optional kann eine zusätzliche Suche bei Google nach dem Ortsnetz des
Anrufers durchgeführt werden. Das Ergebnis dieser Suche wird nur
verwendet, wenn die volle Rückwärtssuche kein Ergebnis liefert.
- Bei ausgehenden Anrufen wird für die angerufene Nummer ggf. eine
Anfrage durchgeführt, nicht für die eigene. - Rückwärtssuche mit dauerhaftem (im Flash), flüchtigen (im RAM) oder
ohne Caching möglich
Testanruf¶
Nachdem die Listeners definiert sind, empfiehlt
es sich, sie auf korrekte Funktion zu testen. Da man nicht immer jede
Konfiguration mit echten Anrufen testen kann, gibt es eine Seite im
Web-Interface, die Anrufe simuliert. Dabei klingeln keine Telefone, es
wird lediglich dem CallMonitor ein Anruf vorgetäuscht, den er wie einen
echten Anruf behandelt.
Die Maske sollte weitgehend selbsterklärend sein. Unter "Ereignis"
kann man einstellen, welches Ereignis
simuliert werden soll. Die Quellrufnummer ist diejenige, von der dieses
Ereignis ausgeht und die Zielrufnummer diejenige, die das Ziel des
Ereignisses ist. Man gibt jeweils ein Ereignis mit Rufnummern ein, die
zu einem in den Listeners definierten Muster passen. Nach einem Klick
auf "Testanruf" sollte der Callmonitor nun die zu diesem
Listener-Eintrag gehörende Aktion ausführen. Im Webinterface werden die
Debug-Informationen des Callmonitors angezeigt, die bei einer
eventuellen Fehlersuche helfen.
Callmonitor-FAQ¶
- Kann ich das Ergebnis der Rückwärtssuche auch auf meinem DECT-Telefon sehen?
Nein. Es gibt momentan keine bekannte Möglichkeit, in die
Anrufsignalisierung über DECT einzugreifen.
Anpassen der Benachrichtigungstexte¶
Um den Inhalt einer Benachrichtigung an die eigenenen Bedürfnisse
anpassen, gibt es folgenden Weg:
- Verzeichnis
/tmp/flash/callmonitor/actions.local.derstellen - darin eine Datei
foobar.shanlegen (oder irgendetwas anderes mit
Endung.sh) - dorthinein nur die zu überschreibende Funktion kopieren (z.B.
mail_body() { ... }) und anpassen (oder nur Variablen setzen wie
z.B.RELOOK_TIMEOUT) modsave flashaufrufen, um die Datei im Flash zu sichern- Callmonitor neustarten
Bei den meisten Aktionen ist eine Funktion
default_foomessage vorgesehen, die die Standardnachricht für diesen
Typ Aktion erzeugt; diese Funktion kann also einfach überschrieben
werden. Bei mailmessage mail gibt es z.B.
mail_subject und mail_body; bei anderen Aktionen hilft nur ein Blick
in den Quelltext (oder eine Nachfrage), solange bis deren Funktionen
auch im Wiki beschrieben sind.
![[Callmonitor WebInterface]](../../../docs/screenshots/6_md.png)
![[Callmonitor: Listener Konfiguration]](../../../docs/screenshots/20_md.png)
![[CallMonitor: Ereignisse]](../../../docs/screenshots/36_md.png)
![[Callmonitor Callers]](../../../docs/screenshots/216_md.png)
![[Snarl Beispiel]](../../../docs/screenshots/171_md.png)
![[Snarl Beispiel]](../../../docs/screenshots/167_md.png)
![[Snarl Beispiel]](../../../docs/screenshots/173_md.png)
![[CallMonitor: Dreambox Auth abschalten]](../../../docs/screenshots/1_md.jpg)
![[Callmonitor: Wartung]](../../../docs/screenshots/24_md.png)
![[Callmonitor: Rückwärtssuche]](../../../docs/screenshots/23_md.png)
![[Callmonitor: Testanruf]](../../../docs/screenshots/22_md.png)