Fritz!Box: Anrufinfo per SMS inkl. Rückwärtssuche

Mit der Fritz!Box lassen sich ja bekanntermaßen eine Menge netter Dinge anstellen. So haben die Entwickler z.B. auch daran gedacht, bei jedem Anruf ein bestimmtes Skript ausführen zu lassen, welches man wunderbar für eine solche Benachrichtigung verwenden kann.

Seit einigen Tagen ist nun meine selbstgebastelte SMS-Notification bei Anrufen “produktiv”. Angeregt durch diesen Thread im IP-Phone-Forum habe ich mich dran gemacht und die Sache ein wenig verfeinert. Alles was man benötigt, ist eine halbwegs aktuelle Fritz!Box, einen Account bei Fullsms.de, einen Telnet-Zugang auf der Box und ein bisschen Erfahrung mit vi.

Meine Anleitung ist auch hier im Forum zu finden, allerdings poste ich sie hier nochmal aus Archivierungszwecken 😉Folgenden Inhalt an die /var/flash/debug.cfg anhängen (Achtung, innerhalb von /var/flash nur mit “nvi” arbeiten):

# create urlencode.sed
cat > /var/tmp/urlencode.sed << 'ENDURLENCODE' s/%/%25/g s/ /%20/g s/ /%09/g s/!/%21/g s/"/%22/g s/#/%23/g s/\$/%24/g s/\&/%26/g s/'\''/%27/g s/(/%28/g s/)/%29/g s/\*/%2a/g s/+/%2b/g s/,/%2c/g s/-/%2d/g s/\./%2e/g s/\//%2f/g s/:/%3a/g s/;/%3b/g s//%3e/g s/?/%3f/g s/@/%40/g s/\[/%5b/g s/\\/%5c/g s/\]/%5d/g s/\^/%5e/g s/_/%5f/g s//%60/g
s/{/%7b/g
s/|/%7c/g
s/}/%7d/g
s/~/%7e/g
ENDURLENCODE

Dies stellt das sed-File zur Verfügung, das wir später benötigen, um aus dem Text einen gültigen “urlencoded” String zu machen, da der Text ebenso wie die anderen Parameter per GET übergeben wird.
Die /var/flash/calllog sieht aus wie folgt:

#! /bin/sh
#################################################
# Fritz!Box – Calllog
# Benachrichtigung über neue Anrufe per SMS fullsms.de
# Autor: Fabian Fischer – ff@nodomain.cc
# Quelle: http://www.ip-phone-forum.de/showthread.php?t=98161
# Danke an die vorigen Autoren!
#################################################
# Konfiguration
user=USER
pass=PASS
from=Fritz!Box
to=HANDYNR
#################################################

CID=$1
name=””
ParseTelefonbuch() {
export REQUEST_METHOD=”GET”
export REMOTE_ADDR=”192.168.178.1″
export QUERY_STRING=”getpage=../html/de/menus/menu2.html_
&var:lang=de&var:menu=fon&var:pagename=fonbuch”
cd /usr/www/html/cgi-bin
./webcm | sed -n ‘s/^.*document.write(TrFon(.*”, “\(.*\)”, “.*’$*’.*/\1/p’
}

if [ -z “$CID” ]
then
CID=”unbekannt”;
name=”-”
else
name=
ParseTelefonbuch $CID

if [ -z "$name" ]
then
url="http://www.dasoertliche.de/?form_name=search_inv\_
&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE_
&la=de&rci=no&ph=${CID}";
name=$(wget -q -O - "$url" | grep class=\"entry\" | sed -e 's/<[^<]*>
/\ /g;s/^[^a-zA-Z0-9]*//;s/ /, /g');
if [ -z "$name" ]
then
name="kein Eintrag"
fi
fi
fi

echo $name >/var/tmp/calllog.txt

echo "#########################"
echo "
date +\”%d.%m.%y %H:%M\”- Anruf von $CID ($name) an $2 ($3) $4"
echo

# Text erzeugen
echo "
date +\”%d.%m.%y %H:%M\”- Anruf von $CID ($name) an $2 ($3) $4"|_
sed -f /var/tmp/urlencode.sed > /var/tmp/calllog.txt

text=cat /var/tmp/calllog.txt`

# Text an Handy senden (fullsms.de)
# echo $text
wget -O – “http://www.fullsms.de/gw/?user=$user&passwort=$pass&typ=3_
&handynr=$to&absender=$CID&text=$text”

Wer möchte kann den Parameter “absender” mit $from belegen, dann sieht man dort immer den oben angegebenen Absender. Heute fiel mir aber ein, dass die Caller-ID viel interessanter ist, da man bei vielen Handy diese Nummer gleich zurückrufen kann.
Die Zuordnung Nummer -> Name geschieht entweder über einen Eintrag im internen Fritz!Box-Telefonbuch (falls vorhanden) oder über eine Rückwärtssuche bei dasoertliche.de 🙂

Achtung: das Zeichen “_” stellt einen Zeilenumbruch dar, der aufgrund des Layouts hier nötig war. Diese Zeilen gehören selbstverständlich zusammen!

7 Replies to “Fritz!Box: Anrufinfo per SMS inkl. Rückwärtssuche”

  1. > Achtung: das Zeichen “_” stellt einen Zeilenumbruch dar, der aufgrund des Layouts hier nötig war.
    Verbietet das w3c pre mit width zu formatieren? 🙂

  2. Gibt es eine Möglichkeit, daß man _nur_ eine SMS bekommt, wenn man den Anruf _nicht_ entgegen genommen hat?

    So erhält man ja bei jedem Anruf eine SMS, was ja mit der Zeit richtig ins Geld gehen kann!

  3. Moin… wenn ich “pre” verwenden würde, dann würde mir das nl2br-Plugin dazwischen funken. Deswegen nehm ich blockquote oder code. Ist nicht so ganz trivial 😉

  4. Also, ich hab die Lösung, es ist ganz einfach. Das Ende der calllog wie folgt verändern:

    if [ $CID != “fgrep $CID /var/tmp/lastcaller.txt” ]
    then
    # Text erzeugen
    echo “date +"%d.%m.%y %H:%M" – Anruf von $CID ($name) an $2 ($3) $4″| sed -f /var/tmp/urlencode.sed > /var/

    text=cat /var/tmp/calllog.txt

    # Text an Handy senden (fullsms.de)
    # echo $text
    wget -O – “http://www.fullsms.de/gw/?user=$user&passwort=$pass&typ=3&handynr=$to_
    &absender=$CID&text=$text”
    fi

    # CID nach /var/tmp/lastcaller speichern
    echo $CID > /var/tmp/lastcaller.txt

    Dadurch wird die gerade anrufende Nummer nach lastcaller.txt gespeichert und eine SMS wird nur noch versandt wenn jemand anderes anruft. Somit wird verhindert, dass man 10 SMS bekommt, wenn dieselbe Person 10x anruft.

Leave a Reply

Your email address will not be published. Required fields are marked *