Nach unserem ersten Erfolg gehen wir nun Schritt für Schritt die
Konfigurationsdateien durch, um mehr über die Funktionsweise von
Asterisk zu erfahren. Fangen wir mit der Datei
/etc/asterisk/sip.conf
an.
[general] port = 5060 bindaddr = 0.0.0.0 context = sonstige
In diesem ersten Abschnitt [general] werden allgemeine Variablen definiert. Der Standard-Port wird auf 5060 gesetzt, d.h. Asterisk wickelt die Verbindungen über diese Portnummer ab. Mit bindaddr = 0.0.0.0 beachtet Asterisk einkommenden IP-Pakete auf allen IP-Adressen auf diesem System. Üblicherweise haben Rechner meist nur eine IP-Adresse, falls Sie einem Rechner mehrere IP-Adressen zugewiesen haben und vielleicht sogar mehrere Asterisk-Instanzen betreiben, können Sie hiermit eine bestimmte IP-Adresse einer jeweiligen Asterisk-Instanz zuordnen. Das Context-Konstrukt folgt nicht unbedingt einer intuitiven Logik bei der Konfiguration von Asterisk. Auf diesen Konfigurationsparameter werde ich noch an geeigneterer Stelle eingehen. Im weiteren Verlauf der Anleitungen wird nach und nach das Verständnis dafür geschaffen, was ein Context im Asterisk-Sinne bedeutet und wie er eingesetzt wird.
[2001] type=friend context=meine-telefone secret=1234 host=dynamic
Im Abschnitt [2001]
wird der SIP-Anschluss mit der
Kennung 2001 definiert. Dass hierbei eine Zahl (also 2001) verwendet
wurde, ist dabei eher der üblichen Erwartungshaltung geschuldet, da die
meisten Nutzer Telefone mit Nummern verbinden. Ein SIP-Anschluss kann
aber auch mit einem alphanumerischen Wert definiert werden, also
beispielsweise [Rezeption-1]
. Der Parameter type=friend
bestimmt vereinfacht gesagt, dass dieser SIP-Anschluss sowohl
eingehende, als auch ausgehende Verbindungen aufbauen darf.[25]
Und wieder stoßen wir auf den ominösen context
.
Diesen werden wir gleich in der Datei
/etc/asterisk/extensions.conf
aufgreifen und dann
wird das zugrundeliegende System in der Verwendung auch klarer.
Mit secret
wird das Passwort gesetzt. Wir benutzen an
dieser Stelle Zahlen, da man diese mit einem Telefon leichter eintippen
kann. host=dynamic
sagt aus, dass es für Asterisk ohne
Bedeutung ist, ob der SIP-Client wechselnde IP-Adressen hat.
Die Datei /etc/asterisk/extensions.conf
ist
das Herz jeder Asterisk-Konfiguration (siehe auch Kapitel 4, Programmieren im Dialplan). Sie ist vergleichbar mit einer
Schaltzentrale bei frühen Telefonanlagen. In dieser
Konfigurationsdatei wird bestimmt, welches Telefon mit welchem Telefon
Kontakt aufnehmen darf.
[sonstige]
Diese erste Sektion
der Konfiguration ist für den Context sonstige
bestimmt.
Da wir dieses in diesem Beispiel nicht benötigen, ist sie
leer.
[meine-telefone] exten => 2000,1,Dial(SIP/2000,20) exten => 2000,2,VoiceMail(2000)
Der Context wird von Asterisk immer benutzt, wenn ein Telefon
die Nummer eines anderen Telefons wählt. Der Name ist dabei beliebig.
Wichtig ist, dass in der Datei
/etc/asterisk/sip.conf
bei der Definition eines
SIP-Gerätes eine entsprechende Bezeichnung für den Context definiert
wurde und dieselbe Bezeichnung in der Datei
/etc/asterisk/extensions.conf
wieder als
context
-Bezeichnung verwendet wird (dann könnte er auch
Apfelmus
heißen). Dieser Context ist von entscheidender
Bedeutung für die Konfiguration des Telefons! Einfach gesagt legen die
im Context definierten Regeln exakt fest, welche Nummern das Telefon
wählen darf und welche Aktionen dadurch gestattet werden.
Der Context der angerufenen Nummer spielt keinerlei Rolle, sondern nur der Context der anrufenden Nummer! Merken Sie sich bitte diesen Zusammenhang, er ist wesentlich für einen erfolgreichen Umgang mit den Konfigurationsdateien. |
Die Syntax der Einträge ist immer wie folgt:
exten => Nummer, Prioritaet, Applikation
Wird eine Nummer gewählt, die einen entsprechenden Eintrag (Regel) in dieser Form aufweist, dann wird diese Regel gelesen und übernommen. Ist mehr als eine Regel für eine Nummer definiert, wird als Erstes die Regel mit der Priorität 1 durchgeführt. Die mit einer Regel verbundene Aktion steht an dritter Stelle (''Applikation''). Auf der Grundlage unserer Konfigurationsdateien (s.o.) geschieht Folgendes, wenn vom Telefon 2001 die Nummer 2000 gewählt wird:
Asterisk sieht in der Datei
/etc/asterisk/sip.conf
nach, welcher Context
der anrufenden Nummer (2001) zugewiesen wurde. In unserem Beispiel
haben wir der Nummer 2001 den Context meine-telefone
zugewiesen. Dadurch werden die Regeln gelesen, die in der
entsprechenden Context-Bezeichnung
context=meine-telefone
der Datei
/etc/asterisk/extensions.conf
definiert
sind.
Nachdem Asterisk die Regeln im Context für die anrufende Nummer (2001) gelesen hat, führt es die Regeln aus, die mit der angerufenen Nummer (2000) definiert sind und zwar in der durch die Priorität festgelegten Reihenfolge. (In unserem Beispiel sind im Context der anrufenden Nummer (2001) für die angerufene Nummer (2000) zwei Regeln hinterlegt.)
Da die Regel mit dem Befehl Dial(SIP/2000,20)
die Priorität 1 besitzt, kommt diese zur Ausführung. Dadurch wird
das Programm Dial gestartet, welches
wiederum in der Datei /etc/asterisk/sip.conf
nach dem Eintrag 2000 sucht und diesen Apparat dann 20 Sekunden
lang anruft (dafür die 20 als zweiter Parameter des
Dial-Befehls).
Wenn nach 20 Sekunden niemand den Anruf annimmt wird die Dial() Applikation abgebrochen und die Priorität um 1 hochgezählt.
Die Zeile exten => 2000,2,VoiceMail(2000)
ist also an der Reihe und startet das Programm
Voicemail mit dem Parameter
2000
. Die 2000
steht
für die Nummer der Voicemailbox. Wie Sie sich sicherlich schon
denken können, ist auch hier die 2000
nur
der Einfachheit halber genommen worden. Die Voicemailbox könnte
auch 5555
oder
Apfelmus
heißen.
Damit wir später vom jeweiligen Telefon auch an unsere Sprachnachrichten kommen, wird in der letzten Zeile die Nummer 2999 für das Aufrufen der Voicemailbox definiert.
exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)
Hierbei kommen wir zum ersten Mal mit der Benutzung von
Variablen in der /etc/asterisk/extensions.conf
in
Berührung. Das aufgerufene Programm heißt
VoiceMailMain und ihm wird als erster
Parameter die Ausgabe der Funktion
${CALLERID(num)}
übergeben.
${CALLERID(num)}
gibt die Nummer des Anrufers
aus. Deshalb weiß das Programm
VoiceMailMain, welche Voicemailbox gerade
abgefragt wird. Wird dieser Parameter nicht angegeben, fragt
VoiceMailMain als Erstes den Anrufer nach
dem Namen der VoiceMailbox. Der Parameter s
sorgt dafür, das der Benutzer kein Passwort eingeben muss.
Das Voicemail-Modul (siehe auch Kapitel 7, Voicemailsystem) wird in der Datei
/etc/asterisk/voicemail.conf
konfiguriert und mit
dem Wissen, das wir bisher bereits erworben haben, ist sie fast schon
selbsterklärend:
[general] format = wav [default] 2000 => 4711,Hans Mustermann,hansi@company.de 2001 => 0815,Ute Beispiel,ute.beispiel@company.de
In der Sektion [general]
wird das
Aufzeichnungsformat definiert (hier WAV) und in der Sektion
[default]
werden die beiden Mailboxen 2000 und 2001 mit
den entsprechenden Passwörtern (4711 und 0815) definiert. Hinter dem
Passwort findet sich dann noch ein Eintrag für den Namen des Benutzers
und danach seine E-Mail-Adresse. Sprachnachrichten werden so
automatisch als E-Mail-Attachments im WAV-Format zugestellt.
[25] Der Eintrag type=
kennt drei verschiedene Werte
(auf die in einem späteren Kapitel genau eingegangen wird):
friend
: kann anrufen und angerufen
werden.
peer
: kann nur anrufen.
user
: kann nur angerufen werden.