Hello-World im CLI aufrufen
Im ersten Beispiel bauen wir uns einen einfachen Hello-World-Dialplan und rufen diesen aus der Asterisk-Konsole — dem CLI — auf. Wir brauchen dafür noch kein SIP-Telefon.
Asterisk konfigurieren
Im Verzeichnis /etc/asterisk/ finden Sie nach einer frischen
Installation eine ganze Reihe von Default-Konfigurationsdateien. Keine
Angst — für unser Hello-World-Beispiel interessiert uns nur eine einzige:
die extensions.conf.
Damit wir mit einer sauberen Datei starten und die Default-Inhalte nicht verlieren, sichern wir die Originale und legen eine eigene Version an:
# mkdir -p /var/tmp/asterisk-etc-backup
# mv /etc/asterisk/extensions.* /var/tmp/asterisk-etc-backup/
Legen Sie jetzt mit Ihrem Lieblings-Editor[1] die Datei /etc/asterisk/extensions.conf mit
folgendem Inhalt an:
[default]
exten => 1001,1,Answer()
same => n,Playback(hello-world)
same => n,Hangup()
|
Statt jede Zeile mit der vollen |
Dialplan laden und Hello-World abrufen
Nachdem die Datei geschrieben ist, laden wir den Dialplan im laufenden Asterisk neu. Verbinden Sie sich mit dem CLI:
# asterisk -rvvv
debian*CLI>
Und führen Sie aus:
debian*CLI> dialplan reload
Dialplan reloaded.
Jetzt können wir die Extension 1001 direkt aus dem CLI aufrufen — ganz
ohne Telefon, über den Dummy-Kanal Local:
debian*CLI> channel originate Local/1001@default application Wait 5
-- Executing [1001@default:1] Answer("Local/1001@default-00000000;2", "") in new stack
-- Executing [1001@default:2] Playback("Local/1001@default-00000000;2", "hello-world") in new stack
-- <Local/1001@default-00000000;2> Playing 'hello-world.gsm' (language 'en')
-- Executing [1001@default:3] Hangup("Local/1001@default-00000000;2", "") in new stack
== Spawn extension (default, 1001, 3) exited non-zero on 'Local/1001@default-00000000;2'
Damit haben wir gezeigt, dass der Dialplan funktioniert. Asterisk hat
die drei Prioritäten der Extension 1001 ausgeführt: abgehoben, die Datei
hello-world.gsm abgespielt, aufgelegt. Welches Format Asterisk
tatsächlich benutzt (.gsm, .ulaw, .alaw, .wav, …), hängt
davon ab, was im Sounds-Verzeichnis liegt und welchen Codec der Channel
spricht — Asterisk wählt das verlustärmste verfügbare Format.
|
Der alte Befehl |
Was ist eine Extension?
Eine Extension ist eine Programmeinheit in einem Dialplan. Jede Extension besteht aus mindestens einer Zeile im Format
exten => Name-der-Extension,Priorität,Applikation
Die Priorität bestimmt die Reihenfolge der Programmabschnitte. Unsere Extension 1001 hat drei Prioritäten:
exten => 1001,1,Answer()
same => n,Playback(hello-world)
same => n,Hangup()
Die Applikationen sind selbsterklärend:
-
Answer()hebt ab und öffnet damit einen neuen Asterisk-Channel.
-
Playback(hello-world)spielt im aktuellen Channel die Datei
hello-worldaus dem Verzeichnis/var/lib/asterisk/sounds/en/ab. Die Endung (.ulaw,.gsm,.wav, …) wählt Asterisk abhängig vom Codec selbst. -
Hangup()legt auf und schließt den Channel.
Verbosity im CLI
Zum Debuggen empfiehlt es sich, im CLI die Verbosity ("Gesprächigkeit")
hochzuschalten. Beim Aufruf asterisk -rvvv steht das "vvv" für Level 3.
Aus dem CLI heraus lässt sich der Level jederzeit ändern:
debian*CLI> core set verbose 5
Console verbose was 3 and is now 5.
Für Protokoll-spezifisches Debugging gibt es eigene Schalter, zum Beispiel für SIP-Traffic:
debian*CLI> pjsip set logger on
|
Setzen Sie |
Asterisk beenden
Aus dem CLI heraus fahren Sie den Daemon mit core stop now sofort
herunter, oder mit core stop gracefully, damit laufende Gespräche erst
zu Ende geführt werden:
debian*CLI> core stop gracefully
Im normalen Systembetrieb ist systemctl stop asterisk auf dem
Host-System die richtige Wahl.
nano: unter Debian installierbar mit apt install nano. Mit nano dateiname öffnen Sie die Datei, die wichtigsten Tastenkürzel stehen unten am Bildschirmrand.