Telefon Spam und Werbeanrufe erfolgreich blocken

Und in welcher Variable steht nun die tatsächliche Nummer konkret drin?
 
Schade, das war es leider nicht. In ${CDR(src)} steht auch nur die vom User gesetzte und nicht die tatsächliche Nummer ...
 
Schade, das war es leider nicht. In ${CDR(src)} steht auch nur die vom User gesetzte und nicht die tatsächliche Nummer ...

seltsam, funktioniert einwandfrei hier. ABer nur fuer Anrufe die ueber natives ISDN ankommen. Sipgate unterstuetzt die Funktion z.B. schon mal gar nicht.

Wie sieht denn deine Anlage aus?
Welche Software/Treiberstaende?
Wo genau ist VoIP und ISDN im Spiel?

- sparkie
 
Ich habs gerade über ISDN probiert. Anrufer mit gesetzter Nummer wurde mit gesetzter Nummer angezeigt und in ${CDR(src)} stand auch genau diese gesetzte Nummer. Nach Gesprächsende stand im isdn-log die tatsächliche (network provided) Nummer.
Über VoIP habe ich es ncoh nicht probiert, meine auch, daß dann über Sipgate immer die gleiche Nummer reinkommt.
Aber bei ISDN sehe ich ja im Log noch die andere Nummer, sie kommt also auch in der ISDN-Karte (Fritzkarte) an.
 
Ich habs gerade über ISDN probiert. Anrufer mit gesetzter Nummer wurde mit gesetzter Nummer angezeigt und in ${CDR(src)} stand auch genau diese gesetzte Nummer. Nach Gesprächsende stand im isdn-log die tatsächliche (network provided) Nummer.

mit welcher Software? mISDN? LCR?

in LCR wurde ein Problem mit der CallerID vor einigen Wochen gefixt.

- sparkie
 
Ich benutze nur den Treiber für die Fritz-Karte und Asterisk ...
 
Ich benutze nur den Treiber für die Fritz-Karte und Asterisk ...

ok, dazu kann ich nichts sagen. Ich benutze die Software/Hardware wie in SIgnatur. Da funktioniert soweit alles.

- sparkie
 
sparky du hast ja recht . Auf asterisk.li hat auch noch jemand eine Lösung
Aber trotzdem wollte ich dir bezüglich dieser Sache mal eine pm schicken
leider geht das nicht . kann ich dich irgendwie per mail erreichen
Danke für deine Antwort
Schick mir mal eine kurze PM wie ich dich erreichen kann
 
Code:
.....
SPAMSCORE=$(lynx -dump http://www.tellows.de/basic/num/$PHONENR | sed -ne '/Score:/{s/.*.: //p}')
echo "SET VARIABLE SPAMSCORE \"$SPAMSCORE\""
.....

Ist das ein normales shell script? Woher weiß die bash dann was in $PHONENR steckt? Müsste da nicht ein PHONENR=$1 ins script?

Wo steht wie das Script aufgerufen wird und warum sieht der Dialplan so anders aus vom Syntax als ich diese normal kenne?
 
Jupp! Das ist ein normales Script. Es bekommt in $1 die Nummer übergeben und muss es dann noch für die Webseite normalisieren. Danach steht die Nummer in $PHONENR. Aufgerufen wird es mit AGI(). Das muss man mal nachlesen, wie es die Werte im Dialplan übergibt. Ist aber kein Hexenwerk.
 
oh für mich ist das schon ein Hexenwerk da ich nur dauernd über php scripts stolpere und da auch keine Ahnung habe.

Wenn das z.B. mit Agi(spamcheck.sh) aufgerufen wird muss man doch noch irgendwie die Variable übergeben. Und die Variable $SPAMCORE aus dem Shell Script, wie fragt man die im Dialplan ab? Muss man die vorher nicht irgendwie zurück importieren?

Was ich aber noch gefunden habe ist die variable agi_callerid - kann ich mir das übergeben damit ersparen?

Und wie lautet der Syntax im Dialplan wenn ich $SPAMCORE abfragen möchte auf z.B. 7-9
so?
GotoIf($[${SPAMCORE} = [7-9]]?spamcontext)
 
Und die Variable $SPAMCORE aus dem Shell Script, wie fragt man die im Dialplan ab? Muss man die vorher nicht irgendwie zurück importieren?

Das macht das echo "SET VARIABLE ...", damit steht sie im Dialplan als Channel-Variable zur Verfügung.

Was ich aber noch gefunden habe ist die variable agi_callerid - kann ich mir das übergeben damit ersparen?

Ja, das geht. Die AGI Umgebungsvariablen werden als globales Array an das Skript übergeben. In diesem Fall ist das aber bestimmt nicht einfacher.

GotoIf($[${SPAMCORE} = [7-9]]?spamcontext)

Das wird so nicht klappen, entweder baust Du das GotoIf mit einer RegEx auf, oder prüfst auf >6.
 
Das macht das echo "SET VARIABLE ...", damit steht sie im Dialplan als Channel-Variable zur Verfügung.

ah ok dann gilt die wohl speziell für diesen Call.

Das wird so nicht klappen, entweder baust Du das GotoIf mit einer RegEx auf, oder prüfst auf >6.


wäre das richtig?
Code:
exten => _X.,1,GotoIf($[${REGEX("[7-9]" ${SPAMSCORE})}]?spamcontext)
exten => _X.,1,GotoIf($[${SPAMCORE} >6]?spamcontext)
 
Zuletzt bearbeitet:
Was sagt das CLI dazu? Mit verbose=3 siehst Du ja, was so vor sich geht.
 
Da taucht nichts auf. Muss dann wohl direkt mit der MSN rein.

[Beitrag 2:]

ok jetzt steht:
[Oct 25 15:49:22] -- Executing [xxx@incoming-arcor:1] AGI("SIP/arcor_in-00000000", "spamscore.agi,0341650508884") in new stack
[Oct 25 15:49:22] -- Launched AGI Script /usr/share/asterisk/agi-bin/spamscore.agi
[Oct 25 15:49:23] -- <SIP/arcor_in-00000000>AGI Script spamscore.agi completed, returning 0

Aber laut tellows hätte der Score eigentlich 5 sein sollen.

Wenn ich das Script an der Bash selbst starte und als Argument die Nummer mitgebe dann erhalte ich auch eine 5.

Oder heisst 0 einfach nur ohne Fehler?

Code:
#!/bin/sh
PHONENR=$1
SPAMSCORE=$(lynx -dump http://www.tellows.de/basic/num/$PHONENR | sed -ne '/Score:/{s/.*.: //p}')
echo "SET VARIABLE SPAMSCORE \"$SPAMSCORE\""
 
Zuletzt bearbeitet von einem Moderator:
returning 0 heißt tatsächlich, dass das AGI fehlerfrei aufgerufen wurde. Im CLI sollte, wahrscheinlich gleich nach dem AGI, das GotoIf auftauchen. Dessen Ausgabe wäre interessant. Um zu sehen, ob die Variable vom AGI richtig zurückkommt, kannst Du vor dem GotoIf ein Noop(${SPAMCORE}) machen.
 
Hatte hier vergessen Rückmeldung zu geben, so funktionierts

Im Incoming Context einfach vor Dial:
Code:
same => n,Gosub(spamcheck,${EXTEN},1)

Code:
[spamtrap]
exten => _X.,1,Set(CALLERID(pres)=prohib) ;hide own caller id
exten => _X.,n,Answer
exten => _X.,n,Ringing
exten => _X.,n,Wait(10)
exten => _X.,n,MixMonitor(/var/spool/asterisk/monitor/honeypot${STRFTIME(${EPOCH},,%Y-%m-%d)}from${CALLERID(num)}.wav)
;exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot1hallomitwem)
;exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot2hallo)
exten => _X.,n,WaitForSilence(2000)
;exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot3firmanichtverstanden)
;exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot4achsowaskann)
exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/honeypot5okumwasgeht)
exten => _X.,n,WaitForSilence(2000)
exten => _X.,n,Playback(/var/lib/asterisk/sounds/custom/spam)
exten => _X.,n,StopMixMonitor
exten => _X.,n,Hangup

exten => h,1,Set(EMAILADDR=${DB(cidmail/${EXTCALLED})})
exten => h,n,AGI(spammail.agi,${CALLERID(num)},${EXTCALLED},${SPAMSCORE},${STRFTIME(${EPOCH},,%Y-%m-%d)},${EMAILADDR}) ;/var/lib/asterisk/agi-bin
exten => h,n,NoOp(result is ${SPAMMAIL})

[spamcheck]
exten => _X.,1,AGI(spamscore.agi,${CALLERID(num)}) ;/var/lib/asterisk/agi-bin
exten => _X.,n,NoOp(Spamscore is ${SPAMSCORE})
exten => _X.,n,GotoIf($[${REGEX("[7-9]" ${SPAMSCORE})}]?spamtrap,${EXTEN},1)
exten => _X.,n,GotoIf(${BLACKLIST()}?spamtrap,${EXTEN},1)
exten => _X.,n,Return

spammail.agi
Code:
#!/bin/sh
CALLERID=$1
EXTEN=$2
SPAMSCORE=$3
TIME=$4 #time call was recorded, its in the file name
EMAIL=$5
sleep 10 #make sure wav is written already

if [ -s /var/spool/asterisk/monitor/honeypot${TIME}from${CALLERID}.wav ]; then

SPAMMAIL=$(echo "Anruf von ${CALLERID} zu ${EXTEN} mit Spamscore ${SPAMSCORE} wurde geblockt weil in Blacklist oder Score 7-9." | env -i /usr/bin/mutt -d 65535 -s "[PBX]: Geblockter Anruf von ${CALLERID} zu ${EXTEN}" -a /var/spool/asterisk/monitor/honeypot${TIME}from${CALLERID}.wav -- ${EMAIL})
else
SPAMMAIL=$(echo "Anruf von ${CALLERID} zu ${EXTEN} mit Spamscore ${SPAMSCORE} wurde geblockt weil in Blacklist oder Score 7-9." | env -i /usr/bin/mutt -d 65535 -s "[PBX]: Geblockter Anruf von ${CALLERID} zu ${EXTEN}" -- ${EMAIL})
fi

echo "SET VARIABLE SPAMMAIL \"$SPAMMAIL\""

spamscore.agi
Code:
#!/bin/sh
PHONENR=$1
SPAMSCORE=$(lynx -dump http://www.tellows.de/basic/num/$PHONENR | sed -ne '/Score:/{s/.*.: //p}')
echo "SET VARIABLE SPAMSCORE \"$SPAMSCORE\""
 
Zuletzt bearbeitet:
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.