Priorität

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.

Ein hello-world Beispiel

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()

n-Priorität

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.