Platzhalter - Pattern Matching

Asterisk bietet die Möglichkeit mit Platzhaltern[38] zu arbeiten. Durch sinnvolles Gruppieren von Nummernblöcken und Zuordnungen können mit Platzhaltern ganze Nummernbereiche mit einzelnen Konfigurationszeilen verwaltet werden. Im Prinzip enthält eine Konfigurationszeile einen variablen Nummernbereich, der mit Hilfe von ''Pattern Matching'' die definierte Regel auf eine Vielzahl von Nummern anwendet. So kann man anstatt der folgenden 10 Zeilen:

exten => 2000,1,Dial(SIP/2000,20)
exten => 2001,1,Dial(SIP/2000,20)
exten => 2002,1,Dial(SIP/2000,20) 
exten => 2003,1,Dial(SIP/2000,20)
exten => 2004,1,Dial(SIP/2000,20)
exten => 2005,1,Dial(SIP/2000,20)
exten => 2006,1,Dial(SIP/2000,20)
exten => 2007,1,Dial(SIP/2000,20)
exten => 2008,1,Dial(SIP/2000,20)
exten => 2009,1,Dial(SIP/2000,20)

auch nur eine Zeile schreiben:

exten => _200X,1,Dial(SIP/2000,20)

Das X steht dann für alle Zahlen von 0 bis 9.[39] Wichtig dabei ist, dass der Suchbegriff (das Pattern) mit einem _ (Underscore) anfängt, sonst würde Asterisk nur auf 200X (also eine 200 und den Buchstaben X) reagieren, da ja Nebenstellen nicht nur aus Ziffern bestehen können/müssen. Das Definieren von Platzhaltern mit Pattern Matching[40] beinhaltet, dass man bestimmte Zeichenketten oder Zahlenfolgen durch entsprechend vordefinierte Platzhalter ersetzt.

In Asterisk kann man folgende Patterns benutzen:

PatternBeschreibung
XAlle Zahlen von 0 bis 9
ZAlle Zahlen von 1 bis 9
NAlle Zahlen von 2 bis 9[a]
[nm]Die Zahlen n und m
[n-m]Alle Zahlen von n bis m
.Eine oder mehrere beliebige Zahlen und Buchstaben

[a] Der Grund für das Pattern N liegt in der Rufnummernplanung von Amerika. Dort beginnt die Vorwahl nicht wie in Deutschland mit einer 0, sondern mit einer 1. Beispiel: 1-555-12345678

[Warnung]Warnung

Ein Pattern muss immer mit einem _ (Underscore) anfangen!

Für Asterisk ist sowohl ein 2XXX als auch ein _2XXX als Wert sinnvoll, wird jedoch vollkommen unterschiedlich ausgewertet.

Beispiele für Patterns

Die folgenden Varianten dienen als Beispiele für die Möglichkeiten:

PatternBeschreibung
_XXXAlle 3-stelligen Zahlen. Wobei auch 007 eine 3-stellige Zahl ist.
_XXX[13579]Alle 4-stelligen Zahlen, die ungerade sind.
_[1-5]XAlle 2-stelligen Zahlen von 10 bis 59.
_0.Eine beliebige Zeichenkette, die mit einer 0 anfängt.
_.Alles! Sollte mit entsprechender Vorsicht benutzt werden, da es immer mit der höchsten Priorität gematcht wird.

Detailierte Informationen zum Thema Pattern Matching finden Sie in „Regular Expressions“.



[38] Unix- und Linux-Fans werden das Konzept des ''Pattern Matching'' von den ''regulären Ausdrücken'' in Programmen wie grep und sed kennen.

[39] Das Beispiel macht natürlich wenig Sinn. Warum sollte der Anrufer die 2009 wählen, um zur 2000 verbunden zu werden? Zur Lösung dieses Problems kommen wir gleich.

[40] Es gibt keinen wirklich passenden deutschen Begriff zum Fachbegriff ''Pattern Matching''. Eine mögliche Übersetzung könnte ''Musterabgleich'' oder ''Mustervergleich'' lauten.


Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch