Quick'n'Dirty: SMS-Benachrichtigung bei eingehenden Anrufen

SeTTembrinY schrieb:
Du hast Recht, ich hatte mich da wohl verkuckt... ich werd das heut Abend nochmal checken.
Bei Dir hatte es geklappt, oder?

Ja, ich hätte es sonst nicht gepostet.

TF
 
echo irgendwas>/var/flash/calllog überschreibt,
echo nochmehr>>/var/flash/callog geht nicht (cdev!)
cp /var/tmp/textfile /var/flash/calllog geht (und überschreibt)
nvi /var/flash/calllog ist auch prima (ein vi wrapper)
 
cactus-online schrieb:
Ja, ich hätte es sonst nicht gepostet.

TF

...ich hatt' ja nur gefragt.

Aber bei mir gings jetzt erst als im wget anstatt die $caller den $1 reingenommen habe.
Nun rockts aber! Danke!

Ich will ja net unverschämt sein, aber eine Frage hätte ich ja doch noch (ich hätte den Threadtitel vielleicht genau lesen sollen): Ist es möglich die Mail nur bei verpassten Anrufen verschicken zu lassen?
 
Das wäre eine gute Sache, würd' ich mir auch wünschen...

Aber durch die Struktur der Sache wohl unmöglich, da das "Calllog"-Script - wenn ich mich nicht täusche - immer beim Event "RING" aufgerufen wird und nicht selbst erkennen kann, ob auch noch ein CONNECT oder DISCONNECT folgen.

Dazu sollte man eher den Port 1012 überwachen, ob zum gleichen Anruf die Sequenz RING-DISCONNECT (statt RING-CONNECT-DISCONNECT) vorliegt - denn dann hat man einen "verpassten" Anruf. Eine eigentlich triviale Aufgabe, könnte man auch schön am PC testen (so man den Port freigeschaltet hat). Eine schöne Zusatz-Aufgabe für irgendeinen der Call-Monitore hier vielleicht?!
 
Geht das auch mit der 5012 ?? Den bei mir tut sich leider nix :(

Und nach nem reboot ist irgendwie auch alles wieder weg.
 
SeTTembrinY schrieb:
...ich hatt' ja nur gefragt.

Aber bei mir gings jetzt erst als im wget anstatt die $caller den $1 reingenommen habe.
Nun rockts aber! Danke!

Da ist richtig. Danke.

Ich will ja net unverschämt sein, aber eine Frage hätte ich ja doch noch (ich hätte den Threadtitel vielleicht genau lesen sollen): Ist es möglich die Mail nur bei verpassten Anrufen verschicken zu lassen?

Genau DAS hätte ich auch gern. Leider schafft AVM es offensichtlich nicht einmal diese hier beschriebene (ja eigentlich schon zu 99,5% vorhandene) Funktion "offiziell" einzubauen (dabei ginge aus nur darum, ein wenig Code im Web-Frontend unterzubringen).

Moonbase hat vermutlich im Prinzip recht. Die Lösung via Anrufmonitor bringt mir perösnlich aber gar nix, weil ich ja eben NICHT immer noch einen PC laufen haben will (naja wenn es es eine simple and stupid solution für eine Linux-PPC-Büchse gäbe, könnte ich damit eventuel auch leben).

Fazit, besser alle Anrufe per SMS/eMail als gar keine ... .

TF
 
SeTTembrinY schrieb:
Ist es möglich die Mail nur bei verpassten Anrufen verschicken zu lassen?
Bliebe noch die Frage zu klären: Wie soll die Box zwischen Anrufen unterscheiden, die Du annimmst und denen, die der Anrufbeantworter annimmt (sofern Du denn einen hast)? Ich denke, daß allein deshalb eine Lösung nicht möglich ist.


Gruß,
Wichard
 
wichard schrieb:
Bliebe noch die Frage zu klären: Wie soll die Box zwischen Anrufen unterscheiden, die Du annimmst und denen, die der Anrufbeantworter annimmt (sofern Du denn einen hast)? Ich denke, daß allein deshalb eine Lösung nicht möglich ist.


Gruß,
Wichard

Wie unterscheidet denn die Box in der Anruferliste, ob sie ein grünes, blaues oder organges Symbol auswählt ? Natürlich IST es möglich !

TF
 
cactus-online schrieb:
Wie unterscheidet denn die Box in der Anruferliste, ob sie ein grünes, blaues oder organges Symbol auswählt ? Natürlich IST es möglich !
Wenn mein AB den Anruf annimmt, erscheint ein blaues Symbol - und da mein AB jeden Anruf annimmt, wenn ich nicht da bin... ;)

Die einzigen roten Symbole kommen durch meine eigenen "Trigger"-Anrufe zustande, wenn ich also z.B. für "Wake on Call" anrufe und nach einem Klingeln auflege. Dafür brauche ich aber keine Benachrichtigung, das weiß ich dann schon selbst...


Gruß,
Wichard
 
wichard schrieb:
Wenn mein AB den Anruf annimmt, erscheint ein blaues Symbol - und da mein AB jeden Anruf annimmt, wenn ich nicht da bin... ;)

Die einzigen roten Symbole kommen durch meine eigenen "Trigger"-Anrufe zustande, wenn ich also z.B. für "Wake on Call" anrufe und nach einem Klingeln auflege. Dafür brauche ich aber keine Benachrichtigung, das weiß ich dann schon selbst...


Gruß,
Wichard

Ja und ? Das war doch nicht die Ausgangsfrage. SeTTembrinY wollte (wie andere wohl auch) nicht wissen, ob Dein AB ein Gespräch annimmt oder nicht (wie mit dem Wort "annimmt" schon richtig beschrieben, IST dann das Gespräch ja angenommen), sondern nur über Anrufe informiert werden, die NICHT angenommen werden. Oder hatte ich das falsch verstanden ?

TF
 
Das gute an der Port 1012-Schnittstelle ist, dass man
  • mehrere Clients gleichzeitig dran "lauschen lassen" kann
  • natürlich auch eine Implementierung der gewünschten Funktionalität auf der Box selbst denkbar wäre - ich schlug nur vor, auf dem PC zu testen
Naja, und wenn wir alle schön brav sind, wer weiss... vielleicht hat AVM ja ein Einsehen und baut uns doch den netcat in die busybox ein... damit wär's dann trivial.
;-)
 
cactus-online schrieb:
Ja und ? Das war doch nicht die Ausgangsfrage.
Ganz ruhig, Brauner...

Mit buehmanns Callmonitor existiert in Verbindung mit dem Danisahne-Mod eine Möglichkeit. Die ursprüngliche Idee von Fritzchen findet sich hier.

Sieht dann ungefähr so aus:
Code:
latest_call() {
local NUMBER="$1"
wget "http://127.0.0.1/cgi-bin/webcm?getpage=../html/de/FRITZ!Box_Anrufliste.csv" -O - |
fgrep ";$NUMBER;" | head -1
}
call_status() {
case "$1" in
1*) echo incoming ;;
2*) echo missed ;;
3*) echo outgoing ;;
*) echo unknown ;;
esac
}
call_date() {
local dd='\([[:digit:]]\{2\}\)'
echo "$1" | cut -d\; -f 2 |
sed -e "s/^$dd\.$dd\.$dd $dd:$dd\$/"'\2\1\4\520\3/'
}
mail_call_subject() {
case $STATUS in
missed) echo "Verpasst: Anruf${SOURCE:+" von $SOURCE"}" ;;
incoming) echo "Anruf${SOURCE:+" von $SOURCE"}" ;;
*) echo "Anruf" ;;
esac
}
mail_call_body() {
{
default_mail
if [ "${CALL:+set}" ]; then
echo
echo "$CALL"
fi
} | sed -e "s/\$/$CR/"
}
default_mail() { default_message; }
mail_missed_call() {
local start="$(date +%s)" time diff
sleep 60
webui_login
webui_get "getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=fon&var:pagename=foncalls" > /dev/null
export CALL="$(latest_call "$SOURCE")"
if [ -z "$CALL" ]; then 
echo "could not find call from '$SOURCE' in log" >&2
return 1
fi
time="$(date +%s -d "$(call_date "$CALL")")"
if [ -z "$time" ]; then
echo "did not understand time and date in '$CALL'" >&2
return 1
fi
let diff="$time - $start"
diff="${diff#-}" # abs()
if [ "$diff" -gt 90 ]; then # +- 1.5 minutes
echo "call '$CALL': time did not match (diff $diff)" >&2
return 1
fi
export STATUS="$(call_status "$CALL")"
echo "call status: $STATUS" >&2
if [ "$STATUS" = missed ] ; then
mail_call_body | mail send -i - -s "$(mail_call_subject)" "$@"
fi
}


HTH,
Wichard
Daß es heute noch Leute ohne AB gibt... ;)
 
Die Idee die FritzBox-Anrufliste auszulesen/auswerten hatte ich auch schon...
Das ist doch unsere Lösung, oder? Wichard hat das schon als Code gepostet. DDas riecht nach ausprobieren... ;-)

@Wichard: Der DS-Mod ist aber nicht Vorraussetzung für das Script, oder?

Edit:
Klappt bei mir leider net das Skript... Es passiert leider gar nichts. Ich vermute, ich brauche doch den DS-Mod, oder? Kann ich auf den problemlos von der Beta-Firmware quasi downgraden?
 
