Workshops::Die eigene VoIP/ISDN-Anlage
Workshops::Die eigene VoIP/ISDN-Anlage
Workshops::Die eigene VoIP/ISDN-Anlage
Workshops::Die eigene VoIP/ISDN-Anlage
Workshops::Die eigene VoIP/ISDN-Anlage
Die eigene VoIP/ISDN-Anlage, Teil 2
Die LinuxBox Fon
Herzlich willkommen zum zweiten Teil des LinuxBox Fon-Workshops. In diesem Teil werden wir uns mit der Konfiguration und den Möglichkeiten von Asterisk beschäftigen.
Die Konfiguration von Asterisk kann recht umfangreich und komplex werden. Daher kann sie innerhalb dieses Workshops natürlich nicht erschöpfend behandelt werden.
Einige Quellen, die sich mit Asterisk beschäftigen und zu vielen Fragen Antwort geben, sind im folgenden genannt.
- www.voip-info.org Die Informationsquelle Nummer 1 zu Asterisk (englisch)
- Inoffizielles Asterisk-Anwenderhandbuch (deutsch, PDF)
- Asterisk-Users Mailingliste (englisch)
4. Die ISDN-Karten konfigurieren
Zunächst wollen wir die Einstellungen für die ISDN-Karten optimieren. Für die NT-Karte stellen wir in der Datei /etc/asterisk/zapata.conf folgendes ein.
;/etc/asterisk/zapata.conf [channels] language=de switchtype = euroisdn signalling = bri_net_ptmp pridialplan = dynamic prilocaldialplan = local nationalprefix = 0 internationalprefix = 00 echocancel=yes echotraining = 100 echocancelwhenbridged=yes immediate=no overlapdial=yes group = 1 context=default channel => 1-2
Und für die TE-Karte wird in der selben Datei folgendes eingetragen:
group = 2 signalling = bri_cpe ; evtl. auch ; signalling = bri_cpe_ptmp, bei einem Mehrgeräteanschluss group = 2 context=default channel => 4-5
Die meisten Parameter dürften selbsterklärend sein. Mit immediate=no und overdaldial=yes wird im Prinzip nur eingestellt, dass man auch bei einem abgenommenen Hörer wählen kann. Die Voreinstellung ist, dass Asterisk anfängt zu wählen, sobald der Hörer abgenommen wird. Dies entspricht oft nicht der Gewohnheit der Anwender - obwohl es bei den meisten Telefonen heute möglich sein dürfte, bei aufgelegtem Hörer zu wählen und erst nach Eingabe der Nummer den Hörer abzunehmen. Mit der o. g. Einstellung wartet Asterisk auf eine Telefonnummer - aber auch nicht unbegrenzt lange. Zwischen den einzelnen Tastenanschlägen wartet Asterisk höchstens fünf Sekunden und fängt dann an zu wählen. Dies kann u. U. etwas zu kurz ein, wenn man die Nummer von irgendwo ablesen muss. Möchte man eine längere Zeit einstellen, so muss dies im Dialplan mit dem Kommando DigitTimeout eingestellt werden.
5. Der Dialplan
Einen kleinen Teil des Dialplans habe ich ja schon im ersten Teil vorgestellt. Da der Dialplan der umfangreichste (und leider auch komplizierteste) Teil der Asterisk-Konfiguration ist, kommen wir leider nicht um etwas Theorie herum.
Der Dialplan legt fest, wie die einzelnen Channels (Zap, SIP, IAX, usw.) über Asterisk miteinander kommunizieren können, die dazugehörige Datei ist extensions.conf.
Zwei Begrifflichkeiten sollten vorab geklärt werden.
- Extension ist ein Ziel, welches gewählt wird, also zumeist eine Telefonnummer, es gibt aber auch Sonder-Extensions.
- Context ist eine Gruppe innerhalb des Dialplans. Der Context
[default]ist für alle offen. Ansonsten gilt, dass man nur Extensions erreichen kann, die in dem selben Context sind wie man selbst. Der Context, welchem man angehört, wird in der Channel-Konfiguration festgelegt, die zugehörige Nummer im Dialplan.
Um andere Contexts zu erreichen, muss der gewünschte Context mit Hilfe der include-Anweisung in den eigenen Context eingebunden werden. Ein typischer Context-Abschnitt könnte wie folgt aussehen:
[firma] exten => 151,1,Dial(Zap/g1/151,30,rt) exten => 151,2,Dial(Zap/g1/152,30,rt) exten => 152,1,Dial(Zap/g1/152,30,rt) exten => 152,2,Dial(Zap/g1/151,30,rt) [CEO] include => firma exten => 161,1,Dial(Zap/g1/161,30,rt} exten => 162,1,Dial(Zap/g1/162,30,rt}
Jeder, der dem Context "CEO" angehört, kann jede Extension aus den Contexts "firma" und "CEO" erreichen. Wer jedoch dem Context "firma" angehört, kann die Extensions aus dem Context "CEO" nicht erreichen.
Eine Extensionzeile hat immer das Format
exten => Extension,Priorität,Befehl
Dabei bedeutet
- Extension: Die Extension, die angewählt wird.
- Priorität: Die Priorität (Reihenfolge) mit der das Kommando abgearbeitet wird. Es ist möglich, zuerst etwa die Priorität 2 zu setzen und dann 1, aber Asterisk sortiert intern aufsteigend um. Ein Block, der zu einer einzelnen Extension gehört, wird sequentiell aufsteigend abgearbeitet, es sei denn,die Abarbeitung wird unterbrochen, etwa durch ein Hangup-Signal oder einer Fehlermeldung eines Befehls.
- Befehl: Auch als "application command" bekannt, siehe weiter unten
Bei größeren Installation wäre es mühsam, jede einzelne Nummer/Extension einzutragen, deswegen gibt es die Möglichkeit, Muster und Variablen einzusetzen. Ein Muster wird mit einem Unterstrich eingeleitet. Z.B. bedeutet das Muster
exten => _1XX,1,Dial(Zap/g1/${EXTEN},30,rt}dass jede dreistellige Extension, die mit der Ziffer 1 beginnt, über Zap/g1 angewählt werden soll. Folgende Sonderzeichen werden zur Musterbildung verwendet:
- X - jede Ziffer von 0-9
- Z - jede Ziffer von 1-9
- N - jede Ziffer von 2-9
- [1237-9] - jede Ziffer in den Klammern (hier 1,2,3,7,8,9)
- . - Wildcard, ein oder mehrere folgende Zeichen
Um z.B. jede mögliche gewählte Nummer abzufangen, müsste man nur das Muster X. bilden. Was aber nun, wenn mehrere Muster zutreffen? Asterisk wählt dann das Muster aus, welches am genauesten passt. Z.B. seien die Muster 1XX, 1. und X. gegeben. Wenn nun jemand die Nummer 123 wählt, treffen alle drei Muster (jede dreistellige Nummer welche mit einer 1 beginnt, jede Nummer, welche mit einer 1 beginnt, jede Nummer) zu. Das Muster 1XX passt jedoch am genauesten und Asterisk wird sich für dieses Muster entscheiden - sofern es nicht eine explizite Extension 123 gibt.
Die Befehle, die bei jeder Extension zur Anwendung kommen, nennt man auch "application commands". Derzeit gibt es rund 140 verschiedene Befehle. Eine Referenz dieser Befehle befindet sich auf www.voip-info.org. Am wichtigsten ist sicherlich der Dial-Befehl. Das Format dieses Befehls sieht wie folgt aus.
Dial(type/identifier,timeout,options,URL)
Die Parameter haben folgende Bedeutung:

