Nur gewisse Nummern annehmen

Mansaylon

Neuer User
Mitglied seit
7 Mai 2007
Beiträge
158
Punkte für Reaktionen
1
Punkte
18
Hallo

Mit folgendem Eintrag kann ich beispielsweise eine reinkommende Nummer akzeptieren:
exten => 41123456789,n,GotoIf($["${CALLERID(num)}" = "1122334455"]?ERLAUBT)

Gibt es eine Möglichkeit, eine Art Liste abzufragen, welche Nummern durch gelassen werden, oder muss man da wirklich für jede einzelne Nummer einen solchen Eintrag machen?

Vielen Dank.
 
Leg die Nummern in eine Datenbank und frage die dann ab (AGI Skript).
Ist der bequemste Weg bei vielen Nummern.
 
Danke... aber nur dafür alleine eine Datenbank anlegen, wollte ich eigentlich nicht.
Gibt es evtl. eine Möglichkeit, wo man ein Textfile damit anlegen könnte, die Nutzung von Makro?
 
Du kannst alles benutzen, was die Sprache, in der dein AGI Skript geschrieben ist, beherrscht.
Ich würde sowas auslagern und nicht meinen Wählplan zumüllen.

Da du praktisch nur lesen wirst, würde ich mir dafür eine SQLite Datenbank anlegen. Ist dann im Endeffekt auch nur eine Datei.

Genauso gut kannst du auch eine normale Textdatei anlegen und die dann durchgehen und schauen ob die Nummer drin ist.

Ich würde aber den Weg mit der SQLite DB bevorzugen, zur Not kannst du aber auch die interne Asterisk-DB dazu missbrauchen.
 
Danke.... für gewöhnlich wäre die DB sicher die bessere Lösung.
Aber mich würde es interessieren, wie ich es mit der externen Textdatei realisieren könnte.
Leider habe ich dazu keinen Anhaltspunkt im Netz gefunden. Kennst Du evtl. irgendwo ein Beispiel, wo ich mich daran orientieren könnte?

Bin da auch noch über die Funktion Blacklist() gestolpert. Wäre das eine Möglichkeit?
 
Eine Textdatei ist vielleicht nicht mehr IO, aber schneller als die interne DB?
Blacklist nutzt auch die AstDB.
Man kann aber auch über das AGI Textdateien einlesen und auswerten.
Beispielsweise mit php: eine "INI" Datei mit parse_ini_file ( http://php.net/manual/en/function.parse-ini-file.php ) einlesen.
 
Um welche Asterisk Version geht es? Bei 1.6 gibt es die Funktion Shell, damit könntest Du im Dialplan ein
cat black.list | grep ${CALLERID(number)}
ausführen und das Ergebnis mit If, GotoIf oder was auch immer auswerten.

Warum möchtest Du unbedingt eine Textdatei?
 
Es handelt sich um die aktuellste 1.6.x Version.

Ich suche einfach eine sehr einfache Möglichkeit, wo ich schnell etwas ändern kann.
Mit der Textdatei habe ich die Möglichkeit, mich von irgendwo her über ssh einzuloggen und mit Joe oder einem anderen Texteditor die Liste einfach anzupassen.

Nun müsste ich eben nur noch eine Lösung ausarbeiten, wie ich das ganze realisieren kann.
 
Ungetestet:

Code:
exten=>bla,blub,GotoIf($["${Shell(cat black.list | grep ${CALLERID(number)})}"==""]?ok:gesperrt)

Alternativ das ganze als AGI basteln, wie bereits mehrfach vorgeschlagen wurde.

Btw, die AstDB lässt sich auch recht schön über CLI bedienen.
 
Vielen Dank.... werde ich auf jeden Fall testen.

Ach ja... ich gehe davon aus, dass die black.list am gleichen Ort ist wie alle anderen .conf Dateien ?!?
 
Nimm einfach den absoluten Pfad, dann bist Du auf der sicheren Seite. :rolleyes:
 
Habe nun folgendes gemacht.... funktioniert leider nicht wie gewünscht.
In der Datei erlaubt.list habe ich pro Zeile eine Telefonnummer angegeben.


exten => 4144500,1,Answer()
;exten => 4144500,n,GotoIf($["${CALLERID(num)}" = "032511"]?ERLAUBT)
exten => 4144500,n,GotoIf($["$àShell(cat erlaubt.list | grep ${CALLERID(num)})}"==""]?NEIN:ERLAUBT)
exten => 4144500,n,Hangup()
exten => 4144500,n(ERLAUBT),Dial(SIP/201&SIP/221,20,tr)
exten => 4144500,n,Hangup()
 
So.... selber herausgefunden :rolleyes:
Jetzt geht es... a) hatte ich noch einen Syntax Fehler und b) brauchte ich den kompletten Pfad.

exten => 4144500,n,GotoIf($["${SHELL(cat /etc/asterisk/erlaubt.list | grep ${CALLERID(num)})}" = ""]?NICHTERLAUBT:ERLAUBT)

Möchte allen Beteiligten für die Unterstützung danken.
 
Der Form halber solltest Du den Dialplan noch um die Sprungmarke NICHTERLAUBT ergänzen. In Deinem Beispiel verlässt Du Dich darauf, dass Asterisk einfach mit der nächsten Priorität (Hangup) weiter macht.

Und Du könntest den Thread-Titel bitte noch um einen erledigt-Vermerk ergänzen (im 1. Post auf Ändern->Erweitert).
 
Hatte ich abschliessend bereits gemacht.... und schlussendlich werde ich da noch auf einen Spruch verweisen, wo ich die nichterwünschten Anrufer informiere.
 
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.