Coverbild des Asterisk Buches von Stefan Wintermeyer

Letzte Woche => Endspurt!

Montag den 29.01.07 geht das Buch in die Produktion. Bis dahin laeuft der Beta-Test noch in vollem Umfang. Bitte melden Sie Fehler! Siehe Beta-Test FAQ.

Erscheinungstermin: 03.03.07. Das Buch wird auf dem Asterisk-Tag.org in Chemnitz vorgestellt und kann dort auch erworben werden. 10 Tage spaeter wird es im Buchhandel sein. Wer nicht in Chemnitz sein kann, sollte das Buch vorbestellen: Amazon oder direkt beim Verlag

Asterisk-Schulungen und Consulting vom Autor dieses Buches finden Sie auf http://www.amooma.de. Naechste Asterisk-Schulung: 12.02. - 13.02.07 (noch 2 Plaetze frei) - Ach ja, ... wir suchen auch noch Asterisk Entwickler! => http://www.amooma.de/jobs/


2. musiconhold.conf

Beginnen wir mit dem Einfachsten, der Festlegung der Wartemusik (Music on Hold).

Die Einstellmöglichkeiten werden in der Datei musiconhold.conf beschrieben, ein paar Infos zur MP3-Unterstützung durch das Programm mpg123 stehen in doc/README.mp3 (1.2) / doc/mp3.txt (1.4). Die optimale Abtastrate für die MP3s ist 8000 Hz, mono.

Die einfachste (Default-)Konfiguration mit nur einer Musik-Klasse (default):

[default]
mode=quietmp3
directory=/var/lib/asterisk/mohmp3

Jetzt stoppen und starten wir Asterisk, z.B. mit asterisk -rx "stop now" und asterisk um die neue Extension und die Streams zu aktivieren (ein Reload reicht nicht aus). Wenn Sie jetzt die Extension 222 (wie oben definiert) anrufen, sollten Sie Wartemusik hören (im o.g. Verzeichnis werden bereits 3 Dateien mitgeliefert).

Besser ist aber folgende Konfiguration, für die wir ein Verzeichnis moh-native in /var/lib/asterisk/ anlegen:

[default]
mode=files   ; Dateien direkt in einem Asterisk-kompatiblen Format lesen
directory=/var/lib/asterisk/moh-native
random=yes   ; Dateien in zufälliger Reihenfolge spielen

Es ist dazu notwendig, die MP3-Dateien in ein Asterisk-kompatibles Format zu konvertieren, was z.B. mit den Programmen sox[105] und lame[106] so geht:

$  lame --decode musik.mp3 musik.wav
$  sox -V musik.wav -r 8000 -c 1 -w musik.raw
$  sox -V musik.wav -r 8000 -c 1 -w musik.gsm

Damit haben wir eine fiktive Datei musik.mp3 ins WAV- und dann in die Formate RAW und GSM konvertiert (mit einer Abtastrate von 8 kHz). Wir können in unserem Verzeichnis auch Formate wie aLaw und uLaw (Dateiendungen für sox: .al und .ul) ablegen - Asterisk wird automatisch das am wenigsten CPU-intensive wählen. Wichtig ist, dass die Abtastrate immer 8000 Hz beträgt.

Wichtig

Wenn Sie in der modules.conf nicht autoload verwenden, müssen Sie sicherstellen, dass die Module für die Formate, die Sie hier verwenden wollen, vor res_musiconhold geladen werden.

In unserem Test haben wir die im Verzeichnis moh/ mitgelieferten WAV-Dateien in unser Verzeichnis moh-native/ kopiert, mit sox nach RAW und GSM umkodiert und dann die WAV-Dateien, die Probleme bereiteten, aus dem Verzeichnis gelöscht:

$  cd /var/lib/asterisk/moh-native/
$  for i in *.wav; do \
sox $i -r 8000 -c 1 $(basename $i .wav).raw; \
sox $i -r 8000 -c 1 $(basename $i .wav).gsm; \
done
$  rm *.wav

Für CPU-kritische Anwendungen (große Installationen) sollten Sie einen Blick auf die Beschreibung in contrib/utils/README.rawplayer im ursprünglichen Asterisk-Verzeichnis werfen.

Weitere Musikklassen lassen sich definieren, indem man außer dem [default]-Abschnitt noch weitere Abschnitte, z.B. [rock] anlegt, dort ein anderes Verzeichnis, z.B. ein Unterverzeichnis, angibt und die Musikdateien in dieses Verzeichnis legt. Reload nicht vergessen!



[105] sox (http://sox.sourceforge.net/) gibt es als Debian-Paket, also:

$  apt-get install sox

Für MacOS X gibt es - mit installierem Darwinports (http://darwinports.opendarwin.org/ oder http://darwinports.com/, siehe auch http://apfelwiki.de/wiki/Main/MacPorts) - auch ein Paket:

$  port install sox

[105] Auf anderen Plattformen müssen Sie die Sourcen runterladen und kompilieren, sofern Sie keine Binaries finden.

[106] lame (http://lame.sourceforge.net/) gibt es nicht als Debian-Paket, wir müssen als die Sourcen runterladen und mit den bekannten Befehlen ./configure, make und make install kompilieren und installieren.

[106] Für MacOS X gibt es ein Paket über Darwinports (siehe Beschreibung sox):

$  port install lame
oder über Fink (http://fink.sourceforge.net/):
$  fink install lame
Natürlich geht das auch über den FinkCommander mit grafischem Interface.