Eine typische Extension besteht aus mehreren Schritten. Damit Asterisk diese Schritte in der richtigen Reihenfolge ausführen kann, braucht es eine Art Zähler. Das erinnert ein wenig an frühe BASIC-Programme, die auch am Anfang einer jeden Zeile einen solchen Zähler hatten. Dieser Zähler heißt bei Asterisk Priorität. Prioritäten werden der Reihenfolge nach abgearbeitet (es wird immer +1 gezählt). Wenn die nächste logische Priorität (Lücken sind nicht zulässig!) nicht definiert ist bricht Asterisk ab.
Die folgende Extension wird immer ausgelöst, wenn ein Telefon
mit dem Context apfelmus
die Nummer 8888 anruft. Asterisk
nimmt dann ab, spielt den Sprachbaustein
hello-world
ab und legt auf.
[apfelmus] exten => 8888,1,Answer() exten => 8888,2,Playback(hello-world) exten => 8888,3,Hangup()
Seit der Asterisk-Version 1.2.0 ist es möglich, Prioritäten
nicht nur streng mit Zahlen, sondern auch mit dem Platzhalter
n
zu belegen. Der n-Zähler fungiert hierbei als ein
automatischer Programmzähler. Jedesmal, wenn die Programmsteuerung auf
die n-Priorität stößt, addiert sie 1 zum letzten Wert der Priorität.
Dies ist dann hilfreich, falls Sie viele aufeinander folgende Regeln
definiert haben und eine weitere Regel einfügen möchten, denn dann
müssen Sie nicht mehr die Zähler der nachfolgenden Regeln neu
nummerieren. Wenn eine normale Extension wie folgt aussieht:
exten => 1234,1,Answer() exten => 1234,2,Wait(2) exten => 1234,3,Playback(tt-monkeys) exten => 1234,4,Wait(2) exten => 1234,5,Hangup()
kann man die gleiche Extension auch mit der n-Priorität definieren:
exten => 1234,1,Answer() exten => 1234,n,Wait(2) exten => 1234,n,Play(tt-monkeys) exten => 1234,n,Wait(2) exten => 1234,n,Hangup()
Dies kann nicht nur an der zweiten Priorität, sondern an einer beliebigen Stelle passieren:
exten => 1234,1,Answer() exten => 1234,2,Wait(2) exten => 1234,3,Play(tt-monkeys) exten => 1234,n,Wait(2) exten => 1234,n,Hangup()
Die meisten Beispiele in diesem Buch verwenden die traditionelle
Art (also ohne die n
-Priorität), weil es Applikationen
(z.B. Dial()
) gibt, die eine bestimmte Anzahl von
Prioritäten (nämlich 101) hochzählen, falls ein bestimmtes Ereignis
eintritt. Dies ist mit der n-Priorität nicht mehr einfach
abbildbar.