Asterisk als Client, Gespräch ggf. nicht annehmen

alex0801

Neuer User
Mitglied seit
12 Jul 2006
Beiträge
100
Punkte für Reaktionen
2
Punkte
18
Hallo,

ich versuche gerade mit Asterisk einen VoIP SPAM Blocker zu bauen.

Ziel:
VoIP Telefon + Asterisk an Sipgate als Client verbinden.

Beide "Endgeräte" klilngeln wenn jemand anruft.
Asterisk checkt die Anrufer-ID, und wenn die "böse" ist, Anruf annehmen, Ansagen abspielen und auflegen.
Falls nicht böse, Anruf ignorieren und weiter an allen Endgeräten klingeln lassen.

Dachte das geht per Dialplan (extensions.ael)

Code:
    1234567 => {
        Set(score=${SHELL(/opt/query/query.sh ${CALLERID(number)})});
        NoOp(SPAM Check Score: ID=${CALLERID(number)} score=${score});
        if (${score} > 3)
        {
                NoOp(SPAM);
                Answer();
                MP3Player(/var/lib/asterisk/sounds/FrankGehtRan.mp3);
                Hangup();
        } else {
                NoOp(No spam);
        }

    }

Klappt auch für den SPAM-Fall. Ansage kommt, Syste legt danach auf.

Aber wenn es KEIN Spam ist, geht der AB von Sipgate ran, d.h. Asterisk scheint sich das Gespräch schon gekrallt zu haben, d.h. andere Endgeräte klingeln nicht wirklich.

Frage 1:
geht sowas überhaupt mit Asterisk?

Frage 2:
Wenn ja, hat jemand einen Tipp für mich?

Gruß
Alex
 
voip spam heisst SPIT
 
ok, wieder was gelernt. Beantwortet aber nicht meine Frage, oder hab ich was übersehen? Google hat auf die schnelle zu asterisk + spit nix brauchbares ausgespuckt.

Gruß
Alex

### Zusammenführung Doppelpost by stoney ###

Wenn ich im Else-Fall ein

Wait(120);

einbaue, dann klingelt es auf den anderen Endgeräten noch. Aber sobald der Else-Fall beendet ist, hört es bei den anderen Endgeräten auf zu klingeln. Es muss doch ein Kommando geben das den Dialplan an der Stelle beendet, ohne dass die anderen Endgeräte aufhören zu klingeln und der Sipgate-AB das Gespräch weiter führt (also dran geht).

Die "Wait()" Lösung klingt nach workaround. Funktioniert so erstmal. Würde es aber gerne "korrekt" machen.

Freue mich über Tipps...
 
Zuletzt bearbeitet von einem Moderator:
Wenn Asterisk das Gespräch schon angenommen hat, kann man das Gespräch an den Asterisk-AB weitergeben oder auch an einen anderen (Sipgate)-Account mit AB weiterleiten.
Für das Aussortieren von Spit gibt es bei Asterisk viele Möglichkeiten. Ich mache das mit der Asterisk-Datenbank.
 
Wenn Asterisk das Gespräch schon angenommen hat
Wann hat Asterisk das Gespräch denn angenommen? Wenn ich im Dialplan (extensions.ael) angekommen bin, oder wenn ich Answer(); im Dialplan aufrufe?

[update]
Da während eines "Wait()" im Dialplan alle anderen Endgeräte weiterklingeln, gehe ich davon aus, dass Asterisk das Gespräch hier noch nicht komplett angenommen hat. Verlasse ich aber die Extensions wieder (weil am Ende angekommen), scheint das Thema erledigt zu sein, denn die anderen klingeln nicht mehr.

oder auch an einen anderen (Sipgate)-Account mit AB weiterleiten
Ich will ja eigentlich dass es auf beiden Sipgate-Account-Endgeräten klingelt und Asterisk abhängig von der Caller-ID entscheidet ob das Gespräch angenommen wird.

Für das Aussortieren von Spit gibt es bei Asterisk viele Möglichkeiten. Ich mache das mit der Asterisk-Datenbank.

Die Entscheidungsfindung, also ob Asterisk das Gespräch "abwimmeln" soll, oder ob der Anrufer "okay" ist, findet bei mir in einem Shell-Script statt. "Asterisk-Datenbank" klingt, als ob Asterisk bei dir intern diese Entscheidung trifft. Kannst du hier noch ein wenig mehr dazu schreiben was da dahinter steckt?
 
Zuletzt bearbeitet:
Hallo,
angenommen hat Asterisk das Gespräch nach Answer().

In die Asterisk-Datenbank kann man z. B. mit so einem Befehl eine Nummer ind die Blacklist eintragen, das geht auch gut über eine Batch-Datei:

sudo asterisk -rx "database put blacklist 04060027999 1"

Im Dialplan (bei mir extrensions.conf) kann man die Blacklist-Anrufe in den unerwuenscht-Kontext schieben lassen:

same => n,GotoIf(${DB_EXISTS(blacklist/${CALLERID(num)})}?unerwuenscht,s,1)

Bei mir sieht das so ähnlich aus:

Code:
[unerwuenscht]
exten => s,1,Answer()
   same => n,Set(GLOBAL(ANNR)=${CDR(src)}_unerwuenscht)
   same => n,Set(GLOBAL(FUER)=unerwuenscht)
   same => n,System(echo ${ANNR} |/usr/bin/mutt -s ${ANNR} [email protected] &)
   same => n,System(echo "${ANNR} ${STRFTIME(${EPOCH},GMT-${Sommerzeit},%F %T)} fuer ${EXTEN} Count: ${GROUP_COUNT(gruppe_1)} ${FUER}" >> /etc/asterisk/telefon.log)
   same => n,Dial(SIP/772,5,t/gbdm)            ; ein Telefon lasse ich kurz leise klingeln und die normale Wartemelodie abspielen
   same => n,Playback(tt-allbusy)
   same => n,Wait(1)
   same => n,Playback(queue-youarenext)
   same => n,Playback(demo-enterkeywords)
   same => n,Wait(3)
   same => n,Playback(vm-sorry)
   same => n,Wait(3)
   same => n,Playback(demo-nomatch)
   same => n,Goto(record,s,1)
   same => n,Hangup()
Falls es noch nicht vorhanden ist: tt-allbusy: https://github.com/beroNet/asterisk...e/template/lib/asterisk/sounds/tt-allbusy.gsm

[record] ist mein Asterisk-AB, falls mir doch mal jemand von der Blacklist etwas zu sagen hat. Das ist aber noch nie vorgekommen.
 
Zuletzt bearbeitet:
angenommen hat Asterisk das Gespräch nach Answer().

Answer() mache ich nur im SPIT-Fall, also wenn der Score>5 ist. Im Else-Fall (Score<=5), wird weder Answer() noch Hangup() gemacht. Aber sobald der Dialplan im Else-Fall abgearbeitet ist, hören alle Telefone die am gleichen Sipgate-Account hängen auf zu klingeln und ich lande als Anrufer beim Sipgate-AB :-(
Mit dem Wait(120); im Else-Fall klingelt es bei den anderen Telefonen während dieser Wartezeit noch. Aber das kann man ja nur als Workaround bezeichnen. Ich vermute es gibt irgend eine Funktion/irgend einen Aufruf, mit dem ich zum einen aus dem Dialplan sofort raus komme und zum anderen das Klingeln der anderen Telefone nicht abwürge.
Ich hab diesbezüglich aber noch nichts gefunden.


Dein Konzept klingt auch ganz interessant. Danke für die Einblicke. Sehr lehrreich.
Mein Ansatz nutzt eine Online-Quelle mit deren Hilfe ich den Anrufer "bewertet" bekomme. Asterisk dient hier auch nicht direkt als "Telefonanlage", sondern soll nur ein weiterer SIP-Teilnehmer am sipgate-Account sein, der sich eben im SPIT Fall den Anruf schnappt und abwimmelt. Und in allen anderen Fällen lässt er den Anruf so wie er ist.
 

Zurzeit aktive Besucher

Neueste Beiträge

Statistik des Forums

Themen
244,903
Beiträge
2,220,547
Mitglieder
371,645
Neuestes Mitglied
Duki
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.