Springe zu: Hauptnavigation, Themennavigation, Seiteninhalt, Spezielle Seiten

Erste Schritte mit Asterisk

In diesem Artikel nehmen wir die Asterisk-Telefonanlage in Betrieb, indem wir ein SIP-Telefon einbinden und ein Test-Telefonat führen. Dabei werden die vermutlich wichtigsten Konfigurationsdateien kurz vorgestellt.

Bei Voice over IP stellen die Telefone ihre Verbindung zur Telefonanlage über das übliche Computernetzwerk her. Dabei spielt es grundsätzlich keine Rolle, ob sich Telefone und Asterisk Server im lokalen Heimnetz befinden oder über das Internet kommunizieren. Ein Telefon meldet sich am Asterisk mit Benutzername und Kennwort an und wird einem Context zugeteilt, der die Wahlregeln (Dialplan) enthält. Näheres dazu weiter unten.

Alle Konfigurationsdateien befinden sich unter /etc/asterisk/. Daher wechseln wir in dieses Verzeichnis: cd /etc/asterisk

Um die mitgelieferten Beispieldateien nicht zu verlieren, erstellen wir das Verzeichnis /backup/asterisk/etc/asterisk:
mkdir -p /backup/asterisk/etc/asterisk

SIP und SIP-Konten konfigurieren

Die Datei sip.conf enthält Informationen über die Konfiguration des SIP-Protokolls und die Zugangsdaten der einzelnen Telefone. Bevor wir die Datei neu anlegen, verschieben wir das Beispiel in das Sicherungsverzeichnis:
mv sip.conf /backup/asterisk/etc/asterisk

Jetzt wird eine grundlegende Datei angelegt, die neben allgemeinen Einstellungen
einem Telefon den Zugang zur Telefonanlage ermöglicht. Der Abschnitt eines Telefons kann kopiert und für weitere SIP-Telefone angepasst werden.

Die neue Datei bekommt folgenden Inhalt:

[general]
port=5060
bindaddr=0.0.0.0
canreinvite=no

; Simon Bienlein
[7424]
type=friend
context=intern
defaultuser=7424
secret=7424
host=dynamic
nat=yes

Die Datei besteht aus zwei Abschnitten: Im Abschnitt [general] werden allgemeine SIP-Einstellungen vorgenommen. So wird definiert, dass Asterisk den UDP Port 5060 verwenden und auf allen IP-Adressen des Rechners lauschen soll. Die Einstellung canreinvite=no ist in Verbindung mit NAT sinnvoll, wo sich die VoIP-Telefone hinter Routern oder einer Firewall befinden.

Die weiteren Abschnitte der Datei definieren SIP-Geräte, deren Name in eckigen Klammern steht. Der Geräte-Name ist später im Dialplan wichtig, wenn eine Verbindung mit einem SIP-Gerät hergestellt werden soll. Im Beispiel hat das SIP-Gerät den Namen 7424 und ist vom Typ friend, was ein- und abgehende Gespräche ermöglicht. Der Context wird später im Dialplan verwendet, wo nach der passenden Regel der gewählten Extension (meist eine Ziffernfolge als Telefonnummer) gesucht wird. defaultuser und secret legen Benutzername und Kennwort fest, mit denen sich das SIP-Gerät am Asterisk-Server anmelden muss. Da der Hostname des SIP-Gerätes dynamisch vergeben werden kann, verwenden wir host=dynamic. Mit nat=yes wird Asterisk darauf hingewiesen, das sich zwischen Server und SIP-Gerät ein Router befinden könnte.

Kommentare werden mit dem Semikolon (;) eingeleitet und ignoriert.

Der Dialplan

Im Dialplan wird festgelegt, was in einem Context bei der Wahl einer Extension passieren soll. Der Context ist der Gruppenname für die darin enthaltenen Extensions. Unter einer Extension versteht man meist eine gewählte Telefonnummer. Eine Extension kann aber auch aus Buchstaben und Ziffern bestehen oder auf besondere Situationen reagieren, wie in folgenden Artikeln gezeigt wird.

Mein Asterisk Server kann auch von Freunden und Bekannten genutzt werden. Daher bestehen die internen Rufnummern (Extensions) und SIP-Gerätenamen aus vierstelligen Nummern. Diese setzen sich aus den ersten beiden Buchstaben aus Vor- und Nachname zusammen. Bei meinem Namen (Simon Bienlein) sind das die Buchstaben sibi, die auf dem Telefon mit den Ziffern 7424 eingegeben werden können. Mein Telefon ist später also unter der Rufnummer 7424 im Context intern erreichbar. Neben den Rufnummern zu echten SIP-Geräten wird es aber auch weitere Rufnummern wie einen Echotest oder den Zugang zur Sprachmailbox geben.

Der Dialplan kann in den Dateien extensions.conf und extensions.ael programmiert werden. Ich verwende AEL, die “Asterisk Extension Language”. Diese bietet meiner Meinung nach verschiedene Vorteile gegenüber dem Format aus extensions.conf und ist zum Beispiel schöner zu schreiben. Beide Dateien werden in das Backup-Verzeichnis verschoben:

debian:/etc/asterisk# mv extensions.* /backup/asterisk/etc/asterisk/
debian:/etc/asterisk#

Nun erstellen wir den kleinen Dialplan für den Context intern, der unter der Rufnummer 7424 das SIP-Gerät 7424 klingeln lässt. Um die Verbindung eines SIP-Telefons testen zu können, richten wir unter der Rufnummer 3246 den Echotest ein. Ruft man diese Nummer an, wird eine Ansage abgespielt, die die Funktion des Echotests erklärt. Danach startet der Echotest. Die Datei extensions.ael bekommt folgenden Inhalt:

// Dieser Context enthält alle internen Rufnummern.
context intern {
    7424 => {
        Dial(SIP/7424);
    }
    3246 => {
        Answer();
        Playback(demo-echotest);
        Echo();
        Hangup();
    }
}

Die geschweiften Klammern und die Einrückung erleichtern die Orientierung. In der ersten Zeile befindet sich ein Kommentar. Darunter leitet context intern { den Dialplan für den Context intern ein. Im Context wird definiert, wie sich Asterisk bei Anrufen auf eine bestimmte Extension (meist gewöhnliche Telefonnummer) verhalten soll. Die Zeilen drei bis fünf definieren, dass bei einem Anruf auf die Nummer 7424 die Dial()-Applikation aufgerufen wird und versucht, eine Verbindung zum SIP-Gerät 7424 herzustellen. In der einfachen Dial-Verwendung lässt Asterisk das Telefon “unendlich” lange klingeln oder stellt keine Verbindung her, wenn das Telefon nicht am Asterisk-Server angemeldet ist. Wird ein Gespräch (Channel) aufgebaut, wird dieser automatisch beendet, wenn ein Gesprächsteilnehmer auflegt. Diese Fähigkeit bringt die Dial()-Applikation mit.

In der Extension für den Echotest (3246) werden verschiedene Applikationen nacheinander verwendet: Answer() nimmt das Gespräch entgegen und hebt den virtuellen Hörer ab. Mit der Playback()-Applikation wird dem Anrufer die Ansage demo-echotest vorgespielt. Diese liegt in der Datei demo-echotest.gsm unterhalb von /var/lib/asterisk/sounds/ in den Verzeichnissen der installierten Sprachbausteine bereit. Die Dateierweiterung .gsm wird nicht angegeben, da der passende Codec von Asterisk selbstständig ermittelt wird. Mit der Aplikation Echo() startet der Echotest. Wird dieser vom Anrufer durch Drücken der Rautetaste beendet, legt Asterisk den virtuellen Hörer mit der Applikation Hangup() auf und beendet den Channel.

Jede Anweisung in einer Extension muss durch das Semikolon (;) beendet werden.

Asterisk starten

Sollte Asterisk durch einen Neustart des Rechners noch nicht gestartet worden sein, kann dies mit dem Befehl asterisk nachgeholt werden. Sollte Asterisk bereits laufen, wird eine entsprechende Meldung ausgegeben. Beim Start von Asterisk werden alle Konfigurationsdateien neu eingelesen.

Ein SIP-Telefon mit Asterisk verbinden

Nun ist es an der Zeit ein SIP-Telefon mit der Telefonanlage zu verbinden. Da ich kein echtes SIP-Hardware-Telefon besitze, verwende ich unter Windows das in einer kostenlosen Version erhältliche Express Talk. Dieses kann sehr gut über die Tastatur bedient und mit dem Screenreader JAWS verwendet werden. Hier geht es zur Express Talk-Website. Die Installationsdatei für Windows kann direkt heruntergeladen werden.

Bei der Einrichtung des SIP-Kontos werden folgende Daten abgefragt:

  • Full ‘Friendly’ Display Name: Simon
  • Server (SIP Proxy or Virtual PBX): 192.168.1.101 (Hier ist entweder die IP-Adresse es Asterisk-Servers oder sein via DNS auflösbarer name einzutragen.)
  • SIP Number (or User Name): 7424
  • Password: 7424

    Wenn eine Verbindung mit dem Asterisk Server hergestellt wurde, kann im Eingabefeld die gewünschte Nummer eingegeben und mit Enter die Sprachverbindung hergestellt werden. Ob die Asterisk-Verbindung steht, wird im unteren Bildschirmbereich von Express Talk angezeigt. Hier sind die letzten Zeilen der Log-Datei zu sehen. Bei erfolgter Registrierung kann diese zum Beispiel so aussehen:
    20:22:28 Registered as: sip:7424@192.168.1.101

    Nur noch so viel zur Bedienung von Express Talk: Zum Beenden des Gesprächs ist die Tastenkombination Strg+H und zum annehmen des Gesprächs Strg+A zu Drücken. Bei einem laufenden Gespräch kann die Rautetaste mit der Entertaste und die Sterntaste mit Escape übermittelt werden.

    Datum der Veröffentlichung: Dienstag, 27.10.2009

    Nach oben

    Diese Seite drucken