Zuletzt bearbeitet:
So, habe das mal zum Anlass genommen bei mir das auch reinzumachen.
Ich lade das Script einfach durch die debug.cfg vom webspace runter (mach ich ja schon fuer ssh/etherwake.

Code:
#! /bin/sh
caller=$1
number=$2
line=$3
dbox=192.168.xxx.yyy
url="http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$caller&main=Antwort&s=2"
# nur checken wenn Rufnummer uebertragen
if [ -z "$caller" ]
then
  caller="Rufnummer unterdrueckt"
  else
  output=$(wget -q -O - "$url" | grep class=\"blb\" | sed -e 's/<[^<]*>/\ /g;s/^[ \t]*//;s/\ / /g')
  fi
# wenn kein Suchergebnis gefunden wurde die Nummer benutzen
if [ -z "$output" ]
then
  output="Anrufer unbekannt"
  fi
  # Ausgabe auf dbox
  wget -q -O /dev/null "http://$dbox/control/message?popup=Anruf%20auf%20$number%20ueber%20$line%20von:%0a$caller%0a$output"

Hier wird dann auch noch gecheckt ob die rufnummer nicht unterdrueckt ist und es wird dann keine sinnlose Anfrage gestellt.

Gruß
Fly

edit: Script nochmal abgeändert. Ausgabe enthält nun folgende Infos in mehreren Zeilen auf der DBOXII:
1. Zeile: "Anruf auf (MSN) ueber (ISDN/SIP1/SIP2....) von:"
2. Zeile: "(Telefonnummer des Anrufers)"
3. Zeile: "(Name des Anrufers)"
Die Messagebox bleibt 3 Sekunden, wer sie länger will, kann statt popup ein nmsg einfügen, dann muss die box bestätigt werden (Fernbedienung)
 
Zuletzt bearbeitet:
Also, ich hab mal versucht Fritzchens Originalskript zum laufen zu bringen. Ich habe nämlich irgendwie net so Lust die ganze Firmware umzubiegen, das muss doch eigentlich auch so gehen... (set ehrgeiz=1 *g*)

Aber leider klappt die Auswertung der CSV-Datei per
Code:
ERG=$(expr substr "$LISTE" 1 1)
nicht, die (Original-)Busybox kennt "expr" und "substr" nicht... :-(

Kann man das irgendwie umbauen? Oder liegt&acute;s an der Beta-Firmware?
 
u.g schrieb:
EDIT:
... doch ...
"substr" ist Parameter für expr, also kein eigener Befehl
also obige Zeile geht mit der angegeben Busybox

Super - Weltklasse! Ich hab&acute;s jetzt auch schon in meiner debug.cfg drin! Klappt.

Ihr müsstet mir aber nochmal helfen: Ich krieg noch folgende Fehlermeldung beim Benachrichtungsskript:
/var/flash/calllog: 27: expr: not found

Er findet den "expr" immer noch nicht, ich habe aber per "ln -s /var/tmp/busybox expr" einen Link darauf erstellt (ach ja, und die busybox mit chmod +x behandelt)
Auf der Kommandozeile geht es auch nur wenn ich ein ./expr mache, ein reines "expr" findet er auch nicht. Das kann doch nicht viel sein, oder?
Mag mir da noch jemand helfen?
 
SeTTembrinY schrieb:
/var/flash/calllog: 27: expr: not found

Rufst du denn auch /var/tmp/expr auf in der Datei ?
Es geht auch "/var/tmp/busybox expr ..."
 
noch etwas aufgehübscht

So jetzt werden alle 3 möglichen Fälle (Rufnummer nicht übertragen, Rufnummer nicht rückwärts auflösbar, Rufnummer wird aufgelöst) berücksichtigt.


Code:
#!/bin/sh

callerid=$1

if [ -z "$callerid" ]
  then
    callerid="unbekannt";
    output="Rufnummer unterdrückt."
  else
    url="http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$callerid&main=Antwort&s=2";
    output=$(wget -q -O - "$url" | grep class=\"blb\" | sed -e 's/<[^<]*>/\ /g;s/^[ \t]*//;s/\ / /g');
    if [ -z "$output" ]
      then
        output="Rufnummer unbekannt."
    fi
fi

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


/sbin/mailer \
 -s "Anruf von $callerid auf Leitung $2 ($3) $4 um `date +\"%d.%m.%y %H:%M\"`"\
 -f 'Fritz!Box <name@maildomain>' \
 -t 'Fritz!Box <name|telnummer@maildomain|sms-provider>' \
 -m mta.mailprovider \
 -a username \
 -w passwort \
 -i'/var/tmp/calllog.txt'

Good luck.

[@wichard]: Als Moderator solltest Du wissen, dass man im Forum nicht persönlich werden sollte. Ich bin ruhig und auch nicht farbig. [/@wichard]

Und, ja es gibt auch heute noch Leute ohne AB.

Nichts für ungut.

Ciao
TF
 
cactus-online schrieb:
[@wichard]: Als Moderator solltest Du wissen, dass man im Forum nicht persönlich werden sollte. Ich bin ruhig und auch nicht farbig. [/@wichard]
Ich versuchte mich nur gerade als "Pferdeflüsterer" ohne jegliche persönliche Ambitionen. Darf ich bei der Gelegenheit daran erinnern, daß ich Dir den entscheidenden Link rausgesucht habe? ;)

In dem Sinne: :keks: und auf weitere gute Zusammenarbeit!


Gruß,
Wichard
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,357
Beiträge
2,250,756
Mitglieder
374,009
Neuestes Mitglied
HansRosenthal
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.