Im ersten Beispiel werden wir einen einfachen Hello-World-Dialplan programmieren und diesen von der Asterisk-Konsole – dem CLI (Command Line Interface) – aufrufen.
Im Verzeichnis /etc/asterisk/
finden Sie nach
einer frischen Installation alle Konfigurationsdateien in einer
einfachen Standardausführung:
debian:~# cd /etc/asterisk/ debian:/etc/asterisk# ls adsi.conf features.conf phone.conf adtranvofr.conf festival.conf privacy.conf agents.conf followme.conf queues.conf alarmreceiver.conf func_odbc.conf res_odbc.conf alsa.conf gtalk.conf res_pgsql.conf amd.conf h323.conf res_snmp.conf asterisk.adsi http.conf rpt.conf asterisk.conf iax.conf rtp.conf cdr.conf iaxprov.conf say.conf cdr_custom.conf indications.conf sip.conf cdr_manager.conf jabber.conf sip_notify.conf cdr_odbc.conf logger.conf skinny.conf cdr_pgsql.conf manager.conf sla.conf cdr_tds.conf meetme.conf smdi.conf codecs.conf mgcp.conf telcordia-1.adsi dnsmgr.conf misdn.conf udptl.conf dundi.conf modules.conf users.conf enum.conf musiconhold.conf voicemail.conf extconfig.conf muted.conf vpb.conf extensions.ael osp.conf zapata.conf extensions.conf oss.conf debian:/etc/asterisk#
Dies ist jetzt eine recht umfangreiche Liste, aber – keine
Angst – für unser Hello-World-Beispiel müssen wir uns nur mit
einer von diesen Dateien näher befassen. Diese mit make
samples erstellten und recht komplexen Default-Dateien
verschieben wir dazu erst einmal nach
/var/tmp/asterisk-etc-backup/
(damit wir später bei
Bedarf darauf zugreifen können):
debian:/etc/asterisk# mkdir -p /var/tmp/asterisk-etc-backup debian:/etc/asterisk# mv extensions.* /var/tmp/asterisk-etc-backup/ debian:/etc/asterisk#
Legen Sie mit Ihrem Lieblingseditor[4] die Datei
/etc/asterisk/extensions.conf
mit folgendem Inhalt
an:
[default] exten => 1001,1,Answer() exten => 1001,2,Playback(hello-world) exten => 1001,3,Hangup()
Und diese paar Zeilen sollen ausreichen? Dabei heißt es doch immer, Asterisk sei so kompliziert. Probieren wir es einmal aus! Mit dem Befehl asterisk -c starten Sie Asterisk:
debian:/etc/asterisk# asterisk -c Asterisk 1.4.21, Copyright (C) 1999 - 2008 Digium, Inc. and others. Created by Mark Spencer <markster@digium.com>[...]
[ Booting... [ Reading Master Configuration ][...]
Asterisk Ready. *CLI>
Mit dem erfolgreichen Start von Asterisk erhalten wir ebenfalls eine Konsole, auf der wir mit dem laufenden Asterisk-Prozess kommunizieren können. Vor uns sehen wir jetzt das Command Line Interface (CLI) von Asterisk. Hier können wir aktiv in das Geschehen eingreifen.
Anmerkung | |
---|---|
Wer übrigens auf seinem Terminal Probleme mit den
Escape-Sequenzen für die Farben hat kann beim Aufrufen zusätzlich den
Parameter |
Als erste Handlung rufen wir mit dem Befehl console dial 1001 das Hello-World-Beispiel ab:
*CLI> console dial 1001
*CLI> << Console call has been answered >>
<< Hangup on console >>
*CLI>
Mit console dial 1001 rufen wir die Extension
1001 auf. Diese spielt dann den Sprachbaustein
hello-world.gsm
aus dem Verzeichnis
/var/lib/asterisk/sounds/
ab.
Anmerkung | |
---|---|
console dial agiert wie ein ganz einfaches Telefon. Man kann eine Extension anrufen und auch über die Soundkarte hören. |
Eine Extension ist eine Programmeinheit in einem Dialplan. Jede Extension besteht mindestens aus einer Zeile, die im Format
exten => Name-der-Extension,Priorität,Applikation
geschrieben wird. Die Priorität ist dabei die Reihenfolge der einzelnen Programmabschnitte. Unsere Extension 1001 hat drei Prioritäten:
exten => 1001,1,Answer() exten => 1001,2,Playback(hello-world) exten => 1001,3,Hangup()
Die Applikationen sind selbsterklärend:
Answer()
hebt ab und öffnet damit einen neuen Asterisk-Channel (siehe Hilfetext zu Answer()).
Playback(hello-world)
spielt im aktuellen Channel die Datei
hello-world.gsm
ab (siehe Hilfetext zu Playback()).Hangup()
legt auf und schließt damit den Channel (siehe Hilfetext zu Hangup()).
Zum Debuggen von Asterisk empfiehlt es sich oft, im CLI die Verbosity (also die "Gesprächigkeit") von Asterisk zu erhöhen. Wenn Asterisk mit asterisk -c gestartet wird, ist der Verbose-Level auf 0 eingestellt (die Range reicht von 0 bis 10). Im CLI können Sie mit dem Befehl core set verbose 5 den Level auf 5 stellen (was ein guter Debug-Level ist):
*CLI> core set verbose 5
Verbosity was 0 and is now 5
*CLI>
Wenn Sie jetzt den Befehl console dial 1001 ausführen, dann bekommen Sie von Asterisk sehr viel mehr Informationen über den Ablauf im Dialplan:
*CLI> console dial 1001
== Console is full duplex
*CLI> -- Executing [1001@default:1] Answer("Console/dsp", "") in new stack
<< Console call has been answered >>
-- Executing [1001@default:2] Playback("Console/dsp", "hello-world") in new stack
-- <Console/dsp> Playing 'hello-world' (language 'en')
*CLI> -- Executing [1001@default:3] Hangup("Console/dsp", "") in new stack
== Spawn extension (default, 1001, 3) exited non-zero on 'Console/dsp'
<< Hangup on console >>
*CLI>
Sie können den Verbose-Level aber auch beim Starten von Asterisk
mit dem Softwareschalter -vvvvv
auf den Level 5
setzen.
Warnung | |
---|---|
Benutzen Sie bitte im CLI nie core set debug, um den Dialplan zu debuggen! Das ist eine für Asterisk-Entwickler eingebaute Möglichkeit, Fehler im Quellcode von Asterisk zu analysieren. Das hilft beim Dialplan aber nicht. |
[4] Wenn Sie keinen Editor kennen, den Sie in einem Terminalfenster verwenden können, empfehle ich Ihnen nano. Unter Debian ist dieser einfach als Benutzer root mit apt-get -y install nano zu installieren. Danach öffnen Sie mit nano dateiname die Datei. In Nano selbst sehen Sie im unteren Bereich des Bildschirms die wichtigsten Befehle.
AMOOCON 2010
Noch kein Ticket? Dann wird es Zeit. Nur noch wenige Tage.
- Infos unter www.amoocon.de.
- twitter.com/AMOOCON