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