In diesem Kapitel beschäftigen wir uns mit den Möglichkeiten des eingebauten Voicemailsystems von Asterisk. Dies ist nicht zu verwechseln mit einem Interactive Voice Response System (IVR), dem Thema von Kapitel 11, Interactive Voice Response Systeme (IVR).
Da jede Telefonanlage einen Anrufbeantworter oder Neudeutsch ein Voicemailsystem[95] benötigt, haben die Asterisk-Entwickler ein solches System als Grundausstattung eingebaut.[96].
Die folgenden Beispiele geben einen schnellen Überblick über typische Konstellationen. Anschließend (in Abschnitt 3, „Applikationen“) wird auf die Besonderheiten und Möglichkeiten von Voicemailsystemen unter Asterisk eingegangen.
Die Familie Meier stellt im Zuge der Modernisierung des Haushaltes auf eine Asterisk-Telefonanlage um. Dies beinhaltet eine moderne Voicemailbox für alle Familienmitglieder.
Folgende Personen müssen mit einer Voicemailbox ausgerüstet werden:
Name | Extension | Bemerkung |
---|---|---|
Horst Meier | 200 | Normale Voicemailbox |
Eva Meier | 201 | Normale Voicemailbox |
Peter Meier | 202 | Normale Voicemailbox und Benachrichtigung per E-Mail, die Sprachnachricht wird der E-Mail beigefügt |
Lisa Meier | 203 | Normale Voicemailbox, Benachrichtung per E-Mail (Sprachnachricht wird der E-Mail beigefügt) und danach automatische Löschung der Voicemail im System |
Die voicemail.conf
sieht in diesem Fall
wie folgt aus:
[general] format = wav attach = yes [default] ; Die Syntax fuer die Eintraege lautet: ; MailboxNr => Passwort,Name,E-Mail,Pager,Optionen ; (wobei die MailboxNr oft der Extension entspricht) 200 => 1234,Horst Meier 201 => 1234,Eva Meier 202 => 1234,Peter Meier,peter@die-familie-meier.de 203 => 1234,Lisa Meier,lisa@die-familie-meier.de,,delete=yes
Und in der extensions.conf
wird auf die
Voicemailbox wie folgt verwiesen:
[familie-meier] ; Wenn nach 30 Sekunden niemand abnimmt, geht das Gespraech ; auf die Voicemailbox, das gleiche bei besetzt: exten => _20[0-3],1,Set(ZIELNR=${EXTEN}) exten => _20[0-3],n,Dial(SIP/${EXTEN},30) exten => _20[0-3],n,Goto(s-${DIALSTATUS},1) ; zum Status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,VoiceMail(${ZIELNR},u) ; Ansage "nicht erreichbar" exten => s-BUSY,1,VoiceMail(${ZIELNR},b) ; Ansage "besetzt" exten => s-ANSWER,1,Hangup() ; zur Sicherheit nach Gespräch auflegen exten => _s-.,1,Goto(s-NOANSWER,1) ; alles andere wie nicht erreichbar behandeln ; auf der Extension 250 kann jeder Teilnehmer mit seinem ; Telefon seine persoenliche Voicemailbox abrufen: exten => 250,1,VoiceMailMain(${CALLERID(num)})
Oder schöner so:
[familie-meier] exten => _20[0-3],1,Macro(normal|SIP/${EXTEN}|${EXTEN}) exten => 250,1,VoiceMailMain(${CALLERID(num)}) [macro-normal]; ; ${ARG1} - anzurufendes(s) Gerät(e) (z.B. SIP/123&SIP/124) ; ${ARG2} - Mailbox (oft gleich ${MACRO_EXTEN}) exten => s,1,Dial(${ARG1},30) ; max. 30 Sekunden klingeln exten => s,n,Goto(s-${DIALSTATUS},1) ; zum Status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,VoiceMail(${ARG2},u) ; Ansage "nicht erreichbar" exten => s-BUSY,1,VoiceMail(${ARG2},b) ; Ansage "besetzt" exten => s-ANSWER,1,Hangup() ; zur Sicherheit nach Gespräch auflegen exten => _s-.,1,Goto(s-NOANSWER,1) ; alles andere wie nicht erreichbar behandeln
Die in Kapitel 3, Die große Telefonanlage vorgestellte Apfelmus GmbH benötigt ein umfangreicheres Voicemailsystem. Wir bedienen uns dieses Szenarios, um die Möglichkeiten des Voicemailsystems näher zu erläutern.
Folgende Einstellungen sollen für jede Voicemailbox als Grundeinstellung vorgegeben werden:
- Sprachnachrichten werden im WAV-Format abgespeichert.
- Jede Voicemailbox kann maximal 200 Nachrichten abspeichern.
- Eine Sprachnachricht darf maximal 5 Minuten lang sein.
- Sprachnachrichten werden auf dem System gespeichert und dem Nutzer als Attachment per E-Mail zugestellt.
Einzelne Abteilungen haben darüber hinaus noch zusätzliche Wünsche und Bedürfnisse für ihre Voicemailboxen:
Voicemailbox | Funktion | Bemerkung |
---|---|---|
150 | Hausmeister |
|
160 - 169 | IT |
|
802 | Verkauf Inland |
|
803 | Verkauf Ausland |
|
201 | Geschäftsführer 1 |
|
202 | Geschäftsführer 2 |
|
804 | Sekretariat |
|
[a] Dies ist eine Vorsichtsmaßnahme, die einen Denial-Of-Service im Falle eines großen IT-Problems verhindern soll. Wenn alle Mitarbeiter eine Nachricht auf dem Voicemailsystem hinterlassen würden, dann käme die IT-Abteilung mit dem Abhören dieser Nachrichten nicht mehr nach. [b] In der Verkäufergruppe sind mehrere Personen, es soll daher nicht eine E-Mail an eine bestimmte Einzelperson geschickt werden. Man könnte aber die Funktion vieler SIP-Telefone nutzen, mit einem Blinklicht anzuzeigen, ob eine Nachricht in der Voicemailbox vorhanden ist. |
Die voicemail.conf
der Apfelmus GmbH
sieht wie folgt aus:
[general] ; Die Sprachnachrichten werden im qualitativ hochwertigen ; WAV Format gespeichert. format = wav ; Die E-Mails mit den Sprachnachrichten fuer die Nutzer erhalten ; als Absender: voicemailsystem@apfelmus-gmbh.de serveremail = voicemailsystem@apfelmus-gmbh.de ; Es duerfen maximal 200 Nachrichten pro Mailbox ; gespeichert werden. maxmsg = 200 ; Die maximale Laenge einer Sprachnachricht ist 5 Minuten maxmessage = 300 ; Text fuer die Benachrichtigungs-E-Mail. ; Muss in einer Zeile stehen! emailbody = Guten Tag ${VM_NAME},\n\nSie haben eine neue Nachricht von ${VM_CALLERID} in Ihrer Voicemailbox ${VM_MAILBOX}. Bitte rufen Sie die 800 an, um die Nachricht abzuhoeren.\n\n-- Asterisk Voicemail System\n ; Text fuer die Benachrichtigung per Pager. ; Muss in einer Zeile stehen! pagerbody = Neue Voicemail von ${VM_CALLERID} um ${VM_DATE}. ; Voice-Nachrichten anhaengen: attach = yes [default] ; Die Syntax fuer die Konfigurationszeilen ist: ; MailboxNr => Passwort,Name,E-Mail,Pager,Optionen 150 => 1234,Hans Hausmeister,,pager.hausmeister@apfelmus-gmbh.de,review=yes|callback=interne-gespraeche 802 => 1234,Verkauf Inland 803 => 1234,Verkauf Ausland 201 => 1234,Hans Wichtig,geschaeftsfuehrer1@apfelmus-gmbh.de,,review=yes|callback=interne-gespraeche 202 => 1234,Uwe Wichtig,geschaeftsfuehrer2@apfelmus-gmbh.de,,review=yes|callback=interne-gespraeche 804 => 1234,Sekretariat,sekr@apfelmus-gmbh.de,,,review=yes
Und in der extensions.conf
wird auf die
Voicemailbox wie folgt verwiesen:
[hausmeister] include => interne-gespraeche include => voicemailsystem-hausmeister [it] include => interne-gespraeche include => voicemailsystem-komfort include => voicemailsystem-normal [geschaeftsfuehrer] include => interne-gespraeche include => voicemailsystem-komfort [sekretariat] include => interne-gespraeche include => voicemailsystem-komfort [verkauf-national] include => interne-gespraeche include => voicemailsystem-verkauf-national [verkauf-ausland] include => interne-gespraeche include => voicemailsystem-verkauf-ausland [versand] include => interne-gespraeche include => voicemailsystem-komfort [produktion] include => interne-gespraeche include => voicemailsystem-komfort [sonstige] [macro-simple]; ; ${ARG1} - anzuklingelnde(s) Gerät(e) (z.B. SIP/123&SIP/124) ; ${ARG2} - Mailbox (oft gleich ${MACRO_EXTEN}) exten => s,1,Dial(${ARG1},30) ; max. 30 Sekunden klingeln exten => s,n,Goto(s-${DIALSTATUS},1) ; je nach Status springen (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,VoiceMail(${ARG2},u) ; Voicemail mit Ansage "nicht erreichbar" exten => s-BUSY,1,VoiceMail(${ARG2},b) ; Voicemail mit Ansage "besetzt" exten => s-ANSWER,1,Hangup() ; zur Sicherheit nach Gespräch auflegen exten => _s-.,1,Goto(s-NOANSWER,1) ; alles andere wie nicht erreichbar behandeln [interne-gespraeche] ; Wenn der Hausmeister nicht ans Telefon geht, wird ; das Telefonat auf die Voicemailbox 150 geleitet: exten => _15X,1,Macro(simple|SIP/${EXTEN}|150) ; Die IT hat normale Voicemailboxen: exten => _16X,1,Macro(simple|SIP/${EXTEN}|${EXTEN}) ; Die beiden Geschaeftsfuehrer haben eine eigene Voicemailbox: exten => _20[1-2],1,Macro(simple|SIP/${EXTEN}|${EXTEN}) ; Das Sekretariat hat eine Gruppenmailbox: exten => _2[3-6]X,1,Macro(simple|SIP/${EXTEN}|804) ; Der Verkauf National hat eine Gruppenmailbox: exten => _3[0-4]X,1,Macro(simple|SIP/${EXTEN}|802) ; Der Verkauf Ausland hat eine Gruppenmailbox: exten => _3[5-9]X,1,Macro(simple|SIP/${EXTEN}|803) ; Alle anderen erhalten keine Voicemailbox. exten => _[4-5]XX,1,Dial(SIP/${EXTEN},30) [voicemailsystem-komfort] exten => 800,1,VoiceMailMain(${CALLERID(num)}) [voicemailsystem-normal] exten => 801,1,VoiceMailMain() [voicemailsystem-hausmeister] exten => 800,1,VoiceMailMain(150) [voicemailsystem-verkauf-national] exten => 800,1,VoiceMailMain(802,s) [voicemailsystem-verkauf-ausland] exten => 800,1,VoiceMailMain(803,s)
Die extensions.conf
der Apfelmus GmbH
sieht jetzt schon etwas aufwendiger aus. Das liegt daran, dass wir
verschiedene Voicemailboxarten verwenden. Es gibt einmal die normale
Voicemailbox und dann noch die Gruppen-Voicemailboxen für den Verkauf
und das Sekretariat. Weiterhin sollen die Mitarbeiter des Verkaufs
ihre Voicemailboxen ohne Passwort-Eingabe abrufen können. Das Ganze
soll natürlich für den einzelnen Mitarbeiter möglichst komfortabel
abgebildet werden. Aus diesem Grund bleibt für alle User des Systems
die 800
die Rufnummer der Voicemailbox, unter der sie
dieselbige abrufen können.
Es gibt zwei Voicemail-Applikationen, die in der
extensions.conf
aufgerufen werden können:
VoiceMail()
- Dieses Programm leitet einen Anrufer an das Voicemailsystem weiter, und dort wird er aufgefordert, eine Nachricht zu hinterlassen.
VoiceMailMain()
- VoiceMailMain ist das Abfrageprogramm für die Nutzer der Telefonanlage. Mit diesem Programm können Nutzer selbst Ansagen aufnehmen und Nachrichten abhören.
Funktion: Der Anrufer kann eine Nachricht auf dem Voicemailsystem hinterlassen.
Die Applikation VoiceMail()
wird immer aus der
Datei extensions.conf
aufgerufen.
Beispiel:
exten => 2000,2,VoiceMail(2000,u)
VoiceMail(mailbox[@context][,u|b|s])
mailbox
- Das ist der Name der Mailbox (Ziffern). Er muss nicht identisch mit der entsprechenden Extension sein. Dies ist aber aus praktischen Gründen sinnvoll, da die Konfiguration dadurch übersichtlicher wird.
@context
Eine Mailbox kann in einem bestimmten Context ausgeführt werden. Ist kein Context angegeben, so wird der
[default]
-Context verwendet.Wenn der Anrufer während der Ansage die 0
(Null) drückt, dann springt die Applikation zu der Extensiono
(Buchstabe o kleingeschrieben) in diesem Context.Wenn der Anrufer während der Ansage den *
(Stern) drückt, dann springt die Applikation zu der Extensiona
(Buchstabe a kleingeschrieben) in diesem Context.[u|b|s]
u
- veranlasst, dass die „unavailable“
(nicht verfügbar) Nachricht abgespielt wird. Der Dateiname
im Filesystem ist
/var/lib/asterisk/sounds/vm-isunavail.gsm
[97] b
- veranlasst, dass die „busy“
(besetzt) Nachricht abgespielt wird. Der Dateiname im
Filesystem ist
/var/lib/asterisk/sounds/vm-rec-busy.gsm.
s
- unterdrückt das Abspielen einer Nachricht (Sounddatei) und startet unmittelbar die Aufnahme.
Falls keine Mailbox in der Datei
voicemail.conf
definiert ist, aber ein Eintrag
mit der Priorität n+101 existiert, dann wird dieser angesprungen und
ausgeführt.
Funktion: Stellt Nutzern den Zugang zum Voicemailsystem her.
Die Funktion VoiceMailMain()
wird immer aus der
Datei extensions.conf
aufgerufen.
Beispiel:
exten => 300,1,VoiceMailMain()
VoiceMailMain([mailbox][@context][,s|p])
mailbox
- Der Name (also Nummer) der Mailbox. Wenn kein Name vorgegeben wurde, fragt das System danach.
@context
- Definiert den Context, der innerhalb der
voicemail.conf
angesprochen wird. [s|p]
s
- Wird ein
s
vor den Mailboxnamen gestellt, dann entfällt die Passwortabfrage. p
- Wird ein
p
vor den Mailboxnamen gestellt, dann wird der User gebeten, eine Mailbox anzugeben. Aus dem Inhalt von
und dieser Eingabe wird dann der neue Mailboxname. Damit lässt sich eine mandantenfähige Mailboxstruktur realisieren.mailbox
Eine Beschreibung des Sprachmenüs von
VoiceMailMain()
ist schwierig, da es von den eingesetzten
Prompts (Sprachbausteinen) abhängt. Die prinzipiellen Funktionen sind
hier aufgelistet. In Klammern finden sich die englischen
Beschreibungen.
1 | Nachrichten abspielen (Read voicemail messages) | ||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
2 | Ordner wechseln (Change folders) | ||||||||||||||||||||||||||||
0 | Mailbox-Optionen (Mailbox options) | ||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||
* | Hilfe (Help) | ||||||||||||||||||||||||||||
# | Beenden (Exit) |
In der Datei voicemail.conf
wird das
Voicemailsystem von Asterisk konfiguriert. Es besteht aus 3
Bereichen:
[general]
[zonemessages]
- Freie Contexte
Im Bereich [general]
werden allgemeine
Konfigurationen des Voicemailsystems vorgenommen. Es stehen folgende
Optionen zur Verfügung:
attach =
[yes|no]
Legt fest, ob an die Benachrichtigungs-E-Mails an die Nutzer auch die Sprachnachricht als Sounddatei angehängt wird. Default:
yes
. Normalerweise wird das erste unterformat
eingestellte Format verwendet.Beispiel:
attach = no
callback =
[Context]
Legt einen Context fest, der für Rückrufe aus dem System benutzt wird. Ist dieser Wert nicht gesetzt, was per Default der Fall ist, dann kann der User keine Rückrufe aus dem Voicemailsystem machen.
Beispiel:
callback = intern
charset =
[Zeichensatz]
Gibt den Zeichensatz (Charset) vor, in dem die E-Mails vom Voicemailsystem kodiert werden.
Beispiel:
charset = ISO-8859-1
delete =
[yes|no]
Definiert, ob eine Sprachnachricht nach dem Versenden per E-Mail automatisch gelöscht werden soll. Dies spart Festplattenplatz auf dem Server, falls man Sprachnachrichten nur per E-Mail empfangen will.
Beispiel:
delete = yes
directoryintro =
[Dateiname]
Definiert eine Sprachdatei innerhalb des Default-Verzeichnisses
/var/lib/asterisk/sounds/
, die anstatt der normalen Datei für das Dial-by-Name-System abgespielt wird (siehe Abschnitt 5, „Telefonbuch (Dial-by-Name)“).Beispiel:
directoryintro = intro-telefonbuch
emailsubject =
[Text der Betreffzeile]
Definiert den Betreff (Subject) einer Benachrichtigungs-E-Mail. Für Informationen über Variablen siehe
emailbody
.Beispiel:
emailsubject = Neue Sprachnachricht von ${VM_CALLERID}
pbxskip =
[yes|no]
Standardmäßig schreibt Asterisk am Anfang der Betreffzeile der E-Mail-Benachrichtigung über eine Sprachnachricht den Text
[PBX]:
Dies kann mityes
unterdrückt werden.Beispiel:
pbxskip = yes
emailbody =
[Text der Email]
Definiert den E-Mail-Body[98] einer Benachrichtigungs-E-Mail (maximal 512 Zeichen).
Im Betreff und im Body einer solchen E-Mail kann auf folgende Variablen zugegriffen werden:
Beispiel:
emailbody = Hallo ${VM_NAME},\n\nSie haben eine neue Nachricht von ${VM_CALLERID} in Mailbox ${VM_MAILBOX}.
[99]serveremail =
[Absenderadresse]
E-Mail-Adresse, die als Absender der E-Mail vom Voicemailsystem an den User eingestellt wird.
Beispiel:
serveremail = voicemail@apfelmus-gmbh.de
fromstring =
[Absendername]
Definiert den Absender (
From
-Header) in E-Mails vom Voicemailsystem.Beispiel:
fromstring = AB
mailcmd =
[Shell-Befehl]
Definiert das Programm (mit absolutem Pfad und ggf. Parametern), das zum Versenden von E-Mails benutzt werden soll. Default:
/usr/sbin/sendmail -t
Beispiele:
mailcmd = /usr/sbin/sendmail -t
mailcmd = /usr/exim/bin/exim -t
externnotify =
[Shell-Befehl]
Definiert ein Programm (mit absolutem Pfad), das von Asterisk aufgerufen wird, wenn eine neue Sprachnachricht für einen User vorliegt.
Beispiel:
externnotify = /usr/bin/local/mach-was.sh
externpass =
[Shell-Befehl]
Definiert ein Programm (mit absolutem Pfad), das von Asterisk aufgerufen wird, wenn ein User sein Passwort geändert hat.
Beispiel:
externpass = /usr/bin/local/mach-was.sh
forcegreetings =
[yes|no]
Definiert, ob ein User vom System dazu gezwungen wird, beim ersten Benutzen des Systems eine Begrüßungsnachricht aufzunehmen. Default:
no
Beispiel:
forcegreetings = no
forcename =
[yes|no]
Definiert, ob der User vom System dazu gezwungen wird, bei der ersten Nutzung seinen Namen aufzunehmen. Default:
no
Beispiel:
forcename = yes
format =
[gsm|wav|wav49]
Listet die Codecs auf, mit denen eine Sprachnachricht abgespeichert werden soll. Werden mehrere Codecs aufgeführt, werden auch mehrere Dateien gespeichert. Das kann im Extremfall zu Platzproblemen auf der Festplatte führen. Der Vorteil liegt darin, dass bei einer Abfrage die Nachricht nicht noch einmal neu kodiert werden muss, falls der Abfragende mit einem anderen Codec abfragt, als mit dem, in dem die Nachricht bereits gespeichert wurde.
Bei aktiviertem
attach
wird das erste Format dieser Liste für E-Mail-Anhänge verwendet.Beispiele:
format = gsm|wav
Jede Sprachnachricht wird im GSM- und im WAV-Format abgespeichert.
format = wav
Jede Sprachnachricht wird nur im WAV-Format abgespeichert.
Achtung Wird diese Einstellung im laufenden Betrieb verändert, müssen vorher vom System angelegte Sounddateien manuell gelöscht werden.
searchcontexts =
[yes|no]
Standardmäßig werden Voicemailboxen nur im angegebenen Context gesucht. Mit diesem Schalter kann man das Suchverhalten auf alle Contexte erweitern. Default:
no
Beispiel:
searchcontexts = no
maxmsg =
[Anzahl Nachrichten]
Definiert die maximale Anzahl an Sprachnachrichten in einer Voicemailbox. Default:
100
. Danach können keine neuen Nachrichten mehr aufgenommen werden, und der Anrufer hört die Nachricht/var/lib/asterisk/sounds/vm-mailboxfull.gsm
[100].Beispiel:
maxmsg = 50
maxmessage =
[Länge in Sekunden]
Definiert die maximale Länge einer Sprachnachricht in Sekunden. Default: unendlich
Beispiel:
maxmessage = 120
minmessage =
[Länge in Sekunden]
Definiert die minimale Länge einer Sprachnachricht in Sekunden. Default:
0
Beispiel:
minmessage = 5
maxgreet =
[Länge in Sekunden]
Definiert die maximale Länge einer Begrüßungsnachricht in Sekunden. Default: unendlich
Beispiel:
maxgreet=240
maxsilence =
[Länge in Sekunden]
Definiert die Anzahl der Sekunden an Stille, die das System wartet, bevor es davon ausgeht, dass die Nachricht zu Ende gesprochen wurde.
Beispiel:
maxsilence=10
silencethreshold =
[Schwellenwert]
Definiert, was für Asterisk bei der Einstellung
maxsilence
Stille (also Silence) ist. Je niedriger dieser Wert ist, desto höher ist die Empfindlichkeit. Default:128
[101]Beispiel:
silencethreshold = 50
maxlogins =
[Anzahl]
Definiert die maximale Anzahl von fehlerhaften Einlogversuchen (falsches Passwort durch den User), bevor Asterisk auflegt. Default:
3
Beispiel:
maxlogins = 3
skipms =
[Millisekunden]
Setzt die Anzahl an Millisekunden, um die während des Abhörens einer Sprachnachricht mit den Tasten für weiter und zurück in der Nachricht gesprungen wird. Default:
3000
Beispiel:
skipms = 6000
usedirectory =
[yes|no]
Erlaubt es dem User von Voicemailboxen, die Einträge eines Dial-by-Name-Systems zur Weiterleitung von Nachrichten zu benutzen. Default:
no
Beispiel:
usedirectory = yes
saycid =
[yes|no]
Definiert, ob die Telefonnummer des Anrufers beim Abrufen der Nachrichten angesagt werden soll. Default:
no
Beispiel:
saycid = yes
cidinternalcontexts =
[context,context,...]
- Legt die Contexte fest (durch Kommata getrennt), die beim Abrufen einer Voicemail-Nachricht als intern gelten, für die also z.B. nur die Durchwahl (Extension) als Caller-ID angesagt wird. Default: keine
pagerfromstring =
[Absendername]
Analog zu
fromstring
für Nachrichten an Pager.Beispiel:
pagerfromstring = Apfelmus GmbH
pagersubject =
[Betreff]
Analog zu
emailsubject
für Nachrichten an Pager.Beispiel:
pagersubject = Neue Voicemail
pagerbody =
[Absendername]
Analog zu
emailbody
für Nachrichten an Pager.Beispiel:
pagerbody = Neue Voicemail in Mailbox ${VM_MAILBOX} von ${VM_CALLERID}.
Neben den hier aufgeführten Parametern gibt es noch weitere,
die genannten sind jedoch die wichtigsten für gängige Konfigurationen.
Eine Auflistung aller verfügbaren Parameter findet sich in der Datei
voicemail.conf
. In der Grundinstallation sind dort
alle Parameter mit einer kurzen Beschreibung enthalten.
Da es vorkommt, dass sich die User eines Voicemailsystems in
unterschiedlichen Zeitzonen befinden, kann im Bereich
[zonemessages]
für jede Zeitzone ein unterschiedliches
Format definiert werden, mit dem dem User die Uhrzeit angesagt
wird.[102]
zonenname = timezone | format
zonenname
- Unter diesem Namen kann man später auf das
entsprechende Format zugreifen. Verwenden Sie nur
Kleinbuchstaben, Ziffern, Bindestrich (
-
) und Unterstrich (_
). timezone
In einem normalen Debian-Linux-System finden Sie im Verzeichnis
/usr/share/zoneinfo/
eine Auflistung von verschiedenen Regionen. Jede Region wird mit einem Unterverzeichnis dargestellt. In diesem Unterverzeichnis stehen Städtenamen. Eintimezone
-Eintrag besteht aus der Region und dem Städtenamen (getrennt durch ein/
).Beispiele:
Europe/Berlin
Australia/Sydney
format
Definiert das Format, in dem die Zeit angesagt wird. Es stehen folgende Variablen zur Verfügung:
A
Wochentag (Montag bis Sonntag) a
siehe A
B
Monat (Januar bis Dezember) b
siehe B
h
siehe B
d
Tag des Monats (1. bis 31.) e
siehe d
Y
Jahr (z.B. 2006) I
Stunde im amerikanischen 12-Stunden-Format l
siehe I
H
Stunde im europäischen 24-Stunden-Format. Dabei wird beim englischen Sprachmenü einstelligen Uhrzeiten eine 0 (englische Aussprache „oh“) vorangestellt. k
Stunde im europäischen 24-Stunden-Format M
Minute P
AM oder PM p
siehe P
Q
„heute“, „gestern“ oder ABdY
(Wochentag, Monat, Tag, Jahr)q
„ “ (also nichts, wenn es heute ist), „gestern“ oder ABdY
(Wochentag, Monat, Tag, Jahr)R
Stunde:Minute:Sekunde Daneben gibt es noch die Sonderfälle
${
(Inhalt dieser Variablen wird eingefügt)VAR
}und '
. Dabei ist zu beachten, dass 'sprachdatei
'sprachdatei
' ohne „.gsm
“ ist. Dieser Sprachbaustein aus dem Verzeichnissounds/
wird dann abgespielt. Die einfachen Anführungszeichen sind zwingend.
Beispiel:
[zonemessages] deutschland = Europe/Berlin | 'vm-received' Q 'digits/at' kM england = Europe/London | 'vm-received' Q 'digits/at' R military = Zulu | 'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
Genau wie in der extensions.conf
gibt es
auch in der voicemail.conf
die Möglichkeit, einen
Context zu definieren. Das ist praktisch, um zum Beispiel verschiedene
Firmenabteilungen separat zu behandeln. Dadurch können auch
unterschiedliche Adress- oder Telefonbücher definiert werden (siehe
Abschnitt 5, „Telefonbuch
(Dial-by-Name)“).
In einem Context können beliebig viele Mailboxen definiert werden.
mailbox => passwort,name[,e-mail[,pager-e-mail[,optionen]]]
Beispiel:
202 => 1234,Peter Meier,peter@familie-meier.de,,attachfmt=wav|delete=yes
mailbox
- Name der Mailbox (Ziffern)
passwort
- Passwort für die Mailbox (Ziffern oder Buchstaben). Ziffern sind in der Regel praktischer, da sie auch auf normalen Telefonen vom User eingegeben werden können.
e-mail
- E-Mail-Adresse, an die Sprachnachrichten gesendet werden sollen
pager-e-mail
- E-Mail Adresse des Pagers, an die Benachrichtigungen (eine Textzeile) geschickt werden sollen[103]
optionen
Unterschiedliche Optionen, die durch ein Pipe-Zeichen (
|
) voneinander getrennt aneinandergereiht werden. Sie können hier die unter[general]
(siehe „[general]
“) global festgelegten Einstellungen pro Mailbox verändern. Bitte beachten Sie, dass zwischen Parametername, dem Gleich-Zeichen (=
) und dem Wert keine Leerzeichen sein dürfen. Dasselbe gilt für das Pipe-Zeichen (|
).Die wichtigsten Optionen in diesem Zusammenhang sind:
tz=
[Zeitzone]
Setzt die gewünschte Zeitzone aus dem vorher definierten
[zonemessages]
Context (siehe „[zonemessages]
“).Beispiel:
tz=deutschland
attach=
[yes|no]
- Legt fest, ob die Sounddatei der Sprachnachricht der E-Mail beigefügt werden soll.
attachfmt=
[gsm|wav|wav49]
- Legt ggf. ein anderes als das unter
[general]
mittelsformat
eingestellte Format fest, das für E-Mail-Anhänge verwendet wird. saycid=
[yes|no]
- Definiert, ob die Telefonnummer des Anrufers angesagt werden soll.
sayduration=
[yes|no]
- Definiert, ob die Länge der Nachricht angesagt
werden soll. Default:
yes
saydurationm=
[ab Dauer in Minuten]
- Legt die Mindestlänge einer Nachricht in Minuten
fest, ab der die Länge angesagt wird. Default:
0
dialout=
[context]
Definiert den Context, der zum Rauswählen benutzt werden soll. Ohne diese Angabe kann man aus dem Voicemailsystem heraus keine Telefonate führen.
Beispiel:
dialout=intern
sendvoicemail=
[yes|no]
- Bestimmt, ob Teilnehmer Sprachnachrichten an andere Teilnehmer des Voicemailsystems schicken können.
callback=
[context]
- Definiert den Context, der für Rückrufe benutzt wird. Ist er festgelegt, kann man den Anrufer, der eine Sprachnachricht hinterlassen hat, einfach aus dem Voicemailboxsystem zurückrufen.
review=
[yes|no]
- Legt fest, ob der Anrufer die von ihm
hinterlassene Sprachnachricht vor dem Speichern erneut
anhören kann. Default:
no
operator=
[yes|no]
- Definiert, ob der Anrufer vor, während oder nach
der Aufnahme seiner Sprachnachricht mit der Eingabe von
0
(also Null auf dem Telefon drücken) zum Operator durchgestellt wird. Operator ist immer die Extensiono
(kleiner Buchstabe o) im aktuellen Context. Default:no
envelope=
[yes|no]
- Legt fest, ob allgemeine Informationen vor der
Sprachnachricht angesagt werden sollen. Wenn dieser
Parameter auf
no
gesetzt ist, dann werden dadurch bestimmte andere Einstellungen (wie zum Beispieltz
) überstimmt. Default:yes
delete=
[yes|no]
- Definiert, ob Sprachnachrichten nach dem
Versenden per E-Mail automatisch gelöscht werden sollen.
Default:
no
nextaftercmd=
[yes|no]
- Definiert, ob das System nach dem Löschen oder
Abspeichern einer Sprachnachricht automatisch zur nächsten
Nachricht springt. Default:
no
forcename=
[yes|no]
- Bestimmt, ob das System den User beim ersten
Abruf des Systems dazu zwingt, seinen Namen aufnehmen zu
lassen. Default:
no
forcegreetings=
[yes|no]
- Definiert, ob das System den User bei der ersten
Nutzung des Voicemailsystems dazu zwingt, eine persönliche
Ansage für seine Voicemailbox aufzunehmen. Default:
no
hidefromdir=
[yes|no]
- Definiert, ob dieser Eintrag aus dem
Dial-by-Name-Verzeichnis herausgenommen (versteckt) werden
soll. Default:
no
Auch wenn es eigentlich nicht unmittelbar mit der
VoiceMail-Funktion von Asterisk zu tun hat, gehört das
Dial-by-Name-Directory[104] sinngemäß in dieses Kapitel. Es wurde von den
Asterisk-Entwicklern als Teil des Voicemailsystems programmiert und greift
auf Daten der Datei voicemail.conf
zu.
Wenn wir für das Beispiel in „Voicemailbox der Familie Meier“ die folgende Konfiguration zu Grunde legen:
[general] format = gsm [default] ; Ext. => Passw.,Vorname Nachname,E-Mail,P.,Optionen ; ^^^^^^^^^^^^^^^^ 200 => 1234,Horst Meier 201 => 1234,Eva Meier 202 => 1234,Peter Meier,peter@die-familie-meier.de 203 => 1234,Lisa Meier,lisa@die-familie-meier.de,,delete=yes
Dann können wir daraus recht einfach ein Dial-by-Name-Directory
generieren. Dies geschieht durch Aufruf des Programmes
Directory()
in der
extensions.conf
:
exten => 800,1,Directory(default,from-intern)
Directory(vm-context[,dial-context[,options]])
vm-context
- Das Directory wird immer aus einem bestimmten Context
generiert (alle Einträge aus diesem und nur diesem Context werden
zur Auswahl gestellt). In den meisten Fällen kann man den
default
-Context nehmen. In großen Firmen kann man für bestimmte Abteilungen eigene Contexte definieren und somit Unter-Directories erstellen. dial-context
Das Directory wird benutzt, um eine bestimmte Person anzurufen, entsprechend muss auch ein Context definiert werden, aus dem (in der
extensions.conf
) der Anruf geführt werden soll. Ist
nicht definiert, wird automatisch der Context vondial-context
benutzt.vm-context
Drückt der User des Systems die Taste
0
(Null), so wird er in diesem Context auf die Extensiono
(kleiner Buchstabe o) geleitet. Bei Eingabe des*
(Stern) wird er zur Extensiona
(kleiner Buchstabe a) geleitet.options
- Mit der Option
f
kann man das Directory so einstellen, dass nach Vornamen und nicht nach Nachnamen gesucht wird.
Siehe auch „Directory()
“
Nicht nur als internes Rufnummernverzeichnis kann die
voicemail.conf
sehr nützlich sein, sondern auch als
Speicherort für Passwörter. Sie werden vielleicht eine Situation haben, in
der sich Ihre internen Benutzer aus welchem Grund auch immer am System
authentifizieren sollen - ein konkreter Fall wären Call-Center-Agenten,
die sich anmelden.
Es bietet sich in solchen Fällen manchmal an, für die
betreffenden User einen Eintrag in der voicemail.conf
anzulegen, obwohl diese vielleicht gar keine Mailbox brauchen. Und keine
Angst: auf den so angelegten Mailboxen wird niemand versehentlich eine
Nachricht hinterlassen können, solange Sie nicht im Dialplan mit
VoiceMail()
(oder VoiceMailMain()
) darauf
verweisen.
Sie könnten beispielsweise die Voicemail-Boxen
1001 => 1234,Hans Glueck,,,hidefromdir=yes 1002 => 1234,Peter Pech,,,hidefromdir=yes
im Abschnitt
[call-center-agenten]
anlegen und die User an geeigneter
Stelle im Dialplan mit VMAuthenticate („VMAuthenticate()
“) dem System gegenüber
authentifizieren:
exten => 988,n,Read(agentennr,agent-user,10,,3) exten => 988,n,VMAuthenticate(${agentennr}@call-center-agenten)
Betrachten Sie das aber nur als Denkanstoß bzw. Beschreibung einer von vielen Möglichkeiten zur Authentifizierung. Eine Speicherung der Passwörter in der AstDB oder einer anderen Datenbank wäre diesem Ansatz in den häufigsten Fällen vorzuziehen.
[95] In diesem Buch wird das Wort Voicemailsystem oder kurz Voicemail benutzt anstelle von Anrufbeantworter. Ein „Anrufbeantworter“ ist nach allgemeinem Verständnis eher ein schwarzer Kasten mit einem Kassettenrekorder neben dem Telefon. Ein Voicemailsystem bietet viel mehr Möglichkeiten als ein Anrufbeantworter im herkömmlichen Sinne.
[96] Das Voicemailsystem wurde übrigens von den Asterisk-Entwicklern scherzhaft Comedian Voicemail genannt und meldet sich im englischen Original auch so.
[97] Falls Sie ein fertiges Asterisk-Paket
verwenden, kann der Pfad z.B. auch
/usr/share/asterisk/sounds/
sein.
[98] Textteil einer E-Mail
[99] Es muss alles in eine Zeile geschrieben werden. Durch
\n
wird in der E-Mail ein Zeilenumbruch
eingefügt.
[100] Pfad abhängig von der Installation, z.B. auch
/usr/share/asterisk/sounds/
[101] Es lässt sich selbst im Source-Code von Asterisk keine Information finden, in welchem Rahmen sich dieser Wert sinnvoll bewegen kann (es handelt sich um einen Int). Ggf. ist also Ausprobieren erforderlich.
[102] Beachten Sie, dass Sie eine wie hier beschrieben definierte Zeitzone noch für die User aktivieren müssen. Siehe „Mailbox-Definition“
[103] Bitte beachten Sie, dass diese Nachrichten ebenfalls E-Mails sind. Sollten Sie SMS-Nachrichten verschicken wollen, suchen Sie im Internet nach „sms gateway“ oder „asterisk sms gateway“.
[104] Anstelle des deutschen Wortes Verzeichnis verwenden wir der Einfachheit halber das englische Wort Directory.
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