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.
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.
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.
Rufnummern | Beschreibung | Begründung |
110, 112, 911 | Notrufnummern | Im 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 - 159 | Hausmeister | Der Hausmeister spielt eine zentrale Rolle und bekommt deshalb auch eine Nummer im 100er Block. |
160 - 169 | IT | Da auch die EDV-Abteilung eine zentrale Rolle im Unternehmen spielt, bekommt sie einen Teil des 100er Blocks. |
200 - 229 | Geschäftsführung | Die Geschäftsführung bekommt einen Bereich mit 29 Nummern. |
230 - 269 | Sekretariat | Das Sekretariat bleibt auch im 200er Block. Der Bereich von 270 bis 299 bleibt zur Reserve frei. |
300 - 349 | Verkauf National | Der 300er Block gehört ganz dem Verkauf und wird mit reichlich Reserve ausgestattet. Die erste Hälfte geht an den Inlandsvertrieb. |
350 - 399 | Verkauf Ausland | Die obere Hälfte des 300er Blocks ist für den Auslandsvertrieb. |
400 - 449 | Versand | Der Versand bekommt am Anfang des 400er Blocks auch reichlich Reserve. |
500 - 599 | Produktion | Die Produktion ist am größten und bekommt deshalb den ganzen 500er Block. |
800 - 899 | Interne Servicenummer | z.B. Voicemailsystem oder Konferenzräume |
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]
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 | |
---|---|
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. |
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:
CPU | Anzahl der Verbindungen | Anzahl der Nebenstellen |
1,0 GHz | 15 | 40 |
1,5 GHz | 40 | 100 |
2,0 GHz | 80 | 200 |
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 | |
---|---|
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
|
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.
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.
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.
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.
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.
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:
Pattern | Beschreibung |
X | Alle Zahlen von 0 bis 9 |
Z | Alle Zahlen von 1 bis 9 |
N | Alle 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 |
Warnung | |
---|---|
Ein Pattern muss immer mit einem Für Asterisk ist sowohl ein |
Die folgenden Varianten dienen als Beispiele für die Möglichkeiten:
Pattern | Beschreibung |
_XXX | Alle 3-stelligen Zahlen. Wobei auch 007
eine 3-stellige Zahl ist. |
_XXX[13579] | Alle 4-stelligen Zahlen, die ungerade sind. |
_[1-5]X | Alle 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“.
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})
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 | |
---|---|
Die Funktion |
Warnung | |
---|---|
Wer intensiv mit Includes arbeitet, sollte Abschnitt 4, „Includes im Dialplan“ lesen. |
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).
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})
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
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.
[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