Letzte Woche => Endspurt!Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ. Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 (noch 2 Plaetze frei) - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/ |
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.[18]
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 Apfelmuss
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! 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) drei 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 6, 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.
[18] 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.
© by Stefan Wintermeyer