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

Hallo Jan,

dass man ein funktionierendes System nicht veränder sollte, dürfte bekannt sein. Nun sagst Du bestimmt, es funktionierte aber nicht sogut, deshalb wollte ich es ja ändern, worauf ich Dir antworten würde; mach das nächste mal BackUps der Scriptdatei. :-Ö


Nun will ich mal nicht so sein, hier mein aktuelles und natürlich funktionierendes Call-Script:

Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";
    invisible="\r\n Die Rufnummer des Anrufers wurde unterdrückt, der Anruf wurde daher zurückverfolgt und an das Callcenter-System übergeben.\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=\"celname\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
                street=$(wget -q -O - "$url" | grep class=\"celstreet\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g' -e 's/&nbsp;/ /g');
                city=$(wget -q -O - "$url" | grep class=\"celcity\" | 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 über 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: 05223$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
                                12345 | 12346| 12347)
                                TOADDRESS=12345@empfängeradresse.de
                                ;;
                                        12342 | 12343)
                                        TOADDRESS=12342@empfängeradresse.de
                                        ;;
                                        12341| 12342| 12343| 12344| 12345| 123456)
                                        TOADDRESS=anderen@empfänger.de
                                        ;;
                                        esac
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
        exit
fi

.
.
.
.

/sbin/mailer \
          -s "Von $callerid auf $2 ($3) $4 um `date +\"%H:%M am %d.%m.%y\"`"\
          -f 'Telefonsystem | XYZ <[email protected]>' \
          -t "$TOADDRESS" \
          -m smtp.server.de \
          -a serverlogin-name \
          -w serverlogin-passwort \
          -i '/var/tmp/calllog.txt'

        2> /dev/null
Das Script arbeitet an meine Bedürfnisse angepasst.

D.h. es sucht zuerst im FB Telefonbuch (für Anrufer, die keinen Verzeichniseintrag haben, Ihre Nummer aber übertragen), sofern es hier nicht fündig wird, übergibt es die rufende Nr. an dastelefonbuch.de und holt von dort Name und Adresse. Ist dort niemand bekannt, steht in der Mail dass der Anrufer nicht ermittelt werden konnte.

Um mich vor Werbeanrufen zu schützen, werde Anrufe auf bestimmten MSN's noch vorgefiltert, i.d.R. gehen Anrufe ohne Übermittlung der Nummer auf ein spezielles System, eine Art Mailbox. Deshalb steht im Script der erste Mailtext. Die Funktion der Anrufrückverfolgung wird also nicht von diesem Scirpt ausgeführt und steht somit bei diesem Script auch nicht zur Verfügung. Die Rückverfogung arbeitet nur mit speziellen Anschlüssen, die dafür freigeschaltet sind, somit bitte ich von Anfragen abzusehen wie man unterdrückte Anrufe dennoch "sichtbar" machen kann.

Abschließend wird dann für bestimmte MSN's (123.. bitte an die eigenen MSN's anpassen, sonst kommt keine Mail) an bestimmte e-Mailadressen übermittelt.

So sollte es nun funktionieren ;)

Grüße Lemur
 
unterdrückte Rufnummer "erkennen"?

Code:
callerid=$1
name=$5
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";
 ...

Hi Lemur, funktioniert das bei Dir? Bei mir bewirkt eine unterdrückte Rufnummer, daß $1 nicht leer ist, sondern in $1 dann die MSN steht, usw...

hab mir deshalb so geholfen:

Code:
# Nummernauswertung
if [ $# -gt 2 ]; then # wenn mehr als 2 Parameter, dann hat Anrufer CID übertragen
  CID=$1    # Nummer
  Line=$2   # MSN / Line
  Medium=$3 # Medium: ISDN, SIP..., POTS, 
  Name=$5  # Name aus FBF-Telefonbuch
else    # wenn 2 oder weniger Parametern, ist Anrufer wahrscheinlich anonym
  CID="anonym"    # Nummer
  Line=$1         # MSN / Line
  Medium=$2       # Medium
  Name="Anonym"
fi

vielleicht hat jemand ja noch ne elegantere Idee?
 
Hi Lemur, funktioniert das bei Dir?

Hallo Tom,

ja, so wie das im Script steht, funktioniert das bei mir.
Allerdings läuft das Script auf einer 7170 mit FW 29.04.49.

Manche Parameter wie z.B. der Name mit $5 sind erst ab einem bestimmten Firmwarestand funktionstüchtig, sodass dies ein Indiz dafür sein könnte, dass bei Dir bei $1 die MSN ausgegeben wird.

Übrigens soll mit $1 ja auch die MSN übergeben werden, allerdings die Rufende.
$2 wäre dann die Angerufene MSN (also dein Anschluss) und $3 sollte der Leitungstyp sein, etc.

Grüße Lemur
 
Hi Lemur,was steht bei Dir in $1, wenn ein Anrufer mit unterdrückter Nummer anruft? Danke Tom
 
Hallo Tom,

also zunächst übergeb ich, wie aus dem Script ersichtlich, nicht $1, sondern $callerid. Die Variable $callerid ist wie folgt definiert und wird auch so ausgegeben:

MSN nicht übermittelt, ausgabe Text: Unbekannt
Code:
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";

ferner wird die 1. $invisible Variable dadurch generiert, welche den Text ausgibt, dass die Rufnummer unterdrückt wurde, etc.
Code:
    invisible="\r\n Die Rufnummer des Anrufers wurde unterdrückt, der Anruf wurde daher zurückverfolgt und an das Callcenter-System übergeben.\r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n "

So, damit sind nun die Variablen definiert, und werden wie folgt verwendet:

Im E-mail Body gibt die $invisible nun obengenannten Text wieder:
Code:
output="Informationen über 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: 05223$2 ($3) $4 \r\n Anruf Zeit: `date +\"am %d.%m.%y, um %H:%M \"`"\

Und im E-Mail Betreff gibt die Variable $callerid nun den Text "Unbekannt" wieder:
Code:
-s "Von $callerid auf $2 ($3) $4 um `date +\"%H:%M am %d.%m.%y\"`"\


Abschließend nun die fertige Mail, so wie sie ausgebeben wird:

Code:
From: Telefonsystem | XXXXX [EMAIL="[email protected]"][email protected][/EMAIL]
To: [EMAIL="[email protected]"][email protected][/EMAIL],
Date: Thu, 3 Apr 2008 12:54:10 +0200
Subject: Von Unbekannt auf 12345 (ISDN) um 12:54 am 03.04.08
 
Informationen über eingegangenen Anruf: Die Rufnummer des Anrufers wurde unterdrückt, der Anruf wurde daher zurückverfolgt und an das Callcenter-System übergeben. Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail. 
 
Inhaber: 
Adresse: 
PLZ Ort: 
 
Anrufer MSN: Unbekannt 
Auf Leitung: 0522312345 (ISDN) 
Anruf Zeit: am 03.04.08, um 12:54

Ich hoffe ich konnte Dir damit weiterhelfen.

Grüße Lemur
 
Danke Lemur für die Erklärungen, aber es geht mir um die 2. Zeile in Deinem calllog...:

Code:
callerid=$1

Teste doch mal, was in $callerid steht, wenn Du Dich mit unterdrückter Nummer anrufst? Bei mir steht da eben nicht die CID, sondern die Line.

Im FBF-Tel.buch hab ich folgenen Test-Eintrag gemacht: 0123456789 Prof. Dr. Muster Mann
Und hab mir folgendes calllog mal in /var/flash gelegt:

Code:
echo "1 $1"
echo "2 $2"
echo "3 $3"
echo "4 $4"
echo "5 $5"
echo "6 $6"
echo "7 $7"

bei übertragener Nummer ist die Ausgabe diese:
1 0123456789
2 333333
3 ISDN
4 Prof.
5 Dr.
6 Muster
7 Mann

bei unterdrückter Nummer ist die Ausgabe jene:
1 333333
2 ISDN
3
4
5

hab mein o.g. Scriptteil nach diesem Test nun verändert, um auch Leerzeichen im Namen zuzulassen:

Code:
# Parameterauswertung im calllog
if [ $# -gt 2 ]; then # wenn mehr als 2 Parameter, dann hat Anrufer CID übertragen
  CID=$1    # Anrufernummer
  shift 1
  Line=$1   # MSN / Line
  shift 1
  Medium=$1 # Leitungstyp: ISDN, SIP..., POTS
  shift 1
  FBFName=$* # Rest ist der vollständige Name aus FBF Tel.buch
else    # wenn 2 oder weniger Parametern, ist Anrufer anonym
  CID="anonym"    # Nummer
  Line=$1         # MSN / Line
  Medium=$2       # Medium
  name="Anonym"
fi

Anmerkung: FW: 29.04.56-10575
 
Zuletzt bearbeitet:
Hallo Tom,

Die Variable $callerid, wird doch mit diesem Scriptteil zur Textausgabe in Unbekannt umdeklariert:
Code:
if [ -z "$callerid" ]
  then
    callerid="Unbekannt";

Zumindest macht das die 7170 mit FW 29.04.49. Kann durchaus sein, dass die Variabeln in der 56-10575er (Labor?) anders verarbeitet werden. Ich erinnere mich noch an der Variablen $5 und die geänderte FB-Telefonbuch suche, die mittlerweile von AVM so übernommen wurde.

Ich werde die Tage, je nachdem wann ich dazu komme, das nächste Freetz.org Update nachschieben und danach mal die Parameterausgabe posten.

Grüße Lemur
 
Die Variable $callerid, wird doch mit diesem Scriptteil zur Textausgabe in Unbekannt umdeklariert:
ja aber nur wenn sie leer ist. Bei mir (seit .49) wird sie aber auch bei unbekanntem Anrufer nicht leer, weil dann die "Line" auf $1 nachrückt... (siehe mein Beitrag vom 5.4.)
 
Leider sind hier im Thread nur Ausschnitte des Scripts drin. Ich habe bei the-construct.com ein Pseudo-Image erstellt und dort das Script vom allerersten Posting mit eingefügt und das auf meine 7270 (Labor 54.04.97-10571) gespielt. Leider hat die Pushmail nur den Betreff "12.04.08 21:23 - Anruf von auf Leitung ()", der Inhalt der Mail ist leer. Kann mir bitte jemand den vollständigen Script geben der nötig ist, um die Infos mit in die Mail zu bekommen? Das Telefonbuch der 7270 habe ich gefüllt und es soll verwendet werden, wenn ein unbekannter Anruf ist wäre die Rückwärtssuche über Telefonbuch (o.ä.) sehr schön aber keine Voraussetzung.
Ich nutze einen Alice-Anschluss (NGN) und habe das IAD mit Einrichten der Internettelefonie umgangen, die Gespräche kommen also als VOIP-Gespräche rein.
 
Script per Script startet nicht

Hallo zusammen,

nach einer erfolglosen Nacht versuche ich mal hier eine kleine Hilfestellung von den Linuxprofis zu bekommen;

Nachfolgender Code baut im Grunde auf dieses Script auf, allerdings soll bei einer unbekannten Nummer, die lynx Zeile ausgeführt werden. Genau das geschieht bei mir leider bislang nicht:

Code:
#!/bin/sh

callerid=$1
name=$5
if [ -z "$callerid" ]
  then
     [COLOR=Red]lynx -accept_all_cookies -cmd_script=/var/flash/lynx.config www.xy.de[/COLOR]
alternativ habe ich eine ausführbare Scriptdatei erstellt, mit dem Inhalt:

Code:
#!/bin/sh
 [COLOR=Black]lynx -accept_all_cookies -cmd_script=/var/flash/lynx.config www.xy.de[/COLOR]
Führe ich dieses Script manuell über die Konsole aus, macht die Box das einwandfrei, verweise ich allerdings im calllog-script auf dieses, so geschieht ebenfalls kein Aufruf.

Was übersehe ich die ganze Zeit? :blonk:

Grüße Lemur
 
@ Lemur:
( Meine Vermutungen/Ideen: )
Ergänze doch mal die lynx-Zeile um " 2> /var/tmp/log" ...
Steht dann (nach Anruf) was in /var/tmp/log?
Ansonsten könnte es vielleicht auch an der nicht/falsch gesetzten TERM-Variable liegen, setzt doch mal vorher "export TERM=vt100"... ?
 
@Lemur - bevor Du weiter machst solltest Du wirklich mal auf die Fragen von tom_de eingehen. Ich weiß ja nicht wie gut Du dich mit Shellprogrammierung auskennst aber wenn man eine variable anzahl von Parametern hat kann man sich NICHT darauf verlassen das $1 immer das ist was man meint was immer der erste Parameter ist.

Ver such das mal auf einer Bash-Shell dann verstehst Du sicher was tom_de versucht Dir zu erklären:

Code:
set -- Das ist ein Test fuer Lemur; for i in $(seq 1 $#);do eval echo "var ${i}: \${$i}";done

Ausgabe bei mir ist:

Code:
var 1: Das
var 2: ist
var 3: ein
var 4: Test
var 5: fuer
var 6: Lemur

Und jetzt stellt Dir vor "Das" ist die Nummer vom Anrufer und die ist dann einfach weg:

Code:
set -- ist ein Test fuer Lemur; for i in $(seq 1 $#);do eval echo "var ${i}: \${$i}";done
var 1: ist
var 2: ein
var 3: Test
var 4: fuer
var 5: Lemur

Einzige Möglichkeit die Parameter zu erhalten wäre sie als leer-String zu übergeben:

Code:
set -- '' ist ein Test fuer Lemur; for i in $(seq 1 $#);do eval echo "var ${i}: \${$i}";done
var 1:
var 2: ist
var 3: ein
var 4: Test
var 5: fuer
var 6: Lemur

Fragt sich nur ob die Box das auch so macht beim Aufruf von dem Script.
 
Zuletzt bearbeitet:
Was übersehe ich die ganze Zeit? :blonk:

Zum Schluss des Skriptes fehlt "fi;". Das Skript weiß nicht, wann die "if" Abfrage zu Ende ist.

Alternativ kann du auch das "calllog" Skript händisch ausprobieren. Erstelle es einfach in "/var/tmp", chmod +x calllog hinterher und dann kannst es testen mit "/var/tmp/calllog 1 2 3 4 5"

cu
Markus
 
Zum Schluss des Skriptes fehlt "fi;". Das Skript weiß nicht, wann die "if" Abfrage zu Ende ist.

Das ist mir auch aufgefallen - aber ich dachte das lag daran das er nur einen Auszug aus dem Script geschickt hat - da er vorher ja schon mal eine korrekte if-Kontrollstruktur geschrieben hatte.... :)
 
Vorab ein großes Dankeschön, für die hohe Beteiligung!

@ u.g
Kannst Du mir bitte die Idee mit der TERM-Variable näher erläutern? Sie brachte allerdings bisher keinen Erfolg.

@ AleksCee
Ich befasse mich seit einiger Zeit hobbymäßig mit bash Scripten, allerdings hällt sich mein Wissen dabei mehr als in Grenzen.

Die Frage von tom_de kann ich dank deines Beispiels nun nachfollziehen, allerdings selbst noch nicht beantworten. Mir war bislang nicht bekannt, dass z.B. $1 (die callerid), einfach wegfällt und nicht als "leer" verarbeitet wird. Allerdings erscheint mir das unlogisch, da ja im Ergebnis, bei meinem Script "Unbekannt" übergeben wird. Wenn dies so ist, muss das Script ja erkannt haben, das $1 leer war und somit die Rufnummer nicht übermittelt wurde.

@ Switch42
Das fi fehlt, lag daran da das Script gekürzt veröffentlicht wurde. Nachfolgend habe ich das gesamte Script nochmal gepostet.
Allerdings war das manuelle Ausführen von ./calllog 1 2 3 4 5, eine große Hilfe, auf die Idee bin ich bislang garnicht gekommen. Dabei hat sich folgendes gezeigt;

Wenn ich nun das Script manuelle in /var/tmp/calllog (Variabeln) ausführe, arbeitet es einwandfrei! Kopiere ich dieses mit cat ins flash und rufe dann mit unterdrückter Nummer an, wird das Script ebenfalls ausgeführt, allerdings funktioniert folgendes (in rot dargestellt nicht)

Code:
#!/bin/sh
callerid=$1
name=$5
if [ -z "$callerid" ]  
  then 
   "export TERM=vt100" 
[COLOR=red]   /usr/bin/lynx -cmd_script=/var/tmp/lynx.config [/COLOR][URL="http://www.xyz.de"][COLOR=red]www.xyz.de[/COLOR][/URL][COLOR=red] > /var/tmp/lynx.dump ;[/COLOR]
   sleep 15
   dbresult=$(grep "`date +%d.%m.%Y` `date +%H:%M`" /var/tmp/datenbank.import |sed 's/^[^;]*;[^;]*;//g;s/;/ /;s!;!\\r\n\Dauer: !;s!;! Sekunden reset !g;s/[[:blank:]]reset.*$//g');
   callerid="Unbekannt";
   invisible="\r\n Die Rufnummer des Anrufers wurde unterdrückt. \r\n\r\n Sofern der Anrufer eine Nachricht hinterlassen hat, erhalten Sie diese in einer separaten E-Mail.\r\n\r\n Die Datenbankabfrage ergab: \r\n Anschluss: $dbresult "
  else
    if [ -z "$5" ]
      then
  url="[URL]http://www.klicktel.de/telefonbuch/backwardssearch.html?newSearch=1&boxtype=backwards&vollstaendig=$1[/URL]"; 
  sleep 5
  name=$(wget -q -O - "$url" | grep class=\"title\" | sed -e 's/&uuml;/\ü/g;s/&amp;/\&/g;s/&auml;/\ä/g;s/&Auml;/\Ä/g;s/&Uuml;/\Ü/g;s/&ouml;/\ö/g;s/&Ouml;/\Ö/g;s/&szlig;/\ß/g;s/&quot;/\"/g;s/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g');
  street=$(wget -q -O - "$url" | grep class=\"location\" | sed -e 's!<br />! [URL="file://\\r\n"]\\r\n[/URL] PLZ Ort: !g;s/&uuml;/\ü/g;s/&amp;/\&/g;s/&auml;/\ä/g;s/&Auml;/\Ä/g;s/&Uuml;/\Ü/g;s/&ouml;/\ö/g;s/&Ouml;/\Ö/g;s/&szlig;/\ß/g;s/&quot;/\"/g;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 über eingegangenen Anruf:\r\n $invisible \r\n Inhaber: $name \r\n Adresse: $street\r\n\r\n Anrufer MSN: $callerid \r\n Auf Leitung: 05223$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
        12345 | 12346 | 12347 )
           [EMAIL="[email protected]"][email protected][/EMAIL]
           ;;
     22345 | 22346 )
     [EMAIL="[email protected]"][email protected][/EMAIL]
     ;;
     12345 | 12346 | 12347 | 22345 | 22346 | 22347 )
     [EMAIL="[email protected]"][email protected][/EMAIL]
     ;;
     esac
if [ -z "$TOADDRESS" ]
then
echo "quit, no notification for this MSN"
 exit
fi
.
.
.
.
/sbin/mailer \
   -s "Von $callerid auf $2 ($3) $4 um `date +\"%H:%M am %d.%m.%y\"`"\
   -f 'Telefonsystem | XY <[email protected]>' \
   -t "$TOADDRESS" \
   -m smtp.xy.de \
   -a [EMAIL="[email protected]"][email protected][/EMAIL] \
   -w [EMAIL="[email protected]"][email protected][/EMAIL] \
   -i '/var/tmp/calllog.txt'
#2> /dev/null

Ferner macht er bei Scriptstart durch einen "echten" Unbekannten Anruf folgendes anders, im Vergleich zum manuellen Aufruf:
- überschreiben der Datei /var/tmp/lynx.dump , aber 0 Byte groß (sonst ca 2200)
- /var/tmp/datenbank.import wird nicht neu überschrieben (lynx wird mit dem cmd_script angewiesen, einen Webseitelogin zu machen, cookies anzunehmen, und eine csv.datei als datenbank.import neu herunterzuladen)
- dbresult kann somit nicht arbeiten, da dbimport nicht akualisiert wurde

Die /var/flash/calllog hat mitlerweile alle Rechte, die ich vergeben kann, allerdings vermute ich, dass die lynx-zeile anders übergeben wird und evtl. die Rechte fehlen?! - Nur warum geht das dann manuell?

Würd mich über weitere Anregungen sehr freuen.

Grüße Lemur
 
Zuletzt bearbeitet:
Vom Inhalt der TERM-Variablen ist bei manchen Programmen die Bildschirmdarstellung abhängig.
Allerdings musst du die Anführungszeichen bei der Zeile weglassen.
Ich hatte empfohlen, durch "... 2 > datei" evtl. Fehlermeldungen vom lynx-Aufruf in eine Datei umzuleiten, in der Hoffnung, dort den Fehler zu finden. Du hast nur die Ausgabe in eine Datei umgeleitet, nicht die Fehlermeldungen.
 
Danke u.g. für die Erklärung.

Die Termvariable hatte ich zwischenzeitlich auch korrekt davor, hat leider auch nix gebracht. Fakt ist, dass Script arbeitet manuell ausgeführt, alsauch mit dem Befehl
Code:
sh /var/flash/calllog
ausgeführt, einwandfrei. Jedoch nicht bei einem echten Anruf. /dev/null brachte auch keinen Aufschluss.

Hab bis eben alles durchprobiert, allerdings immer wieder das selbe Problem gehabt.

Nun hab ich die Aufgabe gelöst, indem ich den callmonitor nachgeladen hab (das freetz-paket) und das Script durch diesen ausführen lasse, sobald ein Anruf eingeht.

Ich vermute, dass der Dienst der die calllog abarbeitet, nicht berechtigt ist, das lynx mit den Parametern auszuführen. Woran es jetzt genau gelegen hat, entzieht sich jedoch meiner Kenntnis.

@tom_de & AleksCee
Bzgl. der Frage von tom_de hab ich folgendes festgestellt:

Führe ich sh /var/flash/calllog 1 2 3 4 5 manuell aus, so erhalte ich
Code:
$1=1 $2=2 $3=3 $4=4 $5=5
Führe ich sh /var/flash/calllog 2 3 4 5 manuell aus, so erhalte ich
Code:
$1=2 $2=3 $3=4 $4=5 $5=
Lasse ich jedoch /var/flash/calllog durch einen "echten" Anruf ausfüren erhalte ich bei calllog 2 3 4 5
Code:
$1= $2=2 $3=3 $4=4 $5=5
Somit ist $1 leer und das Script erkennt, dass der Anruf "Unbekannt" ist.

Getest hab ich dass auf einer 7170 mit FW 29.04.37 / FW 29.04.40 / FW 29.04.49

Gruß Lemur
 
Code:
sh /var/flash/calllog "" "2" "3" "4" "5"
sollte auch
Code:
$1= $2=2 $3=3 $4=4 $5=5
zurückliefern, wenn man einen Leerstring übergeben möchte. Kann man auch dafür verwenden, falls in einem Parameter mal ein Leerzeichen vorkommt.
 
wenn man einen Leerstring übergeben möchte.

Kann ich bestätigen, damit sollte dann auch geklärt sein, dass die Definition über -z $1 ausreicht um ein Telefonat ohne Rufnummernübermittlung zu übergeben.

Grüße Lemur
 
Hallo,

vorab möchte ich anmerken, dass ich von Linux und Programmieren null Ahnung habe.

Bisher habe ich ganztägig einen PC laufen, auf dem ich JFritz installiert habe. Über Sendmail bekomme ich bei jedem eingehenden Anruf eine Email. Das funktioniert soweit. Auf Grund der stark steigenden Energiekosten muss ich nun aber Sparmaßnahmen einleiten.

Der PC wird also nicht mehr ganztägig laufen. Die Emails möchte ich trotzdem weiterhin erhalten. Auf der Suche nach einer Lösung bin ich auf diesen Thread gestoßen.

Eure Lösung ist genial! Wenn ich es richtig verstehe, kommt ein Anruf rein, es wird geprüft, ob die Rufnummer im internen Telefonbuch vorhanden ist, wenn nicht, wird online rückwärts gesucht. Das Ergebnis ob nun mit oder ohne Namen wird dann per Email verschickt.
Genau so möchte ich das auch haben!

Nun habe ich aber das Problem nicht so ganz zu verstehen wie ich das hinbekomme. Könntet Ihr mir eine Anleitung-für-Dummis geben, wie ich das auf meiner 7170 realisiere?

Noch habe ich die 7170 mit der aktuellsten FW (29.04.57), aber ich liebäugle schon mit der 7270. Würde Eure Lösung auf dieser auch laufen?

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