# Asterisk (Telefonanlage)

Asterisk ist eine freie Software für Computer aller Art, die Funktionalitäten einer Telefonanlage bietet. Sie unterstützt IP-Telefonie (VoIP) mit unterschiedlichen Netzwerkprotokollen und kann mittels Hardware mit Anschlüssen wie POTS (analoger Telefonanschluss), ISDN-Basisanschluss (BRI) oder -Primärmultiplexanschluss (PRI, E1 oder T1) verbunden werden.
Mark Spencer hat Asterisk ursprünglich bei der Firma Digium entwickelt. Mittlerweile haben sich noch weitere Entwickler der Asterisk-Gemeinde angeschlossen und so stammen viele Erweiterungen und Applikationen auch von anderen Entwicklern. Der Name stammt von der Bezeichnung für das Sternsymbol ab.
Asterisk wird unter einer dualen Lizenz zur Verfügung gestellt – der GNU General Public License (GPL) als freier Softwarelizenz und einer proprietären Lizenz, die es den Lizenznehmern gestattet, proprietäre, nichtöffentliche Bestandteile auszuliefern.

## Funktionen

* Sprachdienste
* Anrufbeantworter
* Telefonkonferenzen
* Sprachdialoge (IVR) per MFV
** Spracherkennung ist mittels Zusatzprogrammen möglich.
* Verzeichnisdienste (Directory)
* Verzögerungsfreie Kryptographie

## Hardware

Asterisk funktioniert auf einer Reihe unterschiedlicher Computersysteme. Neben Personal Computern mit x86-Prozessor läuft Asterisk auch auf Geräten wie dem Raspberry Pi und Routern die OpenWrt unterstützen.
Ohne besondere Hardware kann ein Asterisk-System nur über ein Netzwerk mit VoIP-Endgeräten (intern) und VoIP-Telefonprovidern (extern) verbunden und betrieben werden. Für die Anbindung von normalen Endgeräten wie Telefonen, Faxgeräten etc. (intern) oder an herkömmliche Telefonnetze (extern), benötigt man zusätzliche Steckkarten oder externe Analog-Adapter für analoge POTS oder digitale ISDN-Amtsleitungen (nach extern) oder Nebenstellen (nach intern).
Interne ISDN-Nebenstellen können nur über Schnittstellen realisiert werden, die den NT-Modus beherrschen (ISDN-Karten mit HFC-Chips oder VoIP-Adapter/-Router mit internem ISDN-Anschluss).

## Konfiguration und Programmierung

Das zentrale Steuerelement von Asterisk ist der Rufnummern- oder besser Wählplan (englisch dial plan). Hier wird entschieden:
* wohin ein Anrufer weitergeleitet wird (an welche Endstelle)
* was passiert, wenn dort niemand abnimmt oder es besetzt ist
* welcher Anrufbeantworter/welche Mailbox informiert werden soll
* welche Eingaben (Ziffern, Sprache) akzeptiert werden
* welche Aktion durch eine Eingabe ausgelöst wird
Dieser Plan gliedert sich in mehrere Abschnitte (englisch sections), deren Bezeichnungen in eckigen Klammern gefasst werden. Ein Abschnitt ist bis zur nächsten öffnenden Klammer bzw. bis zum Dateiende gültig. Innerhalb der Abschnitte wird jeweils eine bestimmte Gruppe Nebenstellen (englisch extensions) und damit zusammenhängende Reihenfolgen, Aktionen und Verhalten behandelt. Die Abschnitte „[general]“ und „[globals]“ sind vordefinierte Abschnitte. Alle anderen Abschnitte werden auch als Kontexte bezeichnet. Kontexte bestimmen einen geschlossenen Bereich und somit einen definierten Sicherheitsbereich. Ein Kontext kann den Sicherheitsbereich eines anderen Kontexts erlangen, indem er in diesen Kontext über die Anweisung include eingebunden wird. Ist für eine Nebenstelle kein Kontext definiert, so wird diese über den Standardkontext „[default]“ behandelt.

## Schnittstellen
### Betriebssysteme

Asterisk wird offiziell nur für vom jeweiligen Anbieter unterstützte Versionen der Linux-Distributionen CentOS, Debian, Fedora, RHEL und Ubuntu angeboten. Andere Distributionen und Betriebssysteme werden teilweise von Freiwilligen unterstützt, zum Beispiel für Windows unter Cygwin.

### VoIP-Protokolle

* Google Talk
* H.323
* InterAsterisk eXchange (IAX)
* Jingle/XMPP
* MGCP (Media Gateway Control Protocol)
* Skinny Client Control Protocol (SCCP) von Cisco Systems (proprietär)
* Session Initiation Protocol (SIP)
* UNIStim (Unified Networks IP Stimulus) von Nortel (proprietär)

### ISDN / PRI-Protokolle

* 4ESS
* Euro-ISDN (DSS1)
* Lucent 5E Distributed Switching
* National ISDN1
* National ISDN2
* NFAS
* DMS100
* QSIG Kanalgebundene Zeichengabe

### Lokale Schnittstellen

Neben den vorgenannten Protokollen bietet Asterisk mit den Modulen chan_alsa und chan_mobile auch die Nutzung lokaler Schnittstellen. Damit ist es möglich, eine vorhandene Soundkarte als Sprechstelle zu nutzen. Auch kann ein Bluetooth Headset direkt als Nebenstelle angemeldet werden. Ein Handy/Smartphone wird per Bluetooth zum Mobilfunkgateway.
Diese Möglichkeiten werden überwiegend im privaten Umfeld genutzt, da sie naturgemäß nur im unmittelbaren Umfeld des Asteriskservers eingesetzt werden können.

### Audio-Codecs

* ADPCM
* CELT
* G.711 in den Varianten A-law und μ-law
* G.719
* G.722 Wideband-Codec
* G.723.1
* G.726
* G.729, kommerzielle Lizenz erforderlich
* GSM
* iLBC
* Linear
* LPC-10
* Speex (ab Version 10 mit 32 kHz)
* SILK (ab Version 10)

### Programmierschnittstellen

Das AGI Asterisk Gateway Interface bietet unter anderem Programmierschnittstellen zu:
* C++
* C#
* Java
* Go
* MySQL
* node.js
* PHP
* Ruby
* Python

## GUIs und Distributionen

Grafische Benutzerschnittstellen ermöglichen das Bearbeiten der Asterisk-Konfiguration via Web-Interface. Die nachfolgenden Asterisk-Server-Distributionen beinhalten Linux oder BSD und sind inzwischen meist kommerzielle Produkte, die jedoch ihre Wurzeln in freien Projekten haben und in den Basisversionen oder für Privatanwender kostenfrei sind.
* Ansitel webinterface 5 ist ein komplett deutsch-/englischsprachiges Webinterface für Asterisk-basierte Telefonanlagen, das eine einfache und schnelle Einrichtung umsetzt. Zum schnellen Einstieg gibt es eine eingeschränkte Live-CD als Download.
* AskoziaPBX war ein einfach zu konfigurierendes kommerzielles Live-Asterisk-System, basierend auf Linux, mit einer WebGUI, die sich neben professionellen Anwendern auch an Einsteiger richtet. Eine Testversion für bis zu 2 gleichzeitige Verbindungen ist erhältlich. (Der Vertrieb der AskoziaPBX wurde mit der Übernahme durch 3CX im August 2017 eingestellt. Der Support endete Ende 2017.)
* AstLinux ist eine ressourcenschonende Version mit zusätzlicher Router- und VPN-Funktionalität, die von einem Flash-Speicher oder als VM läuft. Die aktuelle Version ist 1.5.3 (Stand April 2024).
* Astimax ist eine kommerzielle professionelle VoIP-Appliance auf Basis von Asterisk mit einem grafischen Verwaltungstool.
* FreePBX, eine Web-basierte Open-Source-GUI von der Firma Digium unter GPL.
* Gemeinschaft ist der Name einer Open-Source-Telefonanlage, die bis zur Version 3 auf Asterisk basiert. Ab Version 4 bildet FreeSWITCH die Grundlage.
* KITOMA ist eine skalierbare und leicht integrierbare VoIP-Komplettlösung, die auf Asterisk basiert. Es wird eine Web-basierte Benutzeroberfläche zur Verfügung gestellt, die intuitiv bedienbar ist und eine offene REST-Schnittstelle zur flexiblen Anbindung von Applikationen anbietet. Es kann immer die aktuelle Asterisk-Version verwendet werden! Die Anzahl der verwaltbaren Asterisk-Server ist beliebig.
* pascom ist eine Unified Communications Lösung auf Asterisk-Basis.
* Starface, basierend auf der Asterisk-Business-Edition mit grafischem Interface.
* Thirdlane PBX und Thirdlane Multi Tenant PBX sind auf Asterisk basierende PBX-Software-Lösungen. Sie zielen auf Unternehmen und Internet-Telefonie-Service-Provider.
* VoIPonCD ist eine frei verfügbare VoIP-Telefonanlage.
* Doccom ist eine VoIP Anlage basierend auf Asterisk zugeschnitten auf die speziellen Anforderungen von Arztpraxen und Ärztehäusern.
* Xelion vertreibt eine auf Asterisk basierende Soft-PBX.
* Yeastar bietet verschiedene Appliance-, Soft- sowie Cloud-VoIP-Anlagen an.

## Sprachbausteine (Voiceprompts)

Sprachbausteine werden benötigt, um das Asterisk-Voicemailsystem mit lokaler Sprache zu nutzen. Es handelt sich dabei um Sammlungen erforderlicher Buchstaben, Zahlen und Wörter eines Sprechers und nicht um Text-to-Speech- oder Sprachsynthese-Module.
* Digium bietet keine deutschen Sprachbausteine an.
* voip-info.org (englisch) bietet viele verschiedene Sprachen, von Chinesisch bis Türkisch.