[Gelöst] Ausländische Anrufe mit einer Zeile abfangen

Macro

Neuer User
Mitglied seit
23 Okt 2004
Beiträge
76
Punkte für Reaktionen
0
Punkte
6
Hallo

ich versuche schon länger alle Nummer die mit 00 beginnen (ausser 004x) mit einer GotIf Zeile abzufangen.
Leider läuft die Zeile ohne Effekt einfach durch.

Code:
exten => s,n,GotoIf($["${CALLERID(num):0:3}" = 00[12356789]]?blocken1,${EXTEN},1)

Was funktioniert ist:

Code:
exten => s,n,GotoIf($["${CALLERID(num):0:3}" = "001"]?blocken1,${EXTEN},1)

Aber natürlich nur für 001 also USA. Das muss ich dann natürlich für alle 00x Vorwahlen machen.
Hat jemand eine Idee wo der Fehler liegt oder geht es mit GotoIf nicht?
Bin für jeden Hinweis dankbar.

Gruss Macro
 
Zuletzt bearbeitet:
Moins


Die Prüfung auf 00[12356789] funktioniert im GotoIf() nicht, da dies die Syntax einer Extensiondefinition ist/entspricht.

Wenn es unbedingt in einer Zeile stehen muss, dann...
1. Mehrere Bedingungen mit dem kaufmännischen UND ( & ) verketten
Code:
exten => s,n,GotoIf($[$["${test1}" = "1"] & $["${test2}" = "2"]]?machirgendwas)
2. ExecIf() nutzen ( ExecIf() kann auch ExecIf() ausführen )
...aber auch GoTo() und Hangup() ;)
 
  • Like
Reaktionen: Macro
Man kann es hier in der Tat nicht mit einem Pattern, aber mit einer REGEX geht es (theoretisch*):

Code:
exten => s,n,GotoIf($[${REGEX("^00[1-35-9]" ${CALLERID(num)})}]?blocken1,${EXTEN},1)

* Das "Erlauben" von 004... erlaubt eben nicht nur DE, sondern jegliche internationale Wahl mit 004 (also etwa auch CH, AT, GB, PL ...)
Daher wäre ein Zweizeiler dann besser:

Code:
exten => s,n,GotoIf($[${REGEX("^00[1-35-9]" ${CALLERID(num)})}]?blocken1,${EXTEN},1)
exten => s,n,GotoIf($[${REGEX("^004[0-8]" ${CALLERID(num)})}]?blocken1,${EXTEN},1)
 
  • Like
Reaktionen: Macro
Moins


Gut das Du ( @abw1oim ) den REGEX() ins Spiel bringst :D

Als Einzeiler mit ExecIf() ...
Code:
exten => s,1,execif($[${REGEX("^00[1-9]" ${CALLERID(num)})}]?execif($[${REGEX("^0049" ${CALLERID(num)})]?goto(context,${EXTEN},1):hangup(16))):goto(context,${EXTEN},1))
( Korrigiert und getestet mit unregistrierten Softphone und Fantasie CallerIDs ( 004930, 0041666, 0019666 u.s.w. )
:rolleyes: ( Ein verschachteltes ExecIf() mit REGEX() )
Trifft 1. REGEX(Ausland) und 2. REGEX(Deutschland) ists Jemand aus: 0049 und 1. Goto() wird ausgeführt
Wenn nicht, gibt es ein DECLINED ( 16 ) .
( Natürlich geht statt Hangup() auch Goto() )
...und Goto() ( am Ende ) könnte auch Dial() sein ;)


PS: Das zweite REGEX() muss nicht sein, da "^0049" kein "richtiger" RA ist ;)
Eine einfachere Prüfung tuts da auch.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Macro
Hallo

vielen Dank für die Ausführungen, ich werde es entsprechend umsetzen.

Gruss Macro
 
Kostenlos!

Statistik des Forums

Themen
248,908
Beiträge
2,303,675
Mitglieder
378,543
Neuestes Mitglied
KaBeGo