Login
Login-Name Passwort


 
Newsletter
Werbung

So, 3. Juli 2005, 00:00

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.

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:

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung