Suchen

Voice over IP mit Stern Einstieg in die Asterisk-Konfiguration

| Autor / Redakteur: Thilo Rößler / Ulrike Ostler

Die populäre Open-Source-Software „Asterisk“ für die Voice-over-IP-Telefonie liegt nun in der Version 1.4 vor. Thilo Rößler, Vorsitzender des Asterisk-Vereins, erläutert die Unterschiede zu den Vorgängervarianten 1.2.x.

Das Asterisk oder Asteriskus ist das Sternchen unter den Satzzeichen.
Das Asterisk oder Asteriskus ist das Sternchen unter den Satzzeichen.
( Archiv: Vogel Business Media )

Asterisk hat einen guten Namen. Selbst viele Anbieter kommerzieller Dienste, Produkte und Leistungen verlassen sich auf die Funktionen von Asterisk und dessen Anpassungsfähigkeit. Das ist Grund genug, sich mit der Open-Source-Software anzufreunden.

An die Software gelangt jeder, der sie sich aus dem Netz lädt. Unter der Web-Adresse www.asterisk.org lassen sich sowohl die Sourcen der aktuellen Stable-Variante von Asterisk als auch die momentanen Beta-Versionen herunterladen.

Für den Anfang sind prinzipiell nur Asterisk-Pakete pur notwendig. Es schadet jedoch nicht, sich auch gleich mit Zaptel, Libpri sowie den Archiven Addons und Sounds auszustatten.

Der Hardwaretreiber Zaptel, Kurzform für Zapata Telephony, wurde von Digium auf Linux portiert und stellt das Interface zwischen PCI-Karte (PCI = Peripheral Component Interconnect) und Asterisk-Server dar. Das Verzeichnis Libpri, das Akronym pri steht für Primary Rate Interface, ermöglicht die Anbindung von ISDN-Leitungen. Sounds sind Sound-Dateien, die so genannten „Prompts“, Ansagen. In Addons stehen den Basisumfang erweiternde Funktionen, zum Beispiel die Möglichkeit, die Datenbank MySQL zu verwenden oder deutschsprachige Ansagen.

Installieren

In der Version 1.2.x lässt sich Asterisk nach dem Entpacken der herunter geladenen Pakete mit den beiden Befehlen „make“ und „make install“ installieren.

Wer Asterisk 1.4 verwenden will, wird hier mit dem in Linux-Bereich wohlbekannten Dreischritt von „./configure“, „make“ und „make install“ zum Erfolg kommen. Wird configure dabei ohne weitere Optionen aufgerufen, wandern alle relevanten Dateien nach „/usr/local“ und in die entsprechenden Unterverzeichnisse.

Wer die Beta-Version lieber komplett in einem Verzeichnis finden will, kann mit der Option --prefix spezifizieren, in welches Verzeichnis die Installation erfolgen soll.

./configure --prefix=/opt/asterisk-1.4-beta

Im Anschluss daran bietet es sich fast immer an, Beispiel-Konfigurationsdateien erzeugen zu lassen. Dies funktioniert mit dem Befehl „make samples“. Die damit erzeugten Files können als erste Anhaltspunkte für eigene Konfigurationen dienen.

Tipp:

-----------------

Unabhängig vom angegebenen Installationsverzeichnis werden die Sample-Konfigurationen immer im Verzeichnis /etc/asterisk installiert. Sind hier bereits Dateien einer früheren Installation vorhanden, werden diese jedoch nicht überschrieben, sondern bekommen das Suffix „.old“. Wer ein übervölkertes Verzeichnis vermeiden will, sollte jedoch seine bestehenden Konfigurationen sichern und das Verzeichnis danach leeren.

-----------------

Für die ersten Schritte beim Verwenden von Asterisk benötigt man zunächst mindestens ein IP-Telefon, besser jedoch gleich mehrere. Wer die Anschaffung eines Hardphones zunächst scheut, die Preise dafür liegen zwischen 60 und mehreren Hundert Euro, kann sich zunächst ein kostenloses Softphones besorgen. Eine Auswahl findet sich unter: http://www.voip-info.org/wiki-Open+Source+VOIP+Software) im Abschnitt „SIP Clients (UA‘s).

Welche SIP-Telefone (SIP = Session Initiation Protocol) sich verwenden lassen, wird in der Datei sip.conf festgelegt. Die hier erzeugte Beispieldatei ist sehr umfangreich und unübersichtlich. Deswegen bietet es sich an, diese umzubenennen und mit einer eigenen, leeren Datei zu beginnen.

Die sip.conf ist - wie viele andere Asterisk-Konfigurationsdateien auch - im klassischen INI-File Format gehalten. Nahezu alle Abschnitte darin stellen ein SIP-Endgerät dar, oder andere Arten von SIP-Verbindungen.

Ausnahmen sind die Abschnitte [authentication], [general] und [globals]. Die mit [general] gekennzeichneten Einträge sind Voreinstellungen für Attribute. Diese werden verwendet, falls diese Attribute in späteren Abschnitten keine anderen Werte zugewiesen bekommen.

[globals] hingegen kennzeichnet allgemeine Variablen zur späteren Verwendung. Als [authentication] hinterlegte Einträge finden sich Benutzernamen beziehungsweise Kennwörter, die beispielsweise genutzt werden, falls ein SIP-Proxy Authentifizierung verlangt.

Hier ein Beispiel:

--- sip.conf // ---[general]context=default[globals][authentication][10]type=friendhost=dynamicusername=10secret=12345[11]type=friendhost=dynamicusername=11secret=12345--- // sip.conf ---

In diesem Beispiel gibt es zwei Telefone: 10 und 11. Die Namen müssen nicht numerisch sein. Mit Hilfe dieser bezeichnung und einem einfachen Passwort lassen si sich bei Asterisk anmelden.

Beide Telefone dürfen aufgrund der Kennzeichnung mit (host=dynamic) beliebige IP-Adressen besitzen und sowohl Anrufe empfangen als auch initiieren (type=friend).

Prinzipiell wäre aber auch möglich, Endgeräte darauf zu beschränken, angerufen zu werden (type=peer) oder selbst anzurufen (type=user).

Für alle Bereiche gilt implizit der unter [general] definierte context default, insofern keine abweichenden Angaben gemacht werden. Der Sinn von [context] erschließt sich später bei der Wahlplan-Definition.

Damit sich IP-Telefone anmelden können, muss Asterisk laufen. Für Tests kann man Asterisk durchaus im interaktiven Modus starten: Mittels des Befehls „asterisk -vvvvvvvvc“ (ausgeführt als root udn falls nötig mit vollem Pfad versehen) stellt man außerdem sicher, auf dem im Folgenden auftauchenden Command Line Interface (CLI) die meisten Log- und Debug-Meldungen sehen kann.

Im Live-Betrieb aber wird Asterisk meistens als Deamon gestartet. Der Administrator verbindet sich durch das Kommando „asterisk -r“ zum CLI des laufenden Deamons.

Im CLI angekommen zeigt das Kommando „sip show peers“ (ab 1.4 „sip list peers“), welche SIP-Telefone angelegt, ob diese angemeldet und unter welcher IP sie zu erreichen sind.Die Daten lassen sich nutzen, um einzelne Telefone zu registrieren. Dabei wird die IP des Asterisk-Servers als Verzeichnis für die SIP-Telefone verwendet.

Beispiel:

Bei der Verwendung von KPhone können beispielsweise folgenden Daten eingetragen werden.

--- CLI-Ausgabe // ---*CLI> -- Registered SIP ‚10‘ at 192.168.11.3 port 5062 expires 900-- Saved useragent „kphone/4.2“ for peer 10--- // CLI-Ausgabe ---

Das erfolgreiche Anmelden eines Telefons wird im CLI quittiert.

Wahlpläne

Sind mehrere Telefone registriert, muss in einem Wahlplan festgelegt werden, was bei einem Anruf passieren soll.

Wahlpläne können in zwei verschiedenen Konfigurationsdateien festgelegt werden. In der „extensions.conf“ findet eine einfache aber auch nur bedingt flexible Syntax Verwendung.

Die Syntax der „extensions.ael“ (AEL - Asterisk Extension Language) erlaubt bereits den Einsatz kompletter Programmier-Logiken mit Bedingungen und Schleifen. Ab Asterisk 1.4 existiert auch ein Syntax-Check, der bei der mitunter komplexen Syntax so manches Mal durchaus erforderlich sein dürfte.

Zum Einstieg jedoch ist die Verwendung der „extensions.conf“ ausreichend.

Wie bei „sip.conf“ existiert auch hier nach ausgeführtem „make samples“ eine umfassende Beispiel-Datei. Um mangelnder Übersicht vorzubeugen, sollte man auch hier mit einer leeren Datei beginnen.

Auch die „extensions.conf“ besitzt meist einen [general]-Abschnitt mit Informationen, die in allen folgenden Bereichen Gültigkeit besitzen. Die weiteren Abschnitte stellen den genannten Kontext her.

Je nach dem zu welchem Kontext ein SIP-Telefon gehört, gilt nur der Wahlplan, zu in diesem Kontext.

Zu Anfang könnte ein Wahlplan so aussehen:

--- extensions.conf // ---[general][default]exten => 10,1,Dial(SIP/10)--- // extensions.conf ---

Die Zeile „exten => 10,1,Dial(SIP/10)“ bedeutet, dass bei einem Anruf für die Nummer 10 das SIP-Telefon angerufen wird, das sich mit der Bezeichnung „10“ angemeldet ist.

Die 1 an erster Stelle nach dem Komma legt die Priorität fest. Existieren mehrere Schritte zur Bearbeitung eines Anrufs, wird diese Zahl in weiteren Zeilen hoch gezählt.

Mehrere Schritte:

Ein eingehender Anruf lässt sich auch in mehren Schritten abhandeln. Das ist bereits der Fall, wenn der Anruf zu einem anderen Telefon weitergeleitet wird, falls das Telefon 10 nicht nach einer bestimmten Zeit benutzt wird.

--- extensions.conf // ---[general][default]exten => 10,1,Dial(SIP/10|15)exten => 10,2,Dial(SIP/11|15)exten => 10,3,Dial(SIP/12|15)--- // extensions.conf ---

Hier springt der Anruf nach jeweils 15 Sekunden ohne Antwort weiter zu dem Telefonen 11 und 12. Will man die Zeit bis zum nächsten Schritt zentral festlegen, kann dafür der [globals]-Bereich genutzt werden.

--- extensions.conf // ---[globals]CALLTIMEOUT=15[default]exten => 10,1,Dial(SIP/10|${CALLTIMEOUT})exten => 10,2,Dial(SIP/11|${CALLTIMEOUT})exten => 10,3,Dial(SIP/12|${CALLTIMEOUT})--- // extensions.conf ---

Einrichten des Anrufbeantworters

Die Weiterleitung kann aber auch zu einer Mailbox führen. Diese werden in der voicemail.conf festgelegt. Dort fügt man dem Kontext, zu dem das Telefon gehört, in diesem Fall „default“, eine Mailbox hinzu. Diese kann, muss aber nicht zwingend die Nummer des Telefons haben.

Darüber hinaus kann man einen Namen sowie eine IP-Adresse angeben, wenn der Besitzer der Voice-Mail-Box per Email über eingegangenen Voice-Mails informiert werden soll. Außerdem lassen sich eingegangene Voice-Mails auf Wunsch auch direkt als Anhang zugesenden.

Beispiel:

--- voicemail.conf // ---...[default]10 => 10, Testuser1,testmail@testdomain.de--- // voicemail.conf ------ extensions.conf // ---[globals]CALLTIMEOUT=15[default]exten => 10,1,Dial(SIP/10|${CALLTIMEOUT})exten => 10,2,VoiceMail(10)--- // extensions.conf ---

Durch diesen Wahlplan landen Anrufe in der Mailbox, wenn das Telefon 10 nicht nach 15 Sekunden bedient wird.

Da es mühsam wäre, Wahplan-Regeln für jede einzelne Telefonnummer separat festzulegen, besteht die Möglichkeit, die zutreffenden Nummern per Pattern-Matching zu ermitteln. In diesem Fall verwendet man anstelle der konkreten Nummer „10“ einen Platzhalter.

So steht „XX“ für jede Kombination aus zwei Zeichen, numerisch und alphanumerisch, damit also auch für die 10. Im Asterisk-Wahlplan werden solche Pattern durch einen Unterstrich (Underscore) am Anfang der Platzhalter gekennzeichnet.

--- extensions.conf // ---[globals]CALLTIMEOUT=15[default]exten => _XX,1,Dial(SIP/${EXTEN}|${CALLTIMEOUT})exten => _XX,2,VoiceMail(${EXTEN})--- // extensions.conf ---

Auf den jeweils konkreten Wert von „XX“ lässt sich mittels der Variable EXTEN Bezug nehmen. Die vorliegende extensions.conf sorgt dafür, dass bei jeder gewählten zweistelligen Nummer zunächst das zugehörige SIP-Telefon angesprochen wird. Falls erforderlich, wird der Anruf jedoch zur der Voice-Mailbox weitergeleitet, deren Bezeichnung der angerufenen Nummer entspricht.

Die Asterisk-Version 1.4 erleichtert das separate Definieren von Objekten, die häufig zusammen gehören, wie Telefon und Voice-Mailbox. Die Datei users.conf ermöglicht nämlich, alle benötigten Konfigurationen zentral und „in einem Rutsch“ durchzuführen. Das sieht dann wie folgt aus:

--- users.conf // ---[12]fullname = User12secret = 123456hasvoicemail = yeshassip = yeshasiax = nohasmanager = nocallwaiting = nocontext = default--- // users.conf ---

Diese Einstellung erzeugt die Einstellungen für ein SIP-Telefon mit der Nummer 12 (hassip) und einer zugehörigen Voice-Mailbox (hasvoicemail).

Änderungen im Wahlplan:

Schließlich sollte jeder wissen, wie die Änderungen im Wahlplan aktiviert werden. Entweder Asterisk wird neu gestartet, mit dem CLI-Kommando „restart now“, oder neu die Konfigurations-Dateien mit dem CLI-Kommando „reload“ neu geladen.

Artikelfiles und Artikellinks

(ID:2000714)