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

Hallo duffy6,

ich verstehe dein Problem, wenngleich ich keine fertige Lösung dafür habe, da ich das Script einfach per "callmonitor" Paket aufrufen lasse. Da hat man solche Sorgen nicht und kann die Parameter selbst entsprechend übergeben lassen.

Jetzt die Idee zum Script, aber Achtung, ungetestet;

Die Idee mit der Zeit ist schonmal nicht schlecht, sofern in der CSV Zeitdaten sind, sind sie dort? - Falls ja würde ich am Anfang einen Zeitstempel definieren:

Code:
 ZEIT=`date +\"%d.%m.%y %H:%M\"`

dann würde ich nach dieser Zeile in der CSV Suchen und diese Ausgeben lassen

Code:
 RESULT="/var/tmp/meinecsv.csv | grep ${ZEIT} "
echo ${RESULT}

Wenn Du hier die Zeile hast, die Du brauchst, kannst Du das Ergebnis noch nach deinen Bedürfnissen anpassen, Stichwort "sed" und ggf. wie einen anderen Wert in deinem Script weiter Verarbeiten.

Wenn das jetzt nun nur bei bestimmten Ereignissen geschehen soll, z.B. nur bei "Unbekannten" anrufern, dann wäre hier eine if oder esac Routine das Beste, z.B.

Code:
if [ -z "$1" ]
  then
     (dein Scriptschnipsel)
fi

Grüße Lemur
 
@Lemur: Danke für Deine Bemühungen. Habe Deinen Beitrag zum Anlass genommen auch auf Freetz/Callmonitor umzustellen. Ist sehr viel angenehmer und lässt sich besser administrieren. Dankenochmal!

duffy6
 
Hehe, ich nutze ja wie gesagt ne Kombination aus beidem,

den Komfort des Callmonitor gepaart mit der flexibilität dieses Scriptes.

Aber das ist Geschmackssache und wenn man sich ausführlich mit dem Callmonitor beschäftigen würde, wäre dieses Script bestimmt auch überflüssig, wenngleich ich es dennoch behalte, weil ich da einst auch viele Nächte an Zeit drinn investiert hab.

Gruß Lemur
 
Mail mit Anruferdaten und Vcard

Hallo @all,
Klasse Sache der Mailer!
Ich habe den Code aus Post http://www.ip-phone-forum.de/showpost.php?p=1166609&postcount=251

Ich würde gern dazu noch die Vcard im Mailanhang haben wie etwa in Post http://www.ip-phone-forum.de/showpost.php?p=743478&postcount=125.
Da ich keinerlei große Erfahrungen im Programmieren habe, bitte ich um Hilfe das umzusetzen.
Code anzupassen war ja kein Problem, aber das ist ne Nummer zu hoch für mich.
Wär vielleicht ja auch für andere Interessant!?

have fun

Ist mir gerade bei dem Thema eingefallen: Gibt es eine Möglichkeit ZUSÄTZLICH das Fritzbox Telefonbuch zu füttern?
Also die Kombination aus Mail mit Rückwärtssuche, Vcard und Eintrag in das Telefonbuch der Box?


Habe gestern noch einen Fehler gefunden: bei der Rückwärtssuche wird der Name nicht mit in die Mail geschrieben oder vielleicht auch nicht richtig per grep geholt.
Mein derzeitiger


Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
then
callerid="Unbekannt";
invisible="\r\n Die Rufnummer des Anrufers wurde unterdrueckt.\r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n "
else
if [ -z "$5" ]
then
url="http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$1";
sleep 5
name=$(wget -q -O - "$url" | grep class=\"col1\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
street=$(wget -q -O - "$url" | grep class=\"col2\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
city=$(wget -q -O - "$url" | grep class=\"col3\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');

if [ -z "$name" ]
then
invisible="\r\nDer Anschlussinhaber konnte nicht ermittelt werden, oder hat einer Verzeichniseintragung widersprochen.\r\n "
fi
fi
fi

output="Informationen ueber eingegangenen Anruf:\r\n $invisible \r\n Inhaber: $name \r\n Adresse: $street \r\n PLZ Ort: $city\r\n\r\n Anrufer MSN: $callerid \r\n Auf Leitung: $2 ($3) $4 \r\n Anruf Zeit: `date +\"am %d.%m.%y, um %H:%M \"`"\

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

case "$2" in
86MSN1| 83MSN2| 83MSN3)
[email protected]
;;
esac
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
exit
fi
.
.
.
/sbin/mailer \
mailer....
Vielleicht was ja jemand warum?!

PS: als ich mir mal zwischenzeitlich den Quelltext von dastelefonbuch.de angesehen hatte, fand ich weiter unten den Link zu der von mir gesuchten VCard
Wie bekomme ich die an die Mail?

Fortschritt:
Durch einen Freund konnte der Code jetzt für die erfolgreiche Rückwärtssuche bei das telefonbuch.de wieder funktionsfähig gemacht werden...
leider ist im Mailbetreff der Name mit vielen Leerzeichen versehen.
2. Thema Vcard auch ein Schritt näher, nur leider kann die Box nichts mit dem Befehl cut anfangen. Könnte jemand das ganze mit sed übersetzen?

hier der Aktuelle Code:
Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
then
callerid="Unbekannt";
invisible="\r\n Die Rufnummer des Anrufers wurde unterdrueckt.\r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n "
else
if [ -z "$5" ]
then
url="http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$1";
sleep 5
name=$(wget -q -O - "$url" | grep class=\"short\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
street=$(wget -q -O - "$url" | grep class=\"col2\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
city=$(wget -q -O - "$url" | grep class=\"col3\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
if [ -z "$name" ]
then
invisible="\r\nDer Anschlussinhaber konnte nicht ermittelt werden, oder hat einer Verzeichniseintragung widersprochen.\r\n "
else
vcard=$(wget -q -O - "$url" | grep VCard | cut -d"\"" -f2 | cut -d"\"" -f1);
wget -q -O "/var/tmp/eintrag.vcf" "http://www3.dastelefonbuch.de/$vcard";
fi
fi
fi
output="Informationen ueber eingegangenen Anruf:\r\n $invisible \r\n Inhaber: $name \r\n Adresse: $street \r\n PLZ Ort: $city\r\n\r\n Anrufer MSN: $callerid \r\n Auf Leitung: $2 ($3) $4 \r\n Anruf Zeit: `date +\"am %d.%m.%y, um %H:%M \"`"\

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

case "$2" in
86MSN1| 83MSN2| 83MSN3)
[email protected]
;;
esac
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
exit
fi
.
.
.
/sbin/mailer \
 
Zuletzt bearbeitet:
Wenn ich das richtig sehe ist so eine Zeile in etwa:
Code:
<a href="VCard?encurl=%[...snip]sp=51&aktion=78" target="_blank" onClick="event.cancelBubble=true" rel="nofollow" class="dl">speichern</a>
Wie wäre es mit
Code:
sed 's/" target=.*// ; s/^.*href="//'
EDIT: Alternative:
Code:
 sed -n 's/^.*href="\(.*\)" target=.*/\1/p'
 
Zuletzt bearbeitet:
Hallo MaxMuster,

vielen Dank für deinen Beitrag!:)
Habe es mit den sed Befehl versucht, leider keinen Erfolg...:confused:
Muss ich denn die erste Zeile von dir auch irgendwo einbauen oder nur einen der beiden sed abfragen gegen den cut austauschen?!
zumindest bekomme ich schon mal eine leere Vcard als Anhang! Sonst keinerlei Fehlermeldung im Terminal!
Die Rückwärtssuche klappt schon mal super!:p
Aktueller Code:
Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
then
callerid="Unbekannt";
invisible="\r\n Die Rufnummer des Anrufers wurde unterdrueckt.\r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n "
else
if [ -z "$5" ]
then
url="http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$1";
sleep 5
name=$(wget -q -O - "$url" | grep class=\"short\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
street=$(wget -q -O - "$url" | grep class=\"col2\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
city=$(wget -q -O - "$url" | grep class=\"col3\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
if [ -z "$name" ]
then
invisible="\r\nDer Anschlussinhaber konnte nicht ermittelt werden, oder hat einer Verzeichniseintragung widersprochen.\r\n "
else
vcard=$(wget -q -O - "$url" | grep VCard | sed 's/" target=.*// ; s/^.*href="//');
wget -q -O "/var/tmp/eintrag.vcf" "http://www3.dastelefonbuch.de/$vcard";
fi
fi
fi
output="Informationen ueber eingegangenen Anruf:\r\n $invisible \r\n Inhaber: $name \r\n Adresse: $street \r\n PLZ Ort: $city\r\n\r\n Anrufer MSN: $callerid \r\n Auf Leitung: $2 ($3) $4 \r\n Anruf Zeit: `date +\"am %d.%m.%y, um %H:%M \"`"\

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

case "$2" in
86MSN3| 83MSN2| 83MSN3)
[email protected]
;;
esac
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
exit
fi
.
.
.
/sbin/mailer \
  -s "`date +\"%d.%m.%y %H:%M\"` - Anruf von $1 $name auf Leitung $2 ($3)" \
  -f '"Fritz!Box" <[email protected]>' \
  -t "[email protected]" \
  -m smtp.gmail.com:587 \
  -a [email protected] \
  -w "Passwort" \
  -i '/var/tmp/calllog.txt' \
  -d /var/tmp/eintrag.vcf
rm -f /var/tmp/eintrag.vcf

#  2> /dev/null

Vielen Dank für deine Mühen
 
Nein, eine der beiden Versionen reicht. Wenns nicht geht, liegt das mit ziemlicher Sicherheit am Skript, aber nicht am Ersatz ;-), denn die beiden Versionen machen das gleiche, wenn man sie nutzt, wie dieser Test zeigt:
Code:
[...]
wget -q -O /var/tmp/webpage.tmp "$url"
vcard=$(grep  VCard /var/tmp/webpage.tmp | sed 's/" target=.*// ; s/^.*href="//');
vcard2=$(grep VCard /var/tmp/webpage.tmp | cut -d"\"" -f2 | cut -d"\"" -f1);
echo $vcard
echo $vcard2
 
Vcard leer

Egal wie ich es anstelle, ich habe leider nur eine leere Vcard im Anhang! :confused:

Hat jemand noch eine Idee???

OK, scheint so, als ob manchmal der Diensteanbieter nicht so funktioniert!
Habe manchmal eine Vcard und manchmal eben halt nicht...

Funzt also...

have fun
 
Zuletzt bearbeitet:
Hallo.

Prima Thread, klappt prima! :)

Ich bekomme jetzt bei jedem eingehenden Anruf eine Mail ggf. mit dem passenden Namen.

Ist es auch möglich, nur für *nicht* angenommene Anrufe eine Nachricht zu generieren?

Gruß
Sam
 
so müsste es gehen

in:cancel ^ Deine telefonnummer$ mailmessage -t [email protected]

wie lautet denn dein skript
 
Hallo, eigentlich bekommst du eine Mail bei jedem Anruf... egal ob angenommen oder nicht!
EDIT: das ganze wurde auf Seiten zuvor schon beschrieben, wie schwer die Umsetzung ist...
@ichego1 wo genau würdest du das einbauen?
 
Zuletzt bearbeitet:
in:cancel ^ Deine telefonnummer$ mailmessage -t [email protected]

wie lautet denn dein skript

Hier das Skript fürs calllog:

Code:
url="http://www.dasoertliche.de/Controller?la=de&kw=$1&form_name=search_nat"
output=$(wget -q -O - "$url" | grep class=\"preview | sed -e 's/\ / /g;s/[	]//g;s/^[ ]//g;s/<[^<]*>//g;' | tr "\015" "\012")
/sbin/mailer \
	-s "Anruf von $1 ($output) auf Leitung $2 ($3) $4 um `date +\"%d.%m.%y %H:%M\"`"\
	-f '"Fritz!Box" <[email protected]>' \
	-t "[email protected]" \
	-m mail.server.de \
	-a fritz\
	-w "passwort" \
	-r

Wo genau kommt da das Cancel rein?
 
das ganze wurde auf Seiten zuvor schon beschrieben, wie schwer die Umsetzung ist...

Na, so schwer find ich's eigentlich nicht. Hab die Kiste gestern erst gegen meinen Speedport W700V getauscht (kaum zu glauben, wie lange ich es damit ausgehalten hab... ;) und es läuft alles wunderbar.

Interessant für mich wäre noch ne Benachrichtigung bei abgehenden Rufen (dafür gibts allerdings auch schon nen anderen Thread)...
 
ok, voreilig geantwortet und nicht wirklich verstanden... genau das meinte ich:
(dafür gibts allerdings auch schon nen anderen Thread).
... wo?
MfG
 
smooth # thread312

wo genau kommt da das Cancel rein?


in den listener von callmonitor

fertig
 
@ichego1

Danke. Wie angedeutet bin ich Newbie. Also tippen Sie bitte langsam. ;)
Bekomme ich ausgehende Anrufe also auch ohne Freetz / modifizierte Firmware so wie mit /var/flash/calllog mit?

@aNother
hier: http://www.ip-phone-forum.de/showthread.php?t=195601

Gruß
Sam
 
Zuletzt bearbeitet:
... ich kriegs nicht hin....

Hi Leute,
ich hab wohl was nicht ganz gerafft.... ich will mein Script wie schon auf meine 7170 nun auf meine 7270 spielen (habs auch so wie in Post #251 gemacht), aber ich krieg immer einen Fehler beim Anruf:
Script:
Code:
#! /bin/sh

CID=$1

  if [ -z "$CID" ]
    then
     echo "Unbekannt!";
      CID="unbekannt";
      name="Unbekannt"
    else
      name=$5;
     echo "$name";
      if [ -z "$name" ]
        then
          url="http://dastelefonbuch.de/?sp=55&aktion=23&ort=&cifav=0&s=a10000&stype=S&la=de&cmd=search&ort_ok=0&vert_ok=0&x=31&y=9&kw=$1";
	    # sleep 5
	    name=$(wget -q -O - "$url" | grep class=\"col1\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
	    street=$(wget -q -O - "$url" | grep class=\"col2\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
	    city=$(wget -q -O - "$url" | grep class=\"col3\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
	    output="Teilnehmerdaten:\r\n \r\n Inhaber: $name \r\n Adresse: $street
            echo -e $output >/var/tmp/calllog.txt
          if [ -z "$name" ]
           then
            name="kein Telefonbucheintrag"
          fi
      fi
  fi

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


/sbin/mailer \
-s "$1 ($name) hat angerufen an $2" \
-f '"Call Logger" <email>' \
-t "email" \
-m xy.de \
-a email \
-w "PW" \
#  2> /dev/null
#  am `date +\"%d.%m.%y %H:%M\"`"\

/sbin/mailer \
-s "Anruf von $1 ($name) an $2" \
-f '"Call Logger" <email>' \
-t "email" \
-m xy.de \
-a email \
-w "PW" \
#  2> /dev/null
Und der Fehler:
# /var/flash/calllog: line 28: syntax error: "(" unexpected (expecting "fi")
Ich gebe ja zu dass ich vom Scripten so gut wie keine Erfahrung habe....

Könnt Ihr mir bitte helfen?
Danke!!!!

-Mike
 
Zuletzt bearbeitet von einem Moderator:
was genau steht in Zeile 28 ?
 
Hi,
das ist genau die Zeile zwischen den frei FIs und den drei Echos...:
fi
fi
fi
<---- hier ist Zeile 28....
echo "#########################"
echo "`date +\"%d.%m.%y %H:%M\"` - Anruf von $CID ($name) an $2 ($3) $4"
echo

...wenn ich richtig gezählt habe.....

Mike
 
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.