Eine Minimal-Telefonanlage

Wie sieht die einfachst mögliche Telefonanlage aus? Zwei Telefone und eine Black-Box, die diese beiden Telefone sinnvoll miteinander verbindet. Die Black-Box ist ein gewöhnlicher PC, auf dem wir die Asterisk-Software installieren und der von nun an unsere Telefonanlage sein wird. Die beiden Telefone sind so genannte „SIP-Telefone“, also Telefone die das VoIP-Protokoll SIP benutzen. Auf der Asterisk-Server Seite genügt für das folgende Beispiel ein einfacher PC, auf dem Sie eine aktuelle Linux-Distribution installieren, als Grundlage für unseren Kick-Start. [1]

Die Aufgabe

  • Einen frisch mit Linux installierten PC zu einer Mini-Telefonanlage umfunktionieren

  • Zwei VoIP-Telefone einrichten und die Nummern 2000 und 2001 zuweisen

  • Vom Telefon 2000 das Telefon 2001 anrufen und umgekehrt

Voraussetzungen

Sie benötigen für die Installation von Asterisk einen halbwegs aktuellen PC mit genügend Speicher. Es geht auch mit älterer Hardware, allerdings kann ich dann mein 30-Minuten Versprechen nicht einlösen und es macht auch weniger Spaß, damit zu arbeiten. Konkret sollte es mindestens ein 500 MHz Pentium-System mit 512 MByte Arbeitsspeicher (RAM) und einer 20 GByte Festplatte sein. Asterisk läuft auf allen gängigen Linux-Distributionen. Diese können Sie entweder im Geschäft kaufen oder aus dem Internet herunterladen.[2]

Bitte achten Sie darauf, dass die Linux-Distribution aktuell ist, und verwenden Sie nicht eine 2 Jahre alte Heft-CD, die noch irgendwo im Schrank liegt.

Die einzelnen Installations- und Konfigurationsanweisungen sind in diesem Buch exemplarisch für ein Linux-System auf Basis einer Debian-Distribution[3] beschrieben. Weiterhin werden die entsprechenden Anweisungen auf der Kommandozeile einer Shell eingegeben.[4]

Welche Asterisk-Version ist empfehlenswert?

Die Asterisk Version 1.4 ist Ende 2006 veröffentlicht worden und ist mittlerweile als stabil anzusehen. Dieses Buch beschäftigt sich deshalb hauptsächlich der Version 1.4. Falls nicht anders geschrieben können Sie aber auch die im Buch beschriebenen Befehle auf einer Asterisk 1.2 anwenden.

Welche Linux-Distribution ist die richtige für einen Asterisk-Server?

Die Diskussion über die ideale Linux-Distribution bekommt immer sehr schnell technisch-religiöse Züge. Der Autor hat sich in diesem Buch für ein Debian Linux (stable) entschieden. Dennoch haben wir im Anhang sehr viel Platz für Installationsanleitungen auf anderen Linux-Distributionen und anderen Betriebssystemen eingeräumt, um ihnen hier auch eine alternative Wahl zu unterstützen. Bei späteren Kapiteln (z.B. ISDN) kann diese Vielfalt nicht in gleicher Weise aufrecht erhalten werden. Zum Teil gibt es für andere Betriebssysteme keine passenden ISDN-Treiber. Aus diesem Grund gehen wir, wenn nichts anders gesagt wird, immer von einem Debian Linux aus.

Warum keine fertigen Asterisk-Pakete mit rpm oder apt-get installieren?

Es gibt einen ganz einfachen Grund, warum an dieser Stelle im Buch bei den Installationsanleitungen für Asterisk nicht auf die in den Distributionen bereits enthaltenen Asterisk-Pakete zurückgegriffen wird, und der heißt: Aktualität!

Keine Standard-Linux-Distribution hat auch nur halbwegs aktuelle Asterisk-Pakete in ihren Stable-Zweigen. Da Asterisk ein sehr lebendiges und wachsendes Softwareprojekt ist, ist es aber auch nicht sinnvoll, eine 1.0-er Version zu installieren, wenn bereits eine 1.4-er lange auf dem Markt und einfach viel besser ist.

[Anmerkung]

Da von Distributionen gebaute Pakete einige Vorteile haben und ein Update-Zyklus einfacher zu realisieren ist, hoffe ich darauf, dass dieses Kapitel irgendwann einmal auf fertige Standardpakete aus den Stable-Versionen zugreifen kann. Das liegt aber noch in der Zukunft.

Als Lohn für die Arbeit mit dem Übersetzen der Quellpakete winkt Ihnen das Wissen, Ihr Asterisk-System auf dem neuesten Stand zu halten, ohne dass Sie dafür auf aktuellere Pakete für Ihre Distribution warten müssen.

Die Installation aus den aktuellen Asterisk-Sourcen

Bitte schauen Sie im Anhang des Buches nach der Installationsanleitung für Ihr Lieblingsbetriebssystem (siehe Anhang A, Installationsanleitungen für Asterisk 1.4) und installieren Sie nach dieser Anleitung einen Asterisk Server. Wir gehen in diesem Buch immer von einer Installation auf einem Debian Linux aus (siehe „Installation Asterisk 1.4.x auf Debian Linux 4.0 (Etch)“). Bitte lesen Sie nach der Installation wieder an dieser Stelle des Buches weiter.

Den Asterisk-Server konfigurieren

Im Verzeichnis /etc/asterisk/ finden wir jetzt alle Konfigurationsdateien in einer einfachen Standardausführung:

debian:/usr/src# cd /etc/asterisk 
debian:/etc/asterisk# ls
adsi.conf           cdr_tds.conf     indications.conf  privacy.conf
adtranvofr.conf     codecs.conf      logger.conf       queues.conf
agents.conf         dnsmgr.conf      manager.conf      res_odbc.conf
alarmreceiver.conf  dundi.conf       meetme.conf       rpt.conf
alsa.conf           enum.conf        mgcp.conf         rtp.conf
asterisk.adsi       extconfig.conf   misdn.conf        sip.conf
asterisk.conf       extensions.ael   modem.conf        sip_notify.conf
cdr.conf            extensions.conf  modules.conf      skinny.conf
cdr_custom.conf     features.conf    musiconhold.conf  telcordia-1.adsi
cdr_manager.conf    festival.conf    osp.conf          voicemail.conf
cdr_odbc.conf       iax.conf         oss.conf          vpb.conf
cdr_pgsql.conf      iaxprov.conf     phone.conf        zapata.conf
debian:/etc/asterisk#

Dies ist jetzt eine recht umfangreiche Liste, aber -- keine Angst -- für unsere Mini-Telefonanlage müssen wir uns nur mit zwei Dateien näher befassen. Einige mit make samples erstellen Defaultdateien verschieben wir dazu erst einmal nach /etc/asterisk/backup/ (damit wir später bei Bedarf darauf zugreifen können):

debian:/etc/asterisk# mkdir backup
debian:/etc/asterisk# mv sip.conf backup/
debian:/etc/asterisk# mv extensions.conf backup/
debian:/etc/asterisk# 

Legen Sie mit Ihrem Lieblingseditor[5] die Datei /etc/asterisk/sip.conf mit folgendem Inhalt an:[6]

[general]
port = 5060
bindaddr = 0.0.0.0
context = sonstige

[2000]
type=friend
context=meine-telefone
secret=1234
host=dynamic

[2001]
type=friend
context=meine-telefone
secret=1234
host=dynamic

In die Datei /etc/asterisk/extensions.conf schreiben wir einen einfachen Wählplan:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000)
exten => 2001,1,Dial(SIP/2001)

Und diese paar Zeilen Konfiguration sollen ausreichen, um eine komplette Telefonanlage zu konfigurieren? Dabei heißt es doch immer, dass Asterisk so kompliziert sei. Probieren wir es einmal aus! Mit dem Befehl asterisk -c starten Sie Asterisk:

debian:/etc/asterisk# asterisk -c
Asterisk 1.4.2, Copyright (C) 1999 - 2005 Digium.
Written by Mark Spencer <markster@digium.com>
========================================================================
=
[ Booting...Nov 20 18:59:28 NOTICE[14937]: cdr.c:1185 do_reload: CDR 
simple logging enabled.
........................................................................
.
............................................... ]
Asterisk Ready.
*CLI> 

Mit dem erfolgreichen Start von Asterisk erhalten wir ebenfalls eine Konsole, auf der man mit dem laufenden Asterisk-Prozess kommunizieren kann. Vor uns sehen wir jetzt das Command Line Interface (CLI) von Asterisk. Hier können wir aktiv in das Geschehen eingreifen und als erste Handlung mit dem Befehl stop now die eben gestartete Telefonanlage wieder herunterfahren:

*CLI> stop now
debian:/etc/asterisk#

Die SIP-Telefone konfigurieren

Jetzt müssen wir zwei SIP-Telefone mit der Anlage verbinden. Wenn Sie kein SIP-Telefon besitzen, können Sie auch zwei Software-Telefone, die Sie aus dem Internet herunterladen, benutzen.

[Warnung]

Wenn Sie zu Testzwecken ein Software-SIP-Telefon und den Asterisk-Server auf den gleichen Rechner installieren wollen, so müssen Sie beim SIP-Telefon den SIP Port auf 5061 umstellen, da 5060 bereits von Asterisk benutzt wird.

[Tipp]

Stellen Sie in Ihrem SIP-Telefon als Registrar und Proxy jeweils die IP-Adresse des Asterisk-Server ein. Bei manchen Telefon ist es auch notwendig alle Felder und notfalls mit xxx zu füllen. Leider gibt es dafür keine allgemein gültige Hilfe. Da hilft nur Ausprobieren!

Die User-Daten können Sie der Datei /etc/asterisk/sip.conf entnehmen. Das SIP-Telefon 2000 muss dann folgende Konfiguration enthalten:

  • User: 2000

  • Passwort: 1234

  • SIP-Registrar: IP-Adresse Ihres Asterisk-Servers

  • SIP-Proxy: IP-Adresse Ihres Asterisk-Servers

Falls Sie die IP-Adresse Ihres Asterisk-Linux-Systems nicht kennen, finden Sie diese auf einem System mit einer Netzwerkkarte und einer IP-Adresse mit folgendem Befehl heraus:

debian:/etc/asterisk# ifconfig | grep Bcast | sed s/Bcast.*//
          inet addr:23.3.19.73

In diesem Fall ist es also die 23.3.19.73.

Wir starten Asterisk erneut, diesmal jedoch in einem ''gesprächigeren'' Modus, um mehr Informationen über die laufenden Aktionen zu erhalten. Dies erreichen wir, indem wir Asterisk mit dem Parameter -vvvvvc starten (die 5 v stehen für den Verbose-Level 5'). Dann können wir verfolgen, wie sich das SIP-Telefon an der Anlage anmeldet:

debian:/etc/asterisk# asterisk -vvvvvc
[...]
Asterisk Ready.
*CLI>

Nachdem Sie Ihre SIP-Telefone konfiguriert haben, können Sie jetzt den Anmeldevorgang starten. Im Zweifelsfall einfach das Telefon aus- und einschalten und dann etwas warten, da die SIP-Telefone teilweise sehr langsame Hardware haben und zum Booten teilweise weit über eine Minute brauchen. Der Asterisk-Prozess teilt uns die Anmeldung der Telefone mit:

*CLI>     -- Registered SIP '2000' at 87.143.3.144 port 5060 
expires 120 -- Unregistered SIP '2000'

*CLI>     -- Registered SIP '2001' at 87.143.3.145 port 5060 
expires 120 -- Unregistered SIP '2001'

Nachdem die Telefone am System angemeldet sind, können wir jetzt von einem Telefon das andere anrufen, z.B. einfach die 2001 vom 2000-er anwählen. Wenn Sie sich jetzt über die Telefone unterhalten können, haben Sie es geschafft --- Ihre erste Mini-Telefonanalage mit Asterisk funktioniert.

[Tipp]

Falls Sie im Eifer des Gefechts die Registered SIP Ausgabe im CLI übersehen haben oder sich nicht mehr sicher sind, können Sie mit sip show peers alle konfigurierten SIP-Telefone auflisten. Mit sip show peer 2000 bekommen Sie sogar ganz detaillierte Informationen zum Peer 2000.

Sie können Asterisk jederzeit mit dem Kommando stop now im CLI beenden.

Und jetzt mit einem Anrufbeantworter

Asterisk beinhaltet bereits ein fertiges Voicemail-Modul, wir müssen es lediglich in der Datei /etc/asterisk/voicemail.conf aktivieren. Als ersten Schritt verschieben wir diese Default-Datei in unser Verzeichnis mit den Sicherungskopien der Konfigurationsdateien:

debian:/# cd /etc/asterisk
debian:/etc/asterisk# mv voicemail.conf backup/

Daraufhin erstellen wir eine neue /etc/asterisk/voicemail.conf und versehen diese mit folgendem Inhalt:

[general]
format = wav

[default]
2000 => 4711,Hans Mustermann,hansi@company.de
2001 => 0815,Ute Beispiel,ute.beispiel@company.de

Damit sind die Voicemailboxen grundsätzlich eingerichtet (ja, so einfach geht das!). Jetzt müssen wir aber noch in der /etc/asterisk/extensions.conf ein paar weitere Zeilen eintragen, um die Voicemail-Funktionalität unseren Telefonen zuzuweisen. Bitte vergessen Sie dabei nicht den neuen Eintrag ",20" bei der Dial-Applikation.

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000,u)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001,u)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

Fertig! Asterisk nur noch mit asterisk -vvvvvc neu starten

[Tipp]

In einem laufenden Asterisk System reicht auch ein reload im CLI aus.

und mit einem Telefon das andere anrufen. Nachdem es 20 Sekunden lang geklingelt hat (deshalb die 20 am Ende des Dial-Befehls), kommt man auf die VoiceMailbox. Ist die Gegenstelle besetzt, wird man direkt auf die VoiceMailbox 2000 geleitet. Sie können vom Telefon mit der Nummer 2000 die entsprechende Mailboxen abhören, indem Sie die Nummer 2999 anrufen. Dann bekommen Sie Ihre Voicemailbox als Menü vorgespielt.

Wenn Sie das Ganze noch mit einer Passwortabfrage absichern wollen oder eine Auflistung des Menüs suchen, finden Sie dazu in Kapitel 6, Voicemailsystem die nötigen Informationen.

Was haben wir gerade gemacht?

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.[7]

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.

extensions.conf - der Dialplan

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,u)

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.

[Wichtig]

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) 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,u) ist also an der Reihe und startet das Programm Voicemail mit dem Parametern 2000 und u. Die 2000 steht für die Nummer der Voicemailbox und das u für die Sprachbausteine unavailable (nicht erreichbar). 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 Funktionen in der /etc/asterisk/extensions.conf in Berührung. Das aufgerufene Applikation 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.

voicemail.conf - der Anrufbeantworter

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.

Ins öffentliche Telefonnetz telefonieren

Jetzt werden Sie vielleicht einwenden, dass Sie zwar eine fertige Telefonanlage haben, was an und für sich spannend ist, aber ohne den Anschluss an die große weite Welt noch nicht wirklich nützlich. Wenn Sie mir weitere 10 Minuten Zeit geben und Ihre Mini-Telefonanlage eine Internetverbindung besitzt, lässt sich auch diese Aufgabe lösen und Sie erhalten in Kürze Anschluss ans Festnetz. Dazu benötigen Sie einen Account bei einem SIP-Provider.

Jetzt konfigurieren wir Asterisk so, dass Sie mit den Telefonen 2000 und 2001 ins deutsche Festnetz telefonieren können. Als Erstes muss der Provider-Account in der /etc/asterisk/sip.conf eingetragen werden:

[general]
port = 5060
bindaddr = 0.0.0.0
context = sonstige

register => 5587572:UHDZJD@mein-voip-provider.de/5587572
;              ^       ^       ^                    ^
;              |       |       |                    |
;             User Passwort  Provider              User

[2000]
type=friend
context=meine-telefone
secret=1234
host=dynamic

[2001]
type=friend
context=meine-telefone
secret=1234
host=dynamic

[ext-sip-account]
type=friend
context=von-voip-provider
username=5587572
fromuser=5587572
secret=UHDZJD
host=mein-voip-provider.de
fromdomain=mein-voip-provider.de
qualify=yes
insecure=very
nat=yes

Den Usernamen (im Beispiel 5587572) und Ihr Passwort (im Beispiel UHDZJD) können Sie der SIP-Provider-Webseite entnehmen. Damit kann Asterisk diesen Account benutzen. Allerdings müssen wir jetzt noch in der /etc/asterisk/extensions.conf eine Regel zum Rauswählen einfügen:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000,u)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001,u)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

Nachdem die Einträge in den Konfigurationsdateien erstellt sind, starten Sie Asterisk, wie bekannt, mit asterisk -vvvvvc in das CLI und warten ein paar Sekunden, bis sich eines der SIP-Telefone angemeldet hat. Danach einfach eine beliebige Nummer im deutschen Festnetz (mit Vorwahl) wählen und warten (im CLI können Sie beobachten, was passiert). Nach kurzer Zeit hören Sie auch schon das Freizeichen und können mit einem Festnetz-Teilnehmer telefonieren. Wie die obige Konfiguration genau funktioniert, wird an dieser Stelle noch nicht verraten.[8]

Gespräche vom öffentlichen Netz entgegennehmen

Der letzte Schritt ist ein kleiner. Wir wollen über unsere Rufnummer beim VoIP-Provider auf dem Telefon mit der Nummer 2000 angerufen werden können. Dazu müssen wir nur noch einen weiteren Context in die Konfigurationsdatei /etc/asterisk/extensions.conf hinzufügen:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000,u)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001,u)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

[von-voip-provider]
exten => 5587572,1,Dial(SIP/2000)

Fertig! :-)

Die 5587572 ist Ihre interne Rufnummer bei Ihrem VoIP-Provider. Bitte schauen Sie auf der Webseite des Providers in Ihren Kundendaten diese Nummer nach. Dass die Rufnummer hier dieselbe ist wie der Username, ist prinzipiell Zufall.

Wer will kann natürlich ganz einfach mit der folgenden Variante noch eine Voicemailbox für Gespräche die vom SIP-Provider kommen aktivieren:

[sonstige]

[meine-telefone]
exten => 2000,1,Dial(SIP/2000,20)
exten => 2000,2,VoiceMail(2000,u)

exten => 2001,1,Dial(SIP/2001,20)
exten => 2001,2,VoiceMail(2001,u)

exten => 2999,1,VoiceMailMain(${CALLERID(num)},s)

exten => _0[1-9].,1,Dial(SIP/${EXTEN}@ext-sip-account)

[von-voip-provider]
exten => 5587572,1,Dial(SIP/2000,20)
exten => 5587572,2,VoiceMail(2000,u)

In diesem Einführungs-Kapitel wollte ich Ihnen zeigen, wie schnell und einfach man mit Asterisk eine funktionierende Telefonanlage aufbauen kann. Im verbleibenden Teil des Buches gehen wir tiefer in die Details und ich zeige Ihnen, was man mit Asterisk alles machen kann.



[1] Unser „Hello World“-Beispiel macht noch mehr Spaß, falls Sie über zwei oder mehr PCs (oder Laptops) verfügen, die Sie in einem gemeinsamen Netzwerk verbunden haben. Dann können Sie einen Rechner als Asterisk-Telefonanlage verwenden und die anderen PCs als Softphones.

[2] Ein paar URLs zu im Internet frei verfügbaren Linux-Distributionen:

[3] Die aktuelle Debian Stable-Version.

[4] Falls Sie mit einer grafischen Benutzeroberfläche des X-Window Systems arbeiten, benötigen Sie eine Textkonsole für die Eingabe, beispielsweise ''xterm'' oder ''konsole''.

[5] Wenn Sie keinen Editor kennen, den Sie in einem Terminalfenster verwenden können, empfehle ich Ihnen nano. Unter Debian ist dieser einfach als Benutzer root mit apt-get -y install nano zu installieren. Danach öffnen Sie mit nano dateiname die Datei. In Nano selbst sehen Sie im unteren Bereich des Bildschirms die wichtigsten Befehle.

[6] Diese einfachen Passwörter sind natürlich nur für den Testbetrieb gedacht, für den produktiven Einsatz sollten Sie entsprechend bessere Passwörter vergeben.

[7] 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.

[8] Nur so viel an dieser Stelle: Die Variable ${EXTEN} enthält die vom Benutzer gewählte Nummer (siehe Kapitel 4, Programmieren im Dialplan).