Kapitel 3. Die große Telefonanlage

1. Einleitung

Nachdem Sie in Kapitel 2, Installation und "Hello World" gesehen haben, wie man schnell und einfach eine kleine Asterisk-Telefonanlage aufsetzen kann, werden im folgenden Kapitel am Beispiel einer fiktiven Firma die umfangreichen Möglichkeiten und Funktionalitäten von Asterisk aufgezeigt und beschrieben.

2. Die Apfelmus GmbH

Unsere frei erfundene Firma produziert und verkauft Apfelmus. Im neuen Firmensitz - für den wir eine neue Telefonanlage planen sollen - gibt es folgende Bereiche:

  • Geschäftsführung (2 Personen)

  • Sekretariat (3 Personen)

  • Verkauf National (6 Personen)

  • Verkauf Ausland (4 Personen)

  • Produktion (50 Personen)

  • Versand (10 Personen)

  • IT (2 Personen)

  • Hausmeister (1 Person)

Jeder Mitarbeiter hat sein eigenes Telefon.

3. Der Rufnummernplan

Obwohl wir prinzipiel mit 2-stelligen Telefonnummern auskommen würden, werden wir unseren Rufnummernplan direkt 3-stellig aufsetzen. Damit haben wir im Fall einer Erweiterung ausreichend Platz im Nummernraum. Außerdem wird mancher Mitarbeiter noch ein Fax erhalten oder bestimmte Gruppen werden eine Sammelrufnummer benötigen.

RufnummernBeschreibungBegründung
110, 112, 911NotrufnummernIm Notfall sollten wichtige Nummern völlig intuitiv sein. Wenn es brennt, sollte kein Mitarbeiter überlegen müssen, welche Nummer er wählen soll. Die 110 und die 911 gehen zur Polizei, die 112 zur Feuerwehr.
150 - 159HausmeisterDer Hausmeister spielt eine zentrale Rolle und bekommt deshalb auch eine Nummer im 100er Block.
160 - 169ITDa auch die EDV-Abteilung eine zentrale Rolle im Unternehmen spielt, bekommt sie einen Teil des 100er Blocks.
200 - 229GeschäftsführungDie Geschäftsführung bekommt einen Bereich mit 29 Nummern.
230 - 269SekretariatDas Sekretariat bleibt auch im 200er Block. Der Bereich von 270 bis 299 bleibt zur Reserve frei.
300 - 349Verkauf NationalDer 300er Block gehört ganz dem Verkauf und wird mit reichlich Reserve ausgestattet. Die erste Hälfte geht an den Inlandsvertrieb.
350 - 399Verkauf AuslandDie obere Hälfte des 300er Blocks ist für den Auslandsvertrieb.
400 - 449VersandDer Versand bekommt am Anfang des 400er Blocks auch reichlich Reserve.
500 - 599ProduktionDie Produktion ist am größten und bekommt deshalb den ganzen 500er Block.
800 - 899Interne Servicenummerz.B. Voicemailsystem oder Konferenzräume

4. Auswahl der Infrastruktur

Da in dem neuen Gebäude bereits eine strukturierte und moderne Netzwerkverkabelung vorliegt, ist es eine naheliegende Idee, jeden Arbeitsplatz mit einem SIP-Telefon auszustatten. So müssen nicht extra Kabel für das Telefonnetz verlegt werden. Die Faxe und schnurlosen Telefone werden über SIP-to-Analog-Adapter angeschlossen. Der Asterisk-Server wird in einem ordentlich ausgestatteten Serverraum mit entsprechender Klimatisierung untergebracht, mit Sicherheitseinrichtungen und Zugangskonzept. Durch das Zugangskonzept und die Sicherheitseinrichtungen haben auch nur diejenigen Personen Zugriff auf die Anlage, die dazu berechtigt sind.[27]

Netzwerk

Die wichtigste Regel, der man sich stets bewusst sein sollte, ist, dass Telefonie ein synchrones Medium ist, d.h. die Informationen müssen für den Sender und den Empfänger praktisch "gleichzeitig" vorliegen und dies über die Dauer der gesamten Kommunikation. Während wir in einem Telefongespräch Verzögerungen bis ca. 300 ms noch einigermaßen tolerieren, werden Pausen von einer halben Sekunde und mehr als sehr störend empfunden und kaum akzeptiert. Bei der IP-Telefonie wird ein synchrones Kommunikationsmittel über eine asynchrone Technik transportiert. Die Funktionsweise des TCP/IP-Protokolls des Internets wurde auf Störfestigkeit und Robustheit hin ausgelegt und nicht auf einen Datentransport in Echtzeit. Für den Transport von E-Mails zum Beispiel ist es völlig unerheblich, ob im Datentransport mehrere Unterbrechungen von einigen Sekunden liegen. Dass es überhaupt möglich ist, Telefonie via IP unter diesen Bedingungen erfolgreich umzusetzen, liegt an der Leistungsfähigkeit der heutigen Netzwerktechnologie. Dadurch, dass die zu übertragene Datenmenge im Verhältnis zur vorhandenen Übertragungskapazität deutlich geringer ist, können die Anforderungen quasi in Echtzeit umgesetzt werden. Bei den meisten Netzwerken liegen jedoch häufig unterschiedliche Lastzustände vor, d.h. die zur Verfügung stehende Bandbreite wird zu unterschiedlichen Zeiten mal stärker und mal weniger stark ausgenutzt. In fast allen Unternehmen kann man beobachten, wie die Auslastung des Netzwerks dem Rhythmus des Arbeitstages folgt. Zwischen 8 Uhr morgens und 18 Uhr abends steigt die Auslastung in der Regel, da die Mitarbeiter zum Beispiel E-Mails schreiben, im Web surfen, Daten herunterladen etc. Zu den Zeiten, in denen die Mitarbeiter intensiv arbeiten, telefonieren sie aber auch, d.h. unsere IP-Telefone konkurrieren mit dem restlichen Netzwerkverkehr um die zur Verfügung stehende Bandbreite. Und während es für die Zustellung einer E-Mail kein größeres Problem darstellt, wenn die Verbindungsgeschwindigkeit sinkt -- es dauert halt etwas länger --, kann es für unsere IP-Telefone kritisch werden, wenn die Bandbreite unter den Mindestbedarf fällt. Die Sprachqualität leidet dann deutlich, es kommt zu Aussetzern und Sprachfetzen. Wie störend das ist, kennt sicherlich jeder von Telefonaten mit dem Mobiltelefon bei einer schlechten Verbindung. Um mit den unterschiedlichen Anforderungen der jeweiligen Verbindungsarten besser umgehen zu können, verfügen professionelle Netzwerkrouter über die Möglichkeit, Netzwerkverkehr je nach Typ zu priorisieren.[28]

Diese Maßnahme ist zwar geeignet, den Netzwerkverkehr nach innen und außerhalb des eigenen Netzwerkanschlusses zum Internet-Provider entsprechend zu regeln, jedoch hat dies keinen Einfluss auf die Lastsituation im Netz des Providers. Erst wenn der Provider entsprechende Garantien für Übertragungskapazitäten für bestimmte Verbindungstypen[29] anbietet, kann die Kette lückenlos geschlossen werden. Falls Sie also mehrere Standorte in Ihrem Unternehmen via IP-Telefonie verbinden möchten, sollten Sie dies in Ihrer Planung berücksichtigen und mit Ihrem Provider darüber sprechen. Die Telefonanlage der Apfelmus GmbH bedient 78 Endgeräte. Das heißt, dass im schlimmsten Fall 39 zeitgleiche interne Verbindungen zustande kommen können, wenn die Mitarbeiter sich nur intern anrufen. Abhängig vom verwendeten Codec für die Kodierung des Audiosignals ergibt sich ein Netzwerkverkehr von maximal 6.500 kbps[30], was für die heute gängigen 100 Mbps[31] an Netzwerkbandbreite in strukturierten Inhouse-Verkabelungen keine Herausforderung darstellt. Dennoch sollten Sie berücksichtigen, dass anderer Netzwerkverkehr ebenfalls übertragen wird und die verfügbare Bandbreite rasch an Grenzen stoßen kann. Wie kommt der Wert von 6.500 kbps zu Stande? Für die Inhouse-Verbindungen greifen wir in unserem Beispiel auf den a-law[32] Codec zurück, der auch im ISDN-Netz zum Einsatz kommt. Er bietet eine sehr gute Sprachqualität, benötigt dafür aber auch 64 kbps Bandbreite. Jede Verbindung besteht aus einem eingehenden und einem ausgehenden Kanal mit jeweils 64 kbps, die 39 Verbindungen summieren sich auf: 2*39*64 kbps = 4.992 kbps. Zum Bandbreitenbedarf des Codecs kommt noch ein Overhead durch das TCP/IP-Protokoll hinzu, so dass aus den 64 kbps ca. 80 kbps an Netzwerkverkehr werden. Legt man der Rechnung nun die 80 kbps zu Grunde, ergibt das 6.280 kbps, aufgerundet erhält man die genannten 6.500 kbps. Dabei sind die 6.500 kbps natürlich nur ein Worst-Case-Szenario. Trotzdem sollte man immer für genau dieses gerüstet sein![33]

[Tipp]Tipp

Wer sich am Anfang einer solchen Installation nicht sicher ist, ob die Netzwerkbandbreite ausreicht, sollte lieber einen verlustbehafteteren Codec wie GSM benutzen. Der benötigt mit 13-15 kbps nur ein Fünftel der Bandbreite vom a-law Codec und hat eine akzeptable Sprachqualität. Später kann man dann einzelne Bereiche Stück für Stück auf bessere Codecs umstellen und dabei beobachten, ob es Netzwerkprobleme gibt. Sie sollten dabei jedoch die Auslastung der CPU im Auge behalten, da die komprimierenden Codecs deutlich mehr Rechenleistung in Anspruch nehmen.

Server-Hardware

Die Anforderungen, die ans Netzwerk gestellt werden, treffen im Prinzip auch auf die verwendete Hardware des Rechners zu. Die Notwendigkeit der synchronen Datenübertragung erfordert auch eine entsprechend zeitnahe Abarbeitung der notwendigen Vorgänge durch den verwendeten Rechner. Hierbei gibt die Kodierung und Dekodierung des Sprachsignals den Leistungsbedarf vor, insbesondere dann, wenn die beteiligten Endgeräte unterschiedliche Codecs verwenden und Asterisk die ankommenden und ausgehenden Datenströme umkodieren muss. Aufgrund der großen Bandbreite an verfügbarer Hardware und dem jeweils spezifischen Leistungsvermögen gibt es keine einfache Regel für die Bemessung. Als eine erste Orientierung soll folgende Staffelung dienen:

CPUAnzahl der VerbindungenAnzahl der Nebenstellen
1,0 GHz1540
1,5 GHz40100
2,0 GHz80200

Mit CPU ist an dieser Stelle eine handelsübliche CPU eines IBM-PC kompatiblen Rechners (z.B. von Intel, AMD) gemeint. Bei der Berechnung der möglichen Anzahl von Nebenstellen gehen wir davon aus, dass nicht alle Nutzer zur gleichen Zeit telefonieren, sondern im Mittel ein Drittel bis die Hälfte. Bitte betrachten Sie die angegebenen Werte lediglich als eine grobe Orientierung, die zudem eher konservativ geschätzt wurde, d.h. mit deutlicher Reserve. Fallen wenig Umkodierungen, Konferenzschaltungen und Echo-Unterdrückungen an, dann können deutlich mehr gleichzeitige Verbindungen bewältigt werden. Die genaue Zahl kann oftmals nur durch sinnvolles Ausprobieren ermittelt werden.

[Tipp]Tipp

Unter Linux gibt es mit top ein einfaches Tool, um im laufenden Betrieb zu sehen, wie hoch die Last auf dem Rechner ist. Allerdings gibt Ihnen das natürlich immer nur den aktuellen Wert und reicht nicht für eine Langzeitanalyse. Dazu können Sie leistungsstarke Tools wie Nagios http://www.nagios.org verwenden. Wer sich mit "Bordmitteln" weiterhelfen will, kann auch einen cronjob (siehe man crontab) mit folgendem Befehl aufsetzen:

w | head -n 1 | logger

Damit kann man sich (entsprechend in /etc/cronjob eingestellt) jede Minute einmal die aktuelle Systemlast in die Datei /var/log/messages schreiben lassen und diese dann am Monatsende auswerten.[34]

In unserem Beispiel haben wir 78 Benutzer, bei denen im Mittel nicht mehr als 40 gleichzeitige Verbindungen vorliegen sollten, somit wäre ein Rechner mit einer halbwegs aktuellen CPU[35]

mit 1,5 GHz Taktfrequenz geeignet. Je aktueller CPU und Gesamtsystem sind, desto höher ist in der Regel die Leistung und es können bei gleicher Taktfrequenz deutlich mehr Gespräche gleichzeitig abgearbeitet werden. Ein Dual-CPU System verbessert hier den Wert ebenfalls, da die Rechenleistung für notwendige Aufgaben des Betriebssystems besser verteilt wird. Für die Voicemailboxen benötigt man ca. 0,1 MByte pro aufgezeichneter Minute[36] an Speicherplatz. Stattet man jeden Nutzer mit 30 Minuten aus, wären für unser Beispiel ca. 2 GByte an freiem Festplattenspeicher ausreichend bemessen. Da die aufgezeichneten Daten denselben Stellenwert wie Geschäftsdaten haben, sollten sie entsprechend gegen Ausfall und Verlust abgesichert werden. Ein RAID-System[37] mit zwei Festplatten im Mirroring-Modus (Level 1) sollte hierbei ausreichend Absicherung gewährleisten. Für unser Beispiel würden zwei 18 GByte SCSI-Festplatten im RAID 1-Verbund ausreichend sein. Die Anforderungen an den verfügbaren Arbeitsspeicher (RAM) sind sehr moderat. Mit 512 MByte ist das System ausreichend bemessen und ab 1 GByte können selbst große Gruppen problemlos versorgt werden. Alle zusätzlichen Maßnahmen, wie die Auswahl professioneller Hardware für den Einsatz in Servern, die Ausstattung mit redundanten Netzteilen und mit hochwertigen Komponenten erhöhen die Ausfallsicherheit und Betriebstreue des Systems und damit in Folge die Akzeptanz durch die Nutzer - die es eher gelassen nehmen, wenn der E-Mail-Server mal 10 Minuten offline ist, aber das Telefon muss immer funktionieren.

5. Die Grundkonfiguration

Als Erstes wird die Telefonanlage so konfiguriert, dass alle Teilnehmer intern miteinander telefonieren können und jeder eine persönliche Voicemailbox hat. Danach kann die Anlage mit einzelnen Bausteinen erweitert werden.

sip.conf für fast 100 Teilnehmer

Der Aufbau einer /etc/asterisk/sip.conf für 2 Teilnehmer unterscheidet sich nicht vom Aufbau für 100 Teilnehmer. In der sip.conf müssen alle SIP-Telefone eingetragen werden. Folgend finden Sie die gekürzte Fassung der Konfigurationsdatei sip.conf für die Apfelmus GmbH. Kommentare werden hier immer mit ; eingeleitet. Diese Konfigurationsdatei ist analog zum Beispiel im Kapitel 1 aufgebaut. Bei der Auswahl der Rufnummern wurden an die Teilnehmer vornehmlich Nummern vergeben, die nicht auf die Ziffer 0 enden. Der Grund hierfür ist, dass die Endziffer 0 an späterer Stelle für die Zuteilung von Gruppenrufnummern dienen soll. Lediglich beim Hausmeister wurde eine Ausnahme gemacht, da für ihn keine Gruppenrufnummer vorgesehen ist.

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

; Hausmeister
;
[150]  ; normales Telefon im Buero
context=hausmeister
secret=1234
callerid="Hausmeister" <150>
type=friend
host=dynamic

[151]  ; Mobiltelefon
context=hausmeister
secret=1234
callerid="Hausmeister" <150>
type=friend
host=dynamic

; Interne IT Abteilung
;
[161]  ; Mitarbeiter 1
context=it
secret=1234
type=friend
host=dynamic

[162]  ; Mitarbeiter 2
context=it
secret=1234
type=friend
host=dynamic

[165]  ; Mobiles Telefon
context=it
secret=1234
type=friend
host=dynamic

; Geschaeftsfuehrung
;
[201]  ; Geschaeftsfuehrer 1
context=geschaeftsfuehrung
secret=1234
type=friend
host=dynamic

[202]  ; Geschaeftsfuehrer 2
context=geschaeftsfuehrung
secret=1234
type=friend
host=dynamic

; Sekretariat
;
[231]  ; Assistentin 1
context=sekretariat
secret=1234
type=friend
host=dynamic

[232]  ; Assistentin 2
context=sekretariat
secret=1234
type=friend
host=dynamic

[233]  ; Assistentin 3
context=sekretariat
secret=1234
type=friend
host=dynamic

; Verkauf National
;
[301]  ; Verkaeufer 1
context=verkauf-national
secret=1234
type=friend
host=dynamic

[302]  ; Verkaeufer 2
context=verkauf-national
secret=1234
type=friend
host=dynamic

[303]  ; Verkaeufer 3
context=verkauf-national
secret=1234
type=friend
host=dynamic

[304]  ; Verkaeufer 4
context=verkauf-national
secret=1234
type=friend
host=dynamic

[305]  ; Verkaeufer 5
context=verkauf-national
secret=1234
type=friend
host=dynamic

[306]  ; Verkaeufer 6
context=verkauf-national
secret=1234
type=friend
host=dynamic

; Verkauf Ausland
;
[351]  ; Verkaeufer 1
context=verkauf-ausland
secret=1234
type=friend
host=dynamic

[352]  ; Verkaeufer 2
context=verkauf-ausland
secret=1234
type=friend
host=dynamic

[353]  ; Verkaeufer 3
context=verkauf-ausland
secret=1234
type=friend
host=dynamic

[354]  ; Verkaeufer 4
context=verkauf-ausland
secret=1234
type=friend
host=dynamic

; Versand
;
[401]  ; Mitarbeiter 1
context=versand
secret=1234
type=friend
host=dynamic

; die weiteren 9 Eintraege fuer den 
; Versand sind hier ausgelassen.

; Produktion
;
[501]  ; Mitarbeiter 1
context=produktion
secret=1234
type=friend
host=dynamic

; die weiteren 49 Eintraege fuer die 
; Produktion sind hier ausgelassen.

Wer die sip.conf komfortabler mit Templates gestalten will, findet im Anhang D, Konfigurations-Templates weitere Informationen dazu.

CallerID

In der sip.conf kommt zweimal die Variable callerid vor. Mit dieser Variable wird festgelegt, was beim Angerufenen auf dem Display angezeigt wird. Im konkreten Beispiel:

callerid = "Hausmeister" <150>

Dies sagt aus, dass sich beide Telefone (150 und 151) mit der Caller-ID 150 und dem Text ''Hausmeister'' zu erkennen geben. Dadurch ist sichergestellt, dass Rückrufe immer nur auf die 150 gehen.

Der Wählplan (Dialplan)

Im ersten Kapitel haben wir schon einen einfachen Dialplan für zwei Telefone erstellt. Diesmal haben wir jedoch deutlich mehr Teilnehmer und obwohl es im Grunde lediglich Fleißarbeit bedeutet, ist die Pflege einer Konfiguration mit einigen Hundert Teilnehmern zeitaufwändig. Weiterhin fördert eine schlechte Übersichtlichkeit das Einschleichen von Fehlern. Aus diesen Gründen beschäftigen wir uns am Anfang dieses Abschnitts mit ein paar Asterisk-Funktionen, die uns das Leben einfacher und die extensions.conf übersichtlicher machen.

Platzhalter - Pattern Matching

Asterisk bietet die Möglichkeit mit Platzhaltern[38] zu arbeiten. Durch sinnvolles Gruppieren von Nummernblöcken und Zuordnungen können mit Platzhaltern ganze Nummernbereiche mit einzelnen Konfigurationszeilen verwaltet werden. Im Prinzip enthält eine Konfigurationszeile einen variablen Nummernbereich, der mit Hilfe von ''Pattern Matching'' die definierte Regel auf eine Vielzahl von Nummern anwendet. So kann man anstatt der folgenden 10 Zeilen:

exten => 2000,1,Dial(SIP/2000,20)
exten => 2001,1,Dial(SIP/2000,20)
exten => 2002,1,Dial(SIP/2000,20) 
exten => 2003,1,Dial(SIP/2000,20)
exten => 2004,1,Dial(SIP/2000,20)
exten => 2005,1,Dial(SIP/2000,20)
exten => 2006,1,Dial(SIP/2000,20)
exten => 2007,1,Dial(SIP/2000,20)
exten => 2008,1,Dial(SIP/2000,20)
exten => 2009,1,Dial(SIP/2000,20)

auch nur eine Zeile schreiben:

exten => _200X,1,Dial(SIP/2000,20)

Das X steht dann für alle Zahlen von 0 bis 9.[39] Wichtig dabei ist, dass der Suchbegriff (das Pattern) mit einem _ (Underscore) anfängt, sonst würde Asterisk nur auf 200X (also eine 200 und den Buchstaben X) reagieren, da ja Nebenstellen nicht nur aus Ziffern bestehen können/müssen. Das Definieren von Platzhaltern mit Pattern Matching[40] beinhaltet, dass man bestimmte Zeichenketten oder Zahlenfolgen durch entsprechend vordefinierte Platzhalter ersetzt.

In Asterisk kann man folgende Patterns benutzen:

PatternBeschreibung
XAlle Zahlen von 0 bis 9
ZAlle Zahlen von 1 bis 9
NAlle Zahlen von 2 bis 9[a]
[nm]Die Zahlen n und m
[n-m]Alle Zahlen von n bis m
.Eine oder mehrere beliebige Zahlen und Buchstaben

[a] Der Grund für das Pattern N liegt in der Rufnummernplanung von Amerika. Dort beginnt die Vorwahl nicht wie in Deutschland mit einer 0, sondern mit einer 1. Beispiel: 1-555-12345678

[Warnung]Warnung

Ein Pattern muss immer mit einem _ (Underscore) anfangen!

Für Asterisk ist sowohl ein 2XXX als auch ein _2XXX als Wert sinnvoll, wird jedoch vollkommen unterschiedlich ausgewertet.

Beispiele für Patterns

Die folgenden Varianten dienen als Beispiele für die Möglichkeiten:

PatternBeschreibung
_XXXAlle 3-stelligen Zahlen. Wobei auch 007 eine 3-stellige Zahl ist.
_XXX[13579]Alle 4-stelligen Zahlen, die ungerade sind.
_[1-5]XAlle 2-stelligen Zahlen von 10 bis 59.
_0.Eine beliebige Zeichenkette, die mit einer 0 anfängt.
_.Alles! Sollte mit entsprechender Vorsicht benutzt werden, da es immer mit der höchsten Priorität gematcht wird.

Detailierte Informationen zum Thema Pattern Matching finden Sie in „Regular Expressions“.

Die Variable ${EXTEN}

Obwohl wir eigentlich erst später über Variablen sprechen, möchte ich eine sehr einfache und intuitiv zu benutzende Variable schon hier vorstellen. Es handelt sich um ${EXTEN}. In dieser Variable ist die gewählte Nummer gespeichert. Ich kann also in der extensions.conf anstatt:

exten => 2000,1,Dial(SIP/2000)

auch einfach

exten => 2000,1,Dial(SIP/${EXTEN})

schreiben. Bei einer Zeile ist das natürlich noch wenig sinnvoll, aber wenn man diese Funktionalität mit Pattern Matching kombiniert, dann kann man sehr viel Zeit und Aufwand sparen und bekommt zusätzlich auch noch eine viel übersichtlichere Konfiguration.

Um somit alle SIP-Telefone mit den Durchwahlen 2000 bis 2999 in der extensions.conf anwählbar zu machen, reicht folgende Zeile:

exten => _2XXX,1,Dial(SIP/${EXTEN})

Include

Innerhalb der extensions.conf können Bereiche mit einem include => Contextname eingefügt werden. So kann man eine einmal erstellte Definition in mehreren Contexten wiederverwenden. Beispiel:

[telefone-im-ersten-stock]
include => 2000er
include => anrufbeantworter

[telefone-im-zweiten-stock]
include => 2000er
include => anrufbeantworter

[telefone-im-dritten-stock]
include => 2000er

[2000er]
exten => _2XXX,1,Dial(SIP/${EXTEN})

[anrufbeantworter]
exten => 3000,1,VoicemailMain(${CALLERID(num)})

Der Vorteil dieses Weges ist, dass wenn man z.B. die Rufnummer des Anrufbeantworters ändern will, es reicht, dieses genau in einem Bereich zu machen.

[Tipp]Tipp

Die Funktion ${CALLERID(num)} übergibt die Nummer des Anrufenden. So kann die Applikation VoiceMailMain() mit dieser Variable aufgerufen werden und fragt dann nicht mehr nach der Mailbox, sondern nur noch nach dem Passwort der entsprechenden Mailbox.

[Warnung]Warnung

Wer intensiv mit Includes arbeitet, sollte Abschnitt 4, „Includes im Dialplan“ lesen.

Die extensions.conf für die Apfelmus GmbH

Der von uns entwickelte Rufnummernplan[41] lässt sich nun wie folgt in eine übersichtliche extensions.conf übertragen:

[sonstige]

[hausmeister]
include => interne-gespraeche
include => voicemailsystem-komfort

[it]
include => interne-gespraeche
include => voicemailsystem-komfort
;
; Aus Debugging Gruenden ist es fuer
; die IT Abteilung teilweise nuetzlich
; auf alle Voicemailboxen zugreifen 
; zu koennen.
;
include => voicemailsystem-normal

[geschaeftsfuehrer]
include => interne-gespraeche
include => voicemailsystem-komfort

[sekretariat]
include => interne-gespraeche
include => voicemailsystem-komfort

[verkauf-national]
include => interne-gespraeche
include => voicemailsystem-komfort

[verkauf-ausland]
include => interne-gespraeche
include => voicemailsystem-komfort

[versand]
include => interne-gespraeche
include => voicemailsystem-komfort

[produktion]
include => interne-gespraeche
include => voicemailsystem-komfort

[interne-gespraeche]
exten => _[1-5]XX,1,Dial(SIP/${EXTEN},60)
exten => _[1-5]XX,2,VoiceMail(${EXTEN})

[voicemailsystem-komfort]
;
; Der User muss nicht die Nummer der 
; Voicemailbox eingeben.
;
exten => 800,1,VoicemailMain(${CALLERID(num)})

[voicemailsystem-normal]
exten => 801,1,VoicemailMain()

Der Context [interne-gespraeche] definiert, dass alle Anrufe an die Nummern 100 bis 599 mit dem Programm Dial() auch mit dieser Nebenstelle verbunden werden. Wer die 800 anruft, bekommt die Voicemailbox für sein eigenes Telefon. Nur die IT-Abteilung kann die 801 anrufen und wird dann vom System erst nach der gewünschten Nebenstelle (Extension) gefragt. Da die IT-Abteilung auch den internen Support der Telefonanlage zur Verfügung stellt, benötigt sie diese Funktion zur Störungsermittlung (Debugging).

Schwarze Löcher im Rufnummernplan

Genau genommen müsste dieser Dialplan noch etwas komplexer sein, da es ja laut Rufnummernplan Bereiche gibt (z.B. 270 bis 299), die gar nicht mit Telefonen belegt sind. Da wir dies nicht beachten, kann es zu Missverständnissen kommen. Ein Anrufer kann eine nicht vergebene Rufnummer anrufen und dort auf dem Anrufbeantworter eine Nachricht hinterlassen. Diese Nachricht würde aber nie abgehört werden. Um dies zu vermeiden, müsste man korrekterweise den Context [interne-gespraeche] wie folgt gestalten:

[interne-gespraeche]
exten => _1[5-6]X,1,Dial(SIP/${EXTEN},60)
exten => _1[5-6]X,2,VoiceMail(${EXTEN})

exten => _2[0-6]X,1,Dial(SIP/${EXTEN},60)
exten => _2[0-6]X,2,VoiceMail(${EXTEN})

exten => _[358]XX,1,Dial(SIP/${EXTEN},60)
exten => _[358]XX,2,VoiceMail(${EXTEN})

exten => _4[0-4]X,1,Dial(SIP/${EXTEN},60)
exten => _4[0-4]X,2,VoiceMail(${EXTEN})

Wir verzichten bei der Apfelmus GmbH der Einfachheit halber auf diese ausführlichere Variante und benutzen nur den folgenden Context:

[interne-gespraeche]
exten => _[1-5]XX,1,Dial(SIP/${EXTEN},60)
exten => _[1-5]XX,2,VoiceMail(${EXTEN})

voicemail.conf

Die voicemail.conf bleibt wie im ersten Kapitel beschrieben. Es werden einfach nur ein paar mehr Einträge eingefügt:

[general]
format = gsm
serveremail = voicemail@apfelmus-gmbh.de
maxmessage = 600

[local]
150 => 999999,Hans Hausmeister,hausmeister@apfelmus-gmbh.de
200 => 999999,Ernst Wichtig,ernst.wichtig@apfelmus-gmbh.de
201 => 999999,Hans Toll,hans.toll@apfelmus-gmbh.de

; Ich verzichte hier darauf, die restlichen Eintraege aufzulisten, sie sind analog zu den aufgefuehrten Zeilen

6. Wie geht es weiter?

Die hier besprochene Konfiguration der Apfelmus GmbH dient als Planungsbeispiel für alle Anlagen dieser Größenordnung. Einige Beispiele in diesem Buch können Sie mit dieser Konfiguration durchspielen.

7. FAQ

7.1.1.

Welche Kosten kommen auf die Apfelmus GmbH zu?

Das hängt ganz von den Entscheidern in dieser Firma ab. Folgende Faktoren spielen dabei eine Rolle:

  • Soll der Asterisk-Server ausfallsicher sein? Reicht ein Cold-Standby oder soll es ein Hot-Standby sein?

  • Welche Server-Hardware wird gekauft? Für eine solche Telefonanlage reicht ein relativ normaler Rechner. Es muss also nicht das allerneueste und damit oft auch teuerste System gekauft werden.

  • Welche Telefone werden eingesetzt? Hierbei kann man von 30 bis weit über 300 Euro pro Telefon ausgeben.

7.1.2.

Lohnt sich Asterisk für die Apfelmus GmbH oder handelt es sich vielmehr um eine Arbeitsbeschaffungsmaßnahme für die IT-Abteilung?

Das hängt stark von den Angeboten der klassischen Telefonanlagenherstellern und von den Bedürfnissen der Apfelmus GmbH ab. Oft bieten klassische Telefonanlagenhersteller extreme Sonderrabatte, wenn sie erfahren, dass als Alternative das kostenlose Asterisk in Erwägung gezogen wird. Allerdings ist man dann meistens in einem starren Vertrag und kann die nächsten 5 Jahre nur bei diesem Hersteller einkaufen.

Einer der großen Vorteile von Asterisk ist die Wahl des Supports und des Consultings. Man kann entweder alles selber machen oder einen externen Consultant einkaufen. Sollte dieser nicht den Ansprüchen genügen, kann man ihn gegen einen anderen austauschen (das ist so mit einer klassischen Telefonanlage wegen der Vertragsbindung nicht möglich).

Ob sich Asterisk betriebswirtschaftlich lohnt, muss jeder für seinen individuellen Fall ausrechnen. Die Erfahrung zeigt, dass dies in den meisten Fällen der Fall ist. Berücksichtigt man noch die Möglichkeiten einer Erweiterung mit neuen Funktionen durch ein einfaches Softwareupdate, dann entwickeln sich die mittel- bis langfristigen Unterhalts- und Investitionskosten äußerst günstig.



[27] Noch vor 10 Jahren war es bei vielen Telefonanlagenherstellern üblich, sich ''Hintertüren'' in große Anlagen einzubauen. So konnte man ohne großen Aufwand bei Problemen schnell helfen, indem man sich über einen offenen Port von außen in die Anlage einwählte. Böse Geister nutzten diese Möglichkeit allerdings auch, um auf Kosten der Eigentümer (meistens große Behörden, in denen die Übersicht fehlte) Fern- oder Auslandsgespräche zu führen.

[28] TOS - Type Of Service

[29] QOS - Quality Of Service

[30] kbps = kilobits per second

[31] Mbps = Megabits per second, also 1.024 kbps

[32] Eigentlich G.711, der in zwei Varianten auftritt als a-law und u-law.

[33] Auf der Webseite http://www.asteriskguru.com/tools/bandwidth_calculator.php finden Sie ein einfaches Online-Tool zur Bandbreitenberechnung verschiedener Codecs.

[34] Es sollte jedem Leser bewusst sein, dass dieser Cronjob wirklich nur ein sehr einfaches Mittel zur Analyse ist.

[35] Zum Beispiel Pentium 4, AMD Athlon

[36] Dies gilt für das Format wav49 oder GSM, wenn Sie hingegen das unkomprimierte Format WAV verwenden, steigt der Platzbedarf um ein Vielfaches.

[37] Bitte beachten Sie, dass ein Software-RAID die CPU entsprechend zusätzlich belastet, was in unserem Fall eher unerwünscht ist, deshalb ist eine vernünftige Lösung in Hardware angeraten.

[38] Unix- und Linux-Fans werden das Konzept des ''Pattern Matching'' von den ''regulären Ausdrücken'' in Programmen wie grep und sed kennen.

[39] Das Beispiel macht natürlich wenig Sinn. Warum sollte der Anrufer die 2009 wählen, um zur 2000 verbunden zu werden? Zur Lösung dieses Problems kommen wir gleich.

[40] Es gibt keinen wirklich passenden deutschen Begriff zum Fachbegriff ''Pattern Matching''. Eine mögliche Übersetzung könnte ''Musterabgleich'' oder ''Mustervergleich'' lauten.

[41] Mit Ausnahme der Notrufnummern, die wir später behandeln, da wir jetzt noch keine Verbindung zur Außenwelt eingerichtet haben.


Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch

Werbung