Telefonieren mit Asterisk (I)

Asterisk Logo«…Was soll ich machen? Eine virtuelle PBX? Was um alles in der Welt ist das!?» Ich gebe es freimütig zu, ich hatte den Begriff «PBX» wirklich nie zuvor gehört. Dass hängt damit zusammen, dass ich bisher mit Telefonie so gut wie nichts zu tun hatte und mich für Telefone bis vor einigen Wochen auch kaum interessierte. Telefone waren für mich eher etwas langweiliges.

Also, PBX ist die Abkürzung für «Private Branch Exchange» und kann am einfachsten mit «Telefonanlage» übersetzt werden. Klingt ganz einfach, oder? Ist es aber nicht! Denn damit begeben wir uns in ein Fachgebiet, das eine unstillbare Neigung zur Unübersichtlichkeit und Komplexität hat. Das hängt damit zusammen, dass vieles neu und die Dokumentation dementsprechend spärlich ist.

Durch die zunehmende Rechenleistung und erhöhte Bandbreite in den weltumspannenden Netzen haben sich in den vergangenen Jahren verschiedene Technologien entwickelt, die das Telefonieren auf IP-Basis ermöglichen. Als Trägermedium dient also nicht mehr ein herkömmliche Telefonleitung sondern ein Computernetzwerk. Digitale Telefonzentralen ermöglichen es, eine firmen- oder hausinterne Telefonanlage aufzubauen, die weniger als herkömmliche Zentralen kostet, dafür aber in bezug auf Funktionsumfang und Flexibilität einiges mehr bietet.

Wer sich mit digitaler Telefonie beschäftigt, wird rasch mit einer Unmenge an Fachbegriffen konfrontiert: VoIP, SIP, IAX, DTMF, H232, OpenSER, Voicemail, etc. etc. Um mir ein Bild der der Sache machen zu können, habe ich mich zuerst durch die Online-Dokus der verschiedenen Websites durchgelesen, die sich mit diesem Thema beschäftigen. Etwas frustriert stellte ich dann fest, dass es nicht ganz simpel ist, sich einen Überblick zu verschaffen und etwas Ordnung in das umfangreiche Angebot zu bringen. Ein guter Einstiegspunkt ist nach meiner bisherigen Erfahrung voip-info.org. Die Wiki-Seite ist zwar stellenweise ziemlich chaotisch, aber sie enthält einen Bereich für Einsteiger, der die verschiedenen Möglichkeiten, Techniken und Produkte vorstellt.

Asterisk, der Alleskönner

Eher früher als spät taucht der Begriff «Asterisk» auf, eine von Digium entwickelte Software-Telefonanlage, von der eine kommerzielle, aber auch eine freie, GPL-lizensierte Version gibt. Asterisk läuft auf den verschiedensten UNIX-Varianten, benötigt – je nach Verwendungszweck – keine zusätzliche Telefoniehardware und stellt durch einen modularen Aufbau eine Myriade an Funktionen zur Verfügung. Dabei ist das System in bezug auf die Ressourcen dennoch genügsam, ein kleines System mit bis zu 10 SIP-Telefonen läuft auf einem Server mit einer 700Mhz Intel-CPU mit 256 MB RAM problemlos.

Aber was genau ist Asterisk? Die Software als Telefonanlage zu bezeichnen ist zwar nicht falsch, aber eine glatte Untertreibung, denn Asterisk kann wesentlich mehr! Ausserdem muss Asterisk entsprechend konfiguriert und mit einem an die Bedürfnisse angepassten Wählplan ergänzt werden, damit es als Telefonanlage verwendet werden kann. Es ist treffender, Asterisk als Baukasten zu bezeichnen, der die Bausteine liefert mit denen verschiedensten Aufgaben gelöst werden können.

Der Wählplan

Das Herzstück des Asterisk Server ist der Wählplan (Dialplan), mit dem festgelegt wird, wer wen anrufen darf und welche Telefone klingeln, wenn eine bestimmte Nummer gewählt wird. Im Wählplan wird ferner festgelegt, wie das System reagiert, wenn ein Teilnehmer nicht abnimmt, besetzt ist oder selbst eine Umleitung definiert hat. Und endlich legt der Wählplan fest, welche externen Anschlüsse von welchen Teilnehmern benutzt werden dürfen und wie diese externen Anschlüsse basierend auf der gewählten Nummer selektiert werden. Und dies sind nur einige Standardfunktionen des Wählplans, er kann noch einiges mehr. Und das erfreuliche an der Sache: Die verschiedenen Kommandos des Wählplanes sind sehr gut dokumentiert und es gibt im Internet viele praxisnahe Beispiele.

Der Wählplan kann mit der Makrosprache einer Office-Anwendung verglichen werden. Dort gibt es Kommandos, die Anwendungsfunktionen wie «sortieren», «exportieren» oder «formatieren». Auch die Kommandos des Asterisk Wählplanes operieren auf einem entsprechend hohen Level. Eines der wichtigsten Kommandos ist «Dial». Dial() erwartet als Argument nebst verschiedenen Optionen eine Telefonnummer die in der Folge angerufen wird. Nimmt der Besitzer des angerufenen Telefones ab, kommt eine Verbindung zustande und Dial() bleibt solange aktiv, bis einer der Teilnehmer den Hörer auflegt oder die Verbindung anderweitig unterbrochen wird. Anschliessend wird das nächste Kommando im Wählplan ausgeführt, in einfacheren Beispielen ist dies meist «Hangup».

Anständige Makrosprachen ermöglichen auch Konstrollstrukturen, also das Verzweigen innerhalb des Makros, sobald gewisse Bedingungen erfüllt sind. Beim Wählplan ist dies nicht anders. Beispielsweise kann entsprechend reagiert werden, wenn eine externe Leitung vorübergehend nicht verfügbar ist oder wenn ein Teilnehmer seinen Appart auf «DND» (Do not disturb) gestellt hat. Im Wählplan können ausserdem externe ähnlich der CGI-Spezifikation Scripts aufgerufen werden, eine Gruppe von Anweisungen lässt sich in einem Makro zusammenfassen und beliebige Werte können für eine spätere Verwendung in einer Datenbank gespeichert werden.

Beispiele

Um das ganze zu veranschaulichen folgen nun einige praxisbezogene Beispiele, was mit Asterisk ohne grossen Aufwand realisiert werden kann:

snom360.jpg

Kann auch Wetterdaten und Fussballergebnisse anzeigen: snom 360

Aufwerten des privaten Telefonanschlusses durch Voicemail, Ansagetext und Anrufumleitung. Die Einstellungen können je nach Tageszeit ändern, so dass in der Nacht garantiert Ruhe herrscht. Einzelne Nummern oder auch ganze Nummernbereiche können gesperrt werden und eine Auswertung gibt Auskunft über alle ein- und ausgehenden Anrufe.

Teilen eines privaten Telefonanschlusses durch das Anschliessen mehrerer Telefone an einen Asterisk Server. Damit können intern kostenlos Gespräche geführt werden und wer eine externe Nummer wählt, wird automatisch weiterverbunden. Selbstverständlich können wiederum alle Funktionen aus dem ersten Beispiel genutzt werden.

Flexible und preiswerte KMU Telefonzentrale. Mit einem Asterisk Server wird das interne Firmennetz für die Telefongespräche genutzt. Alle angestellten erhalten eine Nummer für die interne Kommunikation. Wer externe Anrufe entgegennehmen können muss, bekommt zusätzlich eine externe Nummer, die global erreichbar ist. Für die verschiedenen Abteilungen der Firma können Gruppennummern definiert werden. Wer häufig im Aussendienst arbeitet, kann Gespräche per Knopfdruck auf ein Mobiltelefon umleiten oder ad hoc einen Ansagetext hinterlassen. Ausserhalb der Bürozeiten erhalten Anrufer eine entsprechende Meldung und können ihr Anliegen dem Voicemail-Dienst anvertrauen. Es können Konferenzgespräche geführt und direkte Verbindungen mit Partnerfirmen erstellt werden. Mit entsprechender Ausstattung sind auch Videokonferenzen möglich.

– Fortsetzung folgt –

3 Gedanken zu „Telefonieren mit Asterisk (I)

  1. Don.K

    Grüezi Benjamin

    Da ich schon einige male auf deine Seite (www.stocker-zaugg.ch) gestossen bin, möchte ich es nicht unterlassen, mehr über dich und deine arbeit zu erfahren, ich (wir) sind Anbieter von Open Source basierenden Telematik Lösungen, neuerdings befassen wir uns deshalb auch mit Asterisk. Ich würde mich sehr freuen über deine Kontakt Aufnahme, Gruss Matthias (Don.k)

  2. metron

    Hallo Benjamin,

    Sehr beeindruckend diese Asterisk Server, ich kannte vor Ekiga nur GnomeMeeting. Werd mir die Lösung mal anschauen. Ich bin Student und arbeite sehr gern und schon lange mit Open Source Lösungen. Dein Blog ist interessant geschrieben. Ich würde mich daher freuen, wenn wir uns über ein medium deiner Wahl (Email,IRC,SIP) zum Thema austauschen könnten. Besten Dank,

    Grüße
    metron

  3. Gnopfelbrie

    Wow, ich habe noch keine Seite gefunden die das so verständlich und gut erklärt wie hier. Das wollte ich einfach mal loswerden :)
    Ganz dickes Lob!!!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert