Kapitel 4. Programmieren im Dialplan

Die Erstellung von intelligenten Funktionen oder Programmen kann in Asterisk extern über ein AGI-Skript oder intern in der extensions.conf erfolgen. In diesem Kapitel beschäftigen wir uns mit der internen Variante.

In der Konfigurationsdatei extensions.conf wird der so genannte Dialplan definiert. Dabei ähnelt der Dialplan häufig einem BASIC-Programm. Der Admin kann in einer einfachen Skriptsprache Programmabläufe und damit auch das Routing von Telefonaten erstellen. Ohne diesen Dialplan kann weder raus- noch reintelefoniert werden!

1. Context

Der Dialplan wird in verschiedene Abschnitte unterteilt. Diese Abschnitte heißen im Asterisk-Jargon Contexte. Am Anfang eines Dialplanes muss es immer einen [general]-Context für allgemeine Konfigurationen geben, die danach folgenden Contexte können beliebig benannt werden. Die Contexte bilden das Verbindungsstück zwischen der Definition eines Telefones (z.B. SIP oder ISDN) und dem Dialplan. Für ein Telefon wird immer ein Context definiert. Ein Beispiel aus einer sip.conf:

[2000]
type=friend
context=interne-telefone
secret=1234
host=dynamic

Das SIP-Telefon mit der Nummer 2000 ruft in dieser Konfiguration immer den Context interne-telefone auf. Wenn also ein Benutzer mit dem Telefon 2000 eine bestimmte Nummer wählt, dann sucht Asterisk im Context interne-telefone nach der entsprechenden Extension (also der dazu passenden Regel). Ist diese Extension nicht vorhanden, passiert auch nichts.

Syntax

Ein Context selbst wird eingeleitet durch Text in eckigen Klammern. „Text“ ist hierbei ein sinnvoller Name, der den Context benennt und als spätere Referenz für denselben verwendet wird. Alle Zeilen nach einer solchen Einleitung bis zum nächsten Context werden als Bestandteil (Regeln, Anweisungen) dieses Contextes behandelt:

[general]

[interne-telefone]
Regeln, Anweisungen, ...

[apfelmus]
Regeln, Anweisungen, ...

2. Extension

Die einzelnen Dialplan-Programme werden Asterisk-intern Extensions genannt. Eine Extension wird nicht kompiliert, sondern bei jedem Durchlauf von Asterisk interpretiert. Das Einlesen erfolgt einmalig automatisch während des Startens des Asterisk-Daemons.[42] Das erneute Einlesen des Dialplanes kann aber auch im laufenden Betrieb im Command Line Interface durch den Befehl reload now bzw. extensions reload forciert werden.

Syntax

Eine Extension besteht immer aus folgenden Teilen:

  • Extension (Nummer oder Name)

  • Priorität (also der Programmzeilenzähler)

  • Applikation - das ist die Anweisung, die Asterisk ausführen soll.

exten =>
Extension,Priorität,Applikation()

z.B.

exten => 123,1,Answer()

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.

Regular Expressions

Mit unserem bisherigen Wissen müssen wir pro möglicher Rufnummer immer eine eigene Extension schreiben. Dies würde schon nach kurzer Zeit sehr lange und fehleranfällige Dialpläne nach sich ziehen. Sollen z.B. die Rufnummern 100 bis 109 jeweils immer den hello-world Sprachbaustein abspielen, so würde die extensions.conf wie folgt aussehen:

[general]

[apfelmus]
exten => 100,1,Answer()
exten => 100,2,Playback(hello-world)
exten => 100,3,Hangup()

exten => 101,1,Answer()
exten => 101,2,Playback(hello-world)
exten => 101,3,Hangup()

exten => 102,1,Answer()
exten => 102,2,Playback(hello-world)
exten => 102,3,Hangup()

exten => 103,1,Answer()
exten => 103,2,Playback(hello-world)
exten => 103,3,Hangup()

exten => 104,1,Answer()
exten => 104,2,Playback(hello-world)
exten => 104,3,Hangup()

exten => 105,1,Answer()
exten => 105,2,Playback(hello-world)
exten => 105,3,Hangup()

exten => 106,1,Answer()
exten => 106,2,Playback(hello-world)
exten => 106,3,Hangup()

exten => 107,1,Answer()
exten => 107,2,Playback(hello-world)
exten => 107,3,Hangup()

exten => 108,1,Answer()
exten => 108,2,Playback(hello-world)
exten => 108,3,Hangup()

exten => 109,1,Answer()
exten => 109,2,Playback(hello-world)
exten => 109,3,Hangup()

Unter Verwendung einer Regular Expression

[Tipp]Tipp

Definition Regular Expression:

"Reguläre Ausdrücke (Abk. RegExp oder Regex, engl. regular expressions) dienen der Beschreibung von (Unter-)Mengen von Zeichenketten mit Hilfe syntaktischer Regeln. Sie finden vor allem in der Softwareentwicklung Verwendung; für fast alle Programmiersprachen existieren Implementierungen." (zitiert aus http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck )

sieht der gleiche Dialplan gleich viel handlicher aus:

[general]

[apfelmus]
exten => _10X,1,Answer()
exten => _10X,2,Playback(hello-world)
exten => _10X,3,Hangup()

Syntax

Eine Regular Expression wird immer mit einem Unterstrich (_) vor dem eigentlichen Pattern (Suchmuster) eingeleitet:

exten => _Regular Expression,Prioritaet,Applikation

Eine Regular Expression kann in Asterisk aus den folgenden Elementen[43] bestehen:

[ABC]

Die Ziffern A, B und C. Beispiel für die Zahlen 34, 37 und 38:

exten => _3[478],1,NoOp(Test)
[A-B]

Beliebige Ziffer von A bis B. Beispiel für alle Zahlen von 31 bis 35:

exten => _3[1-5],1,NoOp(Test)

(z.B. auch [25-8] möglich für die Ziffern 2,5,6,7,8)

X

Beliebige Ziffer von 0 bis 9. Beispiel für alle Zahlen von 300 bis 399:

exten => _3XX,1,NoOp(Test)
Z

Beliebige Ziffer von 1 bis 9. Beispiel für alle Zahlen von 31 bis 39:

exten => _3Z,1,NoOp(Test)
N

Beliebige Ziffer von 2 bis 9. Beispiel für alle Zahlen von 32 bis 39:

exten => _3N,1,NoOp(Test)
.

Eine oder mehrere beliebige Ziffer(n). Beispiel für alle Nummer, die mit einer 0 beginnen:

exten => _0.,1,NoOp(Test)
[Anmerkung]Anmerkung

Das Pattern _. sollten Sie nicht verwenden! Es trifft auch auf besondere Extensions wie i, t oder h zu. Benutzen Sie stattdessen _X. oder _X falls nötig.

!

Eine oder mehrere beliebige Ziffer(n) - ab Asterisk 1.4. Dieser besondere Platzhalter trifft zu, sobald unzweifelhaft nicht eine andere explizite Nummer im Dialplan gewählt wird. Hebt dann sofort die Leitung ab für „overlap dialing“. Hier nur der Vollständigkeit halber erwähnt.

Wann matcht welches Pattern?

Pattern Matchin in Asterisk ist bei großen Dialplänen eine trickreiche Angelegenheit. Asterisk geht nämlich nicht wie allgemein angenommen wird plump von oben nach unten den Dialplan durch. Nein, es priorisiert innerhalb der Patterns!

Je exakter ein Pattern matcht, desto höher ist die Wahrscheinlichkeit das es matcht. Asterisk geht allerdings - bevor es eine Entscheidung trifft - den ganzen Context durch. Es könnte ja sein, das ein anderes Pattern noch besser matcht.

Beispiel:

[verkauf]
exten => _12X.,1,NoOp{12X}
exten => 12345,1,NoOp(12345}
exten => _1234.,1,NoOp{1234.}

Wenn in diesem Beispiel die 12345 gewählt wird, dann wird die zweite Zeile ausgeführt, denn sie stellt den optimalen Treffer da. Wenn die 12346 gewählt wird, dann trifft die letzte Zeile, denn sie matcht besser als die erste.

[Warnung]Warnung

Es gibt eine Sonderregel für das Pattern _.

"_." matcht immer und hat auch immer die höchste Priorität. Es ist also egal, was Sie sonst noch in diesem Context für Regeln haben! Es wird immer nur die Regel mit dem Pattern "_." ausgeführt. Man sollte also lieber ein "_X." nehmen, ausser man ist sich absolut sicher und weiss was das Pattern "_." bewirkt.

Auch wenn die Reihenfolge von Pattern nicht immer ganz trival ist, gibt es eine einfache Debugging Möglichkeit. Mit show dialplan 12345@verkauf lässt sich der Dialplan für die gewählte Nummer 12345 im Context verkauf auflisten. So kann man für spezielle Nummern überprüfen, ob auch die dafür vorgesehene Regel matcht.

3. Grundlegende Applikationen

Um die Programmierbeispiele in diesem Kapitel halbwegs sinnvoll zu gestalten, benötigen wir folgende Applikationen:

  • Answer()

    Die Answer()-Applikation dient dazu, einen Verbindungsversuch zu akzeptieren. Wenn ein Channel klingelt, dann kann Answer() den virtuellen Hörer abnehmen.

  • Hangup()

    Hangup() ist das Gegenstück zu Answer(). Die Verbindung wird getrennt, der virtuelle Hörer aufgelegt.

  • Playback(Soundfile)

    Mit Playback() kann man Sounddateien abspielen. Diese finden sich, wenn kein anderes Verzeichnis angegeben worden ist, im Verzeichnis /var/lib/asterisk/sounds/. Die Dateiendung wird dabei nicht angegeben (Asterisk sucht sich den optimalen Codec selbstständig raus).

  • Wait(Zahl)

    Mit Wait() kann man eine Pause abrufen. Die Zahl in der Klammer gibt die Anzahl der zu wartenden Sekunden an.

  • NoOp(String)

    Die Applikation NoOp() macht nichts. NoOP steht für No-Operation. Sie ist aber ein praktisches Tool, um Dialpläne zu debuggen. Der Inhalt des übergebenen Strings wird auf dem CLI (Konsole) ausgegeben. Im CLI muss dafür aber der Verbose Level auf mindestens 4 eingestellt sein (einfach im CLI set verbose 4 eingeben).

4. Includes im Dialplan

Includes bringen Struktur und Ordnung in grosse Dialpläne. Mit einem Include können andere Contexte in den aktuellen Context eingebaut (also "included") werden.

Syntax

include => Name-des-anderen-Contextes

Beispiel

[verkauf]
include => intern
include => extern

[intern]
exten => _2000,1,Dial(SIP/2000)

[extern]
exten => 03012345678,1,Dial(SIP/03012345678)

Includes zeitgesteuert

Durch die Fähigkeit includes auch zeitgesteuert durchzuführen, kann man mit diesem Mechanismus sehr leicht Tag- und Nachtschaltungen durchführen.

Syntax

include => context|<uhrzeit>|<wochentag>|<tag-des-monats>|<monat>

Die Wochentage und Monate werden immer durch die ersten drei Buchstaben des entsprechenden enlischen Begriffes bestimmt. Wochentage: mon, tue, wed, thu, fri, sat, sun

Beispiel

Wenn eine Firma an Wochentagen von 9:00 bis 17:00 Uhr und samstags von 9:00 bis 14:00 Uhr geöffnet hat. Dann kann ein Dialplan dafür wie folgt aussehen:

; Tag

include => tagschaltung|09:00-17:00|mon-fri|*|*

include => tagschaltung|09:00-14:00|sat|*|*
include => anrufbeantworter

[tagschaltung]
exten => _X.,1,Dial(SIP/2000)

[anrufbeantworter]
exten => _X.,1,VoiceMail(2000,u)


Reihenfolge beim Include

Asterisk sucht bevor es einen anderen Context einbindet (include) immer erst im aktuellen Context nach einem Treffer (einem Match). Gibt es einen Treffer, wird dieser benutzt. Gibt es keinen Treffer, wird das erste Include vollzogen und dort nach einem Treffer gesucht. Dies funktioniert rekursiv nach unten - auch verschachtelt - es können also auch Includes innerhalb von Includes abgearbeitet werden.

Im Zweifelsfall können Sie zum Debuggen auch hier die Applikation show dialplan nummer@name-des-contextes benutzen, um heraus zu finden, welche Regel von Asterisk angewendet wird.

5. Variablen

Variablen sind Platzhalter für konkrete Werte. Diese konkreten Werte sind abhängig von der Definition der Variablen, also dem Typ, und können bei Asterisk Zahlen, Buchstaben und Buchstabenfolgen sein. Variablen dienen dazu, das kompilierte Programm flexibler zu gestalten und für unterschiedliche oder wechselnde Einsatzzwecke anzupassen. Die Verwendung von Variablen ermöglicht erst den individuellen Einsatz eines Programms, ohne die erneute Übersetzung des Programmcodes in ein ausführbares Programm.

[Tipp]Tipp

Wer noch nie programmiert hat oder mit Variablen in Berührung gekommen ist, sollte sich an dieser Stelle kurz bei http://de.wikipedia.org/wiki/Variable_%28Programmierung%29 in die Materie einlesen.

Variablen haben bei Asterisk unterschiedliche Reichweiten. Es gibt lokale (im Asterisk-Jargon Channel-Variablen genannt) Variablen, die Werte nur für den jeweiligen und aktiven Channel (also das aktuelle Gespräch) setzen, und globale Variablen, die Werte für alle Channels setzen. Die bereits von Asterisk vorgesehenen Variablen haben wir ja in Form der Parameter in den Konfigurationsdateien schon ausführlich kennen gelernt. Neben diesen gibt es auch die Möglichkeit, eigene Variablen zu definieren und diese in den Konfigurationsdateien zu verwenden.

Variablen in einer Extension auslesen

Der Wert einer Variable kann immer in der Syntax ${VARIABLENNAME} ausgelesen werden. Es gibt Variablen, die vom Asterisk-System automatisch gesetzt werden. So wird z.B. die angerufene Nummer immer in der Variable EXTEN abgespeichert. Durch Regular Expressions und den Einsatz von Variablen kann man somit einen langen Dialplan häufig stark komprimieren.

Beispiel vorher:

exten => 100,1,Dial(SIP/100)
exten => 101,1,Dial(SIP/101)
exten => 102,1,Dial(SIP/102)
exten => 103,1,Dial(SIP/103)
exten => 104,1,Dial(SIP/104)
exten => 105,1,Dial(SIP/105)
exten => 106,1,Dial(SIP/106)
exten => 107,1,Dial(SIP/107)
exten => 108,1,Dial(SIP/108)
exten => 109,1,Dial(SIP/109)

Beispiel nachher:

exten => _10X,1,Dial(SIP/${EXTEN})

Allgemeines

Variablennamen müssen nicht wie in unseren Beispielen großgeschrieben werden und sind auch nicht an Groß- und Kleinschreibung gebunden. Die Großschreibung von Variablen führt aber meistens zu besser lesbarem Code, da Sie bereits an der Schreibweise erkennen können, dass es sich um eine Variable handelt. Umgekehrt bedeutet das aber auch, dass Groß- und Kleinschreibung nicht für die Unterscheidung von Variablen verwendet werden kann.

[Wichtig]Wichtig

Die von Asterisk selbst generierten Variablen wie ${EXTEN} müssen immer in Großbuchstaben geschrieben werden.

Strings

Strings (als Variablen, die keine Zahlen, sondern Text enthalten) sollten immer in Anführungszeichen gesetzt werden. Asterisk akzeptiert sie aber auch ohne diese Markierung. So sind die folgenden zwei Zeilen im Ergebnis gleich:

exten => 1234,1,Set(OBST=Apfel)
exten => 1234,2,Set(OBST="Apfel")

Sollte der String ein Komma oder ein Leerzeichen enthalten, dann müssen Sie Anführungszeichen verwenden, da diese sonst als Kommandos und nicht als Strings interpretiert werden:

exten => 1234,1,Set(OBSTSORTEN="Apfel, Birne, usw.")

Quoting

Bei einer Variablen, die Zeichen oder Zeichenfolgen (Wörter, Text) als Werte enthält, kann es vorkommen, dass man bestimmte Zeichen verwenden möchte, die bereits für andere Funktionen reserviert sind. Wollen Sie zum Beispiel ein Underscore-Zeichen als Bestandteil des Variablenwertes verwenden, müssen Sie es besonders kennzeichnen, bzw. maskieren. Diese Kennzeichnung nennt man beim Programmieren escapen. Folgende Zeichen müssen auf jeden Fall maskiert („escaped“) werden:

[ ] $ " \

Das Quoting in der extensions.conf erfolgt mit einem vorangestellten \ (Backslash).

Beispiel:

exten => 1234,1,Set(BETRAG="10,00 US \$")

Integer

Bestehen Variablen aus einer Ganzzahl (Integer), so kann diese maximal 18 Stellen betragen. Bei Zahlen, die größer sind, tritt ein Fehler auf, der im Logfile protokolliert wird.

[Tipp]Tipp

Wer mit größeren oder Kommazahlen (Real) arbeiten will, kann dies mit einem AGI-Skript realisieren (siehe Kapitel 17, Asterisk Gateway Interface (AGI)).

Globale Variablen in der extensions.conf definieren

Eine globale Variable kann am Anfang der extensions.conf gesetzt werden. Dies muss im besonderen Context [globals] erfolgen (er folgt dem Context [general]).

Beispiel:

[general]

[globals]
KLINGELZEIT=90

[from-intern]
exten => _XXX,1,Dial(SIP/${EXTEN},${KLINGELZEIT})
exten => _XXX,n,VoiceMail(${EXTEN})

Variablen mit Set() definieren

Die Applikation Set() wird benutzt, um eine Variable in einer Extension zu setzen.[44]

Syntax

Set(Variablenname=Wert[,Variablenname2=Wert2][,Option])

Als Option kann ein g angegeben werden. Mit diesem g kann mit Set() eine globale Variable gesetzt werden. Ohne diese Option geht Asterisk immer von lokalen Channel-Variablen aus.

Beispiel:

; Eine globale Variable setzen:
exten => 10,1,Set(KLINGELZEIT=90,g)

; Eine Channel-Variable setzen:
exten => 10,2,Set(LIEBLINGSOBSTSORTE="Apfel")

; Zwei Channel-Variablen auf einmal setzen:
exten => 10,3,Set(VAR1=10,VAR2=23)

; Die Variablen auf dem CLI ausgeben
exten => 10,4,NoOp(KLINGELZEIT = ${KLINGELZEIT})
exten => 10,5,NoOp(LIEBLINGSOBSTSORTE = ${LIEBLINGSOBSTSORTE})
exten => 10,6,NoOp(VAR1 = ${VAR1})
exten => 10,7,NoOp(VAR2 = ${VAR2})

Vererbung von Channel-Variablen

Wird im Lauf eines Gespräches ein weiterer Channel aufgebaut, so hat dieser natürlich wieder eigene Channel-Variablen.

Einstufige Vererbung

Will man eine Channel-Variable übergeben, aber keine globale Variable dafür benutzen, so kann man der Channel-Variable ein _ (Underscore) voransetzen. Diese Channel-Variable wird dann an den nächsten Channel vererbt. Dabei wird der Underscore entfernt. Die Vererbung kann also nur einmal erfolgen.

Beispiel:

exten => 1234,1,Set(_KUCHENSORTE="Marmorkuchen")

Mehrstufige Vererbung

Will man eine Channel-Variable beliebig oft vererben, so muss man zwei __ (Underscore)-Zeichen vor die Variable setzen. Die zwei Underscore-Zeichen werden dann immer mitvererbt.

[Warnung]Warnung

Asterisk unterscheidet die Namen von Variablen, die mit einem Underscore anfangen, nicht von Variablen, die keinen Underscore haben. So wird im folgenden Beispiel aus der vererbbaren Channel-Variable KUCHENSORTE eine normale (nicht vererbbare) Channel-Variable:

exten => 1234,1,Set(__KUCHENSORTE="Marmorkuchen")
exten => 1234,n,Set(KUCHENSORTE="Marmorkuchen")

Beispiel:

exten => 1234,1,Set(__KUCHENSORTE="Nusskuchen")

Bei einem Abruf einer vererbten Channel-Variable ist es egal, ob man die Unterstriche voranstellt oder nicht. Die beiden folgenden Zeilen geben zweimal den gleichen Wert im CLI aus:

exten => 1234,1,NoOp(${__KUCHENSORTE})
exten => 1234,n,NoOp(${KUCHENSORTE})

Feste Channel-Variablen

Die folgende Liste enthält die wichtigsten fest einprogrammierten Channel-Variablen, die nicht in der extensions.conf überschrieben, aber ausgelesen werden können.

[Warnung]Warnung

Eine komplette Liste aller vordefinierten Variablen finden Sie in der Datei doc/README.variables (Asterisk 1.2) und doc/channelvariables.txt (Asterisk 1.4). In dieser Liste werden nur nicht DEPRECATED Variablen aufgelistet. So finden Sie z.B. ein ${CALLERIDNUM} nicht in dieser Liste, weil dies deprecated ist (man soll anstatt die Funktion ${CALLERID(num)} benutzen).

Die für das jeweilige Thema relevanten Variablen werden aber im Buch immer in jedem Kapitel extra aufgeführt.[45]

[Anmerkung]Anmerkung

Bei einigen der hier aufgeführten Variablen handelt es sich gar nicht um Variablen, sondern um eingebaute Funktionen. Da dies in der Praxis aber oft verschwimmt, werden sie hier trotzdem aufgelistet.

${ANSWEREDTIME}

Die Gesamtzeit (in Sekunden) seitdem das Gespräch zustande gekommen ist.

${BLINDTRANSFER}

Der Name des Channels auf der anderen Seite eines Blind-Transfers.

${CHANNEL}

Name des aktuellen Channels

${CONTEXT}

Name des aktuellen Contextes

${EPOCH}

Aktueller Unix Style Epoch.

${EXTEN}

Aktuell gewählte Extension

${ENV(VARIABLENNAME)}

Umgebungsvariable VARIABLENNAME

${HANGUPCAUSE}

Grund für das Beenden (hangup) eines Gespräches

${INVALID_EXTEN}

Wird in der i-Extension benutzt und enthält die gewählte Extension.

${PRIORITY}

Aktuelle Priorität innerhalb der Extension

${TRANSFER_CONTEXT}

Context eines weiterverbundenen Gespräches

${UNIQUEID}

Im System einzigartige (unique) ID für das aktuelle Gespräch

${SYSTEMNAME}

In der /etc/asterisk/asterisk.conf Datei eingetragener systemname Parameter.

Variablenmanipulation

Variablen an sich eröffnen ihren Nutzen erst dann, wenn man sie zur Laufzeit verändern kann. Mit Hilfe dieser Variabilität lassen sich komplexe Verhaltensweisen steuern und vorsehen.

Substring

In der Regel bezeichnen Strings eine Aneinanderreihung einzelner Zeichen (character). Die Größe eines Strings bestimmt sich durch die Anzahl der identifizierbaren einzelnen Zeichen. Zum Beispiel besteht der String „Apfelbaum“ aus 9 Zeichen. Ein String kann grundsätzlich in so genannte Teilstrings zerlegt werden, also Strings, die, wenn man sie wieder aneinanderreiht, den ursprünglichen String ergeben. Im genannten Beispiel könnten wir den String „Apfelbaum“ in die Teilstrings „Apfel“ und „baum“ zerlegen, aber auch „Apf“ und „elbaum“ sind echte Teilstrings. Ein String hat theoretisch keine begrenzte Größe, er kann beliebig viele Zeichen enthalten, der gesamte Text dieses Buches könnte so als ein String aufgefasst werden. Natürlich wäre das dann nicht mehr sehr handlich, dennoch ist der Vorgang des Zerlegens eines Strings in Teilstrings eine Standardprozedur beim Programmieren von Anwendungen. In vielen Programmiersprachen heißt die hier beschriebene Funktionalität Substring. Mit einer Substring-Funktion kann man Teile eines Strings ausschneiden und das Ergebnis in einer anderen Variablen abspeichern. In Asterisk gibt es keine eigenständige Routine für diese Substring-Funktion, sondern hierfür wird ein : (Doppelpunkt) nach dem Variablennamen eingesetzt. Vom Inhalt der Variablen, also dem String, wird dann eine vorgegebene Anzahl von Zeichen (Länge) als Teilstring abgetrennt.

Syntax
${VARIABLENNAME[:Anfang[:Laenge]]}
Beispiele

Bei einer Telefonanlage wird traditionell eine führende 0 (Null) gewählt, um eine Amtsleitung zu bekommen. Die zu wählende Telefonnummer darf diese 0 aber nicht enthalten. Wird die Nummer 0030 227 32320 gewählt, so kann man mit folgender Zeile die eigentliche Rufnummer in die Variable ${RUFNUMMER} abspeichern.[46]

exten => _0X.,1,Set(RUFNUMMER=${EXTEN:1})

Wenn die Angabe der Länge fehlt, wird automatisch der Rest des Strings genommen.

Wenn wir die letzten 5 Ziffern der gewählten Nummer benötigen, dann erreichen wir das mit einer negativen Zahl. Bei der oben gewählten Nummer würde die folgende Zeile den Wert 32320 in der Variablen ${DURCHWAHL} abspeichern.

exten => _0X.,1,Set(DURCHWAHL=${EXTEN:-5})

Möchten wir die Vorwahl in einer separaten Variable abspeichern, so erreichen wir dies durch:

exten => _0X.,1,Set(VORWAHL=${EXTEN:1:3})

Diese Zeile geht davon aus, dass die Vorwahl 3-stellig ist und speichert sie in der Variable ${VORWAHL}.[47]

Nehmen wir an, wir möchten bei Telefonaten zur Nummer 00012024562121 nach Amerika die einzelnen Bestandteile herausfiltern:[48]

exten => _0001X.,1,Set(INTERNATIONALEVORWAHL=${EXTEN:3:1})
exten => _0001X.,n,Set(ORTSVORWAHL=${EXTEN:4:3})
exten => _0001X.,n,Set(RUFNUMMER=${EXTEN:7})
exten => _0001X.,n,Set(DURCHWAHL=${EXTEN:-4}

6. Besondere Extensions

Da sämtliche Programmierlogik über Extensions programmiert werden muss, benötigen wir noch eine Reihe von besonderen und vom System vorbelegte Extensions.

Die h-Extension

Das h steht bei dieser Standard-Extension für Hangup (Auflegen). Sie wird aufgerufen, sobald ein Gespräch beendet wurde. Dabei muss berücksichtig werden, dass dann logischerweise der Wert der Variable ${EXTEN} nicht mehr die ursprüngliche Extension, sondern den Wert h enthält.

Beispiel

Sollen in der globalen Variable GESPRAECHE immer die Anzahl der aktuell geführten Gespräche gespeichert werden, so muss diese beim Aufbau eines Gesprächs um 1 erhöht und beim Abbau eines Gesprächs (also beim Auflegen) wieder um 1 vermindert werden. Der folgende Dialplan zeigt die Grundidee:

[global]
GESPRAECHE=0

[from-intern]
exten => _X.,1,Set(GESPRAECHE=$[${GESPRAECHE} + 1]|g)
exten => _X.,2,Dial(SIP/${EXTEN})

exten => h,1,Set(GESPRAECHE=$[${GESPRAECHE} - 1]|g)

Die i-Extension

Um einen Context "wasserdicht" zu machen, wird die i-Extension benutzt. Das i steht dabei für invalid (ungültig) und behandelt alle im entsprechenden Context nicht definierten Zielrufnummern. Auch hier wird in der Variable EXTEN natürlich nicht mehr die angewählte Nummer abgebildet, diese ist mit der Variable INVALID_EXTEN abrufbar.

Beispiel

In der Apfelmus GmbH können aus der Abteilung B nur die Rufnummern 100 bis 199 angerufen werden. Alle anderen Gespräche führen zur Ansage des Bausteines that-is-not-rec-phn-num.[49]

[abteilung-b]
exten => _1XX,1,Dial(${EXTEN})

exten => i,1,NoOp(Undefinierte Nummer ${INVALID_EXTEN} wurde gewaehlt.)
exten => i,2,Answer()
exten => i,3,Playback(that-is-not-rec-phn-num)
exten => i,4,Hangup()

Die o- und a-Extension

Wurde in der Konfigurationsdatei voicemail.conf der Eintrag operator=yes gesetzt, so kann innerhalb der Voicemailbox durch Drücken der 0 (Null) die o-Extension aufgerufen werden (o für Operator).

Durch Drücken der Stern-Taste (*) kommt man hingegen in die a-Extension (abort, Abbruch).

Die t- und T-Extension

Bei den t- und T-Extensions handelt es sich jeweils um Timeout-Extensions, also Zeitüberschreitungen.

t-Extension

Erfolgt nach einer bestimmten Zeit in einem IVR-Menü keine Eingabe, so wird die t-Extension aufgerufen.

Beispiel:

[hauptmenue]
exten => 10,1,Answer()
exten => 10,n,Background(marryme)             ; "Heiraten? 1 für ja, 2 für nein"

exten => 1,1,Playback(thank-you-cooperation)  ; 1 => "Danke"
exten => 1,n,Hangup()

exten => 2,1,Playback(hangup-try-again)       ; 2 => "Nochmal probieren"
exten => 2,n,Hangup()

exten => t,1,Hangup()                         ; keine Eingabe => auflegen

T-Extension

Die T-Extension wird nach einem Absolute Timeout aufgerufen. Dieser kann mit Set(TIMEOUT(absolute)=<Sekunden>) gesetzt werden.

[Warnung]Warnung

Bitte achten Sie darauf, das vor und nach dem "=" Zeichen kein Leerzeichen stehen darf.

Der Timeout wird immer dann gestartet, wenn der Zähler neu gesetzt wird (es wird also nicht automatisch vom Anfang des Gespräches gezählt). Mit Set(TIMEOUT(absolute)=0) wird dieser Timeout wieder deaktiviert.

Beispiel:

exten => 20,1,Answer()
exten => 20,2,Set(TIMEOUT(absolute)=120)
exten => 20,3,Playback(hello-world)
exten => 20,4,Wait(1)
exten => 20,5,Goto(3)

exten => T,1,Wait(1)
exten => T,2,Playback(thank-you-for-calling)
exten => T,3,Wait(1)
exten => T,4,Hangup()

Die s-Extension

Der erste Parameter einer Regel (Extension) ist immer der Name bzw. die Nummer. Was passiert aber, falls der Anruf auf einer klassischen analogen Leitung eintrifft und Asterisk gar nicht wissen kann, an wen der Anruf gerichtet ist? Dies ist dann der Fall, wenn Sie Asterisk mittels eines analogen Anschlusses an das Festnetz anschließen und die Rufnummerweitergabe aus dem Festnetz an den analogen Teilnehmeranschluss nicht erfolgt. Für dieses und alle anderern Szenarien, in denen der eingehende Anruf ohne eine Zielrufnummer ankommt, gibt es die s-Extension.

[Warnung]Warnung

Wenn Sie ein ATA-Device, also einen Analog to VoIP-Adapter benutzen, so benötigen Sie dafür keine s-Extension. Die Zielrufnummer müssen Sie hierbei im Adapter (meist über ein Webinterface) konfigurieren.

Beispiel:

exten => s,1,Answer()
exten => s,2,Wait(1)
exten => s,3,Play(carried-away-by-monkeys)
exten => s,4,Wait(1)
exten => s,5,Hangup()

7. Macro

Ein Macro ist eine Art Unterprogramm. Es kann komplexe Workflows enthalten und dann im restlichen Dialplan immer mit einer einzigen Zeile aufgerufen werden. Ein einfaches Beispiel kann so aussehen:

[macro-anruf]
exten => s,1,Dial(SIP/${MACRO_EXTEN},10)
exten => s,n,VoiceMail(${MACRO_EXTEN})

Ein solches Macro würde im rest des Dialplanes dann wie folgt aufgerufen werden:

[verkauf]
exten => _2XXX,1,Macro(anruf)

[hausmeister]
exten => _2XXX,1,Macro(anruf)

Bei einem zweizeiligen Macro ist der Effekt natürlich nicht so groß wie bei einem langen Macro, aber es ist klar, worum es geht.

Die Benutzung oder nicht Benutzung von Macros spaltet die Asterisk Entwicklergemeinde in zwei Lager. Für die eine Hälfte machen sie den Dialplan übersichtlicher und für die andere Hälfte machen sie ihn total unübersichtlich. Entscheiden Sie selber, zu welcher Gruppierung Sie gehören!

Macro Basics

Bei der Definition eines Macros sind folgende Punkte zu beachten:

  • Bei der Definition eines Macros gibt es nur eine Extension (die s-Extension).

  • Auf die ursprünglichen Variablen ${EXTEN} und ${CONTEXT} kann innerhalb des Macros nicht direkt zugegriffen werden. Das geschieht über die Variablen ${MACRO_EXTEN} und ${MACRO_CONTEXT}.

  • Beim Aufruf eines Macros können zusätzliche Argumente übergeben werden (mit Komma oder Pipe abgetrennt). Diese können im Macro mit ${ARGn} (n ist dabei eine natürliche Zahl) abgerufen werden.

  • Ein Macro wird durch [macro-macroname] definiert und mit der Applikation Macro() im Dialplan aufgerufen.

Weitere Informationen zu Macros finden Sie unter Macro().

[Tipp]Tipp

Mit der Applikation MacroExclusive() kann man sicherstellen, das das konkrete Macro immer nur einmal zu einem gegebenen Zeitpunkt aufgerufen wird (siehe MacroExclusive()).

8. Kleines Programmierer Howto

Die Schwierigkeit eines solchen Buches liegt unter anderem im breit gestreuten Grundwissen der Leser. Ein Buch über Asterisk wird von Admins, Programmierern, Telefonanlagentechnikern und vielen anderen technisch interessierten Menschen gelesen. Die praktischen Programmierkenntnisse sind dabei sehr unterschiedlich ausgeprägt. Um die Fähigkeiten von Asterisk auszureizen benötigt man schon einfache Programmierkenntnisse und ein gesundes Basiswissen. In diesem Howto möchte ich die wichtigsten Grundprinzipien und Ideen für Programmierer erläutern. Dabei gehe ich beispielhaft vor und verweise bei Detailfragen auf Abschnitt 11, „Applikationen im Dialplan“. Einige Themen werden sie hier sicher aus anderen Kapiteln wiedererkennen. Dieses kleine Howto wird ihnen einen sehr schnellen Überblick zu dem Thema bieten.

Programmstruktur

Im Dialplan (also der /etc/asterisk/extensions.conf) gibt es für jede zur Verfügung gestellte Zielrufnummer ein kleines Programm. Dieses Programm heißt bei Asterisk Extension. Eine Extension sieht dabei wie folgt aus:

exten => 1001,1,Answer()
exten => 1001,n,Playback(hello-world)
exten => 1001,n,Hangup()

Häufig sieht man die Prioritäten auch nicht mit n sondern mit Zahlen benannt.

exten => 1001,1,Answer()
exten => 1001,2,Playback(hello-world)
exten => 1001,3,Hangup()

Die Funktionsweise der jeweiligen Extensions ist identisch. Wer mit n programmiert, kann später aber leichter einzelne Zeilen löschen oder hinzufügen.

Variablen

Zum Generieren und Verändern von Variablen wird die Applikation Set() benutzt:

exten => 1002,1,Set(Lieblingstier = "Tiger")
exten => 1002,n,Set(Lieblingszahl = 23)

Zum Lesen und Ausgeben von Variablen wird die Syntax ${VARIABLENNAME} benutzt. Mit der Applikation NoOp() kann man Variablenwerte auf dem CLI ausgeben (ab Verbose-Level 3):

exten => 1003,1,NoOp(${Lieblingstier})
exten => 1003,n,NoOp(${Lieblingszahl})

Es gibt verschiedene Arten von Variablen:

  • Globale Variablen

    Gelten im gesamten Dialplan und werden mit Set(X=23,g) generiert und verändert.

    exten => 1004,1,Set(SOLL-UEBERALL-LESBAR-SEIN = 23,g)
    exten => 1004,n,NoOp(${SOLL-UEBERALL-LESBAR-SEIN})
  • Channel Variablen

    Gelten nur im aktiven Channel (ein Channel kann z.B. ein Gespräch von Peter und Uwe sein). Sie werden mit Set(Y=42) generiert und verändert.

    exten => 1005,1,Set(SOLL-NUR-HIER-LESBAR-SEIN = 42)
    exten => 1005,n,NoOp(${SOLL-NUR-HIER-LESBAR-SEIN})
  • System Variablen

    Diese sind quasi "Gott gegeben" (ok, natürlich eher "Asterisk gegeben" ;-)) und können einfach im Dialplan aufgerufen werden. Eine typische Systemvariable ist ${EXTEN}.

    exten => 1006,1,NoOp(Gewaehlte Nummer: ${EXTEN})

Labels und Goto()

Mit Goto() kann man innerhalb des Dialplanes Sprünge zu einem mit (Labelname) definierten Label vollziehen:[50]

  • Innerhalb einer Extension:

    exten => 1007,1,Answer()
    exten => 1007,n(Anfang),Wait(1)
    exten => 1007,n,Playback(hello-world)
    exten => 1007,n,Goto(Anfang)
  • Von Extension zu Extension:

    exten => 1008,1,Answer()
    exten => 1008,n,Goto(1009,Ping)
    
    exten => 1009,1(Ping),Playback(hello-world)
    exten => 1009,n,Wait(2)
    exten => 1009,n,Goto(1010,Pong)
    
    exten => 1010,1(Pong),Playback(weasels-eaten-phonesys)
    exten => 1010,n,Wait(2)
    exten => 1010,n,Goto(1009,Ping)
  • Von Context zu Context:

    [zentrale]
    exten => 1011,1,Answer()
    exten => 1011,n,Playback(hello-world)
    exten => 1011,n,Goto(verkauf,1012,1)
    
    [verkauf]
    exten => 1012,1,Playback(hello-world)
    exten => 1012,n,Hangup()

Siehe auch: Goto()

While() Schleifen

Mit While() lassen sich Schleifen im Dialplan erzeugen:

exten => 1013,1,Answer()
exten => 1013,n,Set(i=1)
exten => 1013,n,While($[${i} < 10])
exten => 1013,n,SayNumber(${i})
exten => 1013,n,Wait(1)
exten => 1013,n,Set(i=$[${i} + 1])
exten => 1013,n,EndWhile()
exten => 1013,n,Hangup()

Siehe auch: While()

GotoIf() Bedingung

Mit GotoIf() lassen sich Sprünge zu anderen Teilen im Dialplan mit einer Bedingung verbinden:

exten => 1014,1,Answer()
exten => 1014,n,Set(Lieblingsnebenstelle = 0815)
exten => 1014,n,NoOp(Ueberpruefe, ob Anruf von ${Lieblingsnebenstelle} kommt.)
exten => 1014,n,GotoIf($[${CALLERID(num)} = ${Lieblingsnebenstelle}]?ja,nein)

exten => 1014,n(ja),Playback(hello-world)
exten => 1014,n,Hangup()

exten => 1014,n(nein),Playback(tt-monkeys)
exten => 1014,n,Hangup()

Siehe auch: GotoIf()

Gosub() Unterprogramme

Mit Gosub() kann man in ein Unterprogramm springen und aus diesem mit Return() wieder zurück:

exten => 1015,1,Gosub(cid-setzen)
exten => 1015,n,Dial(SIP/${EXTEN})

exten => 1015,n(cid-setzen),Set(CALLERID(all)=Apfelmus GmbH <012345678>)
exten => 1015,n,Return()

Siehe auch: Gosub(), GosubIf(), Return(), Macro()

9. Priority Jumping ist deprecated

Lange Zeit wurde in Asterisk Dialplänen hauptsächlich mit Priority Jumping gearbeitet. Dazu wurde von bestimmten Applikationen (z.B. Dial()) die Priorität bei bestimmten Ereignissen um 101 hochgesetzt. Diese Funktionalität ist aber mittlerweile offiziell deprecated (also im Sinne von "überholt")) und wird zwar noch unterstützt, sollte jedoch nicht mehr benutzt werden. Die Klassifizierung "deprecated" bezeichnet zumeist Funktionen und Funktionsaufrufe, für die mittlerweile entsprechende Nachfolger oder Folgekonstrukte existieren und künftig durch diese neuen ersetzt werden sollen. Beim Suchen nach Lösungen und Anregungen im Internet oder auch in anderen Asteriskbüchern werden Sie ebenfalls immer wieder auf Lösungsvorschläge stoßen, die dieses überholte Konstrukt mit den Prioritäten verwenden. Auch wenn die Unterstützung für derart erstellte Dialpläne sicher nicht morgen eingestellt wird, so werden sie doch mittelfristig schlechter unterstützt werden und man kann dann nicht sicher sein, dass es eine Lösung in der alten Notation geben wird. Es hat auch Vorteile sich aktiv mit einer Umstellung frühzeitig zu beschäftigen, da sie bei künftigen Updates der Asterisk-Software deutlich weniger Gefahr laufen werden, dass ihr Dialplan nicht mehr so funktioniert, wie sie das gewohnt sind.

10. Asterisk Extension Language (AEL)

Wer einmal ein ls im Verzeichnis /etc/asterisk/ ausgeführt hat, wird dort nicht nur eine Datei extensions.conf, sondern auch eine Datei extensions.ael gefunden haben. In dieser Datei ist ein Teil des Dialplanes in der Asterisk Extension Language (kurz AEL) abgespeichert. AEL ist ein Versuch die Programmierung des Dialplanes syntaktisch mehr an andere Programmiersprachen anzulehnen. Wenn ein sonst üblicher Dialplan wie folgt aussieht:

[meine-telefone]
exten => 23,1,Wait(1)
exten => 23,2,Answer()
exten => 23,3,Playback(hello-world)
exten => 23,4,Wait(1)
exten => 23,5,Hangup()

Dann sieht die gleiche Extension im gleichen Context in AEL wie folgt aus:

context meine-telefone {
        23 => {
                Wait(1);
                Answer();
                Playback(hello-world);
                Wait(1);
                Hangup();
        };
};

Wie spielen die beiden Versionen des Dialplanes zusammen? Asterisk lädt erst die Datei extensions.conf und dann konvertiert es die Datei extensions.ael in das .conf Format, um es danach zu laden. Es werden also beide Dateien geladen und als Dialplan ausgeführt! Da die AEL erst noch in das alte Format umkonvertiert werden muss, könnte man sogar mit einem leichten zeitlichen Nachteil argumentieren. Wenn in beiden Dateien die gleiche Extension im gleichen Context definiert ist, dann nimmt Asterisk die extensions.conf Variante.

Ob man den traditionellen oder den AEL Weg wählt, muss jeder selbst entscheiden. Vom technischen Standpunkt gibt es keine Unterschiede in der Funktionalität. Wer sich für AEL interessiert, sollte einmal einen Blick in die Datei /etc/asterisk/extensions.ael werfen. Dort gibt es einige praktische Beispiele.

In diesem Buch werden alle Beispiele immer im traditionellen Modus beschrieben. Einer der Gründe dafür ist, das AEL bei der Asterisk Version 1.2 noch als experimentell eingestuft wurde. Erst mit der Asterisk Version 1.4 ist AEL vom Status "stable" .

11. Applikationen im Dialplan

Im Folgenden werden die Applikationen beschrieben, die im Dialplan (also in der /etc/asterisk/extensions.conf) verwendet werden können. Beachten Sie bitte, dass nur solche Applikationen in Ihrer Installation verfügbar sind, die in der /etc/asterisk/modules.conf im Abschnitt [modules] durch autoload=yes oder explizites load => app_applikationsname.so geladen wurden. Welche Applikationen in Ihrer Asterisk-Version vorhanden sind, erfahren Sie, indem Sie im Asterisk-CLI show applications oder show application Applikationsname bzw. core show applications oder core show application Applikationsname (je nach Asterisk-Version) eingeben.

Der Begriff „Applikationen“ (oder „Befehle“) darf nicht mit „Funktionen“ verwechselt werden, die ggf. innerhalb eines Befehlsaufrufs stehen. „Applikationen“ (applications) ist vielleicht irreführend, aber der gängige Ausdruck.

Es ist oft möglich, Parameter auszulassen. Wenn ausgelassene Parameter nicht am Ende stehen, müssen Sie trotzdem ein Komma angeben, um anzuzeigen, dass der Parameter leer ist (also der Default-Wert verwendet wird), z.B. so:

exten => s,1,Dial(IAX2/User:Passwort@beispiel.de/123,,tT)

Im Allgemeinen kann gesagt werden, dass Fehler beim Ausführen einer Applikation durch den Rückgabewert -1 ausgedrückt werden, Erfolg durch 0. Ein Rückgabewert von -1 bedeutet, dass Asterisk den Kanal auflegt und nicht weiter den Dialplan abarbeitet.

[Wichtig]Wichtig

Bitte beachten Sie, dass, abhängig von der eingesetzten Asterisk-Version die Parameter durch , (Komma) oder | (Pipe) getrennt werden. In diesem Buch wird hauptsächlich das , (Komma) benutzt.

Wer Asterisk schon länger kennt, wird sich vielleicht wundern, warum hier die eine oder andere Applikation nicht aufgeführt ist. Das hat den einfachen Grund, dass bereits in Asterisk 1.2 etliche Applikationen als „deprecated“ (= veraltet, soll nicht mehr verwendet werden) gekennzeichnet sind und in 1.4 nicht mehr existieren. Solche Befehle werden hier nicht mehr beschrieben, Sie finden die entsprechenden Funktionen in Abschnitt 12, „Funktionen im Dialplan“. Die beigefügten Diffs der internen Hilfetexte sind immer vom neueren 1.4 zum älteren 1.2.

In den Beispielen wird oft die willkürlich gewählte Extension 123 und die Priorität 1 verwendet, was in der Praxis natürlich nicht immer sinnvoll ist.

Viele Applikationen vor Asterisk 1.2 sprangen bei einem Fehler zur Priorität n+101, wenn vorhanden (wobei n die aktuelle Priorität bezeichnet). Dieses alte Verhalten („priority jumping“) lässt sich bei einigen Befehlen durch die Option j (jump) erreichen oder indem man in der extensions.conf im Abschnitt [general] den Parameter priorityjumping=yes setzt. Dieses Verhalten ist aber „deprecated“. Die neuere Methode ist das Abfragen der gesetzten Channelvariablen.

Um eine leichtere Verwendung als Nachschlagewerk zu ermöglichen, sind die Applikationen in alphabetischer Reihenfolge aufgeführt. Da sie sich aber auch sinnvoll gruppieren lassen, finden Sie hier einen entsprechenden Index:

Anruf-Verwaltung (abheben, durchstellen, auflegen, ...)

Answer() - Abheben
Busy() - Besetztzeichen signalisieren
ChanIsAvail() - Prüfen, ob ein Channel verfügbar ist
ChannelRedirect() - Kanal auf eine andere Extension umleiten
Congestion() - Stau signalisieren
Dial() - Einen Anruf durchstellen / mit einem Channel verbinden
DISA() - DISA (Direct Inward System Access)
FollowMe() - „Folge-Mir“-Funktionalität
Hangup() - Auflegen
Page() - Rundruf
Park() - Gespräch parken
Pickup() - Heranholen eines Anrufs
RetryDial() - Dial() mit „Wahlwiederholung
Ringing() - Klingeln signalisieren

Flusskontrolle und Timeouts

ContinueWhile() - Zum Anfang einer While-Schleife springen
EndWhile() - Ende einer While-Schleife
Exec() - Ausführen einer Applikation
ExecIf() - Bedingtes Ausführen einer Applikation
ExecIfTime() - Zeitabhängiges Ausführen einer Applikation
ExitWhile() - Eine While-Schleife abbrechen
Gosub() - Zu einer Unterroutine springen
GosubIf() - Bedingtes Gosub()
Goto() - Zu einer Priorität, Extension oder anderem Context springen
GotoIf() - Bedingtes Goto()
GotoIfTime() - Bedingtes Gosub() je nach Datum/Uhrzeit
Random() - Zufällig im Dial-Plan springen
Return() - Aus einem Gosub() oder GosubIf() zurückkehren
TryExec() - Versuch der Ausführung einer Applikation
While() - Anfang einer While-Schleife

Macros

Macro() - Macro aufrufen
MacroExclusive() - Macro zu einem Zeitpunkt nur einmal aufrufen
MacroExit() - Macro abbrechen
MacroIf() - Ein Macro bedingt ausführen

Anrufer-Kennung (Caller-ID, Name, ...)

CallingPres() - „Caller Presentation“ verändern
LookupBlacklist() - Caller-ID in Blacklist nachschlagen
LookupCIDName() - Caller-ID-Name in Datenbank nachschlagen
PrivacyManager() - Eingabe einer Telefonnummer verlangen falls ohne Caller-ID
SetCallerPres() - Caller-ID setzen, unanhängig vom Channel
SoftHangup() - Auflegen verlangen
Zapateller() - Werbeanrufe blockieren

Gesprächsprotokolle (CDRs)

AppendCDRUserField() - Einen Wert an das CDR-User-Feld anhängen
ForkCDR() - Den CDR in zwei getrennte Einträge aufspalten
NoCDR() - CDR für diesen Anruf deaktivieren
ResetCDR() - CDR-Eintrag zurücksetzen
SetAMAFlags() - AMA-Flags setzen
SetCDRUserField() - CDR-User-Feld setzen

Voicemail

Directory() - Dial-by-Name-Telefonbuch anbieten
MailboxExists() - Prüft, ob Mailbox existiert
VoiceMail() - Anrufbeantworter
VoiceMailMain() - Anrufbeantworter abhören
VMAuthenticate() - User anhand der voicemail.conf authentifizieren

Konferenzen

MeetMe() - MeetMe-Konferenz
MeetMeAdmin() - MeetMe-Konferenz verwalten
MeetMeCount() - Anzahl der Teilnehmer einer MeetMe-Konferenz

Variablen verändern

ImportVar() - Variable von einem Channel importieren
Read() - Eine Variable (Ziffern) vom User einlesen
ReadFile() - Eine Datei in eine Variable einlesen
RealTime() - Variablen aus dem Realtime-System einlesen
RealTimeUpdate() - Variablen im Realtime-System verändern
Set() - Eine Channel-Variable setzen
SetGlobalVar() - Eine globale Variable setzen

Musik-/Sprachausgabe

Background() - Im Hintergrund eine Sound-Datei spielen
BackgroundDetect() - Background() mit Spracherkennung
ControlPlayback() - Playback() mit Vor-/Zurückspulen und Abbrechen
DateTime() - Datum/Uhrzeit ansagen
Echo() - Audio-Eingabe wiedergeben
Festival() - Text mit dem Festival-Synthesizer sprechen
Milliwatt() - Einen konstanten 1000-Hz-Ton mit 0 dbm erzeugen
MP3Player() - MP3-Datei oder -Stream spielen
MusicOnHold() - Wartemusik spielen
NBScat() - NBS-Stream abspielen
Playback() - Eine Sound-Datei spielen
Playtones() - Töne spielen
Progress() - Audio vor dem Abheben spielen
SayAlpha() - Buchstabieren (alphanumerisch)
SayDigits() - Ziffern ansagen
SayNumber() - Nummer ansagen
SayPhonetic() - Buchstabieren
SayUnixTime() - Datum/Uhrzeit ansagen
SetMusicOnHold() - Wartemusik festlegen
StopPlaytones() - Playtones() beenden

Aufzeichnen

AgentMonitorOutgoing() - Ausgehende Anrufe eines Agenten aufzeichnen
ChangeMonitor() - Die Datei für Monitor() verändern
ChanSpy() - Ein Gespräch mithören
Dial() - Mit der Option w oder W im Gespräch aufzeichnen
Dictate() - Diktat aufnehmen und wiedergeben
ExtenSpy() - Ein Gespräch mithören
MixMonitor() - Ähnlich Monitor(), aber nur eine Datei
Monitor() - Ein Gespräch mitschneiden
PauseMonitor() - Mitschneiden pausieren
Record() - Eingehendes Audio mitschneiden
StopMonitor() - Monitor() beenden
UnpauseMonitor() - Pausierung des Mitschnitts aufheben
ZapBarge() - Einen ZAP-Channel belauschen
ZapScan() - Zwecks Mithören durch ZAP-Kanäle schalten

Datenbank-Zugriffe

DBdel() - Einen Datenbankeintrag löschen
DBdeltree() - Einen Datenbank-Zweig löschen

Allgemeines

Authenticate() - Einen User authentifizieren
SendDTMF() - DTMF-Töne senden
SendImage() - Ein Bild senden
SendText() - Einen Text senden
SendURL() - Eine URL senden
Transfer() - Anruf weiterleiten
VMAuthenticate() - User anhand der voicemail.conf authentifizieren
Wait() - Eine bestimmte Zeit warten
WaitExten() - Auf Eingabe einer Extension warten
WaitForRing() - Auf Klingeln warten
WaitForSilence() - Auf Stille warten
WaitMusicOnHold() - Warten mit Musik

Externe Skripte

AGI() - Eine AGI-Anwendung ausführen
DeadAGI() - AGI() auf einem aufgelegten Channel
DumpChan() - Informationen über einen Kanal auf dem CLI ausgeben
EAGI() - Siehe AGI()
ExternalIVR() - Einen externen IVR-Generator ausführen
FastAGI() - AGI() auf einem entfernten Rechner
Log() - Eine Nachricht in einem bestimmten Verbosity-Level loggen
Macro() - Ein Makro ausführen
NoOp() - Nichts tun. Schreibt Debugging-Informationen
Perl() - res_perl ist wie mod_perl für Apache, aber für Asterisk
PHP() - res_php ist wie mod_php für Apache, aber für Asterisk
Read() - Eine Variable (Ziffern) vom User einlesen
System() - Einen Shell-Befehl ausführen
TrySystem() - Wie System(), gibt aber immer 0 zurück
UserEvent() - Dem Manager-Interface ein Event schicken
Verbose() - Eine Nachricht in einem bestimmten Verbosity-Level loggen

SIP

SIPdtmfMode() - DTMF-Modus während SIP-Verbindung ändern
SIPAddHeader() - Einem ausgehenden Anruf einen SIP-Header hinzufügen

ZAP

Flash() - Einen Switchhook-Flash auf einem ZAP-Trunk senden
ZapBarge() - Einen ZAP-Channel belauschen
ZapRAS() - RAS (Remote Access Server) auf einem ZAP-ISDN-Channel bereitstellen
ZapScan() - Zwecks Mithören durch ZAP-Kanäle schalten

Warteschlangen, Call-Center

AddQueueMember() - Interface dynamisch in Warteschleife einreihen
AgentCallbackLogin() - Call-Center-Agenten einloggen (mit Rückruf)
AgentLogin() - Call-Center-Agenten einloggen
AgentMonitorOutgoing() - Ausgehende Anrufe eines Agenten aufzeichen
ParkAndAnnounce() - Anruf parken und ankündigen
ParkedCall() - Einen geparkten Anruf annehmen
PauseQueueMember() - Einen Agenten pausieren
Queue() - Eingehenden Anruf in Warteschleife einreihen
QueueLog() - Beliebigen Eintrag im Queue-Log schreiben
RemoveQueueMember() - Interface aus Warteschleife entfernen
UnpauseQueueMember() - Einen pausierenden Agenten wieder aktivieren

ADSI

ADSIProg() - Ein ADSI-Skript in ein Telefon laden
GetCPEID() - ADSI-CPE-ID abfragen

Verschiedenes

AMD() - Einen Anrufbeantworter erkennen
AlarmReceiver() - Einen Contact-ID-Alarm-Empfänger von Ademco emulieren
IAX2Provision() - Versorgt ein IAXy
Morsecode() - Sendet einen Text als Morsezeichen
SetTransferCapability() - ISDN-Transfer-Capability setzen
SMS() - Sendet oder empfängt SMS-Nachrichten

AddQueueMember()

Reiht Interfaces dynamisch in eine Anruf-Warteschleife ein.

AddQueueMember(Warteschleife[,Interface[,Malus[|,Optionen]]])

Reiht das angegebene Interface dynamisch als Agent in eine vorhandene Warteschleife (Queue) ein, die in queues.conf definiert wurde. Die Malus-Punkte beeinflussen ggf. die Position bei der Abarbeitung. Agenten mit niedrigerem Malus werden vor Einträgen mit höherem Malus aufgerufen.

Falls das angegebene Interface bereits in die Warteschlange eingereiht ist und eine n+101 Priorität existiert (n ist die aktuelle Priorität), wird die Abarbeitung bei dieser Priorität fortgesetzt, andernfalls wird ein Fehler (d.h. -1) zurückgeliefert. (Je nach Asterisk-Version muss für das Springen zu n+101 die Option j (jump) angegeben werden.)

Wird AddQueueMember() ohne den Interface-Parameter aufgerufen, findet das vom Teilnehmer zu diesem Zeitpunkt benutzte Interface Verwendung.

In manchen Asterisk-Versionen kann man statt der Pipe-Zeichen (|) auch Kommas verwenden.

Die Applikation setzt auch die Channelvariable ${AQMSTATUS} auf ADDED (hinzugefügt), MEMBERALREADY (ist bereits Mitglied) oder NOSUCHQUEUE (Warteschlange nicht vorhanden).

; SIP/3000 zur "supportschlange" hinzufügen:
exten => 123,1,AddQueueMember(supportschlange,SIP/3000)

; das aktuelle Interface mit Malus 2 hinzufügen:
exten => 123,1,AddQueueMember(supportschlange,,2)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AddQueueMember' =- 

[Synopsis]
Dynamically adds queue members

[Description]
   AddQueueMember(queuename[|interface[|penalty[|options]]]):
Dynamically adds interface to an existing queue.
If the interface is already in the queue and there exists an n+101 priority
then it will then jump to this priority.  Otherwise it will return an error
The option string may contain zero or more of the following characters:
       'j' -- jump to +101 priority when appropriate.
  This application sets the following channel variable upon completion:
     AQMSTATUS    The status of the attempt to add a queue member as a 
                     text string, one of
           ADDED | MEMBERALREADY | NOSUCHQUEUE 
Example: AddQueueMember(techsupport|SIP/3000)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine -

Siehe auch. Queue(), RemoveQueueMember(), queues.conf

ADSIProg()

Lädt ein ADSI-Skript in ein ADSI-fähiges Telefon.

ADSIProg([Script])

Programmiert ein ADSI[51]-Telefon mit einem vorhandenen Skript. Wird kein Skript angegeben, wird das Default-Skript asterisk.adsi verwendet. Die Pfadangabe zum Script versteht sich relativ zum Asterisk-Konfigurationsverzeichnis, i.d.R. /etc/asterisk/, es kann aber ebenso ein vollständiger (absoluter) Pfad zu der Skript-Datei angegeben werden.

Benutzen Sie die GetCPEID()-Anwendung, um die CPE-ID und weitere Informationen über das ADSI-fähige Telefon zu erfahren.

; das ADSI-Telefon mit dem Skript telcordia-1.adsi programmieren:
exten => 123,1,ADSIProg(telcordia-1.adsi)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ADSIProg' =- 

[Synopsis]
Load Asterisk ADSI Scripts into phone

[Description]
  ADSIProg(script): This application programs an ADSI Phone with the given
script. If nothing is specified, the default script (asterisk.adsi) is used.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. GetCPEID(), adsi.conf

AgentCallbackLogin()

Ermöglicht Login eines Call-Center-Agenten mit Rückruf.

AgentCallbackLogin([Agenten-Nr][,Optionen[,Extension@Context]])

Ermöglicht einem Anruf-Agenten, identifiziert durch die Agenten-Nummer, sich in das Anruf-Warteschlangen-System einzuloggen, um bei einem eingehenden Anruf für ihn zurückgerufen zu werden.

Bei einem eingehenden Anruf für diesen Agenten wird Asterisk die spezifizierte zugehörige Extension (gegebenenfalls mit dem optional angegebenem Context Context) aufrufen.

Der Optionen-Parameter kann den Wert s enthalten, der ein Silent Login (stille Anmeldung) bewirkt.

; still als Agent 33 (wie in agents.conf definiert) einloggen. Asterisk
; wird SIP/300 anrufen, sobald für diesen Agenten ein Anruf eingeht:
exten => 123,1,AgentCallbackLogin(33,s,${CALLERID(num)})

; wenn wir davon ausgehen, dass die Agentennummer mit der Anrufer-
; Extension übereinstimmt:
exten => 123,1,AgentCallbackLogin(${CALLERID(num)},s,${CALLERID(num)})

Auf http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+AgentCallbackLogin sind viele Beispiele zu finden.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AgentCallbackLogin' =- 

[Synopsis]
Call agent callback login

[Description]
  AgentCallbackLogin([AgentNo][|[options][|[exten]@context]]):
Asks the agent to login to the system with callback.
The agent's callback extension is called (optionally with the specified
context).
The option string may contain zero or more of the following characters:
      's' -- silent login - do not announce the login ok segment agent logged in/off

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. AgentLogin()

AgentLogin()

Erlaubt es einem Anruf-Agenten, sich in das System einzuloggen/sich am System anzumelden.

AgentLogin([Agenten-Nr][,Optionen])

Meldet den gegenwärtigen Anrufer als Call Agent (optional durch Agenten-Nr zu identifizieren) im Anruf-Warteschlangen-System an. Solange er als Agent angemeldet ist, kann er Anrufe entgegennehmen und hört bei neuen eingehenden Anrufen einen Piepton auf der Leitung. Der Agent kann den Anruf durch Betätigen der Stern-Taste (*) beenden.

Der Optionen-Parameter kann den Wert s enthalten, der ein Silent Login (stille Anmeldung) bewirkt.

; still als Agent 33 (wie in agents.conf definiert) einloggen
exten => 123,1,AgentLogin(33,s)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AgentLogin' =- 

[Synopsis]
Call agent login

[Description]
  AgentLogin([AgentNo][|options]):
Asks the agent to login to the system.  Always returns -1.  While
logged in, the agent can receive calls and will hear a 'beep'
when a new call comes in. The agent can dump the call by pressing
the star key.
The option string may contain zero or more of the following characters:
      's' -- silent login - do not announce the login ok segment after agent logged in/off

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. AgentCallbackLogin()

AgentMonitorOutgoing()

Speichert die ausgehenden Anrufe eines Agenten.

AgentMonitorOutgoing([Optionen])

Zeichnet alle ausgehenden Anrufe eines Agenten auf.

Diese Anwendung versucht, die ID eines Agenten, der einen ausgehenden Anruf tätigt, herauszufinden, indem er die ID des Anrufers (Caller ID) des gegenwärtigen Interfaces mit einer von der AgentCallbackLogin()-Anwendung gesetzten globalen Variablen vergleicht. Daher wird dringend empfohlen, diese Anwendung nur in Verbindung mit der AgentCallbackLogin()-Anwendung (und zwar nach dieser!) zu verwenden. Um die Anrufe aufzuzeichnen, werden anstelle der Anwendung Monitor() die Überwachungsfunktionen des chan_agent-Moduls benutzt. Deshalb muss das Aufzeichnen der Anrufe in der agents.conf-Datei korrekt konfiguriert sein.

Standardmäßig werden aufgezeichnete Anrufe im Verzeichnis /var/spool/asterisk/monitor/ abgelegt. Diese Einstellung kann durch Anpassung des Parameters savecallsin in der Datei agents.conf überschrieben werden. Bitte seien sie sich bewusst, dass die Speicherung von Telefonaten dem Datenschutz und der Wahrung von Persönlichkeitsrechten unterliegen. Sie sollten sich genau darüber informieren, wann und wie sie Telefonate aufzeichnen dürfen. Als allgemeine Regel gilt, dass sie ohne Wissen und Einverständnis der Teilnehmer kein Telefonat aufzeichnen dürfen.

Können die ID des Anrufers (caller id) und/oder die ID des Agenten (agent id) nicht ermittelt werden, wird diese Anwendung zur Priorität n+101 springen, falls diese existiert.

Falls keine der folgenden Optionen anderes bewirkt, liefert die Anwendung 0 zurück.

Der Optionen-Parameter kann aus einem oder mehreren der folgenden Optionen zusammengesetzt sein.

d
Zwingt die Anwendung zur Rückgabe von -1, falls ein Fehler vorliegt und keine Priorität n+101 existiert.
c
Ändert den Call Detail Record dahingehend, dass Agent/AgentenNr als Channel, von dem der Anruf ausgeht, gespeichert wird, damit festgestellt werden kann, von welchem Agenten der Anruf ausging.
n
Unterdrückt Warnmeldungen im Falle, dass Caller-ID bzw. Agent-ID unbekannt sind. Diese Option ist hilfreich, wenn ein gemeinsamer Context für Agenten- und Nicht-Agenten-Anrufe erwünscht ist.
; ausgehende Anrufe dieses Agenten aufzeichnen, und den CDR
; entsprechend anpassen:
exten => 123,1,AgentMonitorOutgoing(c)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AgentMonitorOutgoing' =- 

[Synopsis]
Record agent's outgoing call

[Description]
  AgentMonitorOutgoing([options]):
Tries to figure out the id of the agent who is placing outgoing call based on
comparison of the callerid of the current interface and the global variable 
placed by the AgentCallbackLogin application. That's why it should be used only
with the AgentCallbackLogin app. Uses the monitoring functions in chan_agent 
instead of Monitor application. That have to be configured in the agents.conf file.

Return value:
Normally the app returns 0 unless the options are passed. Also if the callerid or
the agentid are not specified it'll look for n+101 priority.

Options:
 'd' - make the app return -1 if there is an error condition and there is
       no extension n+101
 'c' - change the CDR so that the source of the call is 'Agent/agent_id'
 'n' - don't generate the warnings when there is no callerid or the
       agentid is not known.
             It's handy if you want to have one context for agent and non-agent calls.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. AgentCallbackLogin(), agents.conf, Monitor(), ChanSpy()

AGI()

Ruft eine AGI-konforme Anwendung auf

AGI(Programm[,Argumente])

(Analog auch EAGI(), FastAGI(), DeadAGI())

Führt ein Asterisk-Gateway-Interface-kompatibles Programm Programm auf dem aktuellen Channel aus. Solche externen Programme (die in fast jeder beliebigen Sprache vorliegen können - z.B. Perl, PHP, ...), können den Telefonkanal steuern, Audiodateien abspielen, DTMF-Ziffern auslesen und so weiter. Asterisk kommuniziert dabei mit dem AGI-Program über STDIN und STDOUT. Die spezifizierten Argumente werden an das AGI-Programm durchgereicht.

Das Programm muss im zugrundeliegenden Dateisystem als executable (ausführbar) gekennzeichnet sein. Der Pfad zum Programm ist relativ zum Asterisk-AGI-Verzeichnis, standardmäßig /var/lib/asterisk/agi-bin/.

Soll ein AGI-Programm laufen, ohne dass ein Channel offen ist (wie in einer h-Extension, aufgelegt), muss statt dieser die DeadAGI()-Anwendung verwendet werden. Falls AGI über ein Netzwerk laufen soll, benutzen Sie FastAGI().

Benötigen Sie aus Ihrem AGI-Programm heraus Zugriff auf den eingehenden Audiostream, benutzen Sie EAGI() (Extended AGI) an Stelle von AGI(). Das eingehende Audio-Signal kann dann unter File Descriptor 3[52] eingelesen werden.

Liefert -1 mit dem Auflegen oder falls ein Auflegen durch das Programm verlangt wurde oder 0, falls nicht aufgelegt werden soll.

; mein AGI-Skript aufrufen:
exten => 123,1,AGI(agi-skript)
exten => 123,n,EAGI(eagi-skript)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AGI' =- 

[Synopsis]
Executes an AGI compliant application

[Description]
  [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
program on a channel. AGI allows Asterisk to launch external programs
written in any language to control a telephony channel, play audio,
read DTMF digits, etc. by communicating with the AGI protocol on stdin
and stdout.
  This channel will stop dialplan execution on hangup inside of this
application, except when using DeadAGI.  Otherwise, dialplan execution
will continue normally.
  A locally executed AGI script will receive SIGHUP on hangup from the channel
except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
variable to "no" before executing the AGI application.
  Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
on file descriptor 3

  Use the CLI command 'agi show' to list available agi commands
  This application sets the following channel variable upon completion:
     AGISTATUS      The status of the attempt to the run the AGI script
                    text string, one of SUCCESS | FAILED | HANGUP

Differenz zum internen Hilfetext in Asterisk 1.2: 

13,19c13,15
<   This channel will stop dialplan execution on hangup inside of this
< application, except when using DeadAGI.  Otherwise, dialplan execution
< will continue normally.
<   A locally executed AGI script will receive SIGHUP on hangup from the channel
< except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
< variable to "no" before executing the AGI application.
<   Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
---
> Returns -1 on hangup (except for DeadAGI) or if application requested
>  hangup, or 0 on non-hangup exit. 
> Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
22,25c18
<   Use the CLI command 'agi show' to list available agi commands
<   This application sets the following channel variable upon completion:
<      AGISTATUS      The status of the attempt to the run the AGI script
<                     text string, one of SUCCESS | FAILED | HANGUP
---
> Use the CLI command 'show agi' to list available agi commands

Siehe auch. DeadAGI(), FastAGI()

AlarmReceiver()

Bietet Unterstützung für den Empfang von Alarm-Reporten von einem Einbrecher- oder Feueralarm-Bedienfeld.

AlarmReceiver()

Emuliert einen Alarm-Empfänger und ermöglicht Asterisk, spezielle Daten von Einbrecher- und/oder Feueralarm-Bedienfeldern zu empfangen und zu dekodieren. Zum jetzigen Zeitpunkt wird ausschließlich das Ademco Contact ID Format unterstützt.

Nachdem AlarmReceiver() aufgerufen worden ist, wird ein Handshake mit dem Alarm-Bedienfeld durchgeführt, Events empfangen und validiert und anschließend gespeichert, bis das Bedienfeld die Verbindung beendet. Nachdem das Bedienfeld die Verbindung beendet hat, wird die in der eventsmd-Einstellung der Datei alarmreceiver.conf spezifizierte Befehlskette von der Anwendung ausgeführt, und die Events auf die Standardeingabe der Anwendung umgeleitet. Die Datei alarmreceiver.conf enthält ebenfalls Einstellungen zum DTMF-Timing und für die Lautstärke der Meldetöne.

Für die zuverlässige Funktion dieser Anwendung kann keine Garantie übernommen werden. Verlassen Sie sich also nicht ausschließlich auf diese Anwendung, wenn Sie sie nicht bereits ausgiebig getestet haben!

Diese Applikation gibt immer 0 zurück.

; Asterisk soll Meldungen eines Feueralarm-Knopfes empfangen:
exten => s,1,AlarmReceiver()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AlarmReceiver' =- 

[Synopsis]
Provide support for receiving alarm reports from a burglar or fire alarm panel

[Description]
  AlarmReceiver(): Only 1 signalling format is supported at this time: Ademco
Contact ID. This application should be called whenever there is an alarm
panel calling in to dump its events. The application will handshake with the
alarm panel, and receive events, validate them, handshake them, and store them
until the panel hangs up. Once the panel hangs up, the application will run the
system command specified by the eventcmd setting in alarmreceiver.conf and pipe
the events to the standard input of the application. The configuration file also
contains settings for DTMF timing, and for the loudness of the acknowledgement
tones.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< Provide support for receiving alarm reports from a burglar or fire alarm panel
---
> Provide support for receving alarm reports from a burglar or fire alarm panel

Siehe auch. alarmreceiver.conf

AMD()

Versucht bei ausgehenden Telefonaten Anrufbeantworter bei der Gegenstelle zu erkennen (Answering Machine Detection).

AMD([initialSilence[,greeting[,afterGreetingSilence[,totalAnalysisTime[,minWordLength[,betweenWordsSilence[,maxNumberOfWords[,silenceThreshold]]]]]]]])

Wird z.B. über ein CallFile ein ausgehender Anruf initiiert, so kann in der aufgerufenen Extension die Applikation AMD() benutzt werden, um bei der Gegenstelle einen Anrufbeantworter zu erkennen. Default-Parameter können in der Datei amd.conf eingestellt werden.

initialSilence
Maximale Länge der Stille vor einer Ansage. Wenn länger, dann wird ${AMDSTATUS} auf MACHINE gesetzt.
greeting
Maximale Länge einer Ansage. Wenn länger, dann wird ${AMDSTATUS} auf MACHINE gesetzt.
afterGreetingSilence
Maximale Länge der Stille nach der Ansage. Wenn länger, dann wird ${AMDSTATUS} auf HUMAN gesetzt.
totalAnalysisTime
Maximale Zeit die der AMD Algorithmus bekommt, um die Entscheidung HUMAN oder MACHINE zu treffen.
minWordsSilence
Die minimale Länge eines Geräusches, um es als Wort zu registrieren.
betweenWordsSilence
Die minimale Länge von Stille nach einem Wort, damit ein neues Wort beginnen kann.
maxNumberOfWords
Maximale Anzahl von Wörter in der Ansage. Wenn mehr, dann wird ${AMDSTATUS} auf MACHINE gesetzt.
silenceThreshold
Schwellenwert der Definition von Stille.

Diese Applikation setzt als Ergebnis die Channel-Variablen AMDSTATUS und AMDCAUSE.

AMDSTATUS kann die folgenden Werte bekommen:

  • MACHINE

    Auf der Gegenseite ist ein Anrufbeantworter.

  • HUMAN

    Auf der Gegenseite ist ein Mensch.

  • NOTSURE

    Es kann keine genaue Aussage getroffen werden.

  • HANGUP

    Die Gegenseite hat aufgelegt.

AMDCAUSE kann die folgenden Werte bekommen:

  • TOOLONG-<%d total_time>
  • INITIALSILENCE-<%d silenceDuration>-<%d initialSilence>
  • HUMAN-<%d silenceDuration>-<%d afterGreetingSilence>
  • MAXWORDS-<%d wordsCount>-<%d maximumNumberOfWords>
  • LONGGREETING-<%d voiceDuration>-<%d greeting>
; Von einem CallFile wird diese Extension aufgerufen:
exten => 10,1,AMD()
exten => 10,n,Goto(Status-${AMDSTATUS})
exten => 10,n(Status-HUMAN),Playback(spam)
exten => 10,n,Hangup()
exten => 10,n(Status-MACHINE),Hangup()
exten => 10,n(Status-NOTSURE),Hangup()
exten => 10,n(Status-HANGUP),Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AMD' =- 

[Synopsis]
Attempts to detect answering machines

[Description]
  AMD([initialSilence][|greeting][|afterGreetingSilence][|totalAnalysisTime]
      [|minimumWordLength][|betweenWordsSilence][|maximumNumberOfWords]
      [|silenceThreshold])
  This application attempts to detect answering machines at the beginning
  of outbound calls.  Simply call this application after the call
  has been answered (outbound only, of course).
  When loaded, AMD reads amd.conf and uses the parameters specified as
  default values. Those default values get overwritten when calling AMD
  with parameters.
- 'initialSilence' is the maximum silence duration before the greeting. If
   exceeded then MACHINE.
- 'greeting' is the maximum length of a greeting. If exceeded then MACHINE.
- 'afterGreetingSilence' is the silence after detecting a greeting.
   If exceeded then HUMAN.
- 'totalAnalysisTime' is the maximum time allowed for the algorithm to decide
   on a HUMAN or MACHINE.
- 'minimumWordLength'is the minimum duration of Voice to considered as a word.
- 'betweenWordsSilence' is the minimum duration of silence after a word to 
   consider the audio that follows as a new word.
- 'maximumNumberOfWords'is the maximum number of words in the greeting. 
   If exceeded then MACHINE.
- 'silenceThreshold' is the silence threshold.
This application sets the following channel variable upon completion:
    AMDSTATUS - This is the status of the answering machine detection.
                Possible values are:
                MACHINE | HUMAN | NOTSURE | HANGUP
    AMDCAUSE - Indicates the cause that led to the conclusion.
               Possible values are:
               TOOLONG-<%d total_time>
               INITIALSILENCE-<%d silenceDuration>-<%d initialSilence>
               HUMAN-<%d silenceDuration>-<%d afterGreetingSilence>
               MAXWORDS-<%d wordsCount>-<%d maximumNumberOfWords>
               LONGGREETING-<%d voiceDuration>-<%d greeting>

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. Abschnitt 2, „Call Files“

Answer()

Antwortet auf einen klingelnden Channel.

Answer([Verzögerung])

Veranlasst Asterisk zum Beantworten eines Channels, wenn er gerade klingelt. Falls der aktuelle Channel nicht klingelt, tut diese Anwendung nichts.

Es ist generell empfehlenswert, Answer() vor dem Aufrufen irgendwelcher anderen Anwendungen auf dem Channel aufzurufen, außer es besteht ein guter Grund, das nicht zu tun. Die meisten Anwendungen verlangen, dass der Channel beantwortet wird, bevor sie aufgerufen werden, und werden andernfalls eventuell nicht in der Lage sein, ihre Arbeit korrekt zu verrichten.

Die optionale Verzögerung weist Asterisk an, soviele Millisekunden vor dem Antworten zu warten.

Gibt bei Erfolg 0 zurück.

exten => 123,1,Answer()
exten => 123,n,Wait(1)
exten => 123,n,Playback(hallo)
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Answer' =- 

[Synopsis]
Answer a channel if ringing

[Description]
  Answer([delay]): If the call has not been answered, this application will
answer it. Otherwise, it has no effect on the call. If a delay is specified,
Asterisk will wait this number of milliseconds before answering the call.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Hangup()

AppendCDRUserField()

Hängt einen String an das CDR-User-Feld an.

AppendCDRUserField(String)

Hängt den übergebenen String an das CDR-User-Feld an.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'AppendCDRUserField' =- 

[Synopsis]
Append to the CDR user field

[Description]
[Synopsis]
AppendCDRUserField(value)

[Description]
AppendCDRUserField(value): Append value to the CDR user field
       The Call Data Record (CDR) user field is an extra field you
       can use for data not stored anywhere else in the record.
       CDR records can be used for billing or storing other arbitrary data
       (I.E. telephone survey responses)
       Also see SetCDRUserField().

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 
[Wichtig]Wichtig

Obwohl in der internen Hilfe noch kein Hinweis darauf steht, ist diese Applikation deprecated. Im Source-Code wird man fündig:

ast_log(LOG_WARNING, "AppendCDRUserField is deprecated.  Please use CDR(userfield) instead.\n");

Bitte verwenden Sie also die Funktion CDR(userfield).

Siehe auch. CDR()

Authenticate()

Verlangt zur Fortsetzung eines Vorgangs die Eingabe eines Passworts vom Anrufer.

Authenticate(Passwort[,Optionen[,maxZiffern]])

Verlangt, dass der Anrufer ein gegebenes Passwort korrekt eingibt, um dann mit der Ausführung der nächsten Priorität im Dialplan fortzufahren. Authenticate() gibt dem Anrufer drei Versuche, das Passwort korrekt einzugeben. Andernfalls wird die Verbindung beendet.

Falls Passwort mit dem /-Zeichen beginnt, wird es als Datei interpretiert, die eine Liste gültiger Passwörter (genau eins pro Zeile) enthält. Passwörter können auch in der Asterisk-Datenbank (AstDB) gespeichert sein, siehe dazu die Option d weiter unten.

Folgende Optionen sind möglich (auch in Kombination):

a
(accountcode) Setzt den Namen des CDR-Felds accountcode und die Variable für den Channel, ACCOUNTCODE, auf das eingegebene Passwort.
d
(database) Interpretiert Passwort als Schlüssel der Asterisk-Datenbank. Wenn ein Datenbankschlüssel benutzt wird, kann der mit dem Schlüssel assoziierte Wert beliebig sein.
r
(remove) Entfernt den Datenbankschlüssel nach erfolgreicher Verbindung und Eintreten in die Datenbank (nur möglich mit Option d).
j
(jump) Bei falschem Passwort statt aufzulegen zur Priorität n+101 springen, falls diese existiert.
[Wichtig]Wichtig

Beachten Sie bei der Option d, dass - wenig nachvollziehbar! - als Parameter /passwoerter/1234 verlangt wird, wobei passwoerter die Familie ist und 1234 das Passwort; der unter diesem Schlüssel gespeicherte Wert ist irrelevant. Der gesunde Menschenverstand würde einen Datenbank-Eintrag wie /passwoerter/art => 1234 erwarten.

Mit Angabe von maxZiffern wird die Eingabe automatisch nach sovielen Ziffern beendet, ohne dass der User # drücken muss (Default: 0 für keine Begrenzung).

Liefert 0 zurück, falls der Benutzer nach maximal drei Versuchen ein gültiges Passwort eingegeben hat, sonst -1 (auch nach Auflegen).

; Passwort 1234 verlangen:
exten => 123,1,Answer()
exten => 123,2,Authenticate(1234,j,4)           ; hier ausnahmsweise mit Priority-Jumping
                                                ; weil wir dem Anrufer noch sagen wollen
                                                ; dass sein Passwort falsch ist
exten => 123,3,Playback(pin-nummer-akzeptiert)
exten => 123,103,Playback(pin-nummer-falsch)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Authenticate' =- 

[Synopsis]
Authenticate a user

[Description]
  Authenticate(password[|options[|maxdigits]]): This application asks the caller
to enter a given password in order to continue dialplan execution. If the password
begins with the '/' character, it is interpreted as a file which contains a list of
valid passwords, listed 1 password per line in the file.
  When using a database key, the value associated with the key can be anything.
Users have three attempts to authenticate before the channel is hung up. If the
passsword is invalid, the 'j' option is specified, and priority n+101 exists,
dialplan execution will continnue at this location.
  Options:
     a - Set the channels' account code to the password that is entered
     d - Interpret the given path as database key, not a literal file
     j - Support jumping to n+101 if authentication fails
     m - Interpret the given path as a file which contains a list of account
         codes and password hashes delimited with ':', listed one per line in
         the file. When one of the passwords is matched, the channel will have
         its account code set to the corresponding account code in the file.
     r - Remove the database key upon successful entry (valid with 'd' only)
     maxdigits  - maximum acceptable number of digits. Stops reading after
         maxdigits have been entered (without requiring the user to
         press the '#' key).
         Defaults to 0 - no limit - wait for the user press the '#' key.

Differenz zum internen Hilfetext in Asterisk 1.2: 

8,10c8,10
<   Authenticate(password[|options[|maxdigits]]): This application asks the caller
< to enter a given password in order to continue dialplan execution. If the password
< begins with the '/' character, it is interpreted as a file which contains a list of
---
>   Authenticate(password[|options]): This application asks the caller to enter a
> given password in order to continue dialplan execution. If the password begins
> with the '/' character, it is interpreted as a file which contains a list of
25,28d24
<      maxdigits  - maximum acceptable number of digits. Stops reading after
<          maxdigits have been entered (without requiring the user to
<          press the '#' key).
<          Defaults to 0 - no limit - wait for the user press the '#' key.

Siehe auch. VMAuthenticate()

Background()

Spielt eine Audiodatei, während Touch-Tone-Ziffern (DTMF-Töne) akzeptiert werden.

Background(Datei1[&Datei2...][,Optionen[,Sprache]])

Spielt die angegebene(n) Audiodatei(en), während auf den Start der Eingabe einer Extension durch den Benutzer gewartet wird. Sobald der Benutzer mit der Eingabe einer Extension begonnen hat, wird die Wiedergabe beendet. Der Dateiname sollte ohne Dateiendung angegeben werden, da Asterisk dann automatisch das Dateiformat mit den geringsten Übersetzungskosten auswählt.

Optionen ist einer der folgenden Werte (nicht kombinierbar):

skip
Die Wiedergabe der Nachricht wird übersprungen, falls sich der Channel gegenwärtig nicht im up-Status befindet (z.B., weil er bisher nicht beantwortet wurde). Ist skip angegeben, wird die Anwendung unverzüglich beendet, falls der Channel aufgelegt ist.
noanswer
Der Channel kann erst beantwortet werden, nachdem die angegebene Audiodatei abgespielt wurde. Ist diese Option nicht angegeben, wird der Channel automatisch beantwortet, bevor die Audiodatei abgespielt wird. Es gilt zu beachten, dass nicht alle Kanäle erlauben, vor ihrer Beantwortung eine Nachricht abzuspielen.

Der Parameter Sprache kann verwendet werden, um eine bestimmte Sprache zu definieren, in der Nachrichten abgespielt werden sollen, falls diese nicht der für diesen Channel aktuell eingestellten Sprache entspricht.

Liefert -1 zurück, wenn aufgelegt wurde oder falls der angegebene Dateiname nicht existiert, sonst 0.

exten => 123,1,Answer()
exten => 123,n,Background(bitte-extension-eingeben)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'BackGround' =- 

[Synopsis]
Play an audio file while waiting for digits of an extension to go to.

[Description]
  Background(filename1[&filename2...][|options[|langoverride][|context]]):
This application will play the given list of files while waiting for an
extension to be dialed by the calling channel. To continue waiting for digits
after this application has finished playing files, the WaitExten application
should be used. The 'langoverride' option explicitly specifies which language
to attempt to use for the requested sound files. If a 'context' is specified,
this is the dialplan context that this application will use when exiting to a
dialed extension.  If one of the requested sound files does not exist, call processing will be
terminated.
  Options:
    s - Causes the playback of the message to be skipped
          if the channel is not in the 'up' state (i.e. it
          hasn't been answered yet). If this happens, the
          application will return immediately.
    n - Don't answer the channel before playing the files.
    m - Only break if a digit hit matches a one digit
          extension in the destination context.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< Play an audio file while waiting for digits of an extension to go to.
---
> Play a file while awaiting extension
12c12
< should be used. The 'langoverride' option explicitly specifies which language
---
> should be used. The 'langoverride' option explicity specifies which language
18c18
<     s - Causes the playback of the message to be skipped
---
>     s - causes the playback of the message to be skipped
20c20
<           hasn't been answered yet). If this happens, the
---
>           hasn't been answered yet.) If this happens, the
22,24c22,24
<     n - Don't answer the channel before playing the files.
<     m - Only break if a digit hit matches a one digit
<           extension in the destination context.
---
>     n - don't answer the channel before playing the files
>     m - only break if a digit hit matches a one digit
>           extension in the destination context

Siehe auch. Playback(), BackgroundDetect(), CLI-Befehl show translation

BackgroundDetect()

Spielt eine Audiodatei im Hintergrund und erkennt Sprechen.

BackgroundDetect(SoundDatei[,Stille[,Min[,Max]]])

Ähnlich Background(), versucht jedoch Sprechen zu erkennen.

Während der Wiedergabe der Datei wird Eingang von Audio in Empfangsrichtung überwacht. Wird eine Geräuschphase von mehr als Min Millisekunden Dauer und weniger als Max Millisekunden registriert, und darauf folgend eine geräuschlose Phase von wenigstens Stille Millisekunden, wird die Audiowiedergabe abgebrochen und die Ausführung an die Extension talk delegiert, falls diese existiert.

Sind Stille, Min und Max nicht spezifiziert, werden jeweils die Standardwerte 1000 ms, 100 ms und unendlich angenommen.

Wenn aufgelegt wird, liefert die Anwendung -1 zurück, nach abgeschossener Wiedergabe ohne vorhandene Ausstiegsbedingungen 0.

exten => 123,1,BackgroundDetect(sinfonie)
exten => 123,n,Playback(vm-sorry)
exten => talk,1,Playback(ja-bitte)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'BackgroundDetect' =- 

[Synopsis]
Background a file with talk detect

[Description]
  BackgroundDetect(filename[|sil[|min|[max]]]):  Plays  back  a  given
filename, waiting for interruption from a given digit (the digit must
start the beginning of a valid extension, or it will be ignored).
During the playback of the file, audio is monitored in the receive
direction, and if a period of non-silence which is greater than 'min' ms
yet less than 'max' ms is followed by silence for at least 'sil' ms then
the audio playback is aborted and processing jumps to the 'talk' extension
if available.  If unspecified, sil, min, and max default to 1000, 100, and
infinity respectively.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Playback(), Background()

Busy()

Zeigt dem Channel besetzt an.

Busy([Timeout])

Fordert den Channel auf, ein Besetzt-Zeichen zu signalisieren und wartet dann, bis der Benutzer auflegt oder auf den Ablauf der optional anzugebenden zeitlichen Frist (Timeout, in Sekunden).

Diese Anwendung signalisiert einen Besetzt-Zustand nur dem überbrückten Channel (bridged channel). Jeder spezielle Channeltyp hat seine eigene Art, dem Anrufer besetzt mitzuteilen. Sie können Playtones(busy) verwenden, um dem Anrufer ein Besetztzeichen vorzuspielen.

Gibt immer -1 zurück.

exten => 123,1,Playback(vm-sorry)
exten => 123,n,Playtones(busy)
exten => 123,n,Busy()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Busy' =- 

[Synopsis]
Indicate the Busy condition

[Description]
  Busy([timeout]): This application will indicate the busy condition to
the calling channel. If the optional timeout is specified, the calling channel
will be hung up after the specified number of seconds. Otherwise, this
application will wait until the calling channel hangs up.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Congestion(), Progress(), Playtones()

CallingPres()

Ändert die Präsentation der Anrufer-ID (Caller-ID).

CallingPres(presentation)

Ändert die Präsentations-Parameter für die Anrufer ID auf einer Q.931 PRI-Verbindung. Diese Parameter sollten gesetzt sein, bevor ein ausgehender Anruf getätigt wird. Der Präsentations-Parameter presentation bestimmt zum ersten, ob der angerufene Teilnehmer die Caller-ID-Information angezeigt bekommt oder nicht, und zum zweiten, ob die Caller-ID-Information von verlässlicher Quelle auf verifiziert geprüft wurde oder nicht (engl.: screening).

Diese Anwendung wurde durch SetCallerPres() ersetzt, welche einfacher handzuhaben und weniger abhängig von Zaptel ist.

Diese Anwendung generiert aus der Kombination von Anrufpräsentations-Einstellungen und Screening-Einstellungen eine Zahl. Die Werte selbst sind im ITU Q.931-Standard wie in den folgenden Tabellen definiert.

Screening wird durch die Bits 1 und 2 gesteuert:

Bit1Bit2Erläuterung
00Die Caller-ID-Information liefert der Teilnehmer, sie ist nicht verifiziert.
01Die Caller-ID-Information liefert der Teilnehmer, sie ist erfolgreich verifiziert.
10Die Caller-ID-Information liefert der Teilnehmer, die Verifizierung war nicht erfolgreich.
11Die Caller-ID-Information liefert das Netzwerk.

Präsentation wird durch die Bits 6 und 7 gesteuert:

Bit6Bit7Erläuterung
00Anzeige der Caller-ID-Information ist erlaubt.
01Anzeige der Caller-ID-Information ist nicht erlaubt.
10Die Nummer ist aufgrund von Zwischenstationen nicht verfügbar.
11Reserviert

Die Bits 3, 4, 5 und 8 sollten alle auf Null (0) gesetzt werden. Beachten Sie, dass die Bits in der Folge vom höchstwertigsten zum niederwertigsten nummeriert sind in der Form 87654321.

; presentation setzen auf:
; presentation erlaubt                (00000000)
; Netzwerk angegeben                  (00000011)
; ------------------                  ----------
; Ergebnis: 3 (bitweises UND)         (00000011)
exten => 123,1,CallingPres(3)
exten => 123,2,Dial(Zap/g1/1234567)
; presentation setzen auf:
; presentation nicht erlaubt          (00100000)
; vom User, verifiziert               (00000001)
; ------------------                  ----------
; Ergebnis: 33 (bitweises UND)        (00100001)
exten => 124,1,CallingPres(33)
exten => 124,2,Dial(Zap/g1/1234568)

Siehe auch. SetCallerPres()

ChangeMonitor()

Ändert den Dateinamen der Protokolldatei für einen Channel.

ChangeMonitor(Basis-Dateiname)

Ändert den Namen der bei der Überwachung eines Channels mit Monitor() aufgezeichneten Datei. Diese Anwendungen hat keinerlei Auswirkungen, wenn der fragliche Channel nicht überwacht wird.

; Channel mitschneiden mit Datei-Basisname 'mitschnitt'
exten => 123,1,Monitor(mitschnitt)
; Datei-Basisnamen auf 'mitschnitt2' ändern
exten => 123,n,ChangeMonitor(mitschnitt2)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ChangeMonitor' =- 

[Synopsis]
Change monitoring filename of a channel

[Description]
ChangeMonitor(filename_base)
Changes monitoring filename of a channel. Has no effect if the channel is not monitored
The argument is the new filename base to use for monitoring this channel.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Monitor(), StopMonitor()

ChanIsAvail()

Ermittelt, ob ein bestimmter Channel momentan verfügbar ist.

ChanIsAvail(Technology1/Resource1[&Technology2/Resource2...][,Optionen])

Prüft, ob irgendeiner der angeforderten Kanäle verfügbar ist (in der angegebenen Reihenfolge). Liefert 0 zurück bei Erfolg oder -1, falls kein Kanal verfügbar ist.

Ist die Option s (für state) angegeben, wird Asterisk den Channel als nicht verfügbar betrachten, wenn er in Gebrauch ist, sogar falls er einen weiteren anderen Anruf aufnehmen kann. Mit der Option j wird, falls der Channel nicht verfügbar ist, zur Priorität n+101 gesprungen.

[Anmerkung]Anmerkung

Dass ein Kanal verfügbar ist, bedeutet aber nicht automatisch, dass er auch frei ist oder dass das Endgerät einen Anruf akzeptieren würde. Das erfährt man durch ein Dial() zum Kanal.

ChanIsAvail() setzt die folgenden Channelvariablen:

${AVAILCHAN}
Der Name des verfügbaren Channels, inklusive der Session-Nummer des Anrufs.
${AVAILORIGCHAN}
Der kanonische Channelname, der benutzt wurde um den Channel zu erstellen, d.h. der Channelname ohne eine Session-Nummer.
${AVAILSTATUS}

Der Status-Code des Channels:

AST_DEVICE_UNKNOWN (0)
Unbekannt. Der Channel ist gültig, aber in unbekanntem Zustand.
AST_DEVICE_NOT_INUSE (1)
Channel wird nicht verwendet.
AST_DEVICE_IN_USE (2)
Der Channel ist in Gebrauch.
AST_DEVICE_BUSY (3)
Besetzt.
AST_DEVICE_INVALID (4)
Ungültig. Unbekannter Channel.
AST_DEVICE_UNAVAILABLE (5)
Nicht verfügbar. Channel ist nicht registriert.
AST_DEVICE_RINGING (6)
Channel klingelt.
[Anmerkung]Anmerkung

Diese Anwendung arbeitet auf MGCP-Kanälen nicht ordnungsgemäß.

; Zap/1 und Zap/2 auf Verfügbarkeit prüfen:
exten => 123,1,ChanIsAvail(Zap/1&Zap/2,j)
; hier ausnahmsweise mit Priority jumping, da wir, falls kein Kanal
; frei ist, noch eine Ansage machen wollen

; mindestens einer der Kanäle verfügbar, auf diesem wählen:
exten => 123,2,NoOp(${AVAILORIGCHAN} ist verfuegbar)
exten => 123,3,Dial(${AVAILORIGCHAN}/123456)

; wenn wir bei Prio. 102 landen, ist weder Zap/1 noch Zap/2 verfügbar
exten => 123,102,Playback(alle-kanaele-belegt)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ChanIsAvail' =- 

[Synopsis]
Check channel availability

[Description]
  ChanIsAvail(Technology/resource[&Technology2/resource2...][|options]): 
This application will check to see if any of the specified channels are
available. The following variables will be set by this application:
  ${AVAILCHAN}     - the name of the available channel, if one exists
  ${AVAILORIGCHAN} - the canonical channel name that was used to create the channel
  ${AVAILSTATUS}   - the status code for the available channel
  Options:
    s - Consider the channel unavailable if the channel is in use at all
    j - Support jumping to priority n+101 if no channel is available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

ChannelRedirect()

Leitet einen Channel auf eine andere Priorität.

ChannelRedirect(Channel,[Context,]Extension,Priorität)

Leitet den angegebenen Channel auf eine andere Extension im Dialplan um.

Channel
Name des Channels der umgeleitet werden soll
Context
Ziel-Context zu dem gesprungen werden soll
Extension
Ziel-Extension zu der gesprungen werden soll
priority
Ziel-Priorität in der neuen Extension
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ChannelRedirect' =- 

[Synopsis]
Redirects given channel to a dialplan target.

[Description]
ChannelRedirect(channel|[[context|]extension|]priority):
  Sends the specified channel to the specified extension priority

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. Goto(), Transfer()

ChanSpy()

Einen Channel belauschen

ChanSpy([Channelpräfix[,Optionen]])

Erlaubt es, das Gespräch auf beliebigen Kanälen mitzuhören. (Ist also nicht wie ZapBarge()/ZapScan() an Zap-Kanäle gebunden.) Für das Verständnis einiger Optionen ist zu beachten, dass diese Applikation einzelne Kanäle abhört, aber nicht Gespräche im eigentlichen Sinn (min. 2 Teilnehmer), obwohl Sie natürlich das ein- und ausgehende Audio auf dem abgehörten Channel hören können. Bitte achten sie die Persönlichkeitsrechte anderer! Falls sie Gespräche unaufgefordert und ohne Wissen der Teilnehmer mithören machen sie sich strafbar.

Wenn Channelpräfix angegeben ist, stehen nur Kanäle, die mit diesem String beginnen, zur Auswahl.

Optionen (auch in Kombination):

b
(bridged) Auswahl nur auf verbundene Kanäle beschränken.
g(grp)
(group) Auswahl auf Kanäle beschränken, auf denen grp in der durch Doppelpunkt (:) getrennten Liste ${SPYGROUP} (Channelvariable) enthalten ist.
q
(quiet) Keine Piep-Töne beim Umschalten von Kanälen spielen und Channelname nicht ankündigen.
r([Name])

(record) Die Sitzung in einer Datei im Verzeichnis /var/spool/asterisk/monitor/ aufzeichnen. Default-Basis-Dateiname (also ohne Endung) ist chanspy.

v[(Wert)]

(volume) Die anfängliche Lautstärkeeinstellung von -4 (leise) bis 4 (laut) verändern.

w
(whisper) Flüster-Modus aktivieren. Damit kann der lauschende Channel mit dem belauschten sprechen, wobei dies nur der belauschte Channel hört, nicht dessen Gesprächspartner. (Diese Option ist seit Asterisk 1.4 verfügbar.)
W
(private whisper) Privater Flüster-Modus. Wie w, aber der lauschende Channel kann den belauschten nicht hören. (sinnvoll?)

Während des Abhörens können folgende Tastenbefehle gegeben werden:

#
Schaltet durch die Lautstärkeeinstellung (-4 bis 4)
*
Schaltet zu einem anderen Channel
...#
Eine Reihe von Ziffern, abgeschlossen durch #, wird an Channelpräfix angehängt. Wenn Sie z.B. ChanSpy(Agent) ausführen und 1234# eingeben, werden Sie auf dem Channel Agent/1234 lauschen.
; Agenten belauschen:
exten => 123,1,ChanSpy(Agent)
exten => 123,n,Hangup()

; Beispiel für die Option g:
; auf Anrufen auf 0... SPYGROUP 10005 setzen:
exten => _0.,1,Set(SPYGROUP=10005)
;...
; Kanäle der SPYGROUP 10005 belauschen:
exten => 123,1,ChanSpy(,g(10005))
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ChanSpy' =- 

[Synopsis]
Listen to a channel, and optionally whisper into it

[Description]
  ChanSpy([chanprefix][|options]): This application is used to listen to the
audio from an Asterisk channel. This includes the audio coming in and
out of the channel being spied on. If the 'chanprefix' parameter is specified,
only channels beginning with this string will be spied upon.
  While spying, the following actions may be performed:
    - Dialing # cycles the volume level.
    - Dialing * will stop spying and look for another channel to spy on.
    - Dialing a series of digits followed by # builds a channel name to append
      to 'chanprefix'. For example, executing ChanSpy(Agent) and then dialing
      the digits '1234#' while spying will begin spying on the channel
      'Agent/1234'.
  Options:
    b             - Only spy on channels involved in a bridged call.
    g(grp)        - Match only channels where their ${SPYGROUP} variable is set to
                    contain 'grp' in an optional : delimited list.
    q             - Don't play a beep when beginning to spy on a channel, or speak the
                    selected channel name.
    r[(basename)] - Record the session to the monitor spool directory. An
                    optional base for the filename may be specified. The
                    default is 'chanspy'.
    v([value])    - Adjust the initial volume in the range from -4 to 4. A
                    negative value refers to a quieter setting.
    w             - Enable 'whisper' mode, so the spying channel can talk to
                    the spied-on channel.
    W             - Enable 'private whisper' mode, so the spying channel can
                    talk to the spied-on channel but cannot listen to that
                    channel.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5,6
< Listen to a channel, and optionally whisper into it
---
> Listen to the audio of an active channel
> 
9c10
< audio from an Asterisk channel. This includes the audio coming in and
---
> audio from an active Asterisk channel. This includes the audio coming in and
12c13
<   While spying, the following actions may be performed:
---
>   While Spying, the following actions may be performed:
17c18
<       the digits '1234#' while spying will begin spying on the channel
---
>       the digits '1234#' while spying will begin spying on the channel,
20,24c21,24
<     b             - Only spy on channels involved in a bridged call.
<     g(grp)        - Match only channels where their ${SPYGROUP} variable is set to
<                     contain 'grp' in an optional : delimited list.
<     q             - Don't play a beep when beginning to spy on a channel, or speak the
<                     selected channel name.
---
>     b - Only spy on channels involved in a bridged call.
>     g(grp) - Match only channels where their ${SPYGROUP} variable is set to
>              'grp'.
>     q - Don't play a beep when beginning to spy on a channel.
28,34c28,29
<     v([value])    - Adjust the initial volume in the range from -4 to 4. A
<                     negative value refers to a quieter setting.
<     w             - Enable 'whisper' mode, so the spying channel can talk to
<                     the spied-on channel.
<     W             - Enable 'private whisper' mode, so the spying channel can
<                     talk to the spied-on channel but cannot listen to that
<                     channel.
---
>     v([value]) - Adjust the initial volume in the range from -4 to 4. A
>                  negative value refers to a quieter setting.

Siehe auch. ExtenSpy(), ZapBarge(), ZapScan(), Monitor()

Congestion()

Zeigt Stau (Überlastung) auf dem Channel an.

Congestion([Timeout])

Zeigt auf dem Channel Stau an und wartet dann, bis der Teilnehmer auflegt, oder bis die optional spezifizierbare Frist (Timeout, in Sekunden) abgelaufen ist.

Diese Anwendung signalisiert Stau lediglich, sie spielt aber dem Teilnehmer keinen Stau-Ton vor. Um einem Anrufer einen Stau-Ton vorzuspielen, kann Playtones(congestion) verwendet werden.

Liefert stets -1 zurück.

; bei Caller ID is 0123-123456 immer Stau-Signal spielen:
exten => 123,1,GotoIf($[${CALLERID(num)} = 0123123456]?10)
exten => 123,n,Playtones(congestion)
exten => 123,n,Congestion(5)
exten => 123,n,Hangup()
exten => 123,10,Dial(Zap/1)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Congestion' =- 

[Synopsis]
Indicate the Congestion condition

[Description]
  Congestion([timeout]): This application will indicate the congestion
condition to the calling channel. If the optional timeout is specified, the
calling channel will be hung up after the specified number of seconds.
Otherwise, this application will wait until the calling channel hangs up.

Differenz zum internen Hilfetext in Asterisk 1.2: 

8c8
<   Congestion([timeout]): This application will indicate the congestion
---
>   Congestion([timeout]): This application will indicate the congenstion

Siehe auch. Busy(), Progress(), Playtones()

ContinueWhile()

Springt während der Ausführung einer While-Schleife wieder zum Anfang.

ContinueWhile()

Mit ContinueWhile() kann die Ausführung einer While-Schleife im Dialplan unterbrochen werden. Es wird dann direkt zum Beginn der While-Schleife gesprungen und die Bedingung erneut geprüft.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ContinueWhile' =- 

[Synopsis]
Restart a While loop

[Description]
Usage:  ContinueWhile()
Returns to the top of the while loop and re-evaluates the conditional.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- nicht in Version 1.2. vorhanden --

Siehe auch. While(), ExitWhile(), Abschnitt 10, „Asterisk Extension Language (AEL)“

ControlPlayback()

Spielt eine Datei ab und kann diese auch schnell vor- und zurückspulen.

ControlPlayback(Datei[,skipms[,ffchar[,rewchar[,stopchar[,pausechar]]]]])

Spielt die angegebene Datei ab und ermöglicht es dem Anrufer, sich durch Betätigen der Tasten ffchar und rewchar in dieser Datei vorwärts und rückwärts zu bewegen. Als Standardeinstellung können die Tasten # und * zum Vor- und Zurückspulen der Datei verwendet werden. Ist stopchar spezifiziert, hält die Anwendung die Wiedergabe an, wenn die stopchar-Taste gedrückt wird. Existiert die Datei nicht, geht die Anwendung zu Priorität n+101 über, falls vorhanden.

Die skipms-Option gibt an, wie weit mit jedem Drücken von ffchar oder rewchar in der Datei vor- bzw. zurückgesprungen wird.

Die pausechar-Option kann ebenfalls spezifiziert werden, sie erlaubt es, die Wiedergabe der Datei vorübergehend anzuhalten (Pause). Erneutes Drücken von pausechar setzt die Wiedergabe der Datei dann fort.

Gibt -1 zurück, falls der Channel während der Wiedergabe aufgelegt wurde.

; dem Anrufer "sinfonie" vorspielen mit Steuerungsmöglichkeit:
exten => 123,1,ControlPlayback(sinfonie,5000,#,*,5,0)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ControlPlayback' =- 

[Synopsis]
Play a file with fast forward and rewind

[Description]
  ControlPlayback(file[|skipms[|ff[|rew[|stop[|pause[|restart|options]]]]]]]):
This application will play back the given filename. By default, the '*' key
can be used to rewind, and the '#' key can be used to fast-forward.
Parameters:
  skipms  - This is number of milliseconds to skip when rewinding or
            fast-forwarding.
  ff      - Fast-forward when this DTMF digit is received.
  rew     - Rewind when this DTMF digit is received.
  stop    - Stop playback when this DTMF digit is received.
  pause   - Pause playback when this DTMF digit is received.
  restart - Restart playback when this DTMF digit is received.
Options:
  j - Jump to priority n+101 if the requested file is not found.
This application sets the following channel variable upon completion:
  CPLAYBACKSTATUS -  This variable contains the status of the attempt as a text
                     string, one of: SUCCESS | USERSTOPPED | ERROR

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Playback(), Background()

DateTime()

Sagt die angegebene Uhrzeit.

DateTime([Unix-Zeit[,timezone[,Format]]])

Sagt die angegebene Uhrzeit an. DateTime() ist zwar (noch?) nicht deprecated, ist aber intern nur noch ein Alias auf SayUnixTime(), siehe dort für Aufruf und Funktionsweise.

Siehe auch. SayUnixTime()

DBdel()

Löscht einen Schlüssel aus der AstDB.

DBdel(Familie/Schlüssel)

Löscht den durch key spezifizierten Schlüssel aus der Schlüsselfamilie Familie aus der AstDB.

Liefert stets 0 zurück.

exten => 123,1,Set(DB(test/name)=Peter)    ; in AstDB speichern
exten => 123,n,Set(name=${DB(test/name)})  ; abfragen
exten => 123,n,DBdel(test/name)            ; löschen
[Wichtig]Wichtig

Die Applikation DBdel() ist seit 1.4 „deprecated“ und wird durch die Funktion DB_DELETE() ersetzt.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'DBdel' =- 

[Synopsis]
Delete a key from the database

[Description]
  DBdel(family/key): This application will delete a key from the Asterisk
database.
  This application has been DEPRECATED in favor of the DB_DELETE function.

Differenz zum internen Hilfetext in Asterisk 1.2: 

10d9
<   This application has been DEPRECATED in favor of the DB_DELETE function.

Siehe auch. DBdeltree(), DB(), DB_DELETE()

DBdeltree()

Löscht eine Familie oder einen Schlüsselbaum aus der AstDB.

DBdeltree(Familie[/Schlüsselzweig])

Löscht den angegebenen Schlüsselzweig aus der AstDB.

Liefert immer 0 zurück.

; Einträge in der AstDB anlegen:
exten => 123,1,Set(DB(farben/eins)=rot)
exten => 123,n,Set(DB(farben/zwei)=blau)
; now delete the key family named test
exten => 123,n,DBdeltree(farben)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'DBdeltree' =- 

[Synopsis]
Delete a family or keytree from the database

[Description]
  DBdeltree(family[/keytree]): This application will delete a family or keytree
from the Asterisk database

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. DBdel(), DB()

DeadAGI()

Führt ein AGI-konformes Skript auf einem toten (aufgelegten) Channel aus.

DeadAGI(Programm,Argumente)

Führt ein AGI-konformes Skript auf einem toten (aufgelegten) Channel aus. Mit Hilfe von AGI kann Asterisk externe Programme in nahezu jeder beliebigen Sprache ausführen (starten), um einen Telefonkanal zu steuern, Audio abzuspielen, DTMF-Ziffern auszulesen usw., indem es nach dem AGI-Protokoll auf STDIN und STDOUT mit diesen kommuniziert. Die übergebenen Argumente werden an das AGI-Programm durchgereicht.

Diese Anwendung wurde speziell für tote Kanäle entwickelt, weil das Standard AGI-Interface nicht funktioniert, nachdem der Channel aufgelegt wurde. Dass der Channel „tot“ ist, ist allerdings keine Voraussetzung für den Start eines DeadAGI-Skripts!

Benutzen Sie den Befehl show agi auf der Kommandozeilen-Schnittstelle, um eine Liste aller verfügbaren AGI-Befehle zu erhalten.

Liefert -1 zurück, falls die Anwendung ein Auflegen angefordert hat, oder 0 beim Austritt ohne Auflegen.

; mit einem bereits aufgelegten (h) Kanal noch ein AGI-Skript ausführen:
exten => h,1,DeadAGI(agi-test)
[Wichtig]Wichtig

Der Channel wird solange als aktiv angesehen wird, bis das Skript beendet wird, was z.B. für CDRs von Bedeutung sein kann.

Beachten Sie, dass auch DeadAGI-Skripte beim Auflegen des Channels ein SIGHUP-Signal erhalten, was ggf. ignoriert werden muss:

Perl
$SIG{HUP} = "IGNORE";
PHP
pcntl_signal(SIGHUP, SIG_IGN);
(PHP muss mit --enable-pcntl kompiliert worden sein, was per Default nicht der Fall ist!)
Ruby
trap('SIGHUP','IGNORE')

Es ist auch wichtig, dass Sie nach dem Auflegen nicht mehr mit Asterisk kommunizieren, sonst erhält das Skript ein SIGPIPE, was das Skript beendet, sofern Sie es nicht ignorieren.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'DeadAGI' =- 

[Synopsis]
Executes AGI on a hungup channel

[Description]
  [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
program on a channel. AGI allows Asterisk to launch external programs
written in any language to control a telephony channel, play audio,
read DTMF digits, etc. by communicating with the AGI protocol on stdin
and stdout.
  This channel will stop dialplan execution on hangup inside of this
application, except when using DeadAGI.  Otherwise, dialplan execution
will continue normally.
  A locally executed AGI script will receive SIGHUP on hangup from the channel
except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
variable to "no" before executing the AGI application.
  Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
on file descriptor 3

  Use the CLI command 'agi show' to list available agi commands
  This application sets the following channel variable upon completion:
     AGISTATUS      The status of the attempt to the run the AGI script
                    text string, one of SUCCESS | FAILED | HANGUP

Differenz zum internen Hilfetext in Asterisk 1.2: 

13,19c13,15
<   This channel will stop dialplan execution on hangup inside of this
< application, except when using DeadAGI.  Otherwise, dialplan execution
< will continue normally.
<   A locally executed AGI script will receive SIGHUP on hangup from the channel
< except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
< variable to "no" before executing the AGI application.
<   Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
---
> Returns -1 on hangup (except for DeadAGI) or if application requested
>  hangup, or 0 on non-hangup exit. 
> Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
22,25c18
<   Use the CLI command 'agi show' to list available agi commands
<   This application sets the following channel variable upon completion:
<      AGISTATUS      The status of the attempt to the run the AGI script
<                     text string, one of SUCCESS | FAILED | HANGUP
---
> Use the CLI command 'show agi' to list available agi commands

Siehe auch. AGI(), FastAGI()

Dial()

Verbindet Kanäle.

Dial(Tech/Resource,Timeout,Optionen,URL)
Dial(Tech1/Resource1[&Tech2/Resource2[&...]],Timeout,Optionen,URL)
Dial(Tech/User:Passwort@Host/Extension,Timeout,Optionen)

Ermöglicht es, zwei Kanäle miteinander zu verbinden.[53] Dial() ist eine der wichtigsten Anwendungen in Asterisk, lesen Sie diesen Ausschnitt deshalb bitte aufmerksam und eventuell mehrmals durch.

Jeder gültige Channeltyp (wie z.B. SIP, IAX2, H.323, MGCP, Local oder Zap) wird von Dial() akzeptiert, aber die Parameter, die jedem Channel übergeben werden müssen, hängen von denjenigen Informationen ab, die der entsprechende Channeltyp benötigt, um seine Arbeit zu verrichten. So wird zum Beispiel ein SIP-Channel eine Netzwerkadresse und einen Benutzer benötigen, zu dem die Verbindung hergestellt werden soll, während ein ZAP-Channel irgendeine Art von Telefonnummer verlangt.

Wenn ein Netzwerk-basierter Channeltyp spezifiziert wird, können Zielhost (Name oder IP-Adresse), Benutzername, Passwort und Fernsteuerungs-Extension als Teil der Optionen an Dial() übergeben werden, oder man kann auf den Namen eines Channeleintrags in der entsprechenden Konfigurationsdatei (.conf-Datei) verweisen - alle notwendigen Informationen müssen dann in dieser Datei vorhanden sein. Benutzername und Passwort können durch den Namen der Channelkonfigurationsdatei, umgeben von eckigen Klammern ([]) ersetzt werden. Die Angabe des Hostnamens ist optional.

Ein Beispiel für einen gültigen Aufruf:

exten => s,1,Dial(SIP/peter:geheim@meier.tld)

Das Gleiche würde auch der folgende Aufruf bewirken:

exten => s,1,Dial(SIP/ein_SIP_friend)

wenn in sip.conf ein entsprechender Channel definiert ist:

[ein_SIP_friend]
fromuser=peter
password=geheim
host=meier.tld

Oft ist eine Extension wie folgt an die Adressinformation angehängt:

exten => s,1,Dial(IAX2/benutzer:passwort@beispiel.de/500)

Dadurch wird das entfernte Ende aufgefordert, den Anruf mit Extension 500 zu verbinden, und zwar in dem Context, in der der Channel eingegangen ist. Diese Extension wird von Dial() nicht benötigt, weil die in der Channelkonfiguration des entfernten Endes vorliegenden Daten verwendet werden oder der Remoteserver den Anruf zur s-Extension in dem Context, in dem der Anruf eingegangen ist, weiterleitet.

Schlussendlich kontrolliert das entfernte Ende, was mit dem Anruf geschehen soll - Sie können lediglich eine spezielle Behandlung anfragen.

Wenn kein Timeout spezifiziert ist, wird der Channel unendlich klingeln. Dieses Verhalten muss nicht immer schlecht sein, es besteht keine Veranlassung, ihn immer zu setzen - man muss sich nur vergegenwärtigen, dass unendlich evtl. eine sehr lange Zeit bedeuten kann.[54] Timeout wird in Sekunden angegeben. Der Klingel-Timeout folgt immer der Adressinformation, wie folgt:

exten => s,1,Dial(IAX2/user:pass@beispiel.de/500,20)

Mit Dial() können auch mehrere Channels parallel angerufen werden. Dabei gilt das Prinzip „Wer zuerst kommt, mahlt zuerst“. Welcher Angerufene als erstes abhebt, bekommt das Gespräch:

exten => s,1,Dial(SIP/2000&SIP/2001&SIP/2303)

Ein großer Teil der Mächtigkeit der Dial()-Anwendung liegt in den Optionen oder Flags. Diese werden nach der Adress- und Timeout-Information angegeben, und zwar so:

exten => s,1,Dial(IAX2/user:pass@beispiel.de/500,60,Flags)

Wichtig! Es gilt zu beachten, dass, wenn Sie Flags hinzufügen möchten, aber kein Timeout spezifiert ist, dennoch der Ort für den Timeout nicht fehlen darf. D. h., ein zusätzliches Komma muss an der Stelle eingefügt werden, an der normalerweise der Wert für den Timeout stehen würde, also so:

exten => s,1,Dial(IAX2/user:pass@beispiel.de/500,,Flags)

Die gültigen Flags, die mit der Dial()-Anwendung benutzt werden können, sind:

d
Erlaubt es dem Teilnehmer, während des Wartens auf die Beantwortung eines Anrufs eine einziffrige Extension zu wählen. Der Anruf wird dann zu dieser Extension umgeleitet (d.h. der Anruf wird zugunsten dieser Extension beendet) (entweder im aktuellen Context oder, falls er spezifiziert wurde, im Context ${EXITCONTEXT}).
t
Erlaubt es dem angerufenen Teilnehmer, einen verbundenen Anruf durch Drücken der #-Taste zu übertragen. Es gilt zu beachten, dass Neueinladungen nicht möglich sind, wenn diese Option benutzt wird, weil Asterisk den Anruf überwachen muss, um zu erkennen, wenn die angerufene Seite die #-Taste drückt.
T
Erlaubt es dem Anrufer, einen verbundenen Anruf durch Drücken der #-Taste zu übertragen. Auch hier beachten Sie bitte, dass Neueinladungen bei Benutzung dieser Option nicht möglich sind, weil Asterisk den Anruf überwachen muss, um zu erkennen, wenn die angerufene Seite die #-Taste drückt.
w
Ermöglicht es dem angerufenen Teilnehmer den Anruf durch Eintippen der automon-Sequenz (wie in features.conf konfiguriert) aufzunehmen (Audio to disk). Falls die Variable TOUCH_MONITOR gesetzt ist, wird ihr Wert als Parameter der Monitor()-Anwendung weitergeleitet, wenn die Aufnahme startet. Ist sie nicht gesetzt, wird Monitor() die Vorgabe WAV,,m übergeben.
W
Ermöglicht es dem Anrufer den Anruf durch Eintippen der automon-Sequenz (wie in features.conf konfiguriert) aufzunehmen (Audio to disk).
f
Durch dieses Flag muss die Caller-ID als die Extension der Leitung gesetzt werden, die den ausgehenden Anruf erstellt oder umleitet. Das wird so gemacht, weil einige PSTN-Diensteanbieter es nicht erlauben, die Caller-ID auf irgendeinen anderen als den Ihnen zugewiesenen Wert zu setzen. Zum Beispiel würden Sie, wenn Sie einen PRI hatten, das Flag f verwenden, um irgendeine lokal im SIP-Telefon gespeicherte Caller-ID zu überscheiben.
o
Benutzt die auf der eingehenden Strecke des Anrufs empfangene Caller ID als die Caller ID auf der ausgehenden Richtung des Anrufs. Das ist nützlich, falls ein Anruf akzeptiert und dann zu einem anderen Ziel weitergeleitet wird, wobei die Caller ID der eingehenden Richtung des Anrufs weitergeben wird, statt diese zunächst mit den lokalen Caller ID-Einstellungen zu überschreiben.
r
Signalisiert dem Anrufer Klingeln, ohne dass Audio weitergeleitet wird, bevor der Anruf beantwortet wird. Dieses Flag wird für gewöhnlich nicht benötigt, um Klingeln zu signalisiern, da Asterisk Klingeln signalisiert, wenn ein Channel angerufen wird.
m[Klasse]
Beliefert den Anruf mit Musik, bis der Anruf beantwortet wird. Optional können Sie auch die Music-on-Hold-Klasse (z.B. Musikrichtung) angeben.
M(x[^arg])

Führt auf die Verbindung eines Anrufs hin das Makro x aus, und leitet dabei optional Parameter, getrennt durch ^, weiter. Das Makro kann auch die MACRO_RESULT-Channelvariable auf einen der folgenden Werte setzen:

ABORT
Legt bei beiden Enden des Anrufs auf.
CONGESTION
Wirkt, als wäre Stau auf der Leitung.
BUSY
Wirkt, als wäre die Leitung besetzt (geht zur Priorität n+101).
CONTINUE
Legt die Seite des Angerufenen auf und fährt im Wählplan fort.
GOTO:<Context>^<Extension>^<Priorität>
Springt zu der angegebenen Position im Wählplan.
h
Erlaubt es dem angerufenen Teilnehmer, die Leitung durch Drücken von * aufzulegen.
H
Erlaubt es dem anrufenden Teilnehmer, die Leitung durch Drücken von * aufzulegen.
C
Setzt das Call Detail Record (Anrufprotokoll) zurück. Da die CDR-Zeit zum Zeitpunkt der Beantwortung des Anrufs gesetzt wird, ist es sinnvoll, CDR ebenfalls zurückzusetzen, damit dem Teilnehmer nicht die Zeit vor dem Aufruf der Call()-Anwendung in Rechnung gestellt wird.
P[(x)]
Aktiviert den Geheimhaltungs-Modus, wobei optional x als Familie/Schlüssel-Wert in der AstDB spezifiziert werden kann. Dieser Modus ist beispielsweise nützlich, wenn Anrufe aus einer Blacklist (Anrufe von Nummern aus der Blacklist werden explizit abgelehnt) oder Whitelist (Anrufe von den gelisteten Nummern werden explizit akzeptiert) angenommen werden. Siehe auch LookupBlacklist().
g
Geht weiter im Context, wenn der Zielkanal aufgelegt wird.
G(context^extension^priority)
Übermittelt beide Seiten zum spezifizierten Ziel, wenn der Anruf beantwortet wird.
A(x)
Spielt dem angerufenen Teilnehmer eine Ankündigung vor. x ist der Dateiname der Audiodatei, die als Ankündigung abzuspielen ist.
D([called][:calling])
Sendet DTMF-Ziffern, nachdem der Anruf beantwortet wurde, aber bevor der Anruf überbrückt wird. Der Parameter called wird an die angerufene Seite weitergegeben, und der Parameter calling an die anrufende Seite. Beide Parameter können individuell eingesetzt werden.
L(x[:y][:z])

Begrenzt die Dauer des Anrufs auf x Millisekunden, wobei y Millisekunden vor Ablauf der festgesetzten Dauer und danach wiederholt alle z Millisekunden bis zum Anlauf der Frist eine Warnung signalisiert wird. Der x-Parameter muss angegeben werden, y und z sind optional. Die folgenden speziellen Variablen können ebenfalls gesetzt werden und stellen zusätzliche Kontrollmöglichkeiten zur Verfügung:

LIMIT_PLAYAUDIO_CALLER=yes|no
Gibt an, ob dem Anrufer Audiodateien vorgespielt werden sollen.
LIMIT_PLAYAUDIO_CALLEE=yes|no
Gibt an, ob dem Angerufenen Audiodateien vorgespielt werden sollen.
LIMIT_TIMEOUT_FILE=filename
Gibt an, welche Datei abgespielt werden soll, nachdem die Zeit abgelaufen ist.
LIMIT_CONNECT_FILE=filename
Gibt an, welche Datei zu Beginn des Anrufs abgespielt werden soll.
LIMIT_WARNING_FILE=filename
Gibt an, welche Datei gespielt werden soll, wenn der Parameter y angegeben ist.
n

Verhindert, dass zu Priorität n+101 übergegangen wird (n: aktuelle Priorität), falls alle Kanäle als besetzt erachtet werden.

Ein Anruf kann auch geparkt werden, statt übermittelt zu werden (was mit t oder T-Flag der Fall ist). Anrufe werden gewöhnlich geparkt, indem man sie der Extension 700 übermittelt, aber dieses Verhalten ist in features.conf konfigurierbar.

Mit dem Enden der Dial()-Anwendung werden die folgenden Variablen gesetzt:

DIALEDTIME
Die gesamte Zeit, die von der Ausführung der Dial()-Anwendung an bis zu ihrer Beendigung verstrichen ist.
ANSWEREDTIME
Die gesamte Zeit, die während des Anrufs vergangen ist.
DIALSTATUS

Der Status des Anrufs, ausgedrückt durch einen der folgenden Werte:

CHANUNAVAIL
Der Channel ist nicht verfügbar.
CONGESTION
Der Channel hat ein Stau-Signal zurückgeliefert, was gewöhnlich die Unfähigkeit der Fertigstellung der Verbindung kennzeichnet.
NOANSWER
Der Channel hat in der durch die Klingel-Timeout-Option gesetzten Frist nicht geantwortet.
BUSY
Der angerufene Channel ist momentan belegt.
ANSWER
Der Channel hat den Anruf beantwortet.
CANCEL
Der Anruf wurde abgebrochen.
; eine Nummer auf Zap-Channel 2 wählen, max. 10 Sekunden klingeln:
exten => 123,1,Dial(Zap/2/1234567,10,tTm)
; sonst weiter im Dialplan:
exten => 123,n,Playback(tut-uns-leid)
exten => 123,n,Hangup()

; über IAX die Extension 500 auf dem Host beispiel.de wählen:
exten => 123,1,Dial(IAX/username:password@beispiel.de/500)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Dial' =- 

[Synopsis]
Place a call and connect to the current channel

[Description]
  Dial(Technology/resource[&Tech2/resource2...][|timeout][|options][|URL]):
This application will place calls to one or more specified channels. As soon
as one of the requested channels answers, the originating channel will be
answered, if it has not already been answered. These two channels will then
be active in a bridged call. All other channels that were requested will then
be hung up.
  Unless there is a timeout specified, the Dial application will wait
indefinitely until one of the called channels answers, the user hangs up, or
if all of the called channels are busy or unavailable. Dialplan executing will
continue if no requested channels can be called, or if the timeout expires.

  This application sets the following channel variables upon completion:
    DIALEDTIME   - This is the time from dialing a channel until when it
                   is disconnected.
    ANSWEREDTIME - This is the amount of time for actual call.
    DIALSTATUS   - This is the status of the call:
                   CHANUNAVAIL | CONGESTION | NOANSWER | BUSY | ANSWER | CANCEL
                   DONTCALL | TORTURE
  For the Privacy and Screening Modes, the DIALSTATUS variable will be set to
DONTCALL if the called party chooses to send the calling party to the 'Go Away'
script. The DIALSTATUS variable will be set to TORTURE if the called party
wants to send the caller to the 'torture' script.
  This application will report normal termination if the originating channel
hangs up, or if the call is bridged and either of the parties in the bridge
ends the call.
  The optional URL will be sent to the called party if the channel supports it.
  If the OUTBOUND_GROUP variable is set, all peer channels created by this
application will be put into that group (as in Set(GROUP()=...).

  Options:
    A(x) - Play an announcement to the called party, using 'x' as the file.
    C    - Reset the CDR for this call.
    d    - Allow the calling user to dial a 1 digit extension while waiting for
           a call to be answered. Exit to that extension if it exists in the
           current context, or the context defined in the EXITCONTEXT variable,
           if it exists.
    D([called][:calling]) - Send the specified DTMF strings *after* the called
           party has answered, but before the call gets bridged. The 'called'
           DTMF string is sent to the called party, and the 'calling' DTMF
           string is sent to the calling party. Both parameters can be used
           alone.
    f    - Force the callerid of the *calling* channel to be set as the
           extension associated with the channel using a dialplan 'hint'.
           For example, some PSTNs do not allow CallerID to be set to anything
           other than the number assigned to the caller.
    g    - Proceed with dialplan execution at the current extension if the
           destination channel hangs up.
    G(context^exten^pri) - If the call is answered, transfer the calling party to
           the specified priority and the called party to the specified priority+1.
           Optionally, an extension, or extension and context may be specified. 
           Otherwise, the current extension is used. You cannot use any additional
           action post answer options in conjunction with this option.
    h    - Allow the called party to hang up by sending the '*' DTMF digit.
    H    - Allow the calling party to hang up by hitting the '*' DTMF digit.
    i    - Asterisk will ignore any forwarding requests it may receive on this
           dial attempt.
    j    - Jump to priority n+101 if all of the requested channels were busy.
    L(x[:y][:z]) - Limit the call to 'x' ms. Play a warning when 'y' ms are
           left. Repeat the warning every 'z' ms. The following special
           variables can be used with this option:
           * LIMIT_PLAYAUDIO_CALLER   yes|no (default yes)
                                      Play sounds to the caller.
           * LIMIT_PLAYAUDIO_CALLEE   yes|no
                                      Play sounds to the callee.
           * LIMIT_TIMEOUT_FILE       File to play when time is up.
           * LIMIT_CONNECT_FILE       File to play when call begins.
           * LIMIT_WARNING_FILE       File to play as warning if 'y' is defined.
                                      The default is to say the time remaining.
    m([class]) - Provide hold music to the calling party until a requested
           channel answers. A specific MusicOnHold class can be
           specified.
    M(x[^arg]) - Execute the Macro for the *called* channel before connecting
           to the calling channel. Arguments can be specified to the Macro
           using '^' as a delimeter. The Macro can set the variable
           MACRO_RESULT to specify the following actions after the Macro is
           finished executing.
           * ABORT        Hangup both legs of the call.
           * CONGESTION   Behave as if line congestion was encountered.
           * BUSY         Behave as if a busy signal was encountered. This will also
                          have the application jump to priority n+101 if the
                          'j' option is set.
           * CONTINUE     Hangup the called party and allow the calling party
                          to continue dialplan execution at the next priority.
           * GOTO:<context>^<xexten>^<priority> - Transfer the call to the
                          specified priority. Optionally, an extension, or
                          extension and priority can be specified.
           You cannot use any additional action post answer options in conjunction
           with this option. Also, pbx services are not run on the peer (called) channel,
           so you will not be able to set timeouts via the TIMEOUT() function in this macro.
    n    - This option is a modifier for the screen/privacy mode. It specifies
           that no introductions are to be saved in the priv-callerintros
           directory.
    N    - This option is a modifier for the screen/privacy mode. It specifies
           that if callerID is present, do not screen the call.
    o    - Specify that the CallerID that was present on the *calling* channel
           be set as the CallerID on the *called* channel. This was the
           behavior of Asterisk 1.0 and earlier.
    O([x]) - "Operator Services" mode (Zaptel channel to Zaptel channel
             only, if specified on non-Zaptel interface, it will be ignored).
             When the destination answers (presumably an operator services
             station), the originator no longer has control of their line.
             They may hang up, but the switch will not release their line
             until the destination party hangs up (the operator). Specified
             without an arg, or with 1 as an arg, the originator hanging up
             will cause the phone to ring back immediately. With a 2 specified,
             when the "operator" flashes the trunk, it will ring their phone
             back.
    p    - This option enables screening mode. This is basically Privacy mode
           without memory.
    P([x]) - Enable privacy mode. Use 'x' as the family/key in the database if
           it is provided. The current extension is used if a database
           family/key is not specified.
    r    - Indicate ringing to the calling party. Pass no audio to the calling
           party until the called channel has answered.
    S(x) - Hang up the call after 'x' seconds *after* the called party has
           answered the call.
    t    - Allow the called party to transfer the calling party by sending the
           DTMF sequence defined in features.conf.
    T    - Allow the calling party to transfer the called party by sending the
           DTMF sequence defined in features.conf.
    w    - Allow the called party to enable recording of the call by sending
           the DTMF sequence defined for one-touch recording in features.conf.
    W    - Allow the calling party to enable recording of the call by sending
           the DTMF sequence defined for one-touch recording in features.conf.
    k    - Allow the called party to enable parking of the call by sending
           the DTMF sequence defined for call parking in features.conf.
    K    - Allow the calling party to enable parking of the call by sending
           the DTMF sequence defined for call parking in features.conf.

Differenz zum internen Hilfetext in Asterisk 1.2: 

62,63d61
<     i    - Asterisk will ignore any forwarding requests it may receive on this
<            dial attempt.
95,96c93
<            with this option. Also, pbx services are not run on the peer (called) channel,
<            so you will not be able to set timeouts via the TIMEOUT() function in this macro.
---
>            with this option.
105,114d101
<     O([x]) - "Operator Services" mode (Zaptel channel to Zaptel channel
<              only, if specified on non-Zaptel interface, it will be ignored).
<              When the destination answers (presumably an operator services
<              station), the originator no longer has control of their line.
<              They may hang up, but the switch will not release their line
<              until the destination party hangs up (the operator). Specified
<              without an arg, or with 1 as an arg, the originator hanging up
<              will cause the phone to ring back immediately. With a 2 specified,
<              when the "operator" flashes the trunk, it will ring their phone
<              back.
132,135d118
<     k    - Allow the called party to enable parking of the call by sending
<            the DTMF sequence defined for call parking in features.conf.
<     K    - Allow the calling party to enable parking of the call by sending
<            the DTMF sequence defined for call parking in features.conf.

Siehe auch. RetryDial()

Dictate()

Virtuelles Diktiergerät

Dictate([Verzeichnis[,Dateiname]])

Startet ein virtuelles Diktiergerät. Mit den Parametern lassen sich das Verzeichnis für die Aufzeichnungen (Default: /var/spool/asterisk/dictate/) und der Dateiname (numerisch!) bestimmen. Aufgezeichnet wird im Format raw.

Der User kann das Diktiergerät mit folgenden Tasten steuern:

0
Hilfe
1
Schaltet zwischen Aufnahme- und Abspielmodus hin und her.
*
Pause / weiter
#
Datei wählen / neuen Dateinamen eingeben (z.B. 1234#)

Im Abspielmodus:

2
Schaltet die Abspielgeschwindigkeit um (1x, 2x, 3x, 4x)
7
Ein Stück zurück springen
8
Ein Stück weiter springen

Im Aufnahmemodus:

8
Aufnahme löschen und neu anfangen
; Diktiergerät starten:
exten => 123,1,Dictate()

Um jedem User sein eigenes Diktiergerät zu geben, könnte man z.B. als Pfad /var/spool/asterisk/dictate/${EXTEN} angeben.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Dictate' =- 

[Synopsis]
Virtual Dictation Machine

[Description]
  Dictate([<base_dir>[|<filename>]])
Start dictation machine using optional base dir for files.

Differenz zum internen Hilfetext in Asterisk 1.2: 

8c8
<   Dictate([<base_dir>[|<filename>]])
---
>   Dictate([<base_dir>])

Siehe auch. Record()

Directory()

Stellt ein Verzeichnis anwählbarer (Voicemail-)Extensions bereit (internes Telefonbuch, Dial-by-name, siehe Abschnitt 5, „Telefonbuch (Dial-by-Name)“).

Directory(VM-Context[,Wähl-Context[,Optionen]])

Liefert Benutzern ein Verzeichnis mit Extensionen, aus dem anhand des Namens ausgewählt werden kann. Die Liste von Namen und Extensionen findet sich in voicemail.conf. Der VM-Context muss angegeben werden, er bestimmt den zu benutzenden Context aus voicemail.conf.

Der Wähl-Context bestimmt den zum Anrufen der Benutzer zu verwendenden Context. Falls er nicht angegeben ist, wird VM-Context angenommen. Momentan ist die einzige mögliche Option, die im Optionen-Parameter Verwendung finden kann, f (wie first name), die das Verzeichnis veranlasst, die Eingabe anhand des Vornamens statt des Nachnamens abzugleichen.

Gibt der Benutzer 0 (Null) ein, und es existiert eine Extension o (kleiner Buchstabe o) im aktuellen Context, geht die Steuerung des Anrufs an diese Extension über. Durch Drücken der Taste * wird analog dazu zur a-Extension übergegangen. Diese Verhalten ähnelt dem von Voicemail().

Gibt 0 zurück, es sei denn, der Teilnehmer legt auf.

exten => *,1,Directory(default,incoming)
exten => #,1,Directory(default,incoming,f)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Directory' =- 

[Synopsis]
Provide directory of voicemail extensions

[Description]
  Directory(vm-context[|dial-context[|options]]): This application will present
the calling channel with a directory of extensions from which they can search
by name. The list of names and corresponding extensions is retrieved from the
voicemail configuration file, voicemail.conf.
  This application will immediately exit if one of the following DTMF digits are
received and the extension to jump to exists:
    0 - Jump to the 'o' extension, if it exists.
    * - Jump to the 'a' extension, if it exists.

  Parameters:
    vm-context   - This is the context within voicemail.conf to use for the
                   Directory.
    dial-context - This is the dialplan context to use when looking for an
                   extension that the user has selected, or when jumping to the
                   'o' or 'a' extension.

  Options:
    e - In addition to the name, also read the extension number to the
        caller before presenting dialing options.
    f - Allow the caller to enter the first name of a user in the directory
        instead of using the last name.

Differenz zum internen Hilfetext in Asterisk 1.2: 

25,26d24
<     e - In addition to the name, also read the extension number to the
<         caller before presenting dialing options.

Siehe auch. voicemail.conf

DISA()

Direct Inward System Access erlaubt auswärtigen Anrufern Anrufe mit internem System-Wählton.

DISA(Passwort[,Context[,CallerID[,Mailbox[@VM-Context]]]])
DISA(Passwort-Datei[,CallerID[,Mailbox[@VM-Context]]])

Erlaubt Anrufern von außen einen internen System-Wählton zu erhalten und entsprechend Anrufe zu tätigen, als würden diese von innerhalb des Switches aus getätigt. Dem Teilnehmer wird ein Wählton zur Verfügung gestellt, nach dem er einen Zugangskode eingeben muss gefolgt von der Rautetaste (#). Ist der Zugangskode korrekt, erhält er einen System-Wählton, auf dem er einen Anruf tätigen kann.

[Achtung]Achtung

Diese Art von Zugang kann ein ernstes Sicherheitsrisiko sein und sollte sorgfältig überlegt werden, damit die Sicherheit Ihres Systems nicht gefährdet ist!

Der Passwort-Parameter ist ein numerischer Zugangskode, den der Benutzer eingeben muss, um Anrufe tätigen zu können. Mit dieser Syntax werden alle Benutzer dieser Extension das gleiche Passwort benutzen. Möchten Sie Benutzern erlauben, DISA() ohne Passwort zu verwenden, übergeben Sie die Zeichenkette no-password an der Stelle des Passwortes.

Der Context-Parameter spezifiziert den Context, in dem sich ein Benutzer einwählen wird. Wird kein Context spezifiziert, nimmt die DISA()-Anwendung den Context disa an.

Die CallerID ist die Mailbox-Nummer (und optional Voicemail-Context VM-Context) einer Voicemailbox. Der Anrufer wird einen so genannten „stuttered dial-tone“ (das ist ein regelmäßig kurz unterbrochener, „stotternder“ Wählton) hören, falls neue Nachrichten in der angegebenen Voicemailbox vorliegen.

Außerdem können Sie eine alternative Syntax benutzen und den Namen einer global verfügbaren Passwortdatei statt der Parameter Passwort und Context übergeben. In jeder Zeile kann diese Datei entweder einen Zugangskode oder eine Kombination aus Zugangskode und Context, getrennt durch das Zeichen |, enthalten. Ist kein Context mit angegeben, wird standardmäßig der Context disa verwendet.

Ist das Einloggen des Teilnehmers erfolgreich, wird die Anwendung die gewählte Nummer in dem spezifizierten Context interpretieren.

; Anrufern von außen erlauben, 0800er-Nummern zu wählen, sofern sie
; das Passwort (1234) wissen. Dabei ihre Caller-ID so setzen, dass
; es aussieht, als riefen sie von innerhalb der Firma an:
[incoming]
exten => 123,1,DISA(1234,disa,Apfelmus GmbH <(0261) 1234567>)
[disa]
exten => _0800XXXXXXXX,1,Dial(Zap/4/${EXTEN})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'DISA' =- 

[Synopsis]
DISA (Direct Inward System Access)

[Description]
DISA(<numeric passcode>[|<context>]) or DISA(<filename>)
The DISA, Direct Inward System Access, application allows someone from 
outside the telephone switch (PBX) to obtain an "internal" system 
dialtone and to place calls from it as if they were placing a call from 
within the switch.
DISA plays a dialtone. The user enters their numeric passcode, followed by
the pound sign (#). If the passcode is correct, the user is then given
system dialtone on which a call may be placed. Obviously, this type
of access has SERIOUS security implications, and GREAT care must be
taken NOT to compromise your security.

There is a possibility of accessing DISA without password. Simply
exchange your password with "no-password".

    Example: exten => s,1,DISA(no-password|local)

Be aware that using this compromises the security of your PBX.

The arguments to this application (in extensions.conf) allow either
specification of a single global passcode (that everyone uses), or
individual passcodes contained in a file. It also allows specification
of the context on which the user will be dialing. If no context is
specified, the DISA application defaults the context to "disa".
Presumably a normal system will have a special context set up
for DISA use with some or a lot of restrictions. 

The file that contains the passcodes (if used) allows specification
of either just a passcode (defaulting to the "disa" context, or
passcode|context on each line of the file. The file may contain blank
lines, or comments starting with "#" or ";". In addition, the
above arguments may have |new-callerid-string appended to them, to
specify a new (different) callerid to be used for this call, for
example: numeric-passcode|context|"My Phone" <(234) 123-4567> or 
full-pathname-of-passcode-file|"My Phone" <(234) 123-4567>.  Last
but not least, |mailbox[@context] may be appended, which will cause
a stutter-dialtone (indication "dialrecall") to be used, if the
specified mailbox contains any new messages, for example:
numeric-passcode|context||1234 (w/a changing callerid).  Note that
in the case of specifying the numeric-passcode, the context must be
specified if the callerid is specified also.

If login is successful, the application looks up the dialed number in
the specified (or default) context, and executes it if found.
If the user enters an invalid extension and extension "i" (invalid) 
exists in the context, it will be used. Also, if you set the 5th argument
to 'NOANSWER', the DISA application will not answer initially.

Differenz zum internen Hilfetext in Asterisk 1.2: 

8c8
< DISA(<numeric passcode>[|<context>]) or DISA(<filename>)
---
> DISA(<numeric passcode>[|<context>]) or disa(<filename>)
28c28
< individual passcodes contained in a file. It also allows specification
---
> individual passcodes contained in a file. It also allow specification
52,53c52
< exists in the context, it will be used. Also, if you set the 5th argument
< to 'NOANSWER', the DISA application will not answer initially.
---
> exists in the context, it will be used.

DumpChan()

Gibt Informationen über den anrufenden Channel auf der Konsole aus.

DumpChan([min_verbose_level])

Zeigt Informationen über den anrufenden Channel an und auch eine Auflistung aller Channelvariablen. Falls min_verbose_level angegeben ist, werden Ausgaben nur im Falle eines aktuell gleich hoch oder höher gesetzten Verbosity-Levels angezeigt.

Gibt stets 0 zurück.

exten => 123,1,Answer()
exten => 123,n,DumpChan()
exten => 123,n,Background(enter-ext-of-person)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'DumpChan' =- 

[Synopsis]
Dump Info About The Calling Channel

[Description]
   DumpChan([<min_verbose_level>])
Displays information on channel and listing of all channel
variables. If min_verbose_level is specified, output is only
displayed when the verbose level is currently set to that number
or greater.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. NoOp(), Log(), Verbose()

EAGI()

Ruft eine AGI-konforme Anwendung auf

EAGI(Programm[,Argumente])

(Analog auch AGI(), FastAGI(), DeadAGI())

Führt ein Asterisk-Gateway-Interface-kompatibles Programm Programm auf dem aktuellen Channel aus. Solche externen Programme (die in fast jeder beliebigen Sprache vorliegen können - z.B. Perl, PHP, ...), können den Telefonkanal steuern, Audiodateien abspielen, DTMF-Ziffern auslesen und so weiter. Asterisk kommuniziert dabei mit dem AGI-Program über STDIN und STDOUT. Die spezifizierten Argumente werden an das AGI-Programm durchgereicht.

Das Programm muss im zugrundeliegenden Dateisystem als executable (ausführbar) gekennzeichnet sein. Der Pfad zum Programm ist relativ zum Asterisk-AGI-Verzeichnis, standardmäßig /var/lib/asterisk/agi-bin/.

EAGI() bietet im Gegensatz zu den anderen AGI() Befehlen Zugriff auf den eingehenden Audiostream. Das eingehende Audio-Signal kann dann unter File Descriptor 3[55] eingelesen werden.

Liefert -1 mit dem Auflegen oder falls ein Auflegen durch das Programm verlangt wurde oder 0, falls nicht aufgelegt werden soll.

; mein AGI-Skript aufrufen:
exten => 123,1,AGI(agi-skript)
exten => 123,n,EAGI(eagi-skript)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'EAGI' =- 

[Synopsis]
Executes an EAGI compliant application

[Description]
  [E|Dead]AGI(command|args): Executes an Asterisk Gateway Interface compliant
program on a channel. AGI allows Asterisk to launch external programs
written in any language to control a telephony channel, play audio,
read DTMF digits, etc. by communicating with the AGI protocol on stdin
and stdout.
  This channel will stop dialplan execution on hangup inside of this
application, except when using DeadAGI.  Otherwise, dialplan execution
will continue normally.
  A locally executed AGI script will receive SIGHUP on hangup from the channel
except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
variable to "no" before executing the AGI application.
  Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
on file descriptor 3

  Use the CLI command 'agi show' to list available agi commands
  This application sets the following channel variable upon completion:
     AGISTATUS      The status of the attempt to the run the AGI script
                    text string, one of SUCCESS | FAILED | HANGUP

Differenz zum internen Hilfetext in Asterisk 1.2: 

13,19c13,15
<   This channel will stop dialplan execution on hangup inside of this
< application, except when using DeadAGI.  Otherwise, dialplan execution
< will continue normally.
<   A locally executed AGI script will receive SIGHUP on hangup from the channel
< except when using DeadAGI. This can be disabled by setting the AGISIGHUP channel
< variable to "no" before executing the AGI application.
<   Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
---
> Returns -1 on hangup (except for DeadAGI) or if application requested
>  hangup, or 0 on non-hangup exit. 
> Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
22,25c18
<   Use the CLI command 'agi show' to list available agi commands
<   This application sets the following channel variable upon completion:
<      AGISTATUS      The status of the attempt to the run the AGI script
<                     text string, one of SUCCESS | FAILED | HANGUP
---
> Use the CLI command 'show agi' to list available agi commands

Siehe. AGI().

Echo()

Wiederholt inwärtiges Audio für den Anrufer.

Echo()

Gibt auf dem Channel eingehendes Audio direkt wieder auf diesem Channel aus. Diese Anwendung findet häufig zum Testen der Verzögerung (Latenz) und Sprachqualität einer VoIP-Verbindung Verwendung. Der Anrufer kann zum Beenden die #-Taste drücken.

Gibt 0 zurück, falls der Benutzer durch die #-Taste beendet, oder -1, falls der Benutzer auflegt.

exten => 123,1,Echo()
exten => 123,n,Playback(vm-goodbye)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Echo' =- 

[Synopsis]
Echo audio, video, or DTMF back to the calling party

[Description]
  Echo(): This application will echo any audio, video, or DTMF frames read from
the calling channel back to itself. If the DTMF digit '#' is received, the
application will exit.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< Echo audio, video, or DTMF back to the calling party
---
> Echo audio read back to the user
8,10c8,10
<   Echo(): This application will echo any audio, video, or DTMF frames read from
< the calling channel back to itself. If the DTMF digit '#' is received, the
< application will exit.
---
>   Echo():  Echo audio read from channel back to the channel. 
> User can exit the application by either pressing the '#' key, 
> or hanging up.

Siehe auch. Milliwatt()

EndWhile()

Beendet eine While-Schleife.

EndWhile()

Kehrt zur vorangehend aufgerufenen While()-Anwendung zurück. Für eine vollständige Beschreibung zur Benutzung einer While-Schleife siehe While().

exten => 123,1,Answer()
exten => 123,n,Set(i=1)
exten => 123,n,While($[${i} < 5])
exten => 123,n,SayNumber(${i})
exten => 123,n,Set(i=$[${i} + 1])
exten => 123,n,EndWhile()
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'EndWhile' =- 

[Synopsis]
End a while loop

[Description]
Usage:  EndWhile()
Return to the previous called While

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< End a while loop
---
> End A While Loop
10a11
> 

Siehe auch. While(), GotoIf()

Exec()

Führt eine Asterisk-Anwendung dynamisch aus.

Exec(Applikationsname(Argumente))

Erlaubt den Aufruf einer beliebigen Anwendung, selbst wenn er nicht fest im Wählplan einprogrammiert ist. Liefert den Wert zurück, den diese Asterisk-Anwendung zurückliefert, oder -2, wenn die aufgerufene Anwendung nicht gefunden werden kann. Die Argumente werden an die aufgerufene Anwendung durchgereicht.

Diese Anwendung erlaubt den dynamischen Aufruf von Anwendungen, die aus einer Datenbank oder externen Quelle gelesen werden.

exten => 123,1,Set(app=SayDigits(12345))
exten => 123,2,Exec(${app})
[Wichtig]Wichtig

Bei einem negativen Rückgabewert wird die Ausführung des Dialplans beendet. Will man das nicht, verwendet man TryExec().

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Exec' =- 

[Synopsis]
Executes dialplan application

[Description]
Usage: Exec(appname(arguments))
  Allows an arbitrary application to be invoked even when not
hardcoded into the dialplan.  If the underlying application
terminates the dialplan, or if the application cannot be found,
Exec will terminate the dialplan.
  To invoke external applications, see the application System.
  If you would like to catch any error instead, see TryExec.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< Executes dialplan application
---
> Executes internal application
10,14c10,12
< hardcoded into the dialplan.  If the underlying application
< terminates the dialplan, or if the application cannot be found,
< Exec will terminate the dialplan.
<   To invoke external applications, see the application System.
<   If you would like to catch any error instead, see TryExec.
---
> hardcoded into the dialplan. To invoke external applications
> see the application System. Returns whatever value the
> app returns or a non-zero value if the app cannot be found.

Siehe auch. ExecIf(), TryExec(), System()

ExecIf()

Führt eine Asterisk-Anwendung unter bestimmten Bedingungen aus.

ExecIf(Ausdruck,Applikation,Argumente)

Ist Ausdruck wahr, wird die angegebene Applikation mit den Parametern Argumente ausgeführt, und deren Ergebnis zurückgeliefert. Siehe doc/README.variables (1.2) / doc/channelvariables.txt (1.4) für weiterführende Informationen über Standard-Asterisk-Ausdrücke.

Ist der Ausdruck nicht wahr (also false), wird die Ausführung mit der nächsten Priorität fortgesetzt.

exten => 123,1,ExecIf($[${CALLERID(num)} = 101],SayDigits,123)
exten => 123,n,SayDigits(678)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ExecIf' =- 

[Synopsis]
Executes dialplan application, conditionally

[Description]
Usage:  ExecIF (<expr>|<app>|<data>)
If <expr> is true, execute and return the result of <app>(<data>).
If <expr> is true, but <app> is not found, then the application
will return a non-zero value.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< Executes dialplan application, conditionally
---
> Conditional exec
12d11
< 

Siehe auch. Exec()

ExecIfTime()

Führt eine Applikation unter bestimmten zeitlichen Bedingungen aus.

ExecIf(Uhrzeit|Wochentag|Monatstag|Monat?Applikation[,Argumente])

Ist das angegebene Zeitmuster zutreffend, wird die angegebene Applikation mit den Parametern Argumente ausgeführt, und deren Ergebnis zurückgeliefert. Die Uhrzeit wird wie bei include (siehe „Includes zeitgesteuert“), GotoIfTime() (siehe GotoIfTime()) oder IFTIME() (siehe IFTIME()) angegeben.

Trifft der Ausdruck nicht zu, wird die Ausführung mit der nächsten Priorität fortgesetzt.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ExecIfTime' =- 

[Synopsis]
Conditional application execution based on the current time

[Description]
  ExecIfTime(<times>|<weekdays>|<mdays>|<months>?appname[|appargs]):
This application will execute the specified dialplan application, with optional
arguments, if the current time matches the given time specification.

Differenz zum internen Hilfetext in Asterisk 1.2: 

10c10,12
< arguments, if the current time matches the given time specification.
---
> arguments, if the current time matches the given time specification. Further
> information on the time speicification can be found in examples illustrating
> how to do time-based context includes in the dialplan.

Siehe auch. Exec(), ExecIf(), GotoIfTime(), IFTIME()

ExitWhile()

Beendet innerhalb einer While-Schleife deren Ausführung.

ExitWhile()

Mit ExitWhile() kann innerhalb einer While-Schleife die weitere Ausführung abgebrochen werden, unabhängig davon, ob die While-Kondition erfüllt ist oder nicht.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ExitWhile' =- 

[Synopsis]
End a While loop

[Description]
Usage:  ExitWhile()
Exits a While loop, whether or not the conditional has been satisfied.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. While(), EndWhile()

ExtenSpy()

Einen Kanal belauschen und bei Bedarf reinflüstern.

ExtenSpy(Extension[@Context][,Optionen])

ExtenSpy() kann auf Channels zu der angegebenen Extension geschaltet werden um das ein- und ausgehende Audio mitzuhören. Optionen:

b
Nur Channels abhören, die zu einem verbundenen Anruf gehören.
g(grp)
Nur Channels abhören, bei denen in deren Kanal-Variable ${SPYGROUP} die Gruppe grp enthalten ist. ${SPYGROUP} kann eine durch : getrennt Liste von Werten sein.
q
Keinen Ton beim Beginn abspielen.
r([name])
Abgehörte Gespräche werde im Spool-Verzeichnis aufgezeichnet. Bei Bedarf kann mit name ein Dateiname (ohne Erweiterung) eingestellt werden, Default ist chanspy.
v([wert])
Verändert die anfängliche Lautstärke. Die Werte reichen von -4 bis 4.
w
Aktiviert den Flüster-Modus (whisper mode). So kann man in den abgehörten Channel reinflüstern.
W
Aktiviert „private whisper mode“. So kann man zwar in den abgehörten Channel sprechen, diesen aber nicht hören.

Während des Abhörens können folgende Tastenbefehle gegeben werden:

#
Schaltet durch die Lautstärkeeinstellung (-4 bis 4)
*
Schaltet zu einem anderen Channel
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ExtenSpy' =- 

[Synopsis]
Listen to a channel, and optionally whisper into it

[Description]
  ExtenSpy(exten[@context][|options]): This application is used to listen to the
audio from an Asterisk channel. This includes the audio coming in and
out of the channel being spied on. Only channels created by outgoing calls for the
specified extension will be selected for spying. If the optional context is not
supplied, the current channel's context will be used.
  While spying, the following actions may be performed:
    - Dialing # cycles the volume level.
    - Dialing * will stop spying and look for another channel to spy on.
  Options:
    b             - Only spy on channels involved in a bridged call.
    g(grp)        - Match only channels where their ${SPYGROUP} variable is set to
                    contain 'grp' in an optional : delimited list.
    q             - Don't play a beep when beginning to spy on a channel, or speak the
                    selected channel name.
    r[(basename)] - Record the session to the monitor spool directory. An
                    optional base for the filename may be specified. The
                    default is 'chanspy'.
    v([value])    - Adjust the initial volume in the range from -4 to 4. A
                    negative value refers to a quieter setting.
    w             - Enable 'whisper' mode, so the spying channel can talk to
                    the spied-on channel.
    W             - Enable 'private whisper' mode, so the spying channel can
                    talk to the spied-on channel but cannot listen to that
                    channel.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. ChanSpy(), ZapBarge(), ZapScan(), Monitor()

ExternalIVR()

Startet eine externe IVR-Applikation.

ExternalIVR(Shell-Befehl[,Arg1[,Arg2[,...]]])

Forkt den Prozess und startet eine externe IVR[56]-Applikation. Diese Applikation erhält alle DTMF-Ereignisse um darauf reagieren zu können. Sie wird beim Auflegen des Kanals benachrichtigt, muss sich aber selber beenden. Das Kommunikations-Protokoll zwischen Asterisk und der Applikation wird in doc/externalivr.txt beschrieben.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ExternalIVR' =- 

[Synopsis]
Interfaces with an external IVR application

[Description]
  ExternalIVR(command[|arg[|arg...]]): Forks an process to run the supplied command,
and starts a generator on the channel. The generator's play list is
controlled by the external application, which can add and clear entries
via simple commands issued over its stdout. The external application
will receive all DTMF events received on the channel, and notification
if the channel is hung up. The application will not be forcibly terminated
when the channel is hung up.
See doc/externalivr.txt for a protocol specification.

Differenz zum internen Hilfetext in Asterisk 1.2: 

15c15
< See doc/externalivr.txt for a protocol specification.
---
> See doc/README.externalivr for a protocol specification.

FastAGI()

Führt ein AGI-konformes Skript über eine Netzwerkverbindung aus.

FastAGI(agi://hostname[:Port][/script],Argumente)

Führt ein AGI-konformes Skript über das Netzwerk aus. Diese Anwendung ist AGI() sehr ähnlich, außer dass sie ein FastAGI-Skript über eine Netzwerkverbindung ausführt. Der wichtigste Verwendungszweck ist, rechenintensive AGI-Skripte von Remote-Servern ausführen zu lassen und die Startzeiten von AGI-Skripten zu reduzieren (ein FastAGI Skript läuft bereits bevor Asterisk sich mit ihm verbindet, ähnlich FastCGI bei Web-Servern).

FastAGI() versucht, sich direkt zu einem laufenden FastAGI-Programm zu verbinden, welches auf einem spezifizierten Port des Servers hostname bereits auf Verbindungen wartet. Als Standardport wird 4573 benutzt, falls kein anderer angegeben ist. Ist script angegeben, wird es als agi_network_script-Variable an das FastAGI-Programm übergeben. Die in Argumente stehenden Parameter werden an das Programm weitergegeben.

Im Verzeichnis agi/fastagi-test befindet sich ein Beispiel-FastAGI-Skript. Verwenden Sie es als Ansatzpunkt für Ihre eigenen FastAGI-Programme.

Liefert -1, falls die Anwendung ein Auflegen verlangt, oder 0 bei Beendigung ohne Auflegen.

; mit dem Beispiel-FastAGI-Programm "fastagi-test" verbinden, das
; bereits auf dem lokalen Rechner laufen muss:
exten => 123,1,Answer()
exten => 123,n,FastAGI(agi://localhost/fastagi-test)

; mit dem FastAGI-Skript "test" auf einem Host namens "testbox" auf
; Port 9000 verbinden und als Parameter "123" übergeben:
exten => 124,1,Answer()
exten => 124,n,FastAGI(agi://testbox:9000/test,123)

Siehe auch. AGI(), DeadAGI()

Festival()

Verwendet das Sprachsynthese-System (Text-to-speech) Festival, um dem Anrufer Text vorzulesen.

Festival(Text[,Tasten])

Verbindet sich zum lokal laufenden Festival-Server (muss installiert sein), sendet ihm den angegebenen Text und spielt dem Teilnehmer die resultierende Audiodatei vor. Wenn Tasten angegeben wurden und der Anrufer während des Abspielens eine davon drückt, wird der Abspielvorgang beendet und die entsprechende Taste zurückgegeben. Falls als Tasten der Wert any angegeben ist, wird jede Taste erkannt (und an die entsprechende Extension weitergeleitet).

Sie müssen den Festival-Server vor Asterisk starten und die Answer()-Anwendung zum Beantworten des Channels verwenden, bevor Sie Festival() aufrufen.

exten => 123,1,Answer()
exten => 123,n,Festival('Hallo Welt',#)

Alternativ zu der Applikation Festival() kann man auch mit dem System()-Befehl Festivals Programm text2wave aufrufen und die resultierende Audiodatei mit Background() oder Playback() abspielen, etwa so (nur als Beispiel, Verzeichnisse beachten!):

exten => 123,1,Answer()
exten => 123,n,System(echo 'Hallo Welt' | text2wave -o sound.wav -otype wav -)
exten => 123,n,Background(sound)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Festival' =- 

[Synopsis]
Say text to the user

[Description]
  Festival(text[|intkeys]):  Connect to Festival, send the argument, get back the waveform,play it to the user, allowing any given interrupt keys to immediately terminate and return
the value, or 'any' to allow any number back (useful in dialplan)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. contrib/README.festival

Flash()

Flasht einen Zap-Channel.

Flash()

Sendet einen Flash auf einen Zap-Channel. Dies ist nichts weiter als ein Hack für Leute, die Übermittlungen und andere Aktionen, die einen Flash durch ein AGI-Skript benötigen, durchführen möchten.

Liefert bei Erfolg 0 zurück, oder -1, falls der Channel kein Zap-Channel ist.

exten => 123,1,Flash()

Falls Ihnen auf Ihrer Leitung Link-Transfer bereitgestellt wird (typischerweise ein Zusatzdienst), könnten Sie so einen Anruf auf eine andere externe Nummer umleiten:

[macro-link-umleitung]
exten => s,1,Playback(transfer)
exten => s,n,Flash()
exten => s,n,Wait(1)
exten => s,n,SendDTMF(${ARG1})
exten => s,n,Wait(1)
exten => s,n,Hangup()

[externe-apparate]
; eingehende Anrufe auf 6001 auf die externe Nummer 0261123456 umleiten:
exten => 6001,1,Macro(link-umleitung,0261123456)

Es kann dazu nötig sein, die Flash-Dauer (Einstellung flash) in der zapata.conf auf die Vorgabe Ihres Anbieters zu setzen, z.B. flash=200.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Flash' =- 

[Synopsis]
Flashes a Zap Trunk

[Description]
  Flash(): Sends a flash on a zap trunk.  This is only a hack for
people who want to perform transfers and such via AGI and is generally
quite useless oths application will only work on Zap trunks.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

FollowMe()

Follow-Me/Find-Me Funktionalität.

FollowMe(FollowMeID,Optionen)

Bitte lesen die Konfigurationsdatei followme.conf.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'FollowMe' =- 

[Synopsis]
Find-Me/Follow-Me application

[Description]
  FollowMe(followmeid|options):
This application performs Find-Me/Follow-Me functionality for the caller
as defined in the profile matching the <followmeid> parameter in
followme.conf. If the specified <followmeid> profile doesn't exist in
followme.conf, execution will be returned to the dialplan and call
execution will continue at the next priority.

  Options:
    s    - Playback the incoming status message prior to starting the follow-me step(s)
    a    - Record the caller's name so it can be announced to the callee on each step
    n    - Playback the unreachable status message if we've run out of steps to reach the
           or the callee has elected not to be reachable.
Returns -1 on hangup

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

ForkCDR()

Erstellt ein zusätzliches CDR aus dem aktuellen Anruf.

ForkCDR()

Erstellt für den Rest des aktuellen Anrufs einen zusätzlichen Call Detail Record, um die in Rechnung zu stellende Gesprächszeit von der Gesamtdauer des Anrufs zu unterscheiden.

exten => 123,n,ForkCDR()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ForkCDR' =- 

[Synopsis]
Forks the Call Data Record

[Description]
  ForkCDR([options]):  Causes the Call Data Record to fork an additional
cdr record starting from the time of the fork call
If the option 'v' is passed all cdr variables will be passed along also.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. NoCDR(), ResetCDR()

GetCPEID()

Holt die CPE-ID eines ADSI-fähigen Telefons.

GetCPEID()

Holt die CPE-ID und weitere Informationen und zeigt sie auf der Asterisk-Konsole an. Diese Informationen werden häufig benötigt, um die Datei zapata.conf für Operationen bei ADSI-fähigen Telefonen einzurichten.

Liefert beim Auflegen -1 zurück.

exten => 123,1,GetCPEID()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'GetCPEID' =- 

[Synopsis]
Get ADSI CPE ID

[Description]
  GetCPEID: Obtains and displays ADSI CPE ID and other information in order
to properly setup zapata.conf for on-hook operations.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. ADSIProg(), adsi.conf, zapata.conf

Gosub()

Springt zu einer bestimmten Priorität, Extension und einem bestimmten Context (mit der Möglichkeit der Rückkehr).

Gosub([[Context,]Extension,]Priorität)
Gosub(benannte_Priorität)

Springt wie Goto() im Dialplan, erlaubt es dem Unterprogramm aber, mit Return() zurückzukehren.

Gibt 0 zurück oder -1, wenn das Sprungziel ungültig ist.

exten => 123,1,Gosub(cid-setzen)
exten => 123,n,Dial(SIP/${EXTEN})

exten => 123,10(cid-setzen),Set(CALLERID(all)=Apfelmus GmbH <012345678>)
exten => 123,n,Return()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Gosub' =- 

[Synopsis]
Jump to label, saving return address

[Description]
Gosub([[context|]exten|]priority)
  Jumps to the label specified, saving the return address.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. GosubIf(), Goto(), GotoIf(), Return(), Macro()

GosubIf()

Springt bedingt zu der angegebenen Priorität (mit der Möglichkeit der Rückkehr).

GosubIf(Bedingung?PrioWahr:PrioFalsch)

Springt wie GotoIf() unter einer bestimmten Bedingung im Dialplan, erlaubt es dem Unterprogramm aber, mit Return() zurückzukehren.

Gibt 0 zurück oder -1, wenn das Sprungziel ungültig ist.

exten => telcid,1,Set(CALLERID(all)=Apfelmus <0123456780>)
exten => telcid,n,Return()
exten => faxcid,1,Set(CALLERID(all)=Apfelmus <0123456785>)
exten => faxcid,n,Return()

exten => _0.,1,GosubIf($[${CHANNEL:4:2} = 43]?faxcid,1:telcid,1)
exten => _0.,n,Dial(${TRUNK}/${EXTEN:1},,T)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'GosubIf' =- 

[Synopsis]
Conditionally jump to label, saving return address

[Description]
GosubIf(condition?labeliftrue[:labeliffalse])
  If the condition is true, then jump to labeliftrue.  If false, jumps to
labeliffalse, if specified.  In either case, a jump saves the return point
in the dialplan, to be returned to with a Return.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< Conditionally jump to label, saving return address
---
> Jump to label, saving return address

Siehe auch. Gosub(), Goto(), GotoIf(), Return(), Macro()

Goto()

Springt zu einer bestimmten Priorität, Extension und einem bestimmten Context.

Goto([[Context,]Extension,]Priorität)
Goto(benannte_Priorität)

Übergibt die Kontrolle des aktuellen Channels ohne Möglichkeit der Rückkehr an die spezifizierte Priorität und setzt optional Extension und Context des Ziels.

Optional können Sie die Anwendung dazu benutzen, zu der durch den Parameter benannte_Priorität angegebenen Priorität (also Priorität mit Label) zu gelangen. Benannte Prioritäten funktionieren ausschließlich in der aktuellen Extension.

Liefert immer 0 zurück, auch falls der gegebene Context, die geg. Extension oder Priorität nicht gültig sind.

exten => 123,1,Answer()
exten => 123,2,Set(COUNT=1)
exten => 123,3,SayNumber(${COUNT})
exten => 123,4,Set(COUNT=$[ ${COUNT} + 1 ])
exten => 123,5,Goto(3)

; das gleiche mit einer benannten Priorität:
exten => 124,1,Answer()
exten => 124,2,Set(COUNT=1)
exten => 124,3(ansage),SayNumber(${COUNT})
exten => 124,4,Set(COUNT=$[ ${COUNT} + 1 ])
exten => 124,5,Goto(ansage)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Goto' =- 

[Synopsis]
Jump to a particular priority, extension, or context

[Description]
  Goto([[context|]extension|]priority): This application will cause the
calling channel to continue dialplan execution at the specified priority.
If no specific extension, or extension and context, are specified, then this
application will jump to the specified priority of the current extension.
  If the attempt to jump to another location in the dialplan is not successful,
then the channel will continue at the next priority of the current extension.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. GotoIf(), GotoIfTime(), Gosub(), GosubIf(), Macro()

GotoIf()

Springt bedingt zu der angegebenen Priorität,

GotoIf(Bedingung?PrioWahr:PrioFalsch)

Schickt den Anruf ohne Möglichkeit der Rückkehr an die Priorität PrioWahr, falls die Bedingung wahr ist oder zu PrioFalsch, falls sie falsch ist. Entweder PrioWahr oder PrioFalsch können ausgelassen werden (dann wird ggf. mit der nächsten Priorität weitergemacht), aber nicht beide (und nicht der Doppelpunkt!).

Eine Priorität ist hier eines der Folgenden:

  • eine Priorität, z.B. 10
  • eine Extension und eine Priorität, z.B. 123,10
  • Context, Extension und Priorität, z.B. incoming,123,10
  • eine benannte Priorität innerhalb der gleichen Extension, z.B. ok
exten => 123,1,GotoIf($[ ${test} = 5 ]?ok:nein)
exten => 123,10(ok),Playback(tt-monkeys)
exten => 123,20(nein),Playback(tt-weasels)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'GotoIf' =- 

[Synopsis]
Conditional goto

[Description]
  GotoIf(condition?[labeliftrue]:[labeliffalse]): This application will cause
the calling channel to jump to the specified location in the dialplan based on
the evaluation of the given condition. The channel will continue at
'labeliftrue' if the condition is true, or 'labeliffalse' if the condition is
false. The labels are specified with the same syntax as used within the Goto
application.  If the label chosen by the condition is omitted, no jump is
performed, but execution continues with the next priority in the dialplan.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Goto(), GotoIfTime(), Gosub(), GosubIf(), Macro()

GotoIfTime()

Verzweigt bedingt, abhängig von Zeit und Tag.

GotoIfTime(Zeit,Wochentag,Monatstag,Monat?[[Context,]Extension,]Prio)

Verzweigt zu der angegebenen Priorität, falls die aktuelle Zeit in das angegebene Muster fällt. Jedes Element kann auch als * (für immer) oder als Spanne (mit -) definiert werden.

Die Parameter zu dieser Anwendung sind:

Uhrzeit-Spanne
Zeitintervall, im 24-Stunden-Format mit Minuten, z.B. 9:00-17:00
Wochentag
Wochentage (mon, tue, wed, thu, fri, sat, sun), z.B. mon-fri
Monatstag
Tag des Monats (1-31), z.B. 1-15
Monat
Monate (jan, feb, mar, apr, mai, jun, jul, aug, sep, oct, nov, dec), z.B. apr-oct
; Während der Öffnungszeiten zum Context incoming-geoeffnet springen.
; Wir haben montags-freitags von 9 bis 18 Uhr geöffnet:
exten => s,1,GotoIfTime(09:00-17:59,mon-fri,*,*?incoming-geoeffnet,s,1)
; außerdem samstags von 9 bis 12:
exten => s,n,GotoIfTime(09:00-11:59,sat,*,*?incoming-geoeffnet,s,1)
; Außerhalb der Öffnungszeiten zum Context incoming-geschlossen:
exten => s,n,Goto(incoming-geschlossen,s,1)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'GotoIfTime' =- 

[Synopsis]
Conditional Goto based on the current time

[Description]
  GotoIfTime(<times>|<weekdays>|<mdays>|<months>?[[context|]exten|]priority):
This application will have the calling channel jump to the specified location
in the dialplan if the current time matches the given time specification.

Differenz zum internen Hilfetext in Asterisk 1.2: 

9,10c9,12
< This application will have the calling channel jump to the specified location
< in the dialplan if the current time matches the given time specification.
---
> This application will have the calling channel jump to the speicified location
> int the dialplan if the current time matches the given time specification.
> Further information on the time specification can be found in examples
> illustrating how to do time-based context includes in the dialplan.

Siehe auch. GotoIf(), ExecIfTime(), IFTIME()

Hangup()

Legt den aktuellen Channel auf.

Hangup()

Legt den aktuellen Channel bedingungslos auf.

Liefert stets -1 zurück.

exten => 123,1,Answer()
exten => 123,n,Playback(vm-goodbye)
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Hangup' =- 

[Synopsis]
Hang up the calling channel

[Description]
  Hangup([causecode]): This application will hang up the calling channel.
If a causecode is given the channel's hangup cause will be set to the given
value.

Differenz zum internen Hilfetext in Asterisk 1.2: 

8,10c8
<   Hangup([causecode]): This application will hang up the calling channel.
< If a causecode is given the channel's hangup cause will be set to the given
< value.
---
>   Hangup(): This application will hang up the calling channel.

Siehe auch. Answer()

IAX2Provision()

Versorgt eine anrufende IAXy-Einheit.

IAX2Provision([Template])

Stellt einer anrufende IAXy-Einheit die Vorlage Template bereit. Ist keine Vorlage angegeben, wird die Standard-Vorlage benutzt. IAXy-Versorgungsvorlagen sind in der Konfigurationsdatei iaxprov.conf definiert.

Liefert 0 bei Erfolg oder -1 bei einem Fehler.

exten => 123,1,IAX2Provision(default)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'IAX2Provision' =- 

[Synopsis]
Provision a calling IAXy with a given template

[Description]
  IAX2Provision([template]): Provisions the calling IAXy (assuming
the calling entity is in fact an IAXy) with the given template or
default if one is not specified.  Returns -1 on error or 0 on success.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

ImportVar()

Setzt eine Variable basierend auf einer Channelvariable eines anderen Channels.

ImportVar(NeueVariable=Channel,Variable)

Setzt die Variable NeueVariable auf den Wert von Variable des angegebenen Channels. Falls NeueVariable mit dem Zeichen _ beginnt, wird einfache Vererbung angenommen. Falls NeueVariable mit __ beginnt, wird unbeschränkte Vererbung angenommen.

; Caller-ID vom Channel Zap/1 importieren:
exten => 123,1,Answer()
exten => 123,n,ImportVar(cid=Zap/1,CALLERID)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ImportVar' =- 

[Synopsis]
Import a variable from a channel into a new variable

[Description]
  ImportVar(newvar=channelname|variable): This application imports a variable
from the specified channel (as opposed to the current one) and stores it as
a variable in the current channel (the channel that is calling this
application). Variables created by this application have the same inheritance
properties as those created with the Set application. See the documentation for
Set for more information.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Set()

Log()

Sendet den angegebenen Text an den angegebenen Log-Level.

Log(Level,Nachricht)

Gibt die angegebene Nachricht an den entsprechenden Log-Level weiter.

Level
Einer der folgenden Ziellevel: ERROR, WARNING, NOTICE, DEBUG, VERBOSE, DTMF
Nachricht
Zu loggende Nachricht
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Log' =- 

[Synopsis]
Send arbitrary text to a selected log level

[Description]
Log(<level>|<message>)
  level must be one of ERROR, WARNING, NOTICE, DEBUG, VERBOSE, DTMF

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. NoOp(), DumpChan(), Verbose()

LookupBlacklist()

Schlägt die Caller-ID-Nummer in der lokalen Blacklist-Datenbank in der AstDB nach.

LookupBlacklist([Optionen])

Sucht die Caller-ID-Nummer (/-Name) des aktiven Channels in der AstDB in der Familie blacklist. Wenn die Option j (jump) angegeben ist, die Nummer gefunden wird und eine Priorität n+101 existiert, geht die Ausführung bei dieser Priorität weiter. Wird auf dem Channel keine Caller-ID empfangen, tut die Anwendung nichts.

Die Applikation setzt auch die Channelvariable LOOKUPBLSTATUS auf FOUND (gefunden) oder NOTFOUND (nicht gefunden).

Um der Blacklist Einträge hinzuzufügen, geben Sie im CLI database put blacklist "Nummer" "1", bzw. database del blacklist "Nummer" zum Löschen oder database show blacklist für eine Auflistung ein.

; Nummern aus der Schwarzen Liste nicht zulassen,
; andernfalls die Nummer in der Variablen ${PETER} wählen:
exten => 123,1,Answer()
exten => 123,n,LookupBlacklist()
exten => 123,n,GotoIf($["${LOOKUPBLSTATUS}" = "FOUND"]?black,1)
exten => 123,n,Dial(${PETER},30)

exten => black,1,Playback(tt-allbusy)
exten => black,n,Hangup()

Die Applikation LookupBlacklist() könnte folgendermaßen ersetzt werden:

exten => 123,1,Macro(blacklist,${CALLERID(num)})
exten => 123,n,Dial(IAX2/benutzer:passwort@beispiel.de/500)

[macro-blacklist]
; Aufruf: Macro(blacklist,${CALLERID(num)})
exten => s,1,GotoIf(${DB_EXISTS(blacklist/${ARG1})}?black)
exten => s,10(black),NoOp(Nummer ${ARG1} ist auf der Blacklist)
exten => s,n,Busy(5)
exten => s,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'LookupBlacklist' =- 

[Synopsis]
Look up Caller*ID name/number from blacklist database

[Description]
  LookupBlacklist(options): Looks up the Caller*ID number on the active
channel in the Asterisk database (family 'blacklist').  
The option string may contain the following character:
 'j' -- jump to n+101 priority if the number/name is found in the blacklist
This application sets the following channel variable upon completion:
 LOOKUPBLSTATUS  The status of the Blacklist lookup as a text string, one of
  FOUND | NOTFOUND
Example: exten => 1234,1,LookupBlacklist()

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

LookupCIDName()

Sucht einen Caller-ID-Namen in der AstDB.

LookupCIDName()

Schlägt die Caller-ID-Nummer des aktiven Channels in der AstDB (Familie cidname) nach und setzt den Caller-ID-Namen - wenn vorhanden - auf den gespeicherten Wert. Diese Anwendung tut nichts, wenn auf dem Channel keine Caller-ID empfangen wird. LookupCIDName() kann nützlich sein, wenn Sie nur eine Caller-ID-Nummer, aber keinen -Namen empfangen, oder wenn Sie den Caller-ID-Namen für einige eingehende Anrufe ändern möchten.

Liefert stets 0 zurück.

Um der Liste Einträge hinzuzufügen, geben Sie im CLI database put cidname "Nummer" "Name", bzw. database del cidname "Nummer" zum Löschen oder database show cidname für eine Auflistung ein.

exten => 123,1,Answer()
exten => 123,n,LookupCIDName()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'LookupCIDName' =- 

[Synopsis]
Look up CallerID Name from local database

[Description]
  LookupCIDName: Looks up the Caller*ID number on the active
channel in the Asterisk database (family 'cidname') and sets the
Caller*ID name.  Does nothing if no Caller*ID was received on the
channel.  This is useful if you do not subscribe to Caller*ID
name delivery, or if you want to change the names on some incoming
calls.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Macro()

Ruft ein zuvor definiertes Makro auf.

Macro(macroname[,Arg1[,Arg2[,...]]])

Führt ein im Context macro-macroname definiertes Makro aus, indem es zur s-Extension dieses Contextes springt und nach der Ausführung des Makros zurückkehrt.

Die angerufene Extension, Context und Priorität sind innerhalb des Makros in ${MACRO_EXTEN}, ${MACRO_CONTEXT} und ${MACRO_PRIORITY} verfügbar. Die Parameter Arg1, Arg2 ... werden im MakroContext zu ${ARG1}, ${ARG2} usw.

Macro() liefert -1 zurück, falls irgendein Schritt des Makros -1 zurückliefert, sonst 0. Falls bei Beendigung des Ablaufs ${MACRO_OFFSET} gesetzt ist, versucht die Anwendung bei Priorität n+1+MACRO_OFFSET fortzufahren, falls ein solcher Schritt existiert, sonst bei n+1.

Falls die Goto()-Anwendung aus dem Makro heraus aufgerufen wird, wird das Makro enden und die Kontrolle an das Ziel von Goto() gehen.

; ein Makro definieren, das vom übergebenen Wert runterzählt:
[macro-countdown]
exten => s,1,Set(COUNT=${ARG1})
exten => s,n,While($[ ${COUNT} > 0])
exten => s,n,SayNumber(${COUNT})
exten => s,n,Set(COUNT=$[ ${COUNT} - 1 ])
exten => s,n,EndWhile()

[default]
exten => 123,1,Macro(countdown,3)   ; das Makro "countdown" mit ARG1=3 aufrufen
exten => 124,1,Macro(countdown,5)   ; das Makro "countdown" mit ARG1=5 aufrufen
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Macro' =- 

[Synopsis]
Macro Implementation

[Description]
  Macro(macroname|arg1|arg2...): Executes a macro using the context
'macro-<macroname>', jumping to the 's' extension of that context and
executing each step, then returning when the steps end. 
The calling extension, context, and priority are stored in ${MACRO_EXTEN}, 
${MACRO_CONTEXT} and ${MACRO_PRIORITY} respectively.  Arguments become
${ARG1}, ${ARG2}, etc in the macro context.
If you Goto out of the Macro context, the Macro will terminate and control
will be returned at the location of the Goto.
If ${MACRO_OFFSET} is set at termination, Macro will attempt to continue
at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise.
WARNING: Because of the way Macro is implemented (it executes the priorities
         contained within it via sub-engine), and a fixed per-thread
         memory stack allowance, macros are limited to 7 levels
         of nesting (macro calling macro calling macro, etc.); It
         may be possible that stack-intensive applications in deeply nested macros
         could cause asterisk to crash earlier than this limit.

Differenz zum internen Hilfetext in Asterisk 1.2: 

22,23c22,23
<          may be possible that stack-intensive applications in deeply nested macros
<          could cause asterisk to crash earlier than this limit.
---
>          may be possible that stack-intensive applications in deeply nested
>          macros could cause asterisk to crash earlier than this limit.

Siehe auch. Goto(), Gosub()

MacroExclusive()

Ruft ein zuvor definiertes Makro auf. Aber nur eins zu einem gegebenen Zeitpunkt.

MacroExclusive(macroname[,Arg1[,Arg2[,...]]])

Führt - wie Macro() - ein im Context macro-macroname definiertes Makro aus (und nur das eine!), indem es zur s-Extension dieses Contextes springt und nach der Ausführung des Makros zurückkehrt. Wird das Macro während es bereits läuft an einer anderen Stelle des Dialplanes noch einmal aufgerufen, so muss diese Instanz warten, bis das erste Macro fertig abgearbeitet ist.

Die angerufene Extension, Context und Priorität sind innerhalb des Makros in ${MACRO_EXTEN}, ${MACRO_CONTEXT} und ${MACRO_PRIORITY} verfügbar. Die Parameter Arg1, Arg2 ... werden im MakroContext zu ${ARG1}, ${ARG2} usw.

Macro() liefert -1 zurück, falls irgendein Schritt des Makros -1 zurückliefert, sonst 0. Falls bei Beendigung des Ablaufs ${MACRO_OFFSET} gesetzt ist, versucht die Anwendung bei Priorität n+1+MACRO_OFFSET fortzufahren, falls ein solcher Schritt existiert, sonst bei n+1.

Falls die Goto()-Anwendung aus dem Makro heraus aufgerufen wird, wird das Makro enden und die Kontrolle an das Ziel von Goto() gehen.

; ein Makro definieren, das vom übergebenen Wert runterzählt:
[macro-countdown]
exten => s,1,Set(COUNT=${ARG1})
exten => s,n,While($[ ${COUNT} > 0])
exten => s,n,SayNumber(${COUNT})
exten => s,n,Set(COUNT=$[ ${COUNT} - 1 ])
exten => s,n,EndWhile()

[default]
exten => 123,1,MacroExclusive(countdown,3)   ; das Makro "countdown" mit ARG1=3 aufrufen
exten => 124,1,MacroExclusive(countdown,5)   ; das Makro "countdown" mit ARG1=5 aufrufen
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MacroExclusive' =- 

[Synopsis]
Exclusive Macro Implementation

[Description]
  MacroExclusive(macroname|arg1|arg2...):
Executes macro defined in the context 'macro-macroname'
Only one call at a time may run the macro.
(we'll wait if another call is busy executing in the Macro)
Arguments and return values as in application Macro()

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. Macro(), Goto(), Gosub(), doc/macroexclusive.txt

MacroExit()

Bricht die Abarbeitung eines Macros ab.

MacroExit()

Kann innerhalb eines Macros dazu benutzt werden das selbige vorzeigtig zu beenden.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MacroExit' =- 

[Synopsis]
Exit From Macro

[Description]
  MacroExit():
Causes the currently running macro to exit as if it had
ended normally by running out of priorities to execute.
If used outside a macro, will likely cause unexpected
behavior.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Macro()

MacroIf()

Startet verschiedene Macros in Abhängigkeit einer Expression.

MacroIf(Ausdruck?MacronameA[,argA1][:MacronameB[,argB1]])

Ruft bedingt ein Makro auf, wobei ein Ausdruck im Stil von GotoIf() ausschlaggebend ist.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MacroIf' =- 

[Synopsis]
Conditional Macro Implementation

[Description]
  MacroIf(<expr>?macroname_a[|arg1][:macroname_b[|arg1]])
Executes macro defined in <macroname_a> if <expr> is true
(otherwise <macroname_b> if provided)
Arguments and return values as in application macro()

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Macro(), GotoIf(), GosubIf()

MailboxExists()

Verzweigt bedingt, falls die angegebene Voicemailbox existiert.

MailboxExists(Mailbox[@Context][,Optionen])

Prüft, ob die durch Mailbox angegebene Voicemailbox existiert. Sie können zusätzlich einen Voicemail-Context Context übergeben, wenn die Mailbox nicht zum Standard-Voicemail-Context gehört.

Setzt die Channelvariable VMBOXEXISTSSTATUS auf SUCCESS (Erfolg, Mailbox vorhanden) oder FAILED (fehlgeschlagen, Mailbox nicht vorhanden).

Mit der Option j wird bei vorhandener Mailbox zur Priorität n+101 gesprungen.

exten => 123,1,Answer()
exten => 123,n,MailboxExists(123@default)
exten => 123,n,Goto(box-${VMBOXEXISTSSTATUS})
exten => 123,10(box-SUCCESS),Voicemail(123,u)
exten => 123,20(box-FAILED),Playback(tut-uns-leid)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MailboxExists' =- 

[Synopsis]
Check to see if Voicemail mailbox exists

[Description]
  MailboxExists(mailbox[@context][|options]): Check to see if the specified
mailbox exists. If no voicemail context is specified, the 'default' context
will be used.
  This application will set the following channel variable upon completion:
    VMBOXEXISTSSTATUS - This will contain the status of the execution of the
                        MailboxExists application. Possible values include:
                        SUCCESS | FAILED

  Options:
    j - Jump to priority n+101 if the mailbox is found.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. VMCOUNT()

MeetMe()

Nimmt den Anrufer in eine MeetMe-Konferenz auf.

MeetMe([KonferenzNr][,Optionen[,PIN]])

Verbindet den Anrufer auf dem aktuellen Channel zu einer MeetMe-Konferenz, angegeben durch den Parameter KonferenzNr. Ohne Angabe der Konferenznummer wird der Teilnehmer zur Eingabe derselben aufgefordert.

Wird als PIN-Parameter die PIN-Nummer der Konferenz (statisch in meetme.conf oder dynamisch vom Ersteller festgelegt) übergeben, so wird der Anrufer direkt in die Konferenz geleitet. Ansonsten muss der Anrufer die PIN eingeben, um beitreten zu können.

[Wichtig]Wichtig

Damit MeetMe-Konferenzen funktionieren, muss ein passendes Zaptel-Interface installiert sein. Alternativ kann auch der ztdummy-Treiber für Timing-Zwecke verwendet werden.

MeetMe-Konferenzen benutzen offenbar intern immer den uLaw-Codec, je mehr Teilnehmer in einer Konferenz andere Codecs wie GSM verwenden, desto mehr Rechenleistung wird für die Umkodierung benötigt.

Die Optionen können sich aus folgenden Zeichen zusammensetzen:

a
Aktiviert den Administrator-Modus.
A
Markiert den eintretenden User als besonderen Teilnehmer (siehe w und x).
b
Startet das in ${MEETME_AGI_BACKGROUND} spezifizierte AGI-Skript, standardmäßig conf-background.agi. (Funktioniert nur dann korrekt, wenn alle Kanäle in einer Konferenz Zap-Kanäle sind.) Das Skript erhält alle DTMF-Tanstendrücke, wodurch die Kombination mit Optionen, die auch das Abfangen von Tasten zur Folge haben (p), nicht möglich ist.
c
Kündigt beim Betreten die Zahl der Teilnehmer an.
d
Legt dynamisch einen neuen Konferenzraum an.
D
Legt dynamisch einen neuen Konferenzraum an, wobei die Festlegung der PIN verlangt wird. (Wenn der User keine PIN will, muss er # drücken.)
e
Wählt eine leere Konferenz aus.
E
Wählt eine leere Konferenz aus, die keine PIN verlangt.
i
Kündigt Betreten oder Verlassen eines Teilnehmers an (nur mit Zap-Kanälen).
m
Aktiviert den Monitor-Modus (nur hören, nicht sprechen).
M
Aktiviert Wartemusik (Music on Hold), wenn nur ein Teilnehmer in der Konferenz ist.
p
Ermöglicht es dem Teilnehmer, die Konferenz durch Drücken von # zu verlassen.
P
Fragt immer nach der PIN, auch wenn sie hier im Befehl angegeben ist.
q
Aktiviert den ruhigen Modus (spielt keine Eintritts-/Austrittsklänge ab).
r
Zeichnet eine Konferenz auf. Datei: ${MEETME_RECORDINGFILE}, Format: ${MEETME_RECORDINGFORMAT}. Der Standard-Dateiname lautet meetme-conf-rec-${KonferenzNr}-${UniqueID}, wobei UniqueID eine einmalige ID ist. Das Standardformat ist wav. (Funktioniert nur mit Zap-Kanälen)
s
Wechselt beim Drücken von * ins (Teilnehmer- oder Administrator-)Menü.
t
Aktiviert den Nur-Sprechen-Modus (nur reden, nicht hören).
T
Aktiviert die Sprecher-Erkennung (wird zum Manager-Inferface gesendet und in der MeetMe-Liste im CLI angezeigt).
v
Aktiviert den Video-Modus (bisher ohne Funktion).
w
Wartet, bis ein gekennzeichneter Teilnehmer (siehe A) die Konferenz betritt. Bis dahin hören alle Teilnehmer Wartemusik.
x
Schließt die Konferenz, wenn sie vom letzten gekennzeichneten Teilnehmer (siehe A) verlassen wird.
X
Ermöglicht es dem Teilnehmer, die Konferenz durch Eingabe einer einziffrigen Extension im Context ${MEETME_EXIT_CONTEXT} zu verlassen, oder durch Eingabe der Nummer einer Extension des aktuellen Contexts, falls diese Variable nicht definiert ist.

Die Option X funktioniert nicht zusammen mit p oder s.

Verwenden Sie e (oder E) zusammen mit d (oder D), um dynamisch einen neuen Konferenzraum zu eröffnen, wobei Asterisk automatisch die KonferenzNr festlegt. Sie müssen dann natürlich den anderen Teilnehmern die Nummer mitteilen oder entsprechende Dialplan-Logik einsetzen.

[Anmerkung]Anmerkung

Mit d oder D werden dynamisch Konferenzräume angelegt, in der meetme.conf können sie statisch definiert werden.

exten => 123,1,Answer()
; den Anrufer in Konferenzraum 333 schicken (mit der PIN 1234):
exten => 123,n,MeetMe(333,DpM,1234)

Siehe auch. MeetMeAdmin(), MeetMeCount()

Befehle im CLI. Diese Befehle stehen im CLI zur Verfügung, um MeetMe-Konferenzen zu verwalten (dabei ist die TeilnehmerNr die in der Liste angezeigte Nummer des Teilnehmers):

MeetMe
Listet alle Konferenzen auf.
MeetMe list KonferenzNr
Listet die Teilnehmer einer Konferenz auf.
MeetMe kick KonferenzNr TeilnehmerNr
Wirft einen Teilnehmer aus der Konferenz.
MeetMe kick KonferenzNr
Wirft alle Teilnehmer aus der Konferenz.
MeetMe lock KonferenzNr
Sperrt eine Konferenz, so dass keine Teilnehmer mehr aufgenommen werden.
MeetMe unlock KonferenzNr
Hebt eine Konferenz-Sperre (s.o.) wieder auf.
MeetMe mute KonferenzNr TeilnehmerNr
Schaltet einen Teilnehmer stumm.
MeetMe unmute KonferenzNr TeilnehmerNr
Hebt die Stummschaltung eines Teilnehmers (s.o.) wieder auf.
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MeetMe' =- 

[Synopsis]
MeetMe conference bridge

[Description]
  MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe
conference.  If the conference number is omitted, the user will be prompted
to enter one.  User can exit the conference by hangup, or if the 'p' option
is specified, by pressing '#'.
Please note: The Zaptel kernel modules and at least one hardware driver (or ztdummy)
             must be present for conferencing to operate properly. In addition, the chan_zap
             channel driver must be loaded for the 'i' and 'r' options to operate at all.

The option string may contain zero or more of the following characters:
      'a' -- set admin mode
      'A' -- set marked mode
      'b' -- run AGI script specified in ${MEETME_AGI_BACKGROUND}
             Default: conf-background.agi  (Note: This does not work with
             non-Zap channels in the same conference)
      'c' -- announce user(s) count on joining a conference
      'd' -- dynamically add conference
      'D' -- dynamically add conference, prompting for a PIN
      'e' -- select an empty conference
      'E' -- select an empty pinless conference
      'i' -- announce user join/leave with review
      'I' -- announce user join/leave without review
      'l' -- set listen only mode (Listen only, no talking)
      'm' -- set initially muted
      'M' -- enable music on hold when the conference has a single caller
      'o' -- set talker optimization - treats talkers who aren't speaking as
             being muted, meaning (a) No encode is done on transmission and
             (b) Received audio that is not registered as talking is omitted
             causing no buildup in background noise
      'p' -- allow user to exit the conference by pressing '#'
      'P' -- always prompt for the pin even if it is specified
      'q' -- quiet mode (don't play enter/leave sounds)
      'r' -- Record conference (records as ${MEETME_RECORDINGFILE}
             using format ${MEETME_RECORDINGFORMAT}). Default filename is
             meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is
             wav.
      's' -- Present menu (user or admin) when '*' is received ('send' to menu)
      't' -- set talk only mode. (Talk only, no listening)
      'T' -- set talker detection (sent to manager interface and meetme list)
      'w[(<secs>)]'
          -- wait until the marked user enters the conference
      'x' -- close the conference when last marked user exits
      'X' -- allow user to exit the conference by entering a valid single
             digit extension ${MEETME_EXIT_CONTEXT} or the current context
             if that variable is not defined.
      '1' -- do not play message when first person enters

Differenz zum internen Hilfetext in Asterisk 1.2: 

8,11c8,11
<   MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe
< conference.  If the conference number is omitted, the user will be prompted
< to enter one.  User can exit the conference by hangup, or if the 'p' option
< is specified, by pressing '#'.
---
>   MeetMe([confno][,[options][,pin]]): Enters the user into a specified MeetMe conference.
> If the conference number is omitted, the user will be prompted to enter
> one. 
> User can exit the conference by hangup, or if the 'p' option is specified, by pressing '#'.
20,21c20,21
<              Default: conf-background.agi  (Note: This does not work with
<              non-Zap channels in the same conference)
---
>              Default: conf-background.agi
>              (Note: This does not work with non-Zap channels in the same conference)
27,30c27,28
<       'i' -- announce user join/leave with review
<       'I' -- announce user join/leave without review
<       'l' -- set listen only mode (Listen only, no talking)
<       'm' -- set initially muted
---
>       'i' -- announce user join/leave
>       'm' -- set monitor only mode (Listen only, no talking)
32,35d29
<       'o' -- set talker optimization - treats talkers who aren't speaking as
<              being muted, meaning (a) No encode is done on transmission and
<              (b) Received audio that is not registered as talking is omitted
<              causing no buildup in background noise
41,42c35
<              meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is
<              wav.
---
>              meetme-conf-rec-${CONFNO}-${UNIQUEID} and the default format is wav.
52d44
<       '1' -- do not play message when first person enters

MeetMeAdmin()

Administration von MeetMe-Konferenzen

MeetMeAdmin(KonferenzNr,Befehl[,TeilnehmerNr])

Führt den angegebenen MeetMe-Administrationsbefehl in der angegebenen Konferenz aus. Der Befehl kann einer der folgenden sein (Die TeilnehmerNr wird nur für den Befehl k benötigt.):

K
Wirft alle Teilnehmer aus der Konferenz.
k
Wirft den Teilnehmer mit der angegebenen TeilnehmerNr aus der Konferenz
e
Wirft den letzten Teilnehmer, der sich zu der Konferenz verbunden hat, raus
L
Sperrt die Konferenz (d.h. keine neuen Teilnehmer)
l
Entsperrt die Konferenz.
M
Schaltet die Konferenz für einen User stumm.
m
Hebt die Stummschaltung (durch M) auf
N
Schaltet alle Teilnehmer außer dem Administrator stumm
n
Hebt die Stummschaltung (durch N) auf
; Konferenz 333 fuer den User 3 stummschalten:
exten => 123,1,MeetMeAdmin(333,M,3)

; Teilnehmer 3 aus der Konferenz 333 kicken:
exten => 123,1,MeetMeAdmin(333,k,3)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MeetMeAdmin' =- 

[Synopsis]
MeetMe conference Administration

[Description]
  MeetMeAdmin(confno,command[,user]): Run admin command for conference
      'e' -- Eject last user that joined
      'k' -- Kick one user out of conference
      'K' -- Kick all users out of conference
      'l' -- Unlock conference
      'L' -- Lock conference
      'm' -- Unmute one user
      'M' -- Mute one user
      'n' -- Unmute all users in the conference
      'N' -- Mute all non-admin users in the conference
      'r' -- Reset one user's volume settings
      'R' -- Reset all users volume settings
      's' -- Lower entire conference speaking volume
      'S' -- Raise entire conference speaking volume
      't' -- Lower one user's talk volume
      'T' -- Raise one user's talk volume
      'u' -- Lower one user's listen volume
      'U' -- Raise one user's listen volume
      'v' -- Lower entire conference listening volume
      'V' -- Raise entire conference listening volume

Differenz zum internen Hilfetext in Asterisk 1.2: 

14,27c14,17
<       'm' -- Unmute one user
<       'M' -- Mute one user
<       'n' -- Unmute all users in the conference
<       'N' -- Mute all non-admin users in the conference
<       'r' -- Reset one user's volume settings
<       'R' -- Reset all users volume settings
<       's' -- Lower entire conference speaking volume
<       'S' -- Raise entire conference speaking volume
<       't' -- Lower one user's talk volume
<       'T' -- Raise one user's talk volume
<       'u' -- Lower one user's listen volume
<       'U' -- Raise one user's listen volume
<       'v' -- Lower entire conference listening volume
<       'V' -- Raise entire conference listening volume
---
>       'm' -- Unmute conference
>       'M' -- Mute conference
>       'n' -- Unmute entire conference (except admin)
>       'N' -- Mute entire conference (except admin)

Siehe auch. MeetMe(), MeetMeCount()

MeetMeCount()

Zählt die Teilnehmer einer MeetMe-Konferenz.

MeetMeCount(KonferenzNr[,Variablenname])

Spielt die Anzahl der Teilnehmer in der MeetMe-Konferenz ab. Falls eine Variable angegeben ist, wird der Abspielvorgang übersprungen und die Anzahl in diese Variable geschrieben.

Liefert bei Erfolg 0 zurück, bei einem Fehler -1

Zählt die Teilnehmer in Konferenz 501, und weist diese Zahl ${COUNT} zu.

; die Teilnehmerzahl der Konferenz 333 in ${anzahl} speichern:
exten => 333,1,MeetMeCount(123,anzahl)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MeetMeCount' =- 

[Synopsis]
MeetMe participant count

[Description]
  MeetMeCount(confno[|var]): Plays back the number of users in the specified
MeetMe conference. If var is specified, playback will be skipped and the value
will be returned in the variable. Upon app completion, MeetMeCount will hangup
the channel, unless priority n+1 exists, in which case priority progress will
continue.
A ZAPTEL INTERFACE MUST BE INSTALLED FOR CONFERENCING FUNCTIONALITY.

Differenz zum internen Hilfetext in Asterisk 1.2: 

10,12c10,11
< will be returned in the variable. Upon app completion, MeetMeCount will hangup
< the channel, unless priority n+1 exists, in which case priority progress will
< continue.
---
> will be returned in the variable. Upon app completion, MeetMeCount will hangup the
> channel, unless priority n+1 exists, in which case priority progress will continue.

Siehe auch. MeetMe(), MeetMeAdmin()

Milliwatt()

Erzeugt einen 1000-Hz-Ton.

Milliwatt()

Erzeugt einen konstanten 1000-Hz-Ton bei 0 dbm (u-law). Diese Anwendung wird häufig verwendet, um die Audioeigenschaften eines bestimmten Channels zu testen. Allerdings ist die Bezeichnung etwas irreführend, sinnvoller schiene „Kilohertz()“.

; einen 1000-Hz-Ton erzeugen:
exten => 123,1,Milliwatt()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Milliwatt' =- 

[Synopsis]
Generate a Constant 1000Hz tone at 0dbm (mu-law)

[Description]
Milliwatt(): Generate a Constant 1000Hz tone at 0dbm (mu-law)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Echo()

MixMonitor()

Schneidet das Gespräch auf dem aktuellen Channel mit (eine Datei)

MixMonitor(Basisname.Format[,Optionen[,Befehl]])

Startet die Audio-Aufzeichnung des aktuellen Channels. Dabei werden im Gegensatz zu Monitor() direkt beide Kanäle zu einer Datei gemischt.

Optionen:

a
Hängt den Audio-Stream an eine bestehende Datei an.
b
Startet die Aufnahme erst, nachdem der Anruf mit einem anderen Channel verbunden wurde, also nachdem z.B. durch Dial() tatsächlich ein Gespräch zustande kommt.
v(x)
Passt die eingehende Lautstärke um Faktor x an (-4 bis 4).
V(x)
Passt die ausgehende Lautstärke um Faktor x an (-4 bis 4).
W(x)
Passt die eingehende und ausgehende Lautstärke um Faktor x an (-4 bis 4).

Befehl wird (falls angegeben) nach der Aufzeichnung ausgeführt. Die Variable ${MIXMONITOR_FILENAME} wird auf den Namen der aufgezeichneten Datei gesetzt.

Beachten Sie auch die Hinweise bei Monitor().

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MixMonitor' =- 

[Synopsis]
Record a call and mix the audio during the recording

[Description]
  MixMonitor(<file>.<ext>[|<options>[|<command>]])

Records the audio on the current channel to the specified file.
If the filename is an absolute path, uses that path, otherwise
creates the file in the configured monitoring directory from
asterisk.conf.

Valid options:
 a      - Append to the file instead of overwriting it.
 b      - Only save audio to the file while the channel is bridged.
          Note: does not include conferences.
 v(<x>) - Adjust the heard volume by a factor of <x> (range -4 to 4)
 V(<x>) - Adjust the spoken volume by a factor of <x> (range -4 to 4)
 W(<x>) - Adjust the both heard and spoken volumes by a factor of <x>
         (range -4 to 4)

<command> will be executed when the recording is over
Any strings matching ^{X} will be unescaped to ${X} and 
all variables will be evaluated at that time.
The variable MIXMONITOR_FILENAME will contain the filename used to record.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Monitor()

Monitor()

Schneidet das Gespräch auf dem aktuellen Channel mit (zwei Dateien)

Monitor([Format[,Basisname[,Optionen]]])

Startet die Audio-Aufzeichnung des aktuellen Channels. Die auf dem Channel eingehenden und ausgehenden Sprachpakete werden in seperaten Dateien aufgezeichnet, bis der Channel aufgelegt oder die Überwachung durch die StopMonitor()-Anwendung beendet wird.

Format gibt das Dateiformat (= Dateiendung) an. Ohne Angabe wird wav verwendet.

Basisname gibt den Basis-Dateinamen an (also ohne Dateiendung). Ohne Angabe wird der Name aus dem Channelnamen und einer Nummer zusammengesetzt, z.B. IAX2[foo@bar]-3. Das eingehende Audio wird in Basisname-in.Format, das ausgehende in Basisname-out.Format im Verzeichnis /var/spool/asterisk/monitor/ gespeichert.

Eine der beiden Optionen kann angegeben werden:

m

Nach dem Beenden der Aufnahme werden die Dateien für In und Out in eine gemischt und die ursprünglichen Dateien gelöscht. Dazu muss das Programm soxmix aus dem Paket sox installiert sein[57]. Falls die Variable ${MONITOR_EXEC} definiert ist, wird statt soxmix die angegebene Anwendung ausgeführt, und die ursprünglichen Dateien für beide Richtungen nicht automatisch gelöscht[58]. soxmix (bzw. ${MONITOR_EXEC}) werden drei Parameter übergeben, die beiden Aufzeichnungsdateien und der Dateiname für die zu erstellende gemischte Datei, welcher dem Basisnamen ohne -in/-out entspricht. Ist ${MONITOR_EXEC_ARGS} gesetzt, werd der Inhalt als zusätzliche Argumente an ${MONITOR_EXEC} übergeben.

[Wichtig]Wichtig

Bei der Verwendung von soxmix ist zu beachten, dass soxmix ohne explizite Angabe der Dateitypen diese aus den Endungen erkennt. gsm und wav bereiten z.B. keine Probleme, aber für die Formate alaw und ulaw werden als Endungen al bzw. ul erwartet. Lesen Sie also ggf. die Anleitung von sox (/soxmix) und verwenden Sie ${MONITOR_EXEC_ARGS} oder benutzen Sie ein kleines Wrapper-Skript als ${MONITOR_EXEC}, das die Datei-Parameter liest und soxmix mit Angabe der Typen aufruft.

[Anmerkung]Anmerkung

Wenn Sie eine kombinierte Aufzeichnung wollen, ist meist MixMonitor() die bessere Alternative, da es die Kanäle direkt während der Aufnahme mischt und dadurch Lastspitzen am Ende der Aufzeichnung vermeidet.

b
Startet die Aufnahme erst, nachdem ein Anruf zu einem anderen Channel verbunden wurde, also nachdem z.B. durch Dial() tatsächlich ein Gespräch zustande kommt.

Gibt 0 bei Erfolg zurück oder -1 bei einem Fehler (Überwachungsdateien konnten nicht geöffnet werden, Channel wird bereits aufgezeichnet, ...)

; das Gespräch aufzeichnen und hinterher die Audio-Kanäle mixen:
exten => 123,1,Answer()
exten => 123,n,Monitor(gsm,,mb)
exten => 123,n,SayDigits(123456789)
exten => 123,n,Hangup()

; wie oben aber mit einem eigenen Wrapper, der soxmix aufruft:
exten => 123,1,Answer()
exten => 123,n,Set(MONITOR_EXEC=/pfad/zu/mein-soxmix-wrapper.sh)
exten => 123,n,Monitor(gsm,,mb)
exten => 123,n,SayDigits(123456789)
exten => 123,n,Hangup()
[Wichtig]Wichtig

Stellen Sie vor dem Mitschneiden von Gesprächen sicher, dass die rechtlichen Voraussetzungen erfüllt sind. Meist müssen beide Teilnehmer von der Aufzeichnung informiert sein.[59]

[Anmerkung]Anmerkung

Einige Anwender, die viele (50-500) Gespräche gleichzeitig aufnehmen, berichten von stark verbesserter Performance, wenn man auf eine RAM-Disk aufzeichnet (weniger Such-Operationen) und die Dateien erst nach Gesprächsende auf die Festplatte (lokal oder gemountet) kopiert.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Monitor' =- 

[Synopsis]
Monitor a channel

[Description]
Monitor([file_format[:urlbase]|[fname_base]|[options]]):
Used to start monitoring a channel. The channel's input and output
voice packets are logged to files until the channel hangs up or
monitoring is stopped by the StopMonitor application.
  file_format  optional, if not set, defaults to "wav"
  fname_base   if set, changes the filename used to the one specified.
  options:
    m   - when the recording ends mix the two leg files into one and
          delete the two leg files.  If the variable MONITOR_EXEC is set, the
          application referenced in it will be executed instead of
          soxmix and the raw leg files will NOT be deleted automatically.
          soxmix or MONITOR_EXEC is handed 3 arguments, the two leg files
          and a target mixed file name which is the same as the leg file names
          only without the in/out designator.
          If MONITOR_EXEC_ARGS is set, the contents will be passed on as
          additional arguements to MONITOR_EXEC
          Both MONITOR_EXEC and the Mix flag can be set from the
          administrator interface

    b   - Don't begin recording unless a call is bridged to another channel

Returns -1 if monitor files can't be opened or if the channel is already
monitored, otherwise 0.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. ChangeMonitor(), StopMonitor(), PauseMonitor(), UnpauseMonitor(), MixMonitor(), Record()

Morsecode()

Gibt einen angegebenen String als Morsezeichen aus.

Morsecode(String)

Spielt den angegebenen String als Morsezeichen.

exten => 123,1,Answer()
exten => 123,n,Morsecode("Das Pferd frisst den Hafer nicht.")
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Morsecode' =- 

[Synopsis]
Plays morse code

[Description]
Usage: Morsecode(<string>)
Plays the Morse code equivalent of the passed string.  If the variable
MORSEDITLEN is set, it will use that value for the length (in ms) of the dit
(defaults to 80).  Additionally, if MORSETONE is set, it will use that tone
(in Hz).  The tone default is 800.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

MP3Player()

Gibt eine MP3-Datei oder einen MP3-Stream wieder.

MP3Player(Dateiname)

Verwendet das Programm mpg123[60], um dem Anrufer eine MP3-Datei vorzuspielen. Der angegebene Dateiname kann auch eine URL sein. Der Anrufer kann die Wiedergabe durch Betätigung einer beliebigen Taste stoppen.

Die richtige Version von mpg123 muss installiert sein, damit diese Anwendung ordnungsgemäß funktioniert. Asterisk arbeitet momentan mit der Version 0.59r ideal.

[Anmerkung]Anmerkung

Das häufig als Alternative installierte und auf mpg123 verlinkte Programm mpg321 funktioniert nicht einwandfrei.

Liefert -1, falls aufgelegt wird, sonst 0.

; lokale Datei spielen:
exten => 123,1,Answer()
exten => 123,n,MP3Player(test.mp3)

; Datei von einer URL spielen:
exten => 123,1,Answer()
exten => 123,n,MP3Player(http://server.tld/test.mp3)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MP3Player' =- 

[Synopsis]
Play an MP3 file or stream

[Description]
  MP3Player(location) Executes mpg123 to play the given location,
which typically would be a filename or a URL. User can exit by pressing
any key on the dialpad, or by hanging up.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

MusicOnHold()

Spielt endlos Wartemusik.

MusicOnHold(class)

Spielt die durch class spezifizierte Wartemusik, wie in musiconhold.conf konfiguriert. Wird class nicht angegeben, wird die Standardmusik-Klasse für diesen Channel verwendet. Um die Standardmusik-Klasse für einen Channel einzustellen, können Sie die Funktion MUSICCLASS() verwenden.

Liefert -1, falls aufgelegt wird, ansonsten wird sie endlos ausgeführt.

; auf diese Extension könnte man Telefonverkäufer schicken:
exten => 123,1,Answer()
exten => 123,2,Playback(tt-allbusy)
exten => 123,3,MusicOnHold(default)
exten => 123,4,Goto(2)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'MusicOnHold' =- 

[Synopsis]
Play Music On Hold indefinitely

[Description]
MusicOnHold(class): Plays hold music specified by class.  If omitted, the default
music source for the channel will be used. Set the default 
class with the SetMusicOnHold() application.
Returns -1 on hangup.
Never returns otherwise.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. WaitMusicOnHold(), MUSICCLASS()

NBScat()

Wiedergabe eines lokalen NBS-Streams

NBScat()

Verwendet das nbscat8k-Programm, um den lokalen NBS (Network Broadcast Sound)-Stream zu hören. (Schauen Sie sich das nbs-Modul in Digiums CVS-Server an, um weitere Informationen zu erhalten.) Der Anrufer kann durch Drücken einer beliebigen Taste aussteigen.

Die Anwendung liefert -1, falls aufgelegt wird, ansonsten wird sie endlos ausgeführt.

exten => 123,1,Answer()
exten => 123,n,NBScat()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'NBScat' =- 

[Synopsis]
Play an NBS local stream

[Description]
  NBScat: Executes nbscat to listen to the local NBS stream.
User can exit by pressing any key
.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

NoCDR()

Unterdrückt das CDR.

NoCDR()

Unterdrückt die Erstellung eines Anrufprotokolls (Call Detail Record) für den aktuellen Anruf.

; für Anrufe an 0123-45678 kein CDR:
exten => 5551212,1,Answer()
exten => 5551212,n,NoCDR()
exten => 5551212,n,Dial(Zap/4/012345678)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'NoCDR' =- 

[Synopsis]
Tell Asterisk to not maintain a CDR for the current call

[Description]
  NoCDR(): This application will tell Asterisk not to maintain a CDR for the
current call.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. ForkCDR()

NoOp()

Tut nichts (no operation).

NoOp(Text)

Diese Anwendung tut nichts - dem Namen nach. Mit NoOp() kann man aber Text auf dem Asterisk-CLI ausgeben - eine zum Debugging sehr nützliche Eigenschaft.

Sie müssen den Text nicht in Anführungszeichen betten. Stehen Anführungszeichen innerhalb der Klammern, werden diese auf der Konsole ausgegeben.

[Wichtig]Wichtig

Die Ausgabe von NoOp() auf dem CLI erfolgt erst ab dem Verbose-Level 3. Dieser kann im CLI mit set verbose 3 gesetzt werden.

exten => 123,1,NoOp(Caller-ID: ${CALLERID})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'NoOp' =- 

[Synopsis]
Do Nothing

[Description]
  NoOp(): This applicatiion does nothing. However, it is useful for debugging
purposes. Any text that is provided as arguments to this application can be
viewed at the Asterisk CLI. This method can be used to see the evaluations of
variables or functions without having any effect.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. DumpChan(), Log(), Verbose()

Page()

Rundruf.

Page(Technology/Resource[&Technology2/Resource2[&...]][,Optionen])

Die als Parameter angegebenen Telefone werden angerufen und kommen automatisch in einen Konferenzraum, in dem sie allerdings nicht sprechen können. Dies kann nur der Initiator des Rundrufes. Optionen:

d
Full-Duplex-Modus aktivieren
q
Es wird kein Ton abgespielt.
r
Der Rundruf wird in einer Datei aufgezeichnet.
exten => 123,1,Page(SIP/2000&SIP/2001&SIP/2002)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Page' =- 

[Synopsis]
Pages phones

[Description]
Page(Technology/Resource&Technology2/Resource2[|options])
  Places outbound calls to the given technology / resource and dumps
them into a conference bridge as muted participants.  The original
caller is dumped into the conference as a speaker and the room is
destroyed when the original caller leaves.  Valid options are:
        d - full duplex audio
        q - quiet, do not play beep to caller
        r - record the page into a file (see 'r' for app_meetme)

Differenz zum internen Hilfetext in Asterisk 1.2: 

14,15c14
<         q - quiet, do not play beep to caller
<         r - record the page into a file (see 'r' for app_meetme)
---
>    q - quiet, do not play beep to caller

Park()

Parkt den aktuellen Anruf.

Park(Extension)

Parkt den aktuellen Anruf (typischerweise in Kombination mit einer beaufsichtigten Übertragung, um die „Parkplatznummer“ zu bestimmen). Diese Anwendung ist intern stets registriert und muss nicht explizit im Wählplan eingefügt werden, jedoch müssen Sie den parkedcalls-Context mit der Zeile include => parkedcalls einbinden. Die Parkkonfiguration wird in features.conf vorgenommen.

; den Anruf auf 701 parken:
include => parkedcalls
exten => 123,1,Answer()
exten => 123,n,Park(701)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Park' =- 

[Synopsis]
Park yourself

[Description]
Park():Used to park yourself (typically in combination with a supervised
transfer to know the parking space). This application is always
registered internally and does not need to be explicitly added
into the dialplan, although you should include the 'parkedcalls'
context (or the context specified in features.conf).

If you set the PARKINGEXTEN variable to an extension in your
parking context, park() will park the call on that extension, unless
it already exists. In that case, execution will continue at next
priority.

Differenz zum internen Hilfetext in Asterisk 1.2: 

12,17c12
< context (or the context specified in features.conf).
< 
< If you set the PARKINGEXTEN variable to an extension in your
< parking context, park() will park the call on that extension, unless
< it already exists. In that case, execution will continue at next
< priority.
---
> context.

Siehe auch. ParkAndAnnounce(), ParkedCall()

ParkAndAnnounce()

Parkt den aktuellen Anruf und macht ihn über den spezifizierten Channel bekannt.

ParkAndAnnounce(Template,Timeout,Channel[,Return-Context])

Parkt den aktuellen Anruf in dem dafür vorgesehenen Bereich (auf dem Parkplatz) und meldet ihn über den spezifizierten Channel. Template bezeichnet eine Liste von durch Kommas voneinander getrennten Dateien, die anzukündigen sind; das Wort PARKED wird durch die Parkplatznummer des Anrufs ersetzt. Der Parameter Timeout bestimmt die Zeit in Sekunden, nach deren Ablauf der Anruf zum Return-Context zurückkehrt. Channel bezeichnet den Channel, der anzurufen ist, um die Ankündigung zu machen (Console/dsp ruft die Konsole auf). Return-Context ist ein Label im GoTo()-Stil, um den Anruf nach der Beendigung zurückzubringen. Standardeinstellung hierfür ist n+1 im Context Return-Context.

include => parkedcalls
exten => 123,1,Answer()
exten => 123,n,ParkAndAnnounce(vm-youhave:a:pbx-transfer:at:vm-extension:PARKED,120,Console/dsp)
exten => 123,n,Playback(vm-nobodyavail)
exten => 123,n,Playback(vm-goodbye)
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ParkAndAnnounce' =- 

[Synopsis]
Park and Announce

[Description]
  ParkAndAnnounce(announce:template|timeout|dial|[return_context]):
Park a call into the parkinglot and announce the call to another channel.

announce template: Colon-separated list of files to announce.  The word PARKED
                   will be replaced by a say_digits of the extension in which
                   the call is parked.
timeout:           Time in seconds before the call returns into the return
                   context.
dial:              The app_dial style resource to call to make the
                   announcement.  Console/dsp calls the console.
return_context:    The goto-style label to jump the call back into after
                   timeout.  Default <priority+1>.

The variable ${PARKEDAT} will contain the parking extension into which the
call was placed.  Use with the Local channel to allow the dialplan to make
use of this information.

Differenz zum internen Hilfetext in Asterisk 1.2: 

9,23c9,14
< Park a call into the parkinglot and announce the call to another channel.
< 
< announce template: Colon-separated list of files to announce.  The word PARKED
<                    will be replaced by a say_digits of the extension in which
<                    the call is parked.
< timeout:           Time in seconds before the call returns into the return
<                    context.
< dial:              The app_dial style resource to call to make the
<                    announcement.  Console/dsp calls the console.
< return_context:    The goto-style label to jump the call back into after
<                    timeout.  Default <priority+1>.
< 
< The variable ${PARKEDAT} will contain the parking extension into which the
< call was placed.  Use with the Local channel to allow the dialplan to make
< use of this information.
---
> Park a call into the parkinglot and announce the call over the console.
> announce template: colon separated list of files to announce, the word PARKED
>                    will be replaced by a say_digits of the ext the call is parked in
> timeout: time in seconds before the call returns into the return context.
> dial: The app_dial style resource to call to make the announcement. Console/dsp calls the console.
> return_context: the goto style label to jump the call back into after timeout. default=prio+1

Siehe auch. Park(), ParkedCall()

ParkedCall()

Beantwortet einen geparkten Anruf.

ParkedCall(Extension)

Verbindet den Anrufer mit dem auf dem durch Extension identifizierten Parkplatz geparkten Anruf. Diese Anwendung ist intern ständig registriert und muss daher dem Wählplan nicht explizit hinzugefügt werden. Sie sollten jedoch den parkedcalls-Context einbinden.

; den Anruf auf "Parkplatz" 701 wiederaufnehmen:
exten => 123,1,Answer()
exten => 123,n,ParkedCall(701)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ParkedCall' =- 

[Synopsis]
Answer a parked call

[Description]
ParkedCall(exten):Used to connect to a parked call.  This application is always
registered internally and does not need to be explicitly added
into the dialplan, although you should include the 'parkedcalls'
context.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Park(), ParkAndAnnounce()

PauseMonitor()

Stoppt das Monitoring eines Channels.

PauseMonitor()

Pausiert die Aufzeichnung eines Channels, bis die Pause mit UnpauseMonitor() wieder aufgehoben wird.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'PauseMonitor' =- 

[Synopsis]
Pause monitoring of a channel

[Description]
PauseMonitor
Pauses monitoring of a channel until it is re-enabled by a call to UnpauseMonitor.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. Monitor(), UnpauseMonitor(), StopMonitor(), ChangeMonitor()

PauseQueueMember()

Pausiert ein Warteschlangenmitglied, so dass es keine Anrufe empfangen kann.

PauseQueueMember([Schlange],Interface[,Optionen])

Pausiert die Durchstellung von Anrufen zu einem Warteschlangenmitglied. Das spezifizierte Interface wird in der gegebenen Warteschlange zeitweilig angehalten. Dadurch wird verhindert, dass Anrufe aus der Warteschlange zu diesem Interface durchgestellt werden, bis es nicht wieder freigegeben wurde durch UnpauseQueueMember() oder das Manager-Interface. Wenn kein Warteschlangenname angegeben ist, wird das Interface in jeder Warteschlange, in der es ein Mitglied ist, angehalten. Befindet sich das Interface nicht in der benannten Warteschlange, oder wenn keine Warteschlange angegeben und das Interface nicht Mitglied irgendeiner Warteschlange ist, wird - bei Angabe der Option j - die Ausführung bei Priorität n+101 fortgesetzt, falls diese existiert.

Gibt -1 zurück, falls das Interface nicht gefunden wurde oder keine Extension existiert, zu der gesprungen werden kann, sonst 0. Setzt die Channel-Variable PQMSTATUS auf PAUSED (pausiert) oder NOTFOUND (nicht gefunden).

; wenn *111002 gewählt wird, wird Agent/1002 auf allen Schlangen pausiert:
exten => *11ZXXX,1,PauseQueueMember(,Agent/${EXTEN:3})

; mit *121002 wird Agent/1002 wieder aktiviert:
exten => *12ZXXX,1,UnpauseQueueMember(,Agent/${EXTEN:3})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'PauseQueueMember' =- 

[Synopsis]
Pauses a queue member

[Description]
   PauseQueueMember([queuename]|interface[|options]):
Pauses (blocks calls for) a queue member.
The given interface will be paused in the given queue.  This prevents
any calls from being sent from the queue to the interface until it is
unpaused with UnpauseQueueMember or the manager interface.  If no
queuename is given, the interface is paused in every queue it is a
member of.  If the interface is not in the named queue, or if no queue
is given and the interface is not in any queue, it will jump to
priority n+101, if it exists and the appropriate options are set.
The application will fail if the interface is not found and no extension
to jump to exists.
The option string may contain zero or more of the following characters:
       'j' -- jump to +101 priority when appropriate.
  This application sets the following channel variable upon completion:
     PQMSTATUS      The status of the attempt to pause a queue member as a
                     text string, one of
           PAUSED | NOTFOUND
Example: PauseQueueMember(|SIP/3000)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. UnpauseQueueMember()

Perl()

Führt eine Perl-Funktion oder ein Perl-Skript aus.

Perl(Funktionsname[:Arg1[:Arg2[:...]]])
Perl(Loadfile:Dateiname[:Arg1[:Arg2[:...]]])
[Wichtig]Wichtig

Für Perl() muss das Modul res_perl[61] kompiliert und geladen sein! Alternativ können mit System() Perl-Skripte ausgeführt werden.

Führt eine Funktion aus dem Paket Asterisk::Embed in /usr/local/res_perl/modules/asterisk_init.pm oder ein Perl-Skript (z.B. demo.pl) aus dem Verzeichnis /usr/local/res_perl/apps/ aus, was im Vergleich zum Aufruf auf der Shell den Vorteil hat, dass der Interpreter nicht jedesmal neu geladen wird.

res_perl ist möglicherweise nicht zu aktuellen Asterisk-Versionen kompatibel und wird in diesem Buch nicht weiter beschrieben.

Siehe auch. System(), AGI()

PHP()

Führt ein PHP-Skript aus.

PHP(Dateiname[|Arg1[|Arg2[|...]]])
[Wichtig]Wichtig

Für PHP() muss das Modul res_php[62] kompiliert und geladen sein! Alternativ können mit System() PHP-Skripte ausgeführt werden.

Führt ein PHP-Skript aus, was im Vergleich zum Aufruf auf der Shell den Vorteil hat, dass der Interpreter nicht jedesmal neu geladen wird.

res_php ist z.Zt. nicht mit aktuellen Asterisk-Versionen kompatibel und wird in diesem Buch nicht weiter beschrieben.

Siehe auch. System(), AGI()

Pickup()

Einen Anruf an eine andere Extension entgegennehmen.

Pickup(Extension[@Context][&Extension2@Context2[&...]])

Mit Pickup() kann ein Gespräch, das an einem anderen Telefon auf Entgegennahme wartet übernommen werden. („Heranholen“)

exten => 1234,1,Pickup(2000@verkauf)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Pickup' =- 

[Synopsis]
Directed Call Pickup

[Description]
  Pickup(extension[@context][&extension2@context...]): This application can pickup any ringing channel
that is calling the specified extension. If no context is specified, the current
context will be used. If you use the special string "PICKUPMARK" for the context parameter, for example
10@PICKUPMARK, this application tries to find a channel which has defined a channel variable with the same content
as "extension".

Differenz zum internen Hilfetext in Asterisk 1.2: 

8c8
<   Pickup(extension[@context][&extension2@context...]): This application can pickup any ringing channel
---
>   Pickup(extension[@context]): This application can pickup any ringing channel
10,12c10,11
< context will be used. If you use the special string "PICKUPMARK" for the context parameter, for example
< 10@PICKUPMARK, this application tries to find a channel which has defined a channel variable with the same content
< as "extension".
---
> context will be used.
> 

Playback()

Spielt dem Anrufer eine Audiodatei vor.

Playback(Dateiname[,Optionen])

Spielt dem Anrufer die Audiodatei Dateiname (aus dem Verzeichnis /var/lib/asterisk/sounds/) vor. Der Dateiname enthält keine Dateiendung, damit Asterisk automatisch die Audiodatei mit dem niedrigsten Konvertierungsaufwand auswählen kann. Keine, eine oder mehr Optionen können hinzugefügt werden.

Die Option skip bewirkt, dass die Wiedergabe der Nachricht übersprungen wird, wenn sich der Channel nicht im Up-Status befindet.

Normalerweise wird der Channel beantwortet, bevor die Audiodatei wiedergegeben wird, es sei denn, noanswer ist angegeben. (Nicht alle Kanäle unterstützen die Wiedergabe von Nachrichten, wenn sie noch aufgelegt sind.)

Liefert -1 zurück, wenn der Channel aufgelegt wurde. Wenn die Datei nicht existiert, wird zur Priorität n+101 übergegangen, falls diese existiert.

exten => 123,1,Answer()
exten => 123,n,Playback(tt-weasels)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Playback' =- 

[Synopsis]
Play a file

[Description]
  Playback(filename[&filename2...][|option]):  Plays back given filenames (do not put
extension). Options may also be included following a pipe symbol. The 'skip'
option causes the playback of the message to be skipped if the channel
is not in the 'up' state (i.e. it hasn't been  answered  yet). If 'skip' is 
specified, the application will return immediately should the channel not be
off hook.  Otherwise, unless 'noanswer' is specified, the channel will
be answered before the sound is played. Not all channels support playing
messages while still on hook. If 'j' is specified, the application
will jump to priority n+101 if present when a file specified to be played
does not exist.
This application sets the following channel variable upon completion:
 PLAYBACKSTATUS    The status of the playback attempt as a text string, one of
               SUCCESS | FAILED

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Background()

Playtones()

Wiedergabe einer Tonliste.

Playtones(Tonliste)

Spielt eine Liste von Tönen ab. Die Ausführung wird augenblicklich mit dem nächsten Schritt fortgesetzt, während die Töne weiter abgespielt werden. Tonliste ist entweder ein Tonname, der in der indications.conf definiert ist, oder eine Liste von Tonfrequenzen und -dauern. Für eine Beschreibung der Spezifikation einer eigenen Tonliste siehe indications.conf.

Verwendet die StopPlaytones()-Anwendung, um die Wiedergabe der Töne anzuhalten.

; 2 Sekunden Besetzt-, dann 2 Sekunden Stau-Signal spielen:
exten => 123,1,Playtones(busy)
exten => 123,n,Wait(2)
exten => 123,n,StopPlaytones()
exten => 123,n,Playtones(congestion)
exten => 123,n,Wait(2)
exten => 123,n,StopPlaytones()
exten => 123,n,Goto(1)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'PlayTones' =- 

[Synopsis]
Play a tone list

[Description]
PlayTones(arg): Plays a tone list. Execution will continue with the next step immediately,
while the tones continue to play.
Arg is either the tone name defined in the indications.conf configuration file, or a directly
specified list of frequencies and durations.
See the sample indications.conf for a description of the specification of a tonelist.

Use the StopPlayTones application to stop the tones playing.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. StopPlaytones(), indications.conf, Busy(), Congestion(), Progress(), Ringing()

PrivacyManager()

Verlangt die Eingabe der Telefonnummer eines Teilnehmers, falls keine Caller-ID-Informationen empfangen werden.

PrivacyManager([Versuche[,Länge[,Optionen]]])

Wird keine Caller-ID empfangen, wird der Channel beantwortet und der Anrufer aufgefordert, seine Telefonnummer einzugeben. Wird auf dem Channel eine Caller-ID empfangen, tut PrivacyManager() nichts.

Dem Anrufer werden dabei Versuche Versuche (Default: 3) gewährt eine Telefonnummer mit mindestens Länge Stellen (Default: 10) einzugeben. Diese Default-Werte werden aus der Datei privacy.conf gelesen. Sie enthält die beiden folgenden Einträge:

maxretries
Gibt die Anzahl der Versuche an, die einem Anrufer zur Eingabe einer Caller-ID gewährt werden (Standard: 3).
minlength
Gibt die minimale erlaubte Anzahl von Ziffern in der eingegebenen Caller-ID-Nummer an (Standard: 10).

Wenn Sie nicht wollen, dass bei jedem Aufruf aus der Datei gelesen werden muss, geben Sie bei PrivacyManager() explizit Werte an.

Mit der Option j wird zur Priorität n+101 gesprungen, wenn der Anrufer nicht innerhalb der erlaubten Versuche eine Nummer der erforderlichen Länge eingibt.

Die Channel-Variable PRIVACYMGRSTATUS wird entweder auf SUCCESS oder auf FAILED gesetzt.

exten => 123,1,Answer()
exten => 123,n,PrivacyManager()
exten => 123,n,GotoIf($["${PRIVACYMGRSTATUS}" = "FAILED"]?pm-fehler,1)
exten => 123,n,Dial(Zap/1)

exten => pm-fehler,1,Playback(tut-uns-leid)
exten => pm-fehler,n,Playback(vm-goodbye)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'PrivacyManager' =- 

[Synopsis]
Require phone number to be entered, if no CallerID sent

[Description]
  PrivacyManager([maxretries[|minlength[|options]]]): If no Caller*ID 
is sent, PrivacyManager answers the channel and asks the caller to
enter their phone number. The caller is given 3 attempts to do so.
The application does nothing if Caller*ID was received on the channel.
  Configuration file privacy.conf contains two variables:
   maxretries  default 3  -maximum number of attempts the caller is allowed 
               to input a callerid.
   minlength   default 10 -minimum allowable digits in the input callerid number.
If you don't want to use the config file and have an i/o operation with
every call, you can also specify maxretries and minlength as application
parameters. Doing so supercedes any values set in privacy.conf.
The option string may contain the following character: 
  'j' -- jump to n+101 priority after <maxretries> failed attempts to collect
         the minlength number of digits.
The application sets the following channel variable upon completion: 
PRIVACYMGRSTATUS  The status of the privacy manager's attempt to collect 
                  a phone number from the user. A text string that is either:
          SUCCESS | FAILED

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Zapateller()

Progress()

Signalisiert Fortschritt.

Progress()

Signalisiert dem Teilnehmer, dass ein Fortschritt stattfindet (... dass sich „was tut“ ;-)).

Liefert stets 0 zurück.

; Fortschritt anzeigen:
exten => 123,1,Progress()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Progress' =- 

[Synopsis]
Indicate progress

[Description]
  Progress(): This application will request that in-band progress information
be provided to the calling channel.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Busy(), Congestion(), Playtones(), Ringing()

Queue()

Legt den aktuellen Anruf in der spezifizierten Anrufwarteschlange ab.

Queue(Schlange[,Optionen[,URL[,Ankündigung[,Timeout]]]])

Fügt der angegebenen Warteschlange - wie in queues.conf definiert - einen eingehenden Anruf hinzu.

Folgende Optionen sind möglich (auch in Kombination):

t
Erlaubt es dem angerufenen Teilnehmer, den Anruf weiterzuleiten.
T
Erlaubt es dem anrufenden Teilnehmer, den Anruf weiterzuleiten.
d
Spezifiziert einen Anruf mit Datenqualität (Modem, minimale Verzögerung).
h
Erlaubt es dem Angerufenen, durch Drücken von * aufzulegen.
H
Erlaubt es dem Anrufer, durch Drücken von * aufzulegen.
n
Verbietet eine Wiederholung des Timeouts; beendet diese Anwendung und geht weiter zum nächsten Schritt.
r
Klingelt, statt Wartemusik zu spielen.

Außer dass ein Anruf weitergeleitet werden kann, kann er auch geparkt und dann von einem anderen Teilnehmer aufgenommen werden.

Der Parameter Ankündigung überschreibt die Standardankündigung, die Warteschlangenagenten vorgespielt wird, bevor sie den angegebenen Anruf beantworten.

Die optionale URL wird dem angerufenen Teilnehmer übersendet, falls dies vom Channel unterstützt wird.

Nach einer angegebenen Zahl von Sekunden, überprüft zwischen jedem queues.conf Timeout und Retry-Kreislauf, wird Timeout die Queue() zu einem Fehlschlagen zwingen.

Liefert -1 zurück, falls der ursprüngliche Channel aufgelegt wird, oder falls der Anruf durchgestellt wird und einer der Teilnehmer den Anruf beendet. Ist die Warteschlange voll, existiert sie nicht oder hat sie keine Mitglieder, wird 0 zurückgeliefert.

; den Anrufer zur "supportschlange" hinzufügen:
exten => 123,1,Answer()
exten => 123,n,Queue(supportschlange,t)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Queue' =- 

[Synopsis]
Queue a call for a call queue

[Description]
  Queue(queuename[|options[|URL][|announceoverride][|timeout][|AGI]):
Queues an incoming call in a particular call queue as defined in queues.conf.
This application will return to the dialplan if the queue does not exist, or
any of the join options cause the caller to not enter the queue.
The option string may contain zero or more of the following characters:
      'd' -- data-quality (modem) call (minimum delay).
      'h' -- allow callee to hang up by hitting *.
      'H' -- allow caller to hang up by hitting *.
      'n' -- no retries on the timeout; will exit this application and 
             go to the next step.
      'i' -- ignore call forward requests from queue members and do nothing
             when they are requested.
      'r' -- ring instead of playing MOH
      't' -- allow the called user transfer the calling user
      'T' -- to allow the calling user to transfer the call.
      'w' -- allow the called user to write the conversation to disk via Monitor
      'W' -- allow the calling user to write the conversation to disk via Monitor
  In addition to transferring the call, a call may be parked and then picked
up by another user.
  The optional URL will be sent to the called party if the channel supports
it.
  The optional AGI parameter will setup an AGI script to be executed on the 
calling party's channel once they are connected to a queue member.
  The timeout will cause the queue to fail out after a specified number of
seconds, checked between each queues.conf 'timeout' and 'retry' cycle.
  This application sets the following channel variable upon completion:
      QUEUESTATUS    The status of the call as a text string, one of
             TIMEOUT | FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL

Differenz zum internen Hilfetext in Asterisk 1.2: 

8c8
<   Queue(queuename[|options[|URL][|announceoverride][|timeout][|AGI]):
---
>   Queue(queuename[|options[|URL][|announceoverride][|timeout]]):
17,19c17
<              go to the next step.
<       'i' -- ignore call forward requests from queue members and do nothing
<              when they are requested.
---
>        go to the next step.
29,30d26
<   The optional AGI parameter will setup an AGI script to be executed on the 
< calling party's channel once they are connected to a queue member.

Siehe auch. QueueLog(), Kapitel 13, Warteschleifen für Call-Center

QueueLog()

Schreibt einen Eintrag in das Queue-Log.

QueueLog(Schlangenname,UniqueID,AgentenNr,Event[,weitere Infos])

Schreibt einen Eintrag in das Queue-Log (normalerweise /var/log/asterisk/queue_log). Damit können Sie z.B. selbst-definierte Ereignisse aufzeichnen. Lesen Sie Abschnitt 6, „Log-Datei“ für besseres Verständnis.

QueueLog(supportschlange,${UNIQUEID},${AGENT},MITTAGSPAUSE,Guten Appetit)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'QueueLog' =- 

[Synopsis]
Writes to the queue_log

[Description]
   QueueLog(queuename|uniqueid|agent|event[|additionalinfo]):
Allows you to write your own events into the queue log
Example: QueueLog(101|${UNIQUEID}|${AGENT}|WENTONBREAK|600)

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. Queue(), Abschnitt 6, „Log-Datei“

Random()

Springt zu einer zufälligen Priorität.

Random([Wahrscheinlichkeit]:[[Context,]Extension,]Priorität)

Springt bedingt zu der spezifizierten Priorität (und optional Extension und Context), basierend auf der angegebenen Wahrscheinlichkeit, die ein ganze Zahl zwischen 1 und 100 sein muss. Die Anwendung springt in Wahrscheinlichkeit Prozent der Fälle zu dem angegebenen Ziel.

; Glücksspiel mit jedesmal 20% Gewinnchance:
exten => 123,1,Random(20:gewonnen,1)
exten => 123,n,Goto(verloren,1)

exten => gewonnen,1,Playback(gewonnen)
exten => gewonnen,n,Goto(123,1)

exten => verloren,1,Playback(verloren)
exten => verloren,n,Goto(123,1)
[Wichtig]Wichtig

Die Applikation Random() ist seit 1.4 „deprecated“ und wird durch die Funktion RAND() ersetzt.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Random' =- 

[Synopsis]
Conditionally branches, based upon a probability

[Description]
Random([probability]:[[context|]extension|]priority)
  probability := INTEGER in the range 1 to 100
DEPRECATED: Use GotoIf($[${RAND(1,100)} > <number>]?<label>)

Differenz zum internen Hilfetext in Asterisk 1.2: 

10d9
< DEPRECATED: Use GotoIf($[${RAND(1,100)} > <number>]?<label>)

Siehe auch. RAND()

Read()

Liest DTMF-Ziffern eines Anrufers und weist die Eingabe einer Variablen zu.

Read(Variablenname[,Dateiname[,maxZiffern[,Option[,Versuche[,Timeout]]]]])

Liest eine mit # abgeschlossene Reihe von Ziffern von einem Teilnehmer, und legt sie in einer gegebenen Variablen ab.

Wenn Dateiname (ohne Endung!) angegeben ist, wird dem Anrufer diese Datei vor dem Einlesen vorgespielt.

maxZiffern bestimmt die maximal zu akzeptierende Anzahl von Ziffern. Ist der Parameter angegeben, beendet die Anwendung das Einlesen, nachdem maxZiffern Ziffern eingegeben wurden (ohne dass der Teilnehmer mit der #-Taste bestätigen muss). Standardeinstellung ist 0, was bedeutet, dass keine Begrenzung existiert und auf die Eingabe von # gewartet wird. Der größte akzeptierte Wert ist 255.

Die Option skip bewirkt sofortige Rückkehr, falls der Channel nicht aktiv ist. noanswer bewirkt Einlesen sogar bei einem inaktiven Channel.

Der Anrufer hat maximal Versuche Versuche, innerhalb von Timout Sekunden eine Eingabe zu machen. (Ein Timeout von 0 bedeutet unendlich.)

Liefert -1 zurück im Falle eines Auflegens oder Fehlers, sonst 0.

; eine maximal vierstellige Zahl einlesen (3 Versuche) und dem Anrufer ansagen:
exten => 123,1,Read(NUMMER,,4,3)
exten => 123,n,SayNumber(${NUMMER})
exten => 123,n,Goto(1)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Read' =- 

[Synopsis]
Read a variable

[Description]
  Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])

Reads a #-terminated string of digits a certain number of times from the
user in to the given variable.
  filename   -- file to play before reading digits or tone with option i
  maxdigits  -- maximum acceptable number of digits. Stops reading after
                maxdigits have been entered (without requiring the user to
                press the '#' key).
                Defaults to 0 - no limit - wait for the user press the '#' key.
                Any value below 0 means the same. Max accepted value is 255.
  option     -- options are 's' , 'i', 'n'
                's' to return immediately if the line is not up,
                'i' to play  filename as an indication tone from your indications.conf
                'n' to read digits even if the line is not up.
  attempts   -- if greater than 1, that many attempts will be made in the 
                event no data is entered.
  timeout    -- An integer number of seconds to wait for a digit response. If greater
                than 0, that value will override the default timeout.

Read should disconnect if the function fails or errors out.

Differenz zum internen Hilfetext in Asterisk 1.2: 

12c12
<   filename   -- file to play before reading digits or tone with option i
---
>   filename   -- file to play before reading digits.
18,21c18,19
<   option     -- options are 's' , 'i', 'n'
<                 's' to return immediately if the line is not up,
<                 'i' to play  filename as an indication tone from your indications.conf
<                 'n' to read digits even if the line is not up.
---
>   option     -- may be 'skip' to return immediately if the line is not up,
>                 or 'noanswer' to read digits even if the line is not up.
24,25c22
<   timeout    -- An integer number of seconds to wait for a digit response. If greater
<                 than 0, that value will override the default timeout.
---
>   timeout    -- if greater than 0, that value will override the default timeout.

Siehe auch. SendDTMF()

ReadFile()

Liest eine Datei ein.

ReadFile(Variablenname=Dateiname,Länge)

Liest den Inhalt einer Datei und speichert ihn in einer Variable. Dabei werden maximal Länge Zeichen eingelesen.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ReadFile' =- 

[Synopsis]
ReadFile(varname=file,length)

[Description]
ReadFile(varname=file,length)
  Varname - Result stored here.
  File - The name of the file to read.
  Length - Maximum number of characters to capture.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

RealTime()

Holt Informationen vom RealTime-Konfigurationssteuerprogramm.

RealTime(Familie,Spalte,Wert[,Präfix])

Benutzt das RealTime-Konfigurationssteuerprogramm, um Daten in Channelvariablen einzulesen. Alle eindeutigen Spaltennamen aus der angegebenen Familie werden als Channelvariablen gesetzt. Dabei kann ihr Name ein optionales Namenspräfix Präfix erhalten (zum Beispiel würde ein Präfix var_ den Spaltennamen test in die Variable ${var_test} überführen).

Die Channelvariable REALTIMECOUNT wird auf die Anzahl der gelesenen Werte gesetzt.

In der extconfig.conf:

; Familie => DBMS,DB-Name,Tabelle
sipusers => mysql,asterisk,sip_users

In der extensions.conf:

exten => 123,1,RealTime(sipusers,ext,5678,var_)

Führt das folgende SQL-Query in der Datenbank asterisk aus:

SELECT * FROM sip_users WHERE ext = 5678

Angenommen die Tabelle hat eine Spalte vorname und eine Spalte nachname, dann können wir die Werte so im CLI ausgeben:

exten => 123,n,NoOp(Der Vorname von Ext. 5678: ${var_vorname})
exten => 123,n,NoOp(Der Nachname von Ext. 5678: ${var_nachname})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'RealTime' =- 

[Synopsis]
Realtime Data Lookup

[Description]
Use the RealTime config handler system to read data into channel variables.
RealTime(<family>|<colmatch>|<value>[|<prefix>])

All unique column names will be set as channel variables with optional prefix
to the name.  For example, a prefix of 'var_' would make the column 'name'
become the variable ${var_name}.  REALTIMECOUNT will be set with the number
of values read.

Differenz zum internen Hilfetext in Asterisk 1.2: 

11,14c11,13
< All unique column names will be set as channel variables with optional prefix
< to the name.  For example, a prefix of 'var_' would make the column 'name'
< become the variable ${var_name}.  REALTIMECOUNT will be set with the number
< of values read.
---
> All unique column names will be set as channel variables with optional prefix to the name.
> e.g. prefix of 'var_' would make the column 'name' become the variable ${var_name}
> 

Siehe auch. RealTimeUpdate()

RealTimeUpdate()

Aktualisiert einen Wert mit Hilfe des RealTime-Konfigurationssteuerprogramms.

RealTimeUpdate(Familie,Spalte,Wert,UpdateSpalte,UpdateWert)

Benutzt das RealTime-Konfigurationssteuerprogrammsystem, um einen Wert zu aktualisieren. Das Feld UpdateSpalte in der Zeile, bei der die Spalte UpdateSpalte in der Familie Familie mit Wert übereinstimmt, wird auf den Wert UpdateWert aktualisiert.

; bei der Situation wie im Beispiel zu RealTime() könnten wir diesen
; Befehl ausführen:
exten => 123,1,RealTimeUpdate(sipusers,ext,5678,vorname,Peter)
; resultierender SQL-Befehl:
UPDATE sip_users SET vorname = 'Peter' WHERE ext = '5678'
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'RealTimeUpdate' =- 

[Synopsis]
Realtime Data Rewrite

[Description]
Use the RealTime config handler system to update a value
RealTimeUpdate(<family>|<colmatch>|<value>|<newcol>|<newval>)

The column <newcol> in 'family' matching column <colmatch>=<value> will be
updated to <newval>.  REALTIMECOUNT will be set with the number of rows
updated or -1 if an error occurs.

Differenz zum internen Hilfetext in Asterisk 1.2: 

11,13c11
< The column <newcol> in 'family' matching column <colmatch>=<value> will be
< updated to <newval>.  REALTIMECOUNT will be set with the number of rows
< updated or -1 if an error occurs.
---
> The column <newcol> in 'family' matching column <colmatch>=<value> will be updated to <newval>

Siehe auch. RealTime()

Record()

Aufnahme von Audio auf einem Channel in eine Datei

ab Asterisk 1.2:

Record(Basisname[.Format[,Stille[,maxDauer[,Optionen]]]])

Nimmt Audio auf dem Channel auf und speichert es in der Datei Basisname.Format. Existiert diese Datei bereits, wird sie überschrieben.

Optionale Parameter sind:

format
Spezifiziert das Dateiformat der Aufnahmedatei (g723, g729, gsm, h263, ulaw, alaw, wav, ...)
Stille
Gibt die Dauer in Sekunden an, die geräuschlos verstreichen darf, bevor die Aufnahme beendet wird.
maxDauer
Gibt die maximale Aufnahmedauer in Sekunden an. Falls nicht angegeben oder 0, gibt es keine Obergrenze.
Optionen

Kann beliebige der aufgeführten Flags enthalten:

s
Nimmt nicht auf, wenn die Leitung bisher nicht beantwortet wurde.
n
Antwortet nicht, aber nimmt trotzdem auf, auch wenn die Leitung bisher nicht beantwortet wurde.
a
Hängt die Aufnahme an die bereits bestehende Aufnahme an, statt sie zu überschreiben.
t
Benutzt die alternative Abschlusstaste * an Stelle der standardmäßig eingestellten #-Taste.
q
Keinen Piep-Ton vor der Aufnahme spielen.
x
Auch die Abbruchtasten # oder * als DTMF-Töne aufzeichnen. Die Aufnahme kann dann nur durch Timeout von maxDauer oder Auflegen beendet werden.

Enthält der Basisname die Zeichenkette %d, wird diese durch eine Nummerierung ersetzt, die bei jedem erneuten Aufnehmen der Datei um 1 erhöht wird.

Der Teilnehmer kann die Taste # benutzen, um die Aufnahme abzubrechen und zur nächsten Priorität überzugehen. Beim Auflegen wird die Aufnahme verworfen.

Liefert -1 zurück, wenn der Benutzer auflegt, sonst 0.

; den Namen des Anrufers aufzeichnen:
exten => 123,1,Playback(bitte-sprechen-sie-ihren-namen-nach-dem-ton)
exten => 123,n,Record(/tmp/name.gsm,3,10)
exten => 123,n,Playback(/tmp/name)

Beachten Sie auch die Hinweise bei Monitor().

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Record' =- 

[Synopsis]
Record to a file

[Description]
  Record(filename.format|silence[|maxduration][|options])

Records from the channel into a given filename. If the file exists it will
be overwritten.
- 'format' is the format of the file type to be recorded (wav, gsm, etc).
- 'silence' is the number of seconds of silence to allow before returning.
- 'maxduration' is the maximum recording duration in seconds. If missing
or 0 there is no maximum.
- 'options' may contain any of the following letters:
     'a' : append to existing recording rather than replacing
     'n' : do not answer, but record anyway if line not yet answered
     'q' : quiet (do not play a beep tone)
     's' : skip recording if the line is not yet answered
     't' : use alternate '*' terminator key (DTMF) instead of default '#'
     'x' : ignore all terminator keys (DTMF) and keep recording until hangup

If filename contains '%d', these characters will be replaced with a number
incremented by one each time the file is recorded. 

Use 'show file formats' to see the available formats on your system

User can press '#' to terminate the recording and continue to the next priority.

If the user should hangup during a recording, all data will be lost and the
application will teminate.

Differenz zum internen Hilfetext in Asterisk 1.2: 

21,22c21
<      't' : use alternate '*' terminator key (DTMF) instead of default '#'
<      'x' : ignore all terminator keys (DTMF) and keep recording until hangup
---
>      't' : use alternate '*' terminator key instead of default '#'

Siehe auch. Dictate(), Monitor(), MixMonitor()

RemoveQueueMember()

Entfernt dynamisch Warteschlangenmitglieder.

RemoveQueueMember(Schlange[,Interface])

Enfernt das spezifizierte Interface dynamisch aus der Warteschlange. Ist Interface nicht angegeben, entfernt die Anwendung das momentan in Verwendung befindliche Interface aus der Warteschlange.

Ist das Interface nicht in der Warteschlange enthalten und eine Priorität n+101 existiert, wird die Anwendung zu dieser Priorität übergehen. Andernfalls wird sie einen Fehler zurückliefern.

Liefert -1, wenn ein Fehler auftritt, sonst 0.

; SIP/3000 aus der "supportschlange" entfernen:
exten => 123,1,RemoveQueueMember(supportschlange,SIP/3000)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'RemoveQueueMember' =- 

[Synopsis]
Dynamically removes queue members

[Description]
   RemoveQueueMember(queuename[|interface[|options]]):
Dynamically removes interface to an existing queue
If the interface is NOT in the queue and there exists an n+101 priority
then it will then jump to this priority.  Otherwise it will return an error
The option string may contain zero or more of the following characters:
       'j' -- jump to +101 priority when appropriate.
  This application sets the following channel variable upon completion:
     RQMSTATUS      The status of the attempt to remove a queue member as a
                     text string, one of
           REMOVED | NOTINQUEUE | NOSUCHQUEUE 
Example: RemoveQueueMember(techsupport|SIP/3000)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. AddQueueMember(), Queue(), queues.conf

ResetCDR()

Setzt das Anrufprotokoll (Call Detail Record) zurück.

ResetCDR([Optionen])

Setzt das Anrufprotokoll (Call Detail Record) zurück. Ist die Option w angegeben, wird eine Kopie des aktuellen Anrufprotokolls gespeichert, bevor das aktuelle CDR gelöscht wird.

Liefert stets 0 zurück.

; das aktuelle CDR speichern und dann zurücksetzen:
exten => 123,1,Answer()
exten => 123,n,Playback(tt-monkeys)
exten => 123,n,ResetCDR(w)
exten => 123,n,Playback(tt-monkeys)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ResetCDR' =- 

[Synopsis]
Resets the Call Data Record

[Description]
  ResetCDR([options]):  This application causes the Call Data Record to be
reset.
  Options:
    w -- Store the current CDR record before resetting it.
    a -- Store any stacked records.
    v -- Save CDR variables.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. ForkCDR(), NoCDR()

RetryDial()

Versucht, einen Anruf zu tätigen, und wiederholt den Versuch bei einem Fehlschlag.

RetryDial(Ankündigung,Wartezeit,Versuche,Tech/Res[&Tech2/Res2...][,Timeout[,Optionen[,URL]]])

Versucht, wie Dial(), einen Anruf zu tätigen. Kann kein Channel erreicht werden, wird die Datei Ankündigung (ohne Endung!) abgespielt und Wartezeit Sekunden gewartet, bis der Versuch wiederholt wird. Per Default wir 10 Sekunden gewartet. Nach Versuche Versuchen wird der Anruft mit der nächsten Priorität im Wählplan fortgesetzt. Ist Versuche auf 0 oder -1 gesetzt, wird der Anrufversuch endlos wiederholt.

In der Wartezeit kann eine einziffrige Extension gewählt werden. Existiert diese Extensions im durch ${EXITCONTEXT} spezifizierten Context (oder im aktuellen), wird der Anruf unmittelbar an diese Extension weitergeleitet.

Alle Parameter nach Versuche werden direkt an die Dial()-Anwendung weitergeleitet.

; 3-mal versuchen, die Nummer zu erreichen, Wdh. nach 5 Sekunden:
exten => 123,1,RetryDial(versuche-zu-verbinden,5,3,IAX2/VOIP/012345678,30)
; wenn der Anrufer während des Wählens 0 drückt, auf Zap/4 versuchen:
exten => 0,1,RetryDial(versuche-zu-verbinden,5,3,Zap/4/012345678,30)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'RetryDial' =- 

[Synopsis]
Place a call, retrying on failure allowing optional exit extension.

[Description]
  RetryDial(announce|sleep|retries|dialargs): This application will attempt to
place a call using the normal Dial application. If no channel can be reached,
the 'announce' file will be played. Then, it will wait 'sleep' number of
seconds before retying the call. After 'retires' number of attempts, the
calling channel will continue at the next priority in the dialplan. If the
'retries' setting is set to 0, this application will retry endlessly.
  While waiting to retry a call, a 1 digit extension may be dialed. If that
extension exists in either the context defined in ${EXITCONTEXT} or the current
one, The call will jump to that extension immediately.
  The 'dialargs' are specified in the same format that arguments are provided
to the Dial application.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Dial()

Return()

Kehrt von einem Unterprogramm zurück.

Return()

Kehrt von einem Unterprogramm, das mit Gosub() oder GosubIf() aufgerufen wurde, zurück an die Anweisung, die im Dialplan auf den Sprungbefehl folgt.

exten => 123,1,Playback(tt-monkeys)
exten => 123,n,Gosub(mein-unterprogramm,s,1)
exten => 123,n,Playback(tt-monkeys)
exten => 123,n,Hangup()

[mein-unterprogramm]
exten => s,1,Playback(tt-weasels)
exten => s,n,Return()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Return' =- 

[Synopsis]
Return from gosub routine

[Description]
Return()
  Jumps to the last label on the stack, removing it.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Gosub(), GosubIf()

Ringing()

Signalisiert Klingelton.

Ringing()

Signalisiert dem Teilnehmer Klingeln. Wie diese Signalisierung erfolgt, hängt vom Channeltreiber ab. Beachten Sie, dass diese Anwendung den Anrufer nicht mit tatsächlichem Klingeln versieht. Benutzen Sie hierzu die Anwendung Playtones().

Liefert stets 0 zurück.

; Klingeln vortäuschen:
exten => 123,1,Ringing()
exten => 123,n,Wait(5)
exten => 123,n,Playback(tt-somethingwrong)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Ringing' =- 

[Synopsis]
Indicate ringing tone

[Description]
  Ringing(): This application will request that the channel indicate a ringing
tone to the user.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Busy(), Congestion(), Progress(), Ringing(), Playtones()

SayAlpha()

Spricht eine Zeichenkette.

SayAlpha(String)

Buchstabiert den übergebenen String unter Verwendung der aktuellen Spracheinstellung für den Channel. Die Sprache kann mit der Funktion LANGUAGE() geändert werden.

exten => 123,1,SayAlpha(ABC123)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SayAlpha' =- 

[Synopsis]
Say Alpha

[Description]
  SayAlpha(string): This application will play the sounds that correspond to
the letters of the given string.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. SayDigits(), SayNumber(), SayPhonetic()

SayDigits()

Spricht die übergebenen Ziffern.

SayDigits(Ziffern)

Spricht die übergebenen Ziffern unter Verwendung der aktuellen Spracheinstellung für den Channel. Die Sprache kann mit der Funktion LANGUAGE() geändert werden.

exten => 123,1,SayDigits(1234)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SayDigits' =- 

[Synopsis]
Say Digits

[Description]
  SayDigits(digits): This application will play the sounds that correspond
to the digits of the given number. This will use the language that is currently
set for the channel. See the LANGUAGE function for more information on setting
the language for the channel.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. SayAlpha(), SayNumber(), SayPhonetic()

SayNumber()

Spricht die angegebene Zahl.

SayNumber(Nummer[,Genus])

Spricht die angegebene Zahl unter Verwendung der aktuellen Spracheinstellung für den Channel. Die Sprache kann mit der Funktion LANGUAGE() geändert werden.

Bisher werden Ganzzahlen von 1 bis 99.999.999 in den folgenden Sprachen syntaktisch unterstützt:

da
Dänisch
de
Deutsch
en
Englisch
es
Spanisch
fr
Französisch
it
Italienisch
nl
Niederländisch
no
Norwegisch
pl
Polnisch
pt
Portugiesisch
se
Schwedisch
tw
Taiwanesisch

Kennt die aktuelle Sprache Geschlechter (Genus, Sexus), kann der Parameter Genus übergeben werden und das Genus der zu sprechenden Zahl zu ändern.

Benutzen Sie bei europäischen Sprachen wie Deutsch, Französisch, Spanisch, Portugiesisch das Genus f für Femininum, m für Maskulinum und n für Neutrum.

Benutzen Sie bei nordischen Sprachen wie Dänisch, Schwedisch oder Norwegisch das Genus c für Commune (/Utrum, belebt) und n für Neutrum (/Ne-utrum, unbelebt).

Benutzen Sie für Aufzählungen im deutschen Plural das Genus p.

Damit diese Anwendung mit anderen Sprachen als Englisch funktioniert, müssen die entsprechenden Audiodateien für die jeweilige gewünschte Sprache in /var/lib/asterisk/sounds/digits/ (bzw. Unterverzeichnissen wie de/) vorhanden sein.

; in Englisch sprechen:
exten => 123,1,Set(LANGUAGE=en)
exten => 123,n,SayNumber(1234)
; "one - thousand - two - hundred - and - thirty - four"

; in Deutsch sprechen:
exten => 123,1,Set(LANGUAGE=de)
exten => 123,n,SayNumber(1234)
; "ein - Tausend - zwei - Hundert - und - vier - und - dreißig"
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SayNumber' =- 

[Synopsis]
Say Number

[Description]
  SayNumber(digits[,gender]): This application will play the sounds that
correspond to the given number. Optionally, a gender may be specified.
This will use the language that is currently set for the channel. See the
LANGUAGE function for more information on setting the language for the channel.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. SayAlpha(), SayDigits(), SayPhonetic()

SayPhonetic()

Buchstabiert die angegebene Zeichenkette phonetisch.

SayPhonetic(String)

Buchstabiert den angegebenen String unter Verwendung des phonetischen NATO-Alphabets bzw. Funker-Alphabets (je nach Sprache). Die Sprache kann mit der Funktion LANGUAGE() geändert werden. Umlaute/Sonderzeichen sind bisher nicht möglich.

exten => 123,1,Set(LANGUAGE=en)
exten => 123,n,SayPhonetic(asterisk)
; Alpha Sierra Tango Echo Romeo India Sierra Kilo

exten => 123,n,Set(LANGUAGE=de)
exten => 123,n,SayPhonetic(asterisk)
; Anton Samuel Theodor Emil Richard Ida Samuel Kaufmann
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SayPhonetic' =- 

[Synopsis]
Say Phonetic

[Description]
  SayPhonetic(string): This application will play the sounds from the phonetic
alphabet that correspond to the letters in the given string.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. SayAlpha(), SayDigits(), SayNumber()

SayUnixTime()

Zeitansage in einem spezifischen Format

SayUnixTime([Unixzeit][,Zeitzone[,Format]])

Sagt die angegebene Zeit unter Berücksichtigung der angegebenen Zeitzone und des vorgegebenen Formats. Die Parameter sind:

Unixzeit
Unix-Timestamp, also die Anzahl der Sekunden seit dem 1. Januar 1970, 0 Uhr GMT. Kann negative Werte annehmen. Standardwert ist die aktuelle Zeit.
Zeitzone
Die Zeitzone. Eine Liste findet sich in /usr/share/zoneinfo/. Standardwert ist die Geräteeinstellung.
Format
Das Format, in der die Zeit gesprochen werden soll. Eine Liste von Formaten findet sich in voicemail.conf. Als Standardformat wird ABdY 'digits/at' IMp verwendet.

Liefert 0 zurück oder -1, wenn aufgelegt wird.

exten => 123,1,SayUnixTime(,,IMp)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SayUnixTime' =- 

[Synopsis]
Says a specified time in a custom format

[Description]
SayUnixTime([unixtime][|[timezone][|format]])
  unixtime: time, in seconds since Jan 1, 1970.  May be negative.
              defaults to now.
  timezone: timezone, see /usr/share/zoneinfo for a list.
              defaults to machine default.
  format:   a format the time is to be said in.  See voicemail.conf.
              defaults to "ABdY 'digits/at' IMp"

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

SendDTMF()

Sendet beliebige DTMF-Ziffern zu dem Channel.

SendDTMF(Ziffern[,Timeout_ms])

Sendet die angegebenen DTMF-Ziffern auf einem Channel. Gültige DTMF-Symbole sind 0-9, *, # und A-D. Sie können auch den Buchstaben w als eine Ziffer verwendet, er steht für eine Wartezeit von 500 Millisekunden. Der Parameter Timeout_ms bezeichnet die Zeitdauer in Millisekunden zwischen den Ziffern. Falls nicht angegeben, wird ein Wert von 250 Millisekunden für Timeout_ms angenommen.

Liefert bei Erfolg 0 zurück oder -1, wenn aufgelegt wird.

exten => 123,1,SendDTMF(123w456w789,200)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SendDTMF' =- 

[Synopsis]
Sends arbitrary DTMF digits

[Description]
 SendDTMF(digits[|timeout_ms]): Sends DTMF digits on a channel. 
 Accepted digits: 0-9, *#abcd, w (.5s pause)
 The application will either pass the assigned digits or terminate if it
 encounters an error.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Read()

SendImage()

Sendet eine Bilddatei.

SendImage(Dateiname[,Optionen])

Sendet eine Bilddatei auf einem Channel. Falls die Übermittlung von Bildern unterstützt wird und die Übertragung fehlschlägt, wird aufgelegt, sonst bei der nächsten Priorität fortgefahren. Mit der Option j wird, wenn der Channel keine Bildübertragung unterstützt, zur Priorität n+101 gesprungen.

Liefert 0 zurück, wenn das Bild fehlerfrei übertragen wurde oder der Channel eine Bildübertragung nicht unterstützt, sonst -1. Setzt die Channelvariable SENDIMAGESTATUS entweder auf OK (Erfolg) oder NOSUPPORT (nicht unterstützt).

exten => 123,1,SendImage(logo.jpg)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SendImage' =- 

[Synopsis]
Send an image file

[Description]
  SendImage(filename): Sends an image on a channel. 
If the channel supports image transport but the image send
fails, the channel will be hung up. Otherwise, the dialplan
continues execution.
The option string may contain the following character:
 'j' -- jump to priority n+101 if the channel doesn't support image transport
This application sets the following channel variable upon completion:
 SENDIMAGESTATUS  The status is the result of the attempt as a text string, one of
  OK | NOSUPPORT

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. SendText(), SendURL()

SendText()

Sendet Text zu dem Channel.

SendText(Text[,Optionen])

Überträgt den Text auf einem Channel (z.B. zur Anzeige im Display), falls die Übertragung von Text unterstützt wird. Danach wird die Ausführung bei der nächsten Priorität fortgesetzt. Mit der Option j wird, wenn der Channel keine Textübertragung unterstützt, zur Priorität n+101 gesprungen.

Der Text sollte bisher bei den meisten Kanälen 7-Bit-ASCII sein.

Liefert 0 zurück, wenn der Text fehlerfrei übertragen wurde oder der Channel eine Textübertragung nicht unterstützt, sonst -1. Setzt die Channelvariable SENDTEXTSTATUS auf SUCCESS (Erfolg), FAILURE (Sendefehler) oder UNSUPPORTED (nicht unterstützt).

exten => 123,1,SendText(Willkommen zu Asterisk)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SendText' =- 

[Synopsis]
Send a Text Message

[Description]
  SendText(text[|options]): Sends text to current channel (callee).
Result of transmission will be stored in the SENDTEXTSTATUS
channel variable:
      SUCCESS      Transmission succeeded
      FAILURE      Transmission failed
      UNSUPPORTED  Text transmission not supported by channel

At this moment, text is supposed to be 7 bit ASCII in most channels.
The option string many contain the following character:
'j' -- jump to n+101 priority if the channel doesn't support
       text transport

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. SendImage(), SendURL()

SendURL()

Sendet dem Channel eine URL.

SendURL(URL[,Option])

Sendet dem Channel eine URL, die das Gerät aufrufen soll (IAX2). Setzt die Ausführung beim nächsten Schritt fort.

Mit der Option j wird, wenn der Channel keine Übertragung von URLs unterstützt, zur Priorität n+101 gesprungen. Mit der Option wait wird vor dem Fortfahren auf eine Bestätigung gewartet, dass die URL geladen wurde.

Liefert 0 zurück, wenn die URL fehlerfrei übertragen wurde oder der Channel die Übertragung nicht unterstützt, sonst -1. Setzt die Channelvariable SENDURLSTATUS auf SUCCESS (Erfolg), FAILURE (Sendefehler), UNSUPPORTED (nicht unterstützt) oder NOLOAD (bei wait: Client konnte die URL nicht laden).

exten => 123,1,SendURL(http://www.asterisk.org/,wait)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SendURL' =- 

[Synopsis]
Send a URL

[Description]
  SendURL(URL[|option]): Requests client go to URL (IAX2) or sends the 
URL to the client (other channels).
Result is returned in the SENDURLSTATUS channel variable:
    SUCCESS       URL successfully sent to client
    FAILURE       Failed to send URL
    NOLOAD        Client failed to load URL (wait enabled)
    UNSUPPORTED   Channel does not support URL transport

If the option 'wait' is specified, execution will wait for an
acknowledgement that the URL has been loaded before continuing

If jumping is specified as an option (the 'j' flag), the client does not
support Asterisk "html" transport, and there exists a step with priority
n + 101, then execution will continue at that step.

SendURL continues normally if the URL was sent correctly or if the channel
does not support HTML transport.  Otherwise, the channel is hung up.

Differenz zum internen Hilfetext in Asterisk 1.2: 

13c13
<     NOLOAD        Client failed to load URL (wait enabled)
---
>     NOLOAD        Clien failed to load URL (wait enabled)
17a18
> and will return -1 if the peer is unable to load the URL
19,24c20,26
< If jumping is specified as an option (the 'j' flag), the client does not
< support Asterisk "html" transport, and there exists a step with priority
< n + 101, then execution will continue at that step.
< 
< SendURL continues normally if the URL was sent correctly or if the channel
< does not support HTML transport.  Otherwise, the channel is hung up.
---
> Old behaviour (deprecated): 
>  If the client does not support Asterisk "html" transport, 
>  and there exists a step with priority n + 101, then execution will
>  continue at that step.
>  Otherwise, execution will continue at the next priority level.
>  SendURL only returns 0 if the URL was sent correctly  or if
>  the channel does not support HTML transport, and -1 otherwise.

Siehe auch. SendImage(), SendText()

Set()

Setzt eine Variable auf den angegebenen Wert.

Set(Variable=Wert[,Variable2=Wert2,...][,Optionen])

Setzt die Variable auf den angegebenen Wert. Beginnt der Name der Variablen mit dem Zeichen _, wird einfache Vererbung angenommen (d.h. wird auf Kanäle vererbt, die von diesem Channel erzeugt werden), beginnt er mit __, wird Endlosvererbung angenommen (d.h. wird auf alle Kinder-Kanäle vererbt). Bis zu 24 Variablen können gesetzt werden. Variablen sind normalerweise nur innerhalb eines Channels gültig und werden beim Auflegen gelöscht. Mit der Option g setzt man in Asterisk 1.2 eine Variable (nicht eine Funktion!) global; in 1.4 macht man das mit Hilfe der Funktion GLOBAL().

; die Variable TEST auf "123" setzen:
exten => 123,1,Set(TEST=123)
exten => 123,n,SayDigits(${TEST})

; die globale Variable TEST2 auf "456" setzen:
exten => 123,n,Set(TEST2=456,g)         ; Asterisk 1.2
exten => 123,n,Set(GLOBAL(TEST2)=456)   ; Asterisk 1.4
[Anmerkung]Anmerkung

Ob globale Variablen auch nach einem Reload von Asterisk noch gültig sind, wird durch die Einstellung clearglobalvars in der extensions.conf bestimmt.

Set() wird auch verwendet, um in Funktionen zu schreiben (siehe Abschnitt 12, „Funktionen im Dialplan“).

exten => 123,1,Set(CALLERID(name)=Apfelmus)  ; CALLERID(name) setzen
exten => 123,n,Set(CALLERID(name)=)          ; CALLERID(name) leeren

exten => 123,n,Set(DB(mein/test)=ok)         ; in AstDB schreiben
exten => 123,n,Set(var=${DB(mein/test)})     ; aus AstDB lesen
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Set' =- 

[Synopsis]
Set channel variable(s) or function value(s)

[Description]
  Set(name1=value1|name2=value2|..[|options])
This function can be used to set the value of channel variables or dialplan
functions. It will accept up to 24 name/value pairs. When setting variables,
if the variable name is prefixed with _, the variable will be inherited into
channels created from the current channel. If the variable name is prefixed
with __, the variable will be inherited into channels created from the current
channel and all children channels.
  Options:
    g - Set variable globally instead of on the channel
        (applies only to variables, not functions)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. ImportVar(), doc/README.variables (1.2) / doc/channelvariables.txt (1.4), GLOBAL()

SetAMAFlags()

Setzt AMA-Flags im Anrufprotokoll.

SetAMAFlags(Flags)

Setzt zu Abrechnungszwecken die AMA-Flags im Anrufprotokoll (Call Detail Record), wobei die AMA-Einstellungen in den Channelkonfigurationsdateien überschrieben werden. Gültige Werte sind default, omit, billing und documentation.

Liefert stets 0 zurück.

exten => 123,1,SetAMAFlags(billing)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SetAMAFlags' =- 

[Synopsis]
Set the AMA Flags

[Description]
  SetAMAFlags([flag]): This application will set the channel's AMA Flags for
  billing purposes.

Differenz zum internen Hilfetext in Asterisk 1.2: 

8,9c8,9
<   SetAMAFlags([flag]): This application will set the channel's AMA Flags for
<   billing purposes.
---
>   SetAMAFlags([flag]): This channel will set the channel's AMA Flags for billing
> purposes.

SetCallerPres()

Setzt Caller-ID-Darstellungsflags (presentation flags).

SetCallerPres(Darstellung)

Setzt die Caller-ID-Darstellungsflags auf einer Q931-PRI-Verbindung.

Gültige Darstellungen sind:

allowed_not_screened
Anzeige erlaubt und nicht überprüft.
allowed_passed_screen
Anzeige erlaubt und Überprüfung erfolgreich.
allowed_passed_screen
Anzeige erlaubt und Überprüfung nicht erfolgreich.
allowed
Anzeige erlaubt, Netzwerknummer.
prohib_not_screened
Anzeige verboten und nicht überprüft.
prohib_passed_screen
Anzeige verboten und Überprüfung erfolgreich.
prohib_failed_screen
Anzeige verboten und Überprüfung nicht erfolgreich.
prohib
Anzeige verboten, Netzwerknummer.
unavailable
Nummer nicht verfügbar.

Liefert stets 0 zurück.

exten => 123,1,SetCallerPres(allowed_not_screened)
exten => 123,n,Dial(Zap/4/1234567)

Evtl. müssen Sie usecallingpres=yes in der zapata.conf setzen.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SetCallerPres' =- 

[Synopsis]
Set CallerID Presentation

[Description]
  SetCallerPres(presentation): Set Caller*ID presentation on a call.
  Valid presentations are:

      allowed_not_screened    : Presentation Allowed, Not Screened
      allowed_passed_screen   : Presentation Allowed, Passed Screen
      allowed_failed_screen   : Presentation Allowed, Failed Screen
      allowed                 : Presentation Allowed, Network Number
      prohib_not_screened     : Presentation Prohibited, Not Screened
      prohib_passed_screen    : Presentation Prohibited, Passed Screen
      prohib_failed_screen    : Presentation Prohibited, Failed Screen
      prohib                  : Presentation Prohibited, Network Number
      unavailable             : Number Unavailable

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

SetCDRUserField()

Setzt den Wert des CDR-Feldes "userfield".

SetCDRUserField(String)

Wird benutzt, um den Wert des CDR Feldes "userfield" zu setzen.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SetCDRUserField' =- 

[Synopsis]
Set the CDR user field

[Description]
[Synopsis]
SetCDRUserField(value)

[Description]
SetCDRUserField(value): Set the CDR 'user field' to value
       The Call Data Record (CDR) user field is an extra field you
       can use for data not stored anywhere else in the record.
       CDR records can be used for billing or storing other arbitrary data
       (I.E. telephone survey responses)
       Also see AppendCDRUserField().

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 
[Wichtig]Wichtig

Obwohl in der internen Hilfe noch kein Hinweis darauf steht, ist diese Applikation deprecated. Im Source-Code wird man fündig:

ast_log(LOG_WARNING, "SetCDRUserField is deprecated.  Please use CDR(userfield) instead.\n");

Bitte verwenden Sie also die Funktion CDR(userfield).

Siehe auch. CDR()

SetGlobalVar()

Setzt den Wert einer globalen Variable.

SetGlobalVar(variable=value)

Setzt eine globale Variable. Falls die Variable nicht existiert, wird sie gleichzeitig definiert.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SetGlobalVar' =- 

[Synopsis]
Set a global variable to a given value

[Description]
  SetGlobalVar(variable=value): This application sets a given global variable to
the specified value.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 
[Wichtig]Wichtig

Obwohl in der internen Hilfe noch kein Hinweis darauf steht, ist diese Applikation deprecated. Im Source-Code wird man fündig:

ast_log(LOG_WARNING, "SetGlobalVar is deprecated.  Please use Set(GLOBAL(%s)=%s) instead.\n", name, stringp);

Bitte verwenden Sie also in Asterisk 1.2 Set() mit der Option g und in Asterisk 1.4 GLOBAL().

Siehe auch. Set(), GLOBAL()

SetMusicOnHold()

Setzt den Wert der Default Wartemusik Klasse.

SetMusicOnHold(Klasse)

Setzt den Wert der Default Wartemusik Klasse.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SetMusicOnHold' =- 

[Synopsis]
Set default Music On Hold class

[Description]
SetMusicOnHold(class): Sets the default class for music on hold for a given channel.  When
music on hold is activated, this class will be used to select which
music is played.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 
[Wichtig]Wichtig

Bitte verwenden Sie ab Asterisk 1.4 CHANNEL(musicclass).

Siehe auch. CHANNEL()

SetTransferCapability()

Setzt den Wert der ISDN-Transfer-Capability neu.

SetTransferCapability(transferCapability)

Mögliche Werte:

SPEECH
0x00 - Speech (default, voice calls)
DIGITAL
0x08 - Unrestricted digital information (data calls)
RESTRICTED_DIGITAL
0x09 - Restricted digital information
3K1AUDIO
0x10 - 3.1 kHz Audio (fax calls)
DIGITAL_W_TONES
0x11 - Unrestricted digital information with tones/announcements
VIDEO
0x18 - Video
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SetTransferCapability' =- 

[Synopsis]
Set ISDN Transfer Capability

[Description]
  SetTransferCapability(transfercapability): Set the ISDN Transfer 
Capability of a call to a new value.
Valid Transfer Capabilities are:

  SPEECH             : 0x00 - Speech (default, voice calls)
  DIGITAL            : 0x08 - Unrestricted digital information (data calls)
  RESTRICTED_DIGITAL : 0x09 - Restricted digital information
  3K1AUDIO           : 0x10 - 3.1kHz Audio (fax calls)
  DIGITAL_W_TONES    : 0x11 - Unrestricted digital information with tones/announcements
  VIDEO              : 0x18 - Video

Differenz zum internen Hilfetext in Asterisk 1.2: 

17c17
<   VIDEO              : 0x18 - Video
---
>   VIDEO              : 0x18 - Video:

SIPAddHeader()

Fügt dem ausgehenden SIP-Anruf einen Header hinzu.

SIPAddHeader(Header: Wert)

Fügt einem mit der Dial()-Anwendung initiierten SIP-Anruf einen Header hinzu. Ein nicht standardisierter SIP-Header sollte mit einem X- beginnen, wie etwa X-Asterisk-Accountcode:. Verwenden Sie diese Anwendung mit Vorsicht, denn das Hinzufügen eines falschen Headers kann Probleme verursachen. Mit dieser Applikation können keine SIP-Header verändert werden.

Liefert stets 0 zurück.

exten => 123,1,SIPAddHeader(X-Asterisk-Account: ${CDR(accountcode)})
exten => 123,n,Dial(SIP/123)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SIPAddHeader' =- 

[Synopsis]
Add a SIP header to the outbound call

[Description]
  SIPAddHeader(Header: Content)
Adds a header to a SIP call placed with DIAL.
Remember to user the X-header if you are adding non-standard SIP
headers, like "X-Asterisk-Accountcode:". Use this with care.
Adding the wrong headers may jeopardize the SIP dialog.
Always returns 0

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. SIP_HEADER()

SIPdtmfMode()

Ändert das DTMF-Verfahren für einen SIP-Anruf.

SIPdtmfMode(Methode)

Ändert den DTMF-Modus für einen Anruf, der von einem SIP-Channel ausgeht (nicht für einen Anruf auf einen SIP-Channel). Methode kann die Werte inband (RTP), info oder rfc2833 annehmen.

exten => 123,n,SIPdtmfMode(rfc2833)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SIPDtmfMode' =- 

[Synopsis]
Change the dtmfmode for a SIP call

[Description]
SIPDtmfMode(inband|info|rfc2833): Changes the dtmfmode for a SIP call

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. RFC 2833[63], RFC 2976[64]

SMS()

Sendet oder empfängt SMS-Nachrichten.

SMS(Schlange[,Optionen])

Regelt den Austausch von SMS-Nachrichten mit einem SMS-fähigen Telefon oder über ein SMS-Service-Center nach dem Protokoll ETSI ES 201 912 auf analogen oder ISDN-Leitungen. Das Shell-Programm smsq verwendet dazu FSK[65] - die Funktion über komprimierte Codecs wie GSM ist daher unwahrscheinlich.

Optionen:

a
Als antwortende Seite agieren.
s
Als Service-Center agieren, das mit einem Telefon kommuniziert.

Alle Sende-/Empfangsschlangen werden in /var/spool/asterisk/sms/ gespeichert: die Nachrichten vom Service-Center zum Telefon in sc-me.Schlange/, die Nachrichten vom Telefon zum SMSC in me-sc.Schlange/. In /var/log/asterisk/sms wird ein Log geschrieben.

Beim Verbinden als Client (a) werden alle im Verzeichnis me-sc.Schlange/ wartenden Nachrichten gesendet und dann gelöscht; die empfangenen werden in sc-me.Schlange/ mit einem Timestamp im Dateinamen gespeichert. Wenn wir uns als Service-Center verbinden (s) ist das genau umgekehrt.

Die Nachrichten-Dateien haben folgendes Format, wobei ausgelassene Parameter Default-Werte haben:

oa=Originating Address (Absendernummer)

Nationale Telefonnummer oder internationale mit vorangehendem + (z.B. +49).

da=Destination Address (Empfängernummer)

Nationale Telefonnummer oder internationale mit vorangehendem +.

scts=Service Centre Time Stamp (Zeitstempel vom SC)

Im Format YYYY-MM-DD HH:MM:SS

pid=Protocol Identifier (decimal octet value)
dcs=Data coding scheme (decimal octet value)
mr=Message reference (decimal octet value)
ud=Der Nachrichtentext

Wenn andere Zeichen als 10, 13, 32-126, 128-255 (dezimal) in der Nachricht vorkommen, wird ud= durch ud# ersetzt und die Zeichen folgen hexadezimal kodiert.

srr=Status Report Request (0|1)
rp=Return Path (0|1)
vp=Validity Period (Gültigkeitsdauer in Minuten)

Beim Senden an ein SMSC müssen nur da und ud verwendet werden, oa wird ignoriert; beim Senden an ein Telefon sind nur oa und ud nötig, da wird ignoriert.

Eine Extension zum Empfangen von Nachrichten könnte so aussehen (wenn 01930100 die Nummer des für uns zuständigen SMSC - hier T-Com - ist):

[incoming]
exten => _X.,1,GotoIf($["${CALLERIDNUM}" = "01930100"]?sms-me-in,${EXTEN},1) 
; oder so:
;exten => _X./_0193010.,1,Goto(sms-me-in,${EXTEN},1)

[sms-me-in]
exten => _X.,1,Wait(1)
exten => _X.,n,SMS(me-eingang,a)
exten => _X.,n,System(handleincomingsms)
exten => _X.,n,Hangup()

wobei handleincomingsms z.B. smsq --process=befehl --queue=me-eingang sein könnte, was für jede eingegangene Nachricht einen Befehl ausführt.

Ausgehende Nachrichten sollten als Dateien geschrieben werden, könne aber auch mit folgendem (veralteten) Aufruf erzeugt werden (0193010 ist die Nummer des SMSC - hier T-Com):

[outgoing]
exten = 0193010,1,Goto(sms-me-out,${CALLERIDNUM},1)

[sms-me-out]
exten => _X.,1,Set(CDR(accountcode)=SMS)
exten => _X.,n,Set(smsFrom=${CALLERIDNUM})
exten => _X.,n,SMS(${smsFrom},s,${EXTEN},${smsText})  ; SMS erzeugen
exten => _X.,n,SMS(${smsFrom},s)                       ; senden
exten => _X.,n,Hangup()

Weitere Informationen und viele Beispiele auf http://www.voip-info.org/wiki/view/Asterisk+cmd+Sms und http://www.pi4tel.de/asterisk/sms.shtml. Man kann jedoch nicht erwarten, dass SMS()out of the box“ sofort funktioniert.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SMS' =- 

[Synopsis]
Communicates with SMS service centres and SMS capable analogue phones

[Description]
  SMS(name|[a][s]):  SMS handles exchange of SMS data with a call to/from SMS capabale
phone or SMS PSTN service center. Can send and/or receive SMS messages.
Works to ETSI ES 201 912 compatible with BT SMS PSTN service in UK
Typical usage is to use to handle called from the SMS service centre CLI,
or to set up a call using 'outgoing' or manager interface to connect
service centre to SMS()
name is the name of the queue used in /var/spool/asterisk/sms
Arguments:
 a: answer, i.e. send initial FSK packet.
 s: act as service centre talking to a phone.
Messages are processed as per text file message queues.
smsq (a separate software) is a command to generate message
queues and send messages.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

SoftHangup()

Legt den angegebenen Channel auf.

SoftHangup(Technologie/Ressource[,Optionen])

Legt den angegebenen Channel auf. Liefert stets 0 zurück. Der Optionen-Parameter kann den Buchstaben a enthalten, was bewirkt, dass alle Kanäle auf dem angegebenen Gerät (statt nur der Ressource) aufgelegt werden.

; alle Kanäle auflegen, die Zap/4 benutzen:
exten => 123,1,SoftHangup(Zap/4,a)
exten => 123,n,Wait(2)
exten => 123,n,Dial(Zap/4/1234567)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'SoftHangup' =- 

[Synopsis]
Soft Hangup Application

[Description]
  SoftHangup(Technology/resource|options)
Hangs up the requested channel.  If there are no channels to hangup,
the application will report it.
- 'options' may contain the following letter:
     'a' : hang up all channels on a specified device instead of a single resource

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Hangup()

StopMonitor()

Beendet die Überwachung eines Channels.

StopMonitor()

Beendet die Überwachung (Aufnahme) eines Channels. Diese Anwendung hat keinerlei Auswirkungen, wenn der Channel momentan nicht überwacht wird.

exten => 123,1,Answer()
exten => 123,n,Monitor(wav,monitor_test,mb)
exten => 123,n,SayDigits(12345678901234567890)
exten => 123,n,StopMonitor()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'StopMonitor' =- 

[Synopsis]
Stop monitoring a channel

[Description]
StopMonitor
Stops monitoring a channel. Has no effect if the channel is not monitored

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Monitor(), PauseMonitor()

StopPlaytones()

Beendet die Wiedergabe einer Liste von Tönen.

StopPlaytones()

Beendet die Wiedergabe der momentan laufenden Tonliste.

exten => 123,1,Playtones(busy)
exten => 123,n,Wait(2)
exten => 123,n,StopPlaytones()
exten => 123,n,Playtones(congestion)
exten => 123,n,Wait(2)
exten => 123,n,StopPlaytones()
exten => 123,n,Goto(1)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'StopPlayTones' =- 

[Synopsis]
Stop playing a tone list

[Description]
Stop playing a tone list

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Playtones(), indications.conf

System()

Führt einen Shell-Befehl aus.

System(Befehl)

Führt durch die C-Funktion system() einen Befehl auf der Shell sh aus.

Diese Anwendung ist der TrySystem()-Anwendung sehr ähnlich, abgesehen davon, dass sie -1 zurückliefert, falls sie den Systembefehl nicht ausführen kann, wohingegen die TrySystem()-Anwendung stets 0 zurückliefert.

Setzt die Channelvariable SYSTEMSTATUS auf SUCCESS (erfolgreich ausgeführt), FAILURE (konnte nicht ausgeführt werden) oder (undokumentiert) auf APPERROR (Befehl ausgeführt aber mit Exit-Code ungleich 0).

exten => s,1,System(echo '${DATETIME} - ${CALLERID} - ${CHANNEL}' >> /var/log/asterisk/anrufe)

Siehe auch. TrySystem()

[Anmerkung]Anmerkung

Als Alternative kann die Applikation Backticks() oder Funktion BACKTICKS() aus dem Modul app_backticks[66] verwenden, mit denen man auch die Ausgabe des Befehls erhält.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'System' =- 

[Synopsis]
Execute a system command

[Description]
  System(command): Executes a command  by  using  system(). If the command
fails, the console should report a fallthrough. 
Result of execution is returned in the SYSTEMSTATUS channel variable:
   FAILURE  Could not execute the specified command
   SUCCESS  Specified command successfully executed

Old behaviour:
If the command itself executes but is in error, and if there exists
a priority n + 101, where 'n' is the priority of the current instance,
then  the  channel  will  be  setup to continue at that priority level.
Note that this jump functionality has been deprecated and will only occur
if the global priority jumping option is enabled in extensions.conf.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Transfer()

Übermittelt den Anruf zu einer anderen Extension.

Transfer([Technologie/]Ziel[,Optionen])

Verlangt die Übermittlung des Anrufers zu einer gegebenen Extension. Wird Technologie (SIP, IAX2 etc.) angegeben, werden nur Anrufe der gleichen Technologie transferiert. Bei SIP-Kanälen, die noch nicht beantwortet wurden, geschieht das mittels einer 302-REDIRECT-Nachricht an den Anrufer, bei beantworteten SIP-Kanälen mit REFER. Ziel kann auch z.B. 123456@sip.provider.tld sein.

Mit der Option j wird zur Priorität n+101 gesprungen, falls der Transfer-Versuch fehlschlägt.

Setzt die Channelvariable TRANSFERSTATUS auf SUCCESS (Transfer erfolgreich), FAILURE (Transfer fehlgeschlagen) oder UNSUPPORTED (vom Channel nicht unterstützt).

; Anrufe an Extension 123 zur Extension 130 umleiten:
exten => 123,1,Transfer(130)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Transfer' =- 

[Synopsis]
Transfer caller to remote extension

[Description]
  Transfer([Tech/]dest[|options]):  Requests the remote caller be transferred
to a given destination. If TECH (SIP, IAX2, LOCAL etc) is used, only
an incoming call with the same channel technology will be transfered.
Note that for SIP, if you transfer before call is setup, a 302 redirect
SIP message will be returned to the caller.

The result of the application will be reported in the TRANSFERSTATUS
channel variable:
       SUCCESS      Transfer succeeded
       FAILURE      Transfer failed
       UNSUPPORTED  Transfer unsupported by channel driver
The option string many contain the following character:
'j' -- jump to n+101 priority if the channel transfer attempt
       fails

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

TryExec()

Versucht die Ausführung einer Dialplan-Applikation.

TryExec(Applikation(Argumente))

Versucht, wie Exec(), eine Applikation auszuführen, aber ohne den Anruf abzubrechen, wenn die Applikation nicht gefunden wird oder einen Fehler zurückgibt. Stattdessen wird die Variable TRYSTATUS auf einen der folgenden Werte gesetzt:

SUCCESS
Die Applikation hat 0 zurückgegeben.
FAILED
Die Applikation hat einen Fehler zurückgegeben (Wert ungleich 0).
NOAPP
Die Applikation wurde nicht gefunden.

Für weitere Informationen siehe Exec().

Siehe auch. Exec(), ExecIf(), TrySystem()

TrySystem()

Versucht die Ausführung eines Shell-Befehls.

TrySystem(Befehl)

Führt wie System() einen Befehl auf der Shell sh aus, liefert aber stets 0 zurück, wohingegen System() bei einem Fehler -1 zurückgibt.

Setzt die Channelvariable SYSTEMSTATUS auf SUCCESS (erfolgreich ausgeführt), FAILURE (konnte nicht ausgeführt werden) oder APPERROR (Befehl ausgeführt aber mit Exit-Code ungleich 0).

exten => 123,1,TrySystem(echo 'Hallo Welt' > /tmp/hallo.txt)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'TrySystem' =- 

[Synopsis]
Try executing a system command

[Description]
  TrySystem(command): Executes a command  by  using  system().
on any situation.
Result of execution is returned in the SYSTEMSTATUS channel variable:
   FAILURE  Could not execute the specified command
   SUCCESS  Specified command successfully executed
   APPERROR Specified command successfully executed, but returned error code

Old behaviour:
If  the command itself executes but is in error, and if
there exists a priority n + 101, where 'n' is the priority of the current
instance, then  the  channel  will  be  setup  to continue at that
priority level.  Otherwise, System will terminate.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. System()

UnpauseMonitor()

Hebt die Pausierung der Aufzeichnung auf.

UnpauseMonitor()

Hebt die Pausierung des Mitschnitts eines mit PauseMonitor() pausierten Kanals wieder auf.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'UnpauseMonitor' =- 

[Synopsis]
Unpause monitoring of a channel

[Description]
UnpauseMonitor
Unpauses monitoring of a channel on which monitoring had
previously been paused with PauseMonitor.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. Monitor(), PauseMonitor()

UnpauseQueueMember()

Hebt die Pausierung eines Warteschlangenmitglieds auf.

UnpauseQueueMember([Schlange,]Interface[,Optionen])

Hebt die Pausierung für ein Mitglied einer Warteschlange auf, d.h. es kann wieder Anrufe entgegennehmen. Dies ist das Gegenstück zu PauseQueueMember() - siehe Beispiel dort. Die Arbeitsweise ist die gleiche, außer dass das gegebene Interface nicht pausiert, sondern wieder aktiviert wird.

Setzt die Channel-Variable UPQMSTATUS auf UNPAUSED (ent-pausiert) oder NOTFOUND (nicht gefunden).

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'UnpauseQueueMember' =- 

[Synopsis]
Unpauses a queue member

[Description]
   UnpauseQueueMember([queuename]|interface[|options]):
Unpauses (resumes calls to) a queue member.
This is the counterpart to PauseQueueMember and operates exactly the
same way, except it unpauses instead of pausing the given interface.
The option string may contain zero or more of the following characters:
       'j' -- jump to +101 priority when appropriate.
  This application sets the following channel variable upon completion:
     UPQMSTATUS       The status of the attempt to unpause a queue 
                      member as a text string, one of
            UNPAUSED | NOTFOUND
Example: UnpauseQueueMember(|SIP/3000)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. PauseQueueMember()

UserEvent()

Sendet ein beliebiges Event an das Manager-Interface.

UserEvent(Eventname[,Inhalt])

Sendet ein beliebiges Event an das Manager-Interface. Das resultierende Event-Paket hat folgendes Format:

Event: UserEvent Eventname
Channel: Channelname
Uniqueid: Anruf-ID
[Inhalt]

Als Inhalt können weitere Zeilen in der Form Feldname: Wert angegeben werden. Mehrere Zeilen werden durch | (in älteren Asterisk-Versionen durch , oder ^) getrennt.

Liefert stets 0 zurück.

exten => 123,1,UserEvent(Test,Hinweis: Ich rufe jetzt ${XY} an.)
exten => 123,n,Dial(${XY})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'UserEvent' =- 

[Synopsis]
Send an arbitrary event to the manager interface

[Description]
  UserEvent(eventname[|body]): Sends an arbitrary event to the manager
interface, with an optional body representing additional arguments.  The
body may be specified as a | delimeted list of headers. Each additional
argument will be placed on a new line in the event. The format of the
event will be:
    Event: UserEvent
    UserEvent: <specified event name>
    [body]
If no body is specified, only Event and UserEvent headers will be present.

Differenz zum internen Hilfetext in Asterisk 1.2: 

8,14c8,13
<   UserEvent(eventname[|body]): Sends an arbitrary event to the manager
< interface, with an optional body representing additional arguments.  The
< body may be specified as a | delimeted list of headers. Each additional
< argument will be placed on a new line in the event. The format of the
< event will be:
<     Event: UserEvent
<     UserEvent: <specified event name>
---
>   UserEvent(eventname[|body]): Sends an arbitrary event to the
> manager interface, with an optional body representing additional
> arguments.  The format of the event will be:
>     Event: UserEvent<specified event name>
>     Channel: <channel name>
>     Uniqueid: <call uniqueid>
16,17c15,16
< If no body is specified, only Event and UserEvent headers will be present.
< 
---
> If the body is not specified, only Event, Channel, and Uniqueid fields
> will be present.  Returns 0.

Siehe auch. manager.conf, Asterisk Manager interface

Verbose()

Sendet beliebigen Text zum „verbose output“ (Ausgabe im CLI).

Verbose([Level,]Nachricht)

Sendet die angegebene Nachricht an das CLI. Die Stufe Level kann als ganzzahliger Wert angegeben werden, um die Nachricht nur bei mindestens diesem Verbosity-Level anzuzeigen[67]. Ist Level nicht angegeben, wird 0 angenommen.

Liefert stets 0 zurück.

exten => 123,1,Verbose(1,Jemand ruft Extension 123 an.)
exten => 123,n,Playback(extension)
exten => 123,n,SayDigits(${EXTEN})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Verbose' =- 

[Synopsis]
Send arbitrary text to verbose output

[Description]
Verbose([<level>|]<message>)
  level must be an integer value.  If not specified, defaults to 0.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. NoOp(), Log(), DumpChan()

VMAuthenticate()

Authentifiziert den Anrufer über ein Voicemail-Passwort.

VMAuthenticate([Mailbox][@Context][,Optionen])

Verhält sich wie die Authenticate()-Anwendung, mit dem Unterschied, dass die Passwörter aus voicemail.conf (im optionalen VM-Context Context) gelesen werden.

Ist eine Mailbox angegeben, wird nur das Passwort dieser Mailbox als gültig betrachtet. Ohne Angabe kann sich der Anrufer mit jedem(!) VM-Passwort authentifizieren; die Channelvariable ${AUTH_MAILBOX} wird dann mit der authentifizierten Mailbox belegt.

Mit der Option s wird die Ansage der Aufforderung unterdrückt.

; als Mailbox die Extension annehmen und authentifizieren:
exten => 123,1,VMAuthenticate(${EXTEN}@verkauf)
exten => 123,n,SayDigits(${AUTH_MAILBOX})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'VMAuthenticate' =- 

[Synopsis]
Authenticate with Voicemail passwords

[Description]
  VMAuthenticate([mailbox][@context][|options]): This application behaves the
same way as the Authenticate application, but the passwords are taken from
voicemail.conf.
  If the mailbox is specified, only that mailbox's password will be considered
valid. If the mailbox is not specified, the channel variable AUTH_MAILBOX will
be set with the authenticated mailbox.

  Options:
    s - Skip playing the initial prompts.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Authenticate(), voicemail.conf

VoiceMail()

Hinterlässt eine Voicemail-Nachricht in der angegebenen Mailbox.

VoiceMail(Mailbox[@Context][&Mailbox[@Context][&...]],Optionen)

alte Syntax:

VoiceMail([s|u|b]Mailbox[@Context][&Mailbox[@Context][&...]])

Erlaubt dem Anrufer, in der angegebenen Mailbox eine Voicemail-Nachricht zu hinterlassen. Die Mailbox muss in voicemail.conf konfiguriert sein. Sind mehrere Mailboxen aufgelistet, wird die Begrüßung der ersten gespielt. Wenn die Mailbox nicht existiert, wird die Ausführung des Dialplans abgebrochen.

Mit der Option s (silent) werden die Anweisungen zum Hinterlassen der Nachricht übersprungen. Mit u (unavailable) wird die Nicht-verfügbar-Nachricht abgespielt, falls vorhanden. Bei b (busy) wird die Besetzt-Nachricht gespielt (Datei busy statt unavail).

Mit j wird bei einem Fehler zur Extension n+101 gesprungen, wenn vorhanden.

Drückt der Teilnehmer während der Eingabeaufforderung 0 (Null), geht der Anruf zur Extension o (kleiner Buchstabe o, Operator) im aktuellen Context über.

Drückt der Teilnehmer während der Eingabeaufforderung *, geht der Anruf zur Extension a (Assistant) im aktuellen Context über.

Gibt im Falle eines Fehlers, falls die Mailbox nicht gefunden wird oder der Teilnehmer auflegt -1 zurück, sonst 0. Setzt die Channelvariable VMSTATUS auf SUCCESS (Erfolg), USEREXIT (Abbruch durch Anrufer) oder FAILED (Fehler).

; den Anrufer zur Mailbox 123 leiten, mit Nicht-erreichbar-Nachricht:
exten => 123,1,VoiceMail(123,u)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'VoiceMail' =- 

[Synopsis]
Leave a Voicemail message

[Description]
  VoiceMail(mailbox[@context][&mailbox[@context]][...][|options]): This
application allows the calling party to leave a message for the specified
list of mailboxes. When multiple mailboxes are specified, the greeting will
be taken from the first mailbox specified. Dialplan execution will stop if the
specified mailbox does not exist.
  The Voicemail application will exit if any of the following DTMF digits are
received:
    0 - Jump to the 'o' extension in the current dialplan context.
    * - Jump to the 'a' extension in the current dialplan context.
  This application will set the following channel variable upon completion:
    VMSTATUS - This indicates the status of the execution of the VoiceMail
               application. The possible values are:
               SUCCESS | USEREXIT | FAILED

  Options:
    b    - Play the 'busy' greeting to the calling party.
    g(#) - Use the specified amount of gain when recording the voicemail
           message. The units are whole-number decibels (dB).
    s    - Skip the playback of instructions for leaving a message to the
           calling party.
    u    - Play the 'unavailble greeting.
    j    - Jump to priority n+101 if the mailbox is not found or some other
           error occurs.

Differenz zum internen Hilfetext in Asterisk 1.2: 

28c28
<     u    - Play the 'unavailble greeting.
---
>     u    - Play the 'unavailable greeting.

Siehe auch. VoiceMailMain(), voicemail.conf

VoiceMailMain()

Betritt das Voicemailsystem.

VoiceMailMain([Mailbox][@Context][,Optionen])

alte Syntax:

VoiceMailMain([[s|p]Mailbox][@Context])

Tritt zum Abrufen von Voicemail-Nachrichten in das Voicemail-System ein. Ohne Angabe der Mailbox wird der Anrufer zur Eingabe der Mailboxnummer aufgefordert.

Mit der Option s wird die Überprüfung des Passworts übersprungen. Mit der Option p wird der Benutzer zur Eingabe einer Mailboxnummer aufgefordert, die angegebene Nummer der Eingabe vorangestellt und der daraus resultierende String als Mailboxnummer verwendet. Das ist nützlich bei der Bereitstellung virtueller Voicemailboxen (Virtual Hosting). Mit a(Ordner) wird direkt zum angegebenen Ordner (Default: INBOX) gesprungen.

Ist ein Context spezifiziert, werden nur Mailboxen in diesem Voicemail-Context berücksichtigt.

Liefert -1 zurück, wenn der Benutzer auflegt, sonst 0.

; zum Voicemail-Menü der Mailbox 123 im Voicemail-Context default gehen:
exten => 123,1,VoiceMailMain(123@default)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'VoiceMailMain' =- 

[Synopsis]
Check Voicemail messages

[Description]
  VoiceMailMain([mailbox][@context][|options]): This application allows the
calling party to check voicemail messages. A specific mailbox, and optional
corresponding context, may be specified. If a mailbox is not provided, the
calling party will be prompted to enter one. If a context is not specified,
the 'default' context will be used.

  Options:
    p    - Consider the mailbox parameter as a prefix to the mailbox that
           is entered by the caller.
    g(#) - Use the specified amount of gain when recording a voicemail
           message. The units are whole-number decibels (dB).
    s    - Skip checking the passcode for the mailbox.
    a(#) - Skip folder prompt and go directly to folder specified.
           Defaults to INBOX

Differenz zum internen Hilfetext in Asterisk 1.2: 

20,21d19
<     a(#) - Skip folder prompt and go directly to folder specified.
<            Defaults to INBOX

Siehe auch. VoiceMail(), voicemail.conf

Wait()

Wartet für eine in Sekunden vorgegebene Dauer.

Wait(Sekunden)

Wartet die angegebene Anzahl Sekunden und liefert dann 0 zurück. Es können auch Sekundenbruchteile übergeben werden (z.B. 1.5 für 1,5 Sekunden).

exten => s,1,Answer()
exten => s,n,Wait(1.5)                        ; 1,5 Sekunden warten
exten => s,n,Background(enter-ext-of-person)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Wait' =- 

[Synopsis]
Waits for some time

[Description]
  Wait(seconds): This application waits for a specified number of seconds.
Then, dialplan execution will continue at the next priority.
  Note that the seconds can be passed with fractions of a second. For example,
'1.5' will ask the application to wait for 1.5 seconds.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. WaitExten()

WaitExten()

Wartet auf die Eingabe einer Extension.

WaitExten([Sekunden][,Optionen])

Wartet die angegebene Anzahl Sekunden auf die Eingabe einer neuen Extension durch den Teilnehmer und liefert dann 0 zurück. Es können auch Sekundenbruchteile übergeben werden (z.B. 1.5 für 1,5 Sekunden). Falls keine Zeitdauer spezifiziert wird, wird die Standardfrist (Default Extension-Timeout) gewartet.

Als Option ist m möglich, was dem Anrufer während auf eine Eingabe gewartet wird, Wartemusik vorspielt. Dabei kann optional in runden Klammern die Musikklasse angegeben werden, z.B. m(rock).

; 10 Sekunden auf die Eingabe einer Extension warten:
exten => s,1,Answer()
exten => s,n,Playback(enter-ext-of-person)
exten => s,n,WaitExten(10)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'WaitExten' =- 

[Synopsis]
Waits for an extension to be entered

[Description]
  WaitExten([seconds][|options]): This application waits for the user to enter
a new extension for a specified number of seconds.
  Note that the seconds can be passed with fractions of a second. For example,
'1.5' will ask the application to wait for 1.5 seconds.
  Options:
    m[(x)] - Provide music on hold to the caller while waiting for an extension.
               Optionally, specify the class for music on hold within parenthesis.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Wait()

WaitForRing()

Wartet die in Sekunden vorgegebene Dauer auf ein Klingelzeichen.

WaitForRing(Timeout)

Wartet nach dem Abschluss des nächsten Klingelns Timeout Sekunden auf ein Klingelzeichen.

Liefert bei Erfolg 0, falls aufgelegt wurde, -1 zurück.

; 5 Sekunden auf Klingeln warten, dann ein paar DTMF-Töne senden:
exten => 123,1,Answer()
exten => 123,n,WaitForRing(5)
exten => 123,n,SendDTMF(1234)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'WaitForRing' =- 

[Synopsis]
Wait for Ring Application

[Description]
  WaitForRing(timeout)
Returns 0 after waiting at least timeout seconds. and
only after the next ring has completed.  Returns 0 on
success or -1 on hangup

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

WaitForSilence()

Wartet auf eine festgelegte Dauer von Stille.

WaitForSilence(Dauer[,Wiederholungen])

Wartet auf Dauer Millisekunden Stille. Mit der Angabe von Wiederholungen wird auf soviele Auftreten von Stille gewartet, sonst auf das einmalige Auftreten.

; auf 2 Vorkommen von Stille von jeweils 500 ms warten:
exten => 123,1,WaitForSilence(500,2)
exten => 123,n,Playback(tt-weasels)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'WaitForSilence' =- 

[Synopsis]
Waits for a specified amount of silence

[Description]
  WaitForSilence(silencerequired[|iterations][|timeout]) 
Wait for Silence: Waits for up to 'silencerequired' 
milliseconds of silence, 'iterations' times or once if omitted.
An optional timeout specified the number of seconds to return
after, even if we do not receive the specified amount of silence.
Use 'timeout' with caution, as it may defeat the purpose of this
application, which is to wait indefinitely until silence is detected
on the line.  This is particularly useful for reverse-911-type
call broadcast applications where you need to wait for an answering
machine to complete its spiel before playing a message.
The timeout parameter is specified only to avoid an infinite loop in
cases where silence is never achieved.  Typically you will want to
include two or more calls to WaitForSilence when dealing with an answering
machine; first waiting for the spiel to finish, then waiting for the beep, etc.

Examples:
  - WaitForSilence(500|2) will wait for 1/2 second of silence, twice
  - WaitForSilence(1000) will wait for 1 second of silence, once
  - WaitForSilence(300|3|10) will wait for 300ms silence, 3 times,
     and returns after 10 sec, even if silence is not detected

Sets the channel variable WAITSTATUS with to one of these values:
SILENCE - if exited with silence detected
TIMEOUT - if exited without silence detected after timeout

Differenz zum internen Hilfetext in Asterisk 1.2: 

8,23c8,10
<   WaitForSilence(silencerequired[|iterations][|timeout]) 
< Wait for Silence: Waits for up to 'silencerequired' 
< milliseconds of silence, 'iterations' times or once if omitted.
< An optional timeout specified the number of seconds to return
< after, even if we do not receive the specified amount of silence.
< Use 'timeout' with caution, as it may defeat the purpose of this
< application, which is to wait indefinitely until silence is detected
< on the line.  This is particularly useful for reverse-911-type
< call broadcast applications where you need to wait for an answering
< machine to complete its spiel before playing a message.
< The timeout parameter is specified only to avoid an infinite loop in
< cases where silence is never achieved.  Typically you will want to
< include two or more calls to WaitForSilence when dealing with an answering
< machine; first waiting for the spiel to finish, then waiting for the beep, etc.
< 
< Examples:
---
>   WaitForSilence(x[|y]) Wait for Silence: Waits for up to 'x' 
> milliseconds of silence, 'y' times or 1 if omitted
> Set the channel variable WAITSTATUS with to one of these values:SILENCE - if silence of x ms was detectedTIMEOUT - if silence of x ms was not detected.Examples:
26,31d12
<   - WaitForSilence(300|3|10) will wait for 300ms silence, 3 times,
<      and returns after 10 sec, even if silence is not detected
< 
< Sets the channel variable WAITSTATUS with to one of these values:
< SILENCE - if exited with silence detected
< TIMEOUT - if exited without silence detected after timeout

WaitMusicOnHold()

Wartet für eine in Sekunden vorgegebene Dauer, wobei Wartemusik abgespielt wird.

WaitMusicOnHold(Dauer)

Spielt die in Sekunden angegebene Dauer Wartemusik. Ist keine Wartemusik vorhanden, wird die Verzögerung dennoch ausgeführt, jedoch ohne Musik.

Liefert nach Abschluss 0, oder -1, falls aufgelegt wurde.

; 5 Minuten Wartemusik:
exten => 123,1,Answer()
exten => 123,n,WaitMusicOnHold(300)
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'WaitMusicOnHold' =- 

[Synopsis]
Wait, playing Music On Hold

[Description]
WaitMusicOnHold(delay): Plays hold music specified number of seconds.  Returns 0 when
done, or -1 on hangup.  If no hold music is available, the delay will
still occur with no sound.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. musiconhold.conf

While()

Beginnt eine While-Schleife.

While(Ausdruck)

Beginnt eine While-Schleife. Die Ausführung kehrt zu diesem Punkt zurück, wenn EndWhile() aufgerufen wird, solange bis der Ausdruck nicht länger wahr ist. Danach wird die Ausführung nach EndWhile() fortgesetzt.

exten => 123,1,Answer()
exten => 123,n,Set(i=1)
exten => 123,n,While($[${i} < 5])
exten => 123,n,SayNumber(${i})
exten => 123,n,Set(i=$[${i} + 1])
exten => 123,n,EndWhile()
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'While' =- 

[Synopsis]
Start a while loop

[Description]
Usage:  While(<expr>)
Start a While Loop.  Execution will return to this point when
EndWhile is called until expr is no longer true.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< Start a while loop
---
> Start A While Loop

Siehe auch. EndWhile(), ExitWhile(), ContinueWhile(), GotoIf()

Zapateller()

Verwendet einen speziellen Informationston, um automatisierte Werbeanrufe abzublocken.

Zapateller(Optionen)

Generiert einen speziellen Informationston (SIT, special information tone, "Kein Anschluss unter dieser Nummer"), um Telefonverkäufer und andere maschinengewählte Anrufe davon abzuhalten, Sie zu belästigen.

Die folgenden Optionen sind verfügbar (ggf. durch | getrennt):

answer
Bewirkt, dass die Leitung beantwortet wird, bevor der Ton abgespielt wird.
nocallerid
Bewirkt, dass Zapateller den Ton nur abspielt, wenn keine Caller-ID-Information verfügbar ist.
[incoming]
; im Context incoming die SIT-Töne spielen, wenn keine Caller-ID vorhanden ist:
exten => s,1,Zapateller(nocallerid)
exten => s,n,Wait(3)
exten => s,n,Answer()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'Zapateller' =- 

[Synopsis]
Block telemarketers with SIT

[Description]
  Zapateller(options):  Generates special information tone to block
telemarketers from calling you.  Options is a pipe-delimited list of
options.  The following options are available:
'answer' causes the line to be answered before playing the tone,
'nocallerid' causes Zapateller to only play the tone if there
is no callerid information available.  Options should be separated by |
characters

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. PrivacyManager()

ZapBarge()

Tritt in einen Zap-Channel ein und überwacht ihn.

ZapBarge([Channel])

Tritt in den angegebenen Zap-Channel ein. Die anderen Teilnehmer auf dem Channel können Sie dabei nicht hören und werden auch sonst keine Anzeichen wahrnehmen, dass ihr Anruf überwacht wird.

Ist der Channel nicht angegeben, werden Sie zunächst zur Eingabe einer Channelnummer aufgefordert. Geben Sie z.B. 4# für Zap/4 ein.

Liefert -1, wenn der Anrufer auflegt. Ist unabhängig von dem Zustand, dass der Channel überwacht wird.

exten => 123,1,ZapBarge(Zap/2)
exten => 123,n,Hangup()

Siehe auch. ZapScan(), ChanSpy()

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ZapBarge' =- 

[Synopsis]
Barge in (monitor) Zap channel

[Description]
  ZapBarge([channel]): Barges in on a specified zap
channel or prompts if one is not specified.  Returns
-1 when caller user hangs up and is independent of the
state of the channel being monitored.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

ZapRAS()

Führt den Zaptel ISDN Remote Access Server aus.

ZapRAS(args)

Startet über pppd einen ISDN-RAS-Server auf dem aktuellen Channel. Der Channel muss ein freier Channel (z.B. PRI Source) und ein Zaptel-Channel sein, um diese Funktion durchführen zu können. (Eine Modem-Emulation ist nicht enthalten.)

Um Zaptel zu kennen, muss pppd entsprechend vorbereitet sein. Argumente ist eine Liste von durch das |-Symbol getrennten Argumenten[68].

Liefert stets -1 zurück.

Diese Anwendungen ist nur für die Benutzung mit ISDN-Leitungen ausgelegt, und Ihr Kernel muss mit einem Patch für die Unterstützung von ZapRAS() versehen sein. Außerdem muss Ihr Kernel ppp-Unterstützung bereitstellen.

exten => 123,1,Answer()
exten => 123,n,ZapRAS(debug|64000|noauth|netmask|255.255.255.0|10.0.0.1:10.0.0.2)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ZapRAS' =- 

[Synopsis]
Executes Zaptel ISDN RAS application

[Description]
  ZapRAS(args): Executes a RAS server using pppd on the given channel.
The channel must be a clear channel (i.e. PRI source) and a Zaptel
channel to be able to use this function (No modem emulation is included).
Your pppd must be patched to be zaptel aware. Arguments should be
separated by | characters.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

ZapScan()

Durchsucht Zap-Kanäle, um Anrufe zu überwachen.

ZapScan([Gruppe])

Erlaubt einem Call-Center-Manager, Zap-Kanäle auf bequeme Art zu überwachen. Benutzen Sie # um den nächsten Channel auszuwählen, oder * zum Beenden. Sie können die Abfrage auf eine bestimmte Channelgruppe begrenzen, indem Sie den Parameter Gruppe verwenden.

exten => 123,1,ZapScan()

Siehe auch. ZapBarge(), ChanSpy()

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about application 'ZapScan' =- 

[Synopsis]
Scan Zap channels to monitor calls

[Description]
  ZapScan([group]) allows a call center manager to monitor Zap channels in
a convenient way.  Use '#' to select the next channel and use '*' to exit
Limit scanning to a channel GROUP by setting the option group argument.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

12. Funktionen im Dialplan

Seit Asterisk 1.2 gibt es im Dialplan nicht nur Applikationen, sondern auch Funktionen. Anders als Applikationen können Funktionen nicht direkt aufgerufen werden. Stattdessen geben sie einen Wert zurück oder - was dem klassischen Verständnis einer Funktion widerspricht - man kann auch, in Verbindung mit der Applikation Set() (siehe Set()), schreibend auf sie zugreifen. Funktionsnamen werden immer ganz in Großbuchstaben geschrieben. Funktionen werden erstaunlicherweise wie Variablen durchwegs in ${} eingeklammert, was notwendig ist, da Strings nicht immer in Hochkommata stehen müssen.

Im Asterisk-CLI[69] können Sie mit show functions und show function FUNKTIONSNAME bzw. core show functions und core show function Funktionsname (ja nach Asterisk-Version) herausfinden, welche Funktionen in Ihrer Installation verfügbar sind. Dabei ist die komplette Großschreibung des Funktionsnamens wichtig.

AGENT()

AGENT(AgentenNr[:Feld])

Gibt Informationen über einen Agenten, identifiziert duch die AgentenNr zurück. Die folgenden Felder können abgefragt werden:

status
(default) Der Einlog-Status des Agenten, entweder LOGGEDIN oder LOGGEDOUT
password
Das Passwort des Agenten
name
Der Name des Agenten
mohclass
Die Wartemusik-Klasse (Music on hold class)
exten
Die Rückruf-Extension des Agenten. Wird von der Applikation AgentCallbackLogin() verwendet.
channel
Der Name des aktiven Kanals des Agenten (AgentLogin())
; die Variable foo auf den Namen des Agenten Nr. 42 setzen:
exten => 123,1,Set(foo=${AGENT(42:name)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'AGENT' =- 

[Syntax]
AGENT(<agentid>[:item])

[Synopsis]
Gets information about an Agent

[Description]
The valid items to retrieve are:
- status (default)      The status of the agent
                          LOGGEDIN | LOGGEDOUT
- password              The password of the agent
- name                  The name of the agent
- mohclass              MusicOnHold class
- exten                 The callback extension for the Agent (AgentCallbackLogin)
- channel               The name of the active channel for the Agent (AgentLogin)

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

ARRAY()

ARRAY(var1[,var2[,...]])

(ab Asterisk 1.4 verfügbar)

Setzt mehrere Variablen gleichzeitig. (Der Name ist irreführend, ein Array wird nicht erstellt.) Mit ARRAY() kann nur geschrieben, nicht gelesen werden. Denken Sie daran, die nach dieser Funktion folgenden Werte durch Komma zu trennen und dieses Komma durch Backslash (\) zu escapen, da sonst von einem zweiten Parameter für Set() ausgegangen würde!

; var1 auf 1 und var2 auf 2 setzen:
exten => 123,1,Set(ARRAY(var1,var2)=1\,2)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'ARRAY' =- 

[Syntax]
ARRAY(var1[|var2[...][|varN]])

[Synopsis]
Allows setting multiple variables at once

[Description]
The comma-separated list passed as a value to which the function is set will
be interpreted as a set of values to which the comma-separated list of
variable names in the argument should be set.
Hence, Set(ARRAY(var1|var2)=1\,2) will set var1 to 1 and var2 to 2
Note: remember to either backslash your commas in extensions.conf or quote the
entire argument, since Set can take multiple arguments itself.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

BASE64_DECODE()

BASE64_DECODE(Base64_String)

(ab Asterisk 1.4 verfügbar)

Dekodiert einen Base64-kodierten String.

exten => 123,1,Set(foo=${BASE64_DECODE("SGFsbG8gV2VsdA==")})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'BASE64_DECODE' =- 

[Syntax]
BASE64_DECODE(<base64_string>)

[Synopsis]
Decode a base64 string

[Description]
Returns the plain text string

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

BASE64_ENCODE()

BASE64_ENCODE(String)

(ab Asterisk 1.4 verfügbar)

Kodiert einen String mit Base64.

exten => 123,1,Set(foo=${BASE64_ENCODE("Hallo Welt")})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'BASE64_ENCODE' =- 

[Syntax]
BASE64_ENCODE(<string>)

[Synopsis]
Encode a string in base64

[Description]
Returns the base64 string

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

CALLERID()

CALLERID(Feld)

Gibt Informationen über den Anrufer zurück oder setzt diese. Feld ist eines der folgenden:

name
Name des Anrufers, alphanumerischer String. Sie sollten sich auf wenige Zeichen - z.B. 15 - beschränken.
num
Nummer, nur Ziffern. (manchmal findet man auch number, evtl. abhängig von der Asterisk-Version)
all
Name und Nummer mit der Nummer in spitzen Klammern, z.B.: "Peter Meier <012345>"
ani
ANI[70]-Nummer, für ausgehende Anrufe
dnid
DNID[71]-Nummer. Die gewählte Nummer (manchmal findet man auch dnis, evtl. abhängig von der Asterisk-Version)
rdnis
RDNIS[72]-Nummer. Die Nummer, die auf die aktuelle Extension umgeleitet hat, z.B. falls die Nummer einer Voicemailbox nicht die gewählte Extension ist.

Ab Asterisk 1.4 muss z.B. statt der Variablen ${CALLERIDNUM} die Funktion ${CALLERID(num)} verwendet werden, statt ${RDNIS} $(CALLERID(rdnis)) etc. Die Applikation SetCIDName() wird durch Set(CALLERID(name)=Name) ersetzt, SetCallerID() durch Set(CALLERID(all)=Name <Nummer>) etc.

; die Variable foo auf die Anruferkennung setzen:
exten => 123,1,Set(foo=${CALLERID(all)})

; den Anrufernamen auf "Peter Meier" setzen:
exten => 123,1,Set(CALLERID(name)="Peter Meier") 
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'CALLERID' =- 

[Syntax]
CALLERID(datatype[,<optional-CID>])

[Synopsis]
Gets or sets Caller*ID data on the channel.

[Description]
Gets or sets Caller*ID data on the channel.  The allowable datatypes
are "all", "name", "num", "ANI", "DNID", "RDNIS".
Uses channel callerid by default or optional callerid, if specified.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< CALLERID(datatype[,<optional-CID>])
---
> CALLERID(datatype)
13d12
< Uses channel callerid by default or optional callerid, if specified.

CDR()

CDR(Feld)

Liest oder setzt CDR[73]-Felder. Feld ist eines der folgenden (wenn nicht anders angegeben ist nur Lesen möglich):

clid
Caller-ID
src
Source, die Caller-ID-Nummer
dst
Destination, Ziel-Extension
dcontext
Destination context, der Ziel-Context
channel
Der Kanalname
dstchannel
Destination channel, der Ziel-Kanal, falls zutreffend
lastapp
Die letzte ausgeführte Applikation
lastdata
Die Argumente der zuletzt ausgeführten Applikation
start
Die Start-Zeit des Anrufs
answer
Die Zeit, zu der der Anruf beantwortet wurde
end
Die End-Zeit des Anrufs
duration
Die Dauer des Anrufs (in Sekunden)
billsec
Die Dauer des Anrufs seit der Anruf beantwortet wurde, also die zu berechnende Zeit (in Sekunden)
disposition
Der Status des Anrufs: ANSWERED, NO ANSWER, BUSY oder FAILED
amaflags
Die AMA[74]-Flags. DEFAULT (System-Default), BILLING (zur Abrechnung), DOCUMENTATION (zur Dokumentierung) oder OMIT (keine Aufzeichnung). (Manchmal findet man statt BILLING und OMIT auch die Angaben BILL und IGNORE - evtl. abhängig von der Asterisk-Version)
accountcode
Die alphanumerische Nummer des Abrechnungskontos, max. 20 Zeichen (auch Setzen möglich)
uniqueid
Die einmalige alphanumerische ID des Kanals (max. 32 Zeichen)
userfield
Das User-Feld, in das beliebige Informationen (max. 255 Zeichen) geschrieben werden können (auch Setzen möglich)
; foo auf die Dauer des Anrufs setzen:
exten => 123,1,Set(foo=${CDR(duration)})

; das User-Feld auf "meine Infos" setzen:
exten => 123,1,Set(CDR(userfield)=meine Infos)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'CDR' =- 

[Syntax]
  Here is a list of all the available cdr field names:
    clid          lastdata       disposition
    src           start          amaflags
    dst           answer         accountcode
    dcontext      end            uniqueid
    dstchannel    duration       userfield
    lastapp       billsec        channel
  All of the above variables are read-only, except for accountcode,
  userfield, and amaflags. You may, however,  supply
  a name not on the above list, and create your own
  variable, whose value can be changed with this function,
  and this variable will be stored on the cdr.
   raw values for disposition:
       1 = NO ANSWER
       2 = BUSY
       3 = FAILED
       4 = ANSWERED
    raw values for amaflags:
       1 = OMIT
       2 = BILLING
       3 = DOCUMENTATION


[Synopsis]
Gets or sets a CDR variable

[Description]
Options:
  'r' searches the entire stack of CDRs on the channel
  'u' retrieves the raw, unprocessed value
  For example, 'start', 'answer', and 'end' will be retrieved as epoch
  values, when the 'u' option is passed, but formatted as YYYY-MM-DD HH:MM:SS
  otherwise.  Similarly, disposition and amaflags will return their raw
  integral values.

Differenz zum internen Hilfetext in Asterisk 1.2: 

5,26c5
<   Here is a list of all the available cdr field names:
<     clid          lastdata       disposition
<     src           start          amaflags
<     dst           answer         accountcode
<     dcontext      end            uniqueid
<     dstchannel    duration       userfield
<     lastapp       billsec        channel
<   All of the above variables are read-only, except for accountcode,
<   userfield, and amaflags. You may, however,  supply
<   a name not on the above list, and create your own
<   variable, whose value can be changed with this function,
<   and this variable will be stored on the cdr.
<    raw values for disposition:
<        1 = NO ANSWER
<        2 = BUSY
<        3 = FAILED
<        4 = ANSWERED
<     raw values for amaflags:
<        1 = OMIT
<        2 = BILLING
<        3 = DOCUMENTATION
< 
---
> CDR(<name>[|options])
32,38c11
< Options:
<   'r' searches the entire stack of CDRs on the channel
<   'u' retrieves the raw, unprocessed value
<   For example, 'start', 'answer', and 'end' will be retrieved as epoch
<   values, when the 'u' option is passed, but formatted as YYYY-MM-DD HH:MM:SS
<   otherwise.  Similarly, disposition and amaflags will return their raw
<   integral values.
---
> Option 'r' searches the entire stack of CDRs on the channel

CHANNEL()

CHANNEL(Feld)

(ab Asterisk 1.4 verfügbar)

Liest/setzt bestimmte Kanaldaten. Feld ist eines der folgenden (wenn nicht anders angegeben, ist nur Lesen möglich):

audioreadformat
Das Format eingehender Audiodaten auf dem Kanal
audionativeformat
Das native Audioformat des Kanals
audiowriteformat
Das Format ausgehender Audiodaten auf dem Kanal
callgroup
In Asterisk lassen sich Extensions in Call groups von 0 - 63 einordnen, z.B. als Kundennummer.[75]
channeltype
Die „Technologie“ dieses Kanals, also z.B: IAX oder SIP
language
Die Sprache für Voice-Prompts (auch Setzen möglich)
musicclass
Die Musik-Klasse für Wartemusik, wie in musiconhold.conf definiert (auch Setzen möglich)
state

Zustand des Kanals (Down, Rsrvd, OffHook, Dialing, Ring, Ringing, Up, Busy, Dialing Offhook, Pre-ring, Unknown)

tonezone
Die „Tone zone“ bestimmt die Ton-Signale (Wählen, Klingeln, Besetzt, ...) für bestimmte Länder. Sie wird in der Konfigurationsdatei des Kanals (z.B. zaptel.conf) durch loadzone und defaultzone festgelegt. Die möglichen Werte sind (wie in der indications.conf definiert): at, au, be, br, ch, cl, cn, cz, de, dk, ee, es, fi, fr, gr, hu, it, lt, mx, ml, no, nz, pl, pt, ru, se, sg, uk, us, us-old, tw, ve, za.
videonativeformat
Das native Videoformat dieses Kanals

Zusätzlich zu diesen Feldern kann der Treiber des Kanals noch weitere bereitstellen, die man in der entsprechenden Dokumentation nachschlagen kann. Felder, die auf dem aktuellen Kanal nicht zur Verfügung stehen, geben einen leeren String zurück.

; Typ des Kanals abfragen:
exten => 123,1,Set(foo=${CHANNEL(channeltype)})

; Sprache auf Englisch setzen:
exten => 123,1,Set(CHANNEL(language)=en)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'CHANNEL' =- 

[Syntax]
CHANNEL(item)

[Synopsis]
Gets/sets various pieces of information about the channel.

[Description]
Gets/set various pieces of information about the channel.
Standard items (provided by all channel technologies) are:
R/O  audioreadformat     format currently being read
R/O  audionativeformat   format used natively for audio
R/O  audiowriteformat    format currently being written
R/W  callgroup           call groups for call pickup
R/O  channeltype         technology used for channel
R/W  language            language for sounds played
R/W  musicclass          class (from musiconhold.conf) for hold music
R/W  rxgain              set rxgain level on channel drivers that support it
R/O  state               state for channel
R/W  tonezone            zone for indications played
R/W  txgain              set txgain level on channel drivers that support it
R/O  videonativeformat   format used natively for video

Additional items may be available from the channel driver providing
the channel; see its documentation for details.

Any item requested that is not available on the current channel will
return an empty string.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

CHECKSIPDOMAIN()

CHECKSIPDOMAIN(Domain)

Prüft, ob die angegebene Domain (kann auch eine IP-Adresse sein) eine SIP-Domain ist, die Asterisk als lokal behandelt (siehe Datei sip.conf). Gibt den Domain-Namen oder einen leeren String zurück.

exten => 123,1,Set(foo=${CHECKSIPDOMAIN(123.45.67.89)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'CHECKSIPDOMAIN' =- 

[Syntax]
CHECKSIPDOMAIN(<domain|IP>)

[Synopsis]
Checks if domain is a local domain

[Description]
This function checks if the domain in the argument is configured
as a local SIP domain that this Asterisk server is configured to handle.
Returns the domain name if it is locally handled, otherwise an empty string.
Check the domain= configuration in sip.conf

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

CURL()

CURL(URL[|POST-Daten])

Lädt eine Webseite unter der angegebenen URL mit GET. Wenn POST-Daten angegeben sind, werden diese Daten mit POST gesendet. Gibt die Seite als String zurück.

; Die Seite unter der URL http://beispiel.de/seite.php?id=1&action=view abrufen:
exten => 123,1,Set(foo=${CURL(http://beispiel.de/seite.php?id=1&action=view)})

CUT()

CUT(Variablenname,Trennzeichen,Feld)

(Offenbar müssen in Asterisk 1.2.8 statt der Kommas zwischen den Parametern Pipe-Zeichen (|) verwendet werden.)

Zerteilt den String in einer Variablen anhand eines Trennzeichens (Default: -) und gibt den so entstandenen Einzelteil an der Stelle Feld (1-basiert) zurück. Feld kann auch eine Spanne sein (z.B. 2-4) oder mehrere Felder/Spannen, durch & getrennt, z.B. 2-4&6; die entsprechenden Felder werden dann wieder durch das Trennzeichen verbunden. Auch eine Range wie 3- (alles ab Feld 3) oder -3 (bis Feld 3) ist möglich.

Ein Komma als Trennzeichen muss durch Backslash escaped werden, z.B. CUT(var,\,,2).

exten => 123,1,Set(var=1-2-3-4-5)            ; var ist "1-2-3-4-5"
exten => 123,n,Set(var=${CUT(var,,1-3&5)})   ; var ist "1-2-3-5"
[Wichtig]Wichtig

Der Parameter Variablenname muss der Name einer Variablen sein, nicht ein String. Die wäre also falsch: CUT(${bar},,3)

Siehe auch. FIELDQTY()

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'CUT' =- 

[Syntax]
CUT(<varname>,<char-delim>,<range-spec>)

[Synopsis]
Slices and dices strings, based upon a named delimiter.

[Description]
  varname    - variable you want cut
  char-delim - defaults to '-'
  range-spec - number of the field you want (1-based offset)
             may also be specified as a range (with -)
             or group of ranges and fields (with &)

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

DB()

DB(Familie/Schlüssel)

Liest/setzt einen Wert in der AstDB. Beim Lesen wird der Wert zurückgegeben oder ein leerer String, wenn der Wert nicht existiert. Das Ergebnis ist in der Variable DB_RESULT verfügbar.

; Eintrag open/source setzen und abfragen:
exten => 123,1,Set(DB(open/source)=${ja})
exten => 123,n,Set(var=${DB(open/source)})
exten => 123,n,GotoIf($[[${DB(open/source)} = 1]?opensource:closedsource)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'DB' =- 

[Syntax]
DB(<family>/<key>)

[Synopsis]
Read from or write to the Asterisk database

[Description]
This function will read from or write a value to the Asterisk database.  On a
read, this function returns the corresponding value from the database, or blank
if it does not exist.  Reading a database value will also set the variable
DB_RESULT.  If you wish to find out if an entry exists, use the DB_EXISTS
function.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. DB_EXISTS(), DB_DELETE(), DBdeltree()

DB_DELETE()

DB_DELETE(Familie/Schlüssel)

Löscht einen Wert aus der AstDB. Dabei wird auch die Variable DB_RESULT auf den entsprechenden Wert gesetzt, falls vorhanden.

; den Eintrag cidnums/0123456789 löschen:
exten => 123,1,Set(ignored=${DB_DELETE(cidnums/0123456789)})
[Anmerkung]Anmerkung

Vor Asterisk 1.4 muss statt der Funktion DB_DELETE() die Applikation DBdel() verwendet werden.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'DB_DELETE' =- 

[Syntax]
DB_DELETE(<family>/<key>)

[Synopsis]
Return a value from the database and delete it

[Description]
This function will retrieve a value from the Asterisk database
 and then remove that key from the database.  DB_RESULT
will be set to the key's value if it exists.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. DB(), DB_EXISTS(), DBdel(), DBdeltree()

DB_EXISTS()

DB_EXISTS(Familie/Schlüssel)

Prüft, ob ein Schlüssel in der AstDB vorhanden ist. Gibt 1 oder 0 zurück. Setzt auch die Variable DB_RESULT auf den unter dem Schlüssel gespeicherten Wert.

; abfragen, ob der Eintrag cidnums/0123456789 existiert:
exten => 123,1,Set(foo=${DB_EXISTS(cidnums/0123456789)})

So kann z.B. die Applikation LookupBlacklist() ersetzt werden. Springt, falls die Anrufernummer in der Blacklist ist, zum Context blacklisted, Extension s, Priorität 1:

exten => 123,1,GotoIf(${DB_EXISTS(blacklist/${CALLERID(num)})}?blacklisted,s,1)
exten => 123,n,Dial(IAX2/benutzer:passwort@beispiel.de/500)

[blacklisted]
exten => s,1,NoOp(${CALLERID(num)} ist auf der Blacklist)
exten => s,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'DB_EXISTS' =- 

[Syntax]
DB_EXISTS(<family>/<key>)

[Synopsis]
Check to see if a key exists in the Asterisk database

[Description]
This function will check to see if a key exists in the Asterisk
database. If it exists, the function will return "1". If not,
it will return "0".  Checking for existence of a database key will
also set the variable DB_RESULT to the key's value if it exists.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. DB(), DB_DELETE(), DBdeltree()

DUNDILOOKUP()

DUNDILOOKUP(Nummer[|DUNDi-Context[|Optionen]])

Schlägt eine Telefonnummer mit DUNDi (DUNDi) nach. Wird kein DUNDi-Context angegeben, wird e164 angenommen. Mit der Option b (bypass) wird der interne DUNDi-Cache umgangen. Gibt die gefundene Verbindung in der Form Technologie/Ressource oder einen leeren String zurück.

; die Nummer 0123456789 nachschlagen:
exten => 123,1,Set(foo=${DUNDILOOKUP(0123456789)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'DUNDILOOKUP' =- 

[Syntax]
DUNDILOOKUP(number[|context[|options]])

[Synopsis]
Do a DUNDi lookup of a phone number.

[Description]
This will do a DUNDi lookup of the given phone number.
If no context is given, the default will be e164. The result of
this function will the Technology/Resource found in the DUNDi
lookup. If no results were found, the result will be blank.
If the 'b' option is specified, the internal DUNDi cache will
be bypassed.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. dundi.conf

ENUMLOOKUP()

Asterisk 1.2:

ENUMLOOKUP(Nummer[,Dienst[,OptionenUndEintragsnr[,Zonen-Suffix]]])

Asterisk 1.4:

ENUMLOOKUP(Nummer[,Dienst[,Optionen,Eintragsnr[,Zonen-Suffix]]])

Schlägt eine Nummer mit ENUM (ENUM) nach. Dienst kann u.A. sip (Default), iax2, h323, tel oder ALL sein. Mit der Option c wird die Anzahl der Einträge zurückgegeben. Die Eintragsnr (Default 1) wählt einen Eintrag aus der Ergebnisliste aus. Zonen-Suffix (Default: e164.arpa) ist die ENUM-Zone. Ausführliche Beschreibung und Beispiele in doc/README.enum (1.2) / doc/enum.txt (1.4).

; in Asterisk 1.2:
exten => 123,1,Set(foo=${ENUMLOOKUP(+${CALLERID(num)},sip,1,freenum.org)})

; in Astarisk 1.4:
exten => 123,1,Set(foo=${ENUMLOOKUP(+${CALLERID(num)},sip,,1,freenum.org)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'ENUMLOOKUP' =- 

[Syntax]
ENUMLOOKUP(number[|Method-type[|options[|record#[|zone-suffix]]]])

[Synopsis]
ENUMLOOKUP allows for general or specific querying of NAPTR records or counts of NAPTR types for ENUM or ENUM-like DNS pointers

[Description]
Option 'c' returns an integer count of the number of NAPTRs of a certain RR type.
Combination of 'c' and Method-type of 'ALL' will return a count of all NAPTRs for the record.
Defaults are: Method-type=sip, no options, record=1, zone-suffix=e164.arpa

For more information, see doc/enum.txt

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< ENUMLOOKUP(number[|Method-type[|options[|record#[|zone-suffix]]]])
---
> ENUMLOOKUP(number[,Method-type[,options|record#[,zone-suffix]]])
15c15
< For more information, see doc/enum.txt
---
> For more information, see README.enum

Siehe auch. enum.conf

ENV()

ENV(Variablenname)

Liest/setzt eine Umgebungsvariable (Environment). Umgebungsvariablen sind keine Variablen in Asterisk, sondern in der Betriebssystem-Umgebung. Sie können in der Shell mit echo $Variablenname ausgegeben werden. Umgebungsvariablen unterscheiden zwischen Groß- unf Kleinschreibung und werden fast immer großgeschrieben.

; HOME lesen:
exten => 123,1,Set(foo=${ENV(HOME)})

; HOME setzen:
exten => 123,1,Set(ENV(HOME)=/myAst)
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'ENV' =- 

[Syntax]
ENV(<envname>)

[Synopsis]
Gets or sets the environment variable specified

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

EVAL()

EVAL(Variable)

Wertet eine Variable doppelt aus. Das lässt sich am besten an einem Beispiel erklären: Wenn die Variable ${VAR} den String "${VAR2}" enthält, würde sie ohne Eval() zu diesem String ausgewertet. Mit Eval() wird auch ${VAR2} nochmal zu ihrem Inhalt ausgewertet.

; wenn VAR den String "${VAR2}" enthält und VAR2 den String "Hallo Welt":
exten => 123,1,Set(foo=${EVAL(${VAR})})
; dann ist foo jetzt "Hallo Welt"
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'EVAL' =- 

[Syntax]
EVAL(<variable>)

[Synopsis]
Evaluate stored variables.

[Description]
Using EVAL basically causes a string to be evaluated twice.
When a variable or expression is in the dialplan, it will be
evaluated at runtime. However, if the result of the evaluation
is in fact a variable or expression, using EVAL will have it
evaluated a second time. For example, if the variable ${MYVAR}
contains "${OTHERVAR}", then the result of putting ${EVAL(${MYVAR})}
in the dialplan will be the contents of the variable, OTHERVAR.
Normally, by just putting ${MYVAR} in the dialplan, you would be
left with "${OTHERVAR}".

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

EXISTS()

EXISTS(Variable)

Prüft, ob eine Variable definiert ist. Gibt 1 oder 0 zurück.

exten => 123,1,Set(Var1=test)
exten => 123,n,Set(Var2=)
exten => 123,n,Set(foo=${EXISTS(${Var1})})   ; foo ist 1
exten => 123,n,Set(foo=${EXISTS(${Var2})})   ; foo ist 0
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'EXISTS' =- 

[Syntax]
EXISTS(<data>)

[Synopsis]
Existence Test: Returns 1 if exists, 0 otherwise

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

FIELDQTY()

FIELDQTY(Variablenname,Trennzeichen)

Gibt zurück, wie viele Teilstrings entstehen würden, wenn man den Inhalt der Variablen anhand des Trennzeichens aufteilt.

exten => 123,1,Set(Var=hallo#du#da#am#telefon)
exten => 123,n,Set(Anzahl=${FIELDQTY(Var,#)})    ; Anzahl ist 5
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'FIELDQTY' =- 

[Syntax]
FIELDQTY(<varname>|<delim>)

[Synopsis]
Count the fields, with an arbitrary delimiter

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< FIELDQTY(<varname>|<delim>)
---
> FIELDQTY(<varname>,<delim>)

Siehe auch. CUT()

FILTER()

FILTER(erlaubte Zeichen,String)

(ab Asterisk 1.4 verfügbar)

Filtert den String, so dass nur noch die erlaubten Zeichen im Rückgabewert vorkommen.

; nur die Zeichen 0123456789 in ${cdrnum} zulassen:
exten => 123,1,Set(foo=${FILTER(0123456789,${cdrnum})})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'FILTER' =- 

[Syntax]
FILTER(<allowed-chars>|<string>)

[Synopsis]
Filter the string to include only the allowed characters

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

GLOBAL()

GLOBAL(Variablenname)

(ab Asterisk 1.4 verfügbar)

Wird verwendet, um eine Variable als global zu deklarieren, also gültig über die Lebensdauer eines Kanals hinaus. In Asterisk 1.2 verwendet man stattdessen Set() (Set()) mit der Option g.

; eine globale Variable ${meinevariable} definieren:
exten => 123,1,Set(GLOBAL(meinevariable)=Test)
[Anmerkung]Anmerkung

Ob globale Variablen auch nach einem Reload von Asterisk noch gültig sind, wird durch die Einstellung clearglobalvars in der extensions.conf bestimmt.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'GLOBAL' =- 

[Syntax]
GLOBAL(<varname>)

[Synopsis]
Gets or sets the global variable specified

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

GROUP()

GROUP([Kategorie])

Liest/setzt die Gruppe des Kanals (Kanäle lassen sich beliebig gruppieren).

exten => 123,1,Set(GROUP()=ausgehende)                ; Gruppe setzen
exten => 123,n,GotoIf($[${GROUP_COUNT()} > 10]?200)   ; zu viele?
exten => 123,n,Dial(0123456)                          ; wählen
exten => 123,200,SetVar(DIALSTATUS=CHANUNAVAIL)       ; ablehnen
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'GROUP' =- 

[Syntax]
GROUP([category])

[Synopsis]
Gets or sets the channel group.

[Description]
Gets or sets the channel group.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. GROUP_COUNT(), GROUP_LIST(), GROUP_MATCH_COUNT()

GROUP_COUNT()

GROUP_COUNT([Gruppe[@Kategorie]])

Gibt die Anzahl der Kanäle in der angegebenen Gruppe zurück. Wird keine Gruppe angegeben, gilt die aktuelle Gruppe des Kanals.

; Anzahl der Kanäle in Gruppe ausgehende abfragen:
exten => 123,1,Set(foo=${GROUP_COUNT(ausgehende)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'GROUP_COUNT' =- 

[Syntax]
GROUP_COUNT([groupname][@category])

[Synopsis]
Counts the number of channels in the specified group

[Description]
Calculates the group count for the specified group, or uses the
channel's current group if not specifed (and non-empty).

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. GROUP(), GROUP_LIST(), GROUP_MATCH_COUNT()

GROUP_LIST()

GROUP_LIST()

Gibt eine durch Leerzeichen getrennte Liste aller Gruppen zurück, die für den aktuellen Kanal gesetzt sind.

exten => 123,1,Set(foo=${GROUP_LIST()})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'GROUP_LIST' =- 

[Syntax]
GROUP_LIST()

[Synopsis]
Gets a list of the groups set on a channel.

[Description]
Gets a list of the groups set on a channel.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. GROUP(), GROUP_COUNT(), GROUP_MATCH_COUNT()

GROUP_MATCH_COUNT()

GROUP_MATCH_COUNT(Muster[@Kategorie])

Gibt die Anzahl der Kanäle zurück, auf die das angegebene Suchmuster - ein regulärer Ausdruck - passt.

; Anzahl der Kanäle in den Gruppen gruppe[1-4] abfragen:
exten => 123,1,Set(foo=${GROUP_MATCH_COUNT(gruppe[1-4])})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'GROUP_MATCH_COUNT' =- 

[Syntax]
GROUP_MATCH_COUNT(groupmatch[@category])

[Synopsis]
Counts the number of channels in the groups matching the specified pattern

[Description]
Calculates the group count for all groups that match the specified pattern.
Uses standard regular expression matching (see regex(7)).

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. GROUP(), GROUP_COUNT(), GROUP_LIST()

IAXPEER()

IAXPEER(Peer-Name[:Feld])

Gibt Daten über einen IAX-Peer zurück. Peer-Name kann auch CURRENTCHANNEL für den aktuellen Kanal sein. Feld ist eines der folgenden:

ip
(Default) Die IP-Adresse des Peers
status
Der Status (wenn qualify=yes gesetzt ist)
mailbox
Die eingestellte Mailbox
context
Der eingestellte Context
expire
Die Unix-Time (Epoch), wann die Verbindung das nächste Mal ausläuft.
dynamic
Ob die Verbindung dynamisch (dynamic) ist (yes|no).
callerid_name
Der eingestellte Caller-ID-Name
callerid_num
Die eingestellte Caller-ID-Nummer
codecs
Die verfügbaren Codecs
codec[x]
Der Codec Nummer x (0-basiert) in der Reihenfolge der Präferenz
; die IP-Adresse von peer1 abfragen:
exten => 123,1,Set(foo=${IAXPEER(peer1:ip)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'IAXPEER' =- 

[Syntax]
IAXPEER(<peername|CURRENTCHANNEL>[|item])

[Synopsis]
Gets IAX peer information

[Description]
If peername specified, valid items are:
- ip (default)          The IP address.
- status                The peer's status (if qualify=yes)
- mailbox               The configured mailbox.
- context               The configured context.
- expire                The epoch time of the next expire.
- dynamic               Is it dynamic? (yes/no).
- callerid_name         The configured Caller ID name.
- callerid_num          The configured Caller ID number.
- codecs                The configured codecs.
- codec[x]              Preferred codec index number 'x' (beginning with zero).

If CURRENTCHANNEL specified, returns IP address of current channel

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< IAXPEER(<peername|CURRENTCHANNEL>[|item])
---
> IAXPEER(<peername|CURRENTCHANNEL>[:item])

Siehe auch. SIPPEER()

IF()

IF(Ausdruck?trueVal:falseVal)

Gibt abhängig von der Bedingung den ersten oder zweiten Wert zurück. Ist die Bedingung wahr, wird der Wert nach ?, sonst der Wert nach : zurückgegeben.

; wenn ${Var}=123 ist, dann 5 zurückgeben, sonst 9:
exten => 123,1,Set(foo=${IF($[ ${Var} = 123]?5:9)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'IF' =- 

[Syntax]
IF(<expr>?[<true>][:<false>])

[Synopsis]
Conditional: Returns the data following '?' if true else the data following ':'

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. IFTIME(), xExecIf(), GotoIf(), GotoIfTime()

IFTIME()

IFTIME(Zeit-Ausdruck?trueVal:falseVal)

Gibt - wie IF() - abhängig von der Bedingung den ersten oder zweiten Wert zurück, nur dass hier ein spezieller Zeit-Ausdruck angegeben wird.

Der Zeit-Ausdruck ist aufgebaut im Format Uhrzeit|Wochentag|Monatstag|Monat, wobei jeder Teil auch eine Spanne (mit -) oder das immer passende Wildcard * sein kann. Die Zeit wird im 24-Std.-Format (z.B. 08:00-18:00), Wochentage und Monatsnamen als 3-buchstabige englische Abkürzung (mon, tue, wed, thu, fri, sat, sun bzw. jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec) angegeben.

; gültig 8-18 Uhr, montags, 1.-15. Dezember:
exten => 123,1,Set(foo=${IFTIME(08:00-18:00|mon|1-15|dec?5:0)})

; gültig jeden Samstag und Sonntag:
exten => 123,1,Set(foo=${IFTIME(*|sat-sun|*|*?5:0)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'IFTIME' =- 

[Syntax]
IFTIME(<timespec>?[<true>][:<false>])

[Synopsis]
Temporal Conditional: Returns the data following '?' if true else the data following ':'

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. IF(), ExecIf(), GotoIf(), GotoIfTime()

ISNULL()

ISNULL(Wert)

Gibt 1 zurück, wenn der Wert NULL (kein Wert) ist, sonst 0.

exten => 123,1,Set(foo=${ISNULL(${Var1})})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'ISNULL' =- 

[Syntax]
ISNULL(<data>)

[Synopsis]
NULL Test: Returns 1 if NULL or 0 otherwise

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

KEYPADHASH()

KEYPADHASH(String)

Wandelt die Buchstaben A-Z (und a-z) entsprechend der Telefontastatur in Ziffern um. Damit können z.B. Vanity-Nummern wie 0800-AUTOHAUS (0800-28864287) in richtige Nummern umgewandelt werden.

12 ABC3 DEF
4 GHI5 JKL6 MNO
7 PQRS8 TUV9 WXYZ
*0#
exten => 123,1,Set(foo=${KEYPADHASH(AUTOHAUS)})  ; gibt 28864287 zurück
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'KEYPADHASH' =- 

[Syntax]
KEYPADHASH(<string>)

[Synopsis]
Hash the letters in the string into the equivalent keypad numbers.

[Description]
Example:  ${KEYPADHASH(Les)} returns "537"

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

LANGUAGE()

LANGUAGE()

Liest/setzt die Sprache des Kanals. Die Sprache beeinflusst u.a., welche Audiodateien abgespielt werden. Ist z.B. de eingestellt und Playback(tt-weasels) wird ausgeführt, so wird die Datei de/tt-weasels abgespielt (wenn vorhanden). Gleiches gilt für SayDigits() etc.

; abfragen:
exten => 123,1,Set(foo=${LANGUAGE()})

; Deutsch setzen:
exten => 123,1,Set(LANGUAGE()=de)
[Warnung]Warnung

Ist deprecated (unerwünscht). Nutzen Sie lieber die Funktion CHANNEL(language). Siehe CHANNEL()

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'LANGUAGE' =- 

[Syntax]
LANGUAGE()

[Synopsis]
Gets or sets the channel's language.

[Description]
Deprecated. Use CHANNEL(language) instead.

Differenz zum internen Hilfetext in Asterisk 1.2: 

11c11,18
< Deprecated. Use CHANNEL(language) instead.
---
> Gets or sets the channel language.  This information is used for the
> syntax in generation of numbers, and to choose a natural language file
> when available.  For example, if language is set to 'fr' and the file
> 'demo-congrats' is requested to be played, if the file
> 'fr/demo-congrats' exists, then it will play that file, and if not
> will play the normal 'demo-congrats'.  For some language codes,
> changing the language also changes the syntax of some Asterisk
> functions, like SayNumber.

LEN()

LEN(String)

Gibt die Länge (Anzahl der Zeichen) eines Strings zurück.

; angenommen, ${test} ist "Hallo Welt"
exten => 123,1,Set(foo=${LEN(${test})})
; dann wird 10 zurückgegeben
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'LEN' =- 

[Syntax]
LEN(<string>)

[Synopsis]
Returns the length of the argument given

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

MATH()

MATH(Zahl1 Operator Zahl2[,Ergebnistyp])

Berechnet einfache mathematische Ausdrücke. Mögliche Operatoren sind: +, -, /, *, <, >, <=, >=, ==, % (modulo). Ergebnistyp: f, float (Fließkommazahl, Default), i, int (Ganzzahl), h, hex (Wert im Hexadezimal-System), c, char (Byte).

; 3*8 als Ganzzahl berechnen:
exten => 123,1,Set(i=${MATH(3*8,int)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'MATH' =- 

[Syntax]
MATH(<number1><op><number 2>[,<type_of_result>])

[Synopsis]
Performs Mathematical Functions

[Description]
Perform calculation on number 1 to number 2. Valid ops are: 
    +,-,/,*,%,<,>,>=,<=,==
and behave as their C equivalents.
<type_of_result> - wanted type of result:
  f, float - float(default)
  i, int - integer,
  h, hex - hex,
  c, char - char
Example: Set(i=${MATH(123%16,int)}) - sets var i=11

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

MD5()

MD5(String)

Berechnet den MD5-Hash (Digest, Prüfsumme) eines Strings (hexadezimale Rückgabe).

exten => 123,1,Set(foo=${MD5(${string})})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'MD5' =- 

[Syntax]
MD5(<data>)

[Synopsis]
Computes an MD5 digest

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

MUSICCLASS()

MUSICCLASS(Klasse)

Liest/setzt die Music-on-Hold-Klasse (Klasse der Wartemusik).

; abfragen:
exten => 123,1,Set(foo=${MUSICCLASS()})

; auf "HeavyMetal" setzen:
exten => 123,1,Set(MUSICCLASS()=HeavyMetal)
[Wichtig]Wichtig

Ab Asterisk 1.4 deprecated. Stattdessen Set(CHANNEL(musicclass)=default) verwenden, siehe CHANNEL().

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'MUSICCLASS' =- 

[Syntax]
MUSICCLASS()

[Synopsis]
Read or Set the MusicOnHold class

[Description]
Deprecated. Use CHANNEL(musicclass) instead.

Differenz zum internen Hilfetext in Asterisk 1.2: 

11c11
< Deprecated. Use CHANNEL(musicclass) instead.
---
> This function will read or set the music on hold class for a channel.

ODBC_SQL()

ODBC_SQL(SQL-Query)

Führt den angegebenen SQL-Query aus und gibt ggf. das Ergebnis zurück.

; abfragen:
exten => 123,1,Set(Name=${ODBC_SQL(SELECT name FROM liste WHERE nummer='123')})

; setzen:
exten => 123,1,Set(ODBC_SQL(UPDATE liste SET name='Peter' WHERE nummer='123'))

ODBC_USER_DATABASE()

ODBC_USER_DATABASE(var1[,var2[,...]])

Führt den in func_odbc.conf definierten SQL-Query aus und gibt ggf. das Ergebnis zurück. Die in der Abfrage definierten ${VAL1}, ${VAL2}, ..., ${ARG1}, ${ARG2}, ... werden durch die angegebenen Werte ersetzt.

func_odbc.conf:

[USER_DATABASE]
dsn=meine_datenbank
read=SELECT name FROM liste WHERE nummer='${ARG1}'
write=UPDATE liste SET name=${ARG1} WHERE nummer='${VAL1}'

extensions.conf:

; abfragen (read):
exten => 123,1,Set(Name=${ODBC_USER_DATABASE(${EXTEN})})

; setzen (write):
exten => 123,1,Set(ODBC_USER_DATABASE(${CALLERID(name)})=1000)

QUEUEAGENTCOUNT()

in Asterisk 1.2 - für 1.4 siehe QUEUE_MEMBER_COUNT()

QUEUEAGENTCOUNT(Warteschlange)

Gibt die Anzahl der Agenten (im Gegensatz zu den Anrufern) auf der Warteschlange zurück.

; Anzahl der Agenten in der "supportSchlange":
exten => 123,1,Set(foo=${QUEUEAGENTCOUNT(supportSchlange)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'QUEUEAGENTCOUNT' =- 

[Syntax]
QUEUEAGENTCOUNT(<queuename>)

[Synopsis]
Count number of agents answering a queue

[Description]
Returns the number of members currently associated with the specified queue.
This function is deprecated.  You should use QUEUE_MEMBER_COUNT() instead.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

QUEUE_MEMBER_COUNT()

in Asterisk 1.4 - für 1.2 siehe QUEUEAGENTCOUNT()

QUEUE_MEMBER_COUNT(Warteschlange)

Gibt die Anzahl der Agenten (im Gegensatz zu den Anrufern) auf der Warteschlange zurück.

; Anzahl der Agenten in der "supportSchlange":
exten => 123,1,Set(foo=${QUEUE_MEMBER_COUNT(supportSchlange)}) 
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'QUEUE_MEMBER_COUNT' =- 

[Syntax]
QUEUE_MEMBER_COUNT(<queuename>)

[Synopsis]
Count number of members answering a queue

[Description]
Returns the number of members currently associated with the specified queue.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

QUEUE_MEMBER_LIST()

QUEUE_MEMBER_LIST(Warteschlange)

Gibt eine durch Komma getrennte Liste der Agenten auf einer Warteschleife zurück.

; Agenten in der "supportSchlange":
exten => 123,1,Set(foo=${QUEUE_MEMBER_LIST(supportSchlange)})
; gibt z.B. 5,8,33 zurück
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'QUEUE_MEMBER_LIST' =- 

[Syntax]
QUEUE_MEMBER_LIST(<queuename>)

[Synopsis]
Returns a list of interfaces on a queue

[Description]
Returns a comma-separated list of members associated with the specified queue.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

QUOTE()

QUOTE(String)

Escaped Anführungszeichen innerhalb eines Strings.

; wenn ${var} >>Die "Asterisk"-PBX<< ist
exten => 123,1,Set(foo=${QUOTE(${var})})
; dann wird >>Die \"Asterisk\"-PBX<< zurückggeben
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'QUOTE' =- 

[Syntax]
QUOTE(<string>)

[Synopsis]
Quotes a given string, escaping embedded quotes as necessary

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

RAND()

RAND(min,max)

(ab Asterisk 1.4 verfügbar)

Gibt ein Zahl zwischen min und max (beide einschließlich) zurück. Der Default für min ist 0, der für max ist die größte auf dem System darstellbare Ganzzahl (meist 2147483647).

; einen zufälligen Wert zwischen 1 und 10 (einschließlich) wählen:
exten => 123,1,Set(zufall=${RAND(1,10)})

; Glücksspiel:
exten => 123,1,GotoIf($[${RAND(0,100)} < 25]?gewonnen:verloren)
exten => gewonnen,1,Playback(gewonnen)
exten => gewonnen,n,Goto(123,1)
exten => verloren,1,Playback(verloren)
exten => verloren,n,Goto(123,1)
[Anmerkung]Anmerkung

Vor Asterisk 1.4 muss man stattdessen die Applikation Random() verwenden.

[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'RAND' =- 

[Syntax]
RAND([min][|max])

[Synopsis]
Choose a random number in a range

[Description]
Choose a random number between min and max.  Min defaults to 0, if not
specified, while max defaults to RAND_MAX (2147483647 on many systems).
  Example:  Set(junky=${RAND(1|8)}); 
  Sets junky to a random number between 1 and 8, inclusive.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. Random()

REGEX()

REGEX("Ausdruck" String)

Gibt 1 zurück, wenn ein String auf einen regulären Ausdruck passt, sonst 0. Der reguläre Ausdruck kann auch ^ (passt auf den Anfang) und $ (passt auf das Ende) enthalten. Variablen werden vorher ausgewertet.

Der Parser in Asterisk 1.2 arbeitet nicht sauber und kann durch besondere Zeichen wie $ oder geschweifte Klammern im Ausdruck verwirrt werden. Als Workaround definiert man sich z.B. eine Variable ${dollar} mit dem Inhalt "$" und verwendet diese statt des $-Zeichens.

; prüfen, ob der Ausdruck "[abc][0-9]" auf den String "b3" passt:
exten => 123,1,Set(foo=${REGEX("[abc][0-9]" b3)})   ; gibt 1 zurück

; prüfen, ob ${str} mit 0 endet, Asterisk 1.4:
exten => 123,1,Set(foo=${REGEX("0$" ${str})})

; in Asterisk 1.2 behilft man sich so:
exten => 123,1,Set(foo=${REGEX("0${dollar}" ${str})})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'REGEX' =- 

[Syntax]
REGEX("<regular expression>" <data>)

[Synopsis]
Regular Expression

[Description]
Returns 1 if data matches regular expression, or 0 otherwise.
Please note that the space following the double quotes separating the regex from the data
is optional and if present, is skipped. If a space is desired at the beginning of the data,
then put two spaces there; the second will not be skipped.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

SET()

SET(Variablenname=Ausdruck)

Kann innerhalb von verschachtelten Ausdrücken verwendet werden, um Variablen auf einen Wert zu setzen. (Nicht verwechseln mit der Applikation Set()!)

; ${a}, ${b}, ${c}, und ${d} auf 8 setzen:
exten => 123,1,Set(a=${SET(b=${SET(c=${SET(d=8)})})})

; es ist aber meist vorteilhafter, zugunsten der Übersichtlichkeit
; ein oder zwei Zeilen mehr zu schreiben
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'SET' =- 

[Syntax]
SET(<varname>=[<value>])

[Synopsis]
SET assigns a value to a channel variable

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch. Set()

SHA1()

SHA1(String)

Berechnet den SHA1-Hash (Digest, Prüfsumme) eines Strings (hexadezimale Rückgabe).

; den SHA1-Hash von "Hallo Welt" berechnen:
exten => 123,1,Set(sha1hash=${SHA1(Hallo Welt)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'SHA1' =- 

[Syntax]
SHA1(<data>)

[Synopsis]
Computes a SHA1 digest

[Description]
Generate a SHA1 digest via the SHA1 algorythm.
 Example:  Set(sha1hash=${SHA1(junky)})
 Sets the asterisk variable sha1hash to the string '60fa5675b9303eb62f99a9cd47f9f5837d18f9a0'
 which is known as his hash

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

SIPCHANINFO()

SIPCHANINFO(Feld)

Gibt Daten des aktuellen SIP-Kanals zurück. Gültige Felder sind:

peerip
Die IP-Adresse des Peers
recvip
Die ursprüngliche IP-Adresse des Peers
from
Die URI aus dem From:-Header
uri
Die URI aus dem Contact:-Header
useragent
Der User-Agent (Client-Programm)
peername
Der Name des Peers
; den Namen des Peers abfragen:
exten => 123,1,Set(foo=${SIPCHANINFO(peername)}) 
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'SIPCHANINFO' =- 

[Syntax]
SIPCHANINFO(item)

[Synopsis]
Gets the specified SIP parameter from the current channel

[Description]
Valid items are:
- peerip                The IP address of the peer.
- recvip                The source IP address of the peer.
- from                  The URI from the From: header.
- uri                   The URI from the Contact: header.
- useragent             The useragent.
- peername              The name of the peer.
- t38passthrough        1 if T38 is offered or enabled in this channel, otherwise 0

Differenz zum internen Hilfetext in Asterisk 1.2: 

18d17
< - t38passthrough        1 if T38 is offered or enabled in this channel, otherwise 0

SIPPEER()

SIPPEER(Peername[,Feld])

Gibt Informationen über einen SIP-Peer zurück. Gültige Felder sind:

ip
(Default) Die IP-Adresse des Peers
mailbox
Die eingestellte Mailbox
context
Der eingestellte Context
expire
Die Unix-Zeit (Epoch), wann die Verbindung das nächste Mal ausläuft.
dynamic
Ob dynamic=yes gesetzt ist (yes|no).
callerid_name
Der eingestellte Caller-ID-Name
callerid_num
Die eingestellte Caller-ID-Nummer
codecs
Die verfügbaren Codecs
status
Der Status (wenn qualify=yes gesetzt ist)
regexten
Die Registrierungs-Extension (regexten)
limit
Begrenzung der Anzahl der Anrufe
curcalls
Die Anzahl der derzeitigen Anrufe (nur wenn ein Limit gesetzt ist)
language
Die Default-Sprache für diesen Peer
useragent
Der User-Agent des Peers
codec[x]
Der Codec Nummer x (0-basiert) in der Reihenfolge der Präferenz
accountcode
Die Abrechnungsnummer im CDR für Gespräche mit diesem Peer
; die IP-Adresse des Peers 2001:
exten => 123,1,Set(sip_ip=${SIPPEER(2001,ip)})
; der bevorzugte Codec des Peers:
exten => 123,n,Set(sip_ip=${SIPPEER(2001,codec[0])})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'SIPPEER' =- 

[Syntax]
SIPPEER(<peername>[|item])

[Synopsis]
Gets SIP peer information

[Description]
Valid items are:
- ip (default)          The IP address.
- mailbox               The configured mailbox.
- context               The configured context.
- expire                The epoch time of the next expire.
- dynamic               Is it dynamic? (yes/no).
- callerid_name         The configured Caller ID name.
- callerid_num          The configured Caller ID number.
- codecs                The configured codecs.
- status                Status (if qualify=yes).
- regexten              Registration extension
- limit                 Call limit (call-limit)
- curcalls              Current amount of calls 
                        Only available if call-limit is set
- language              Default language for peer
- accountcode           Account code for this peer
- useragent             Current user agent id for peer
- codec[x]              Preferred codec index number 'x' (beginning with zero).

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< SIPPEER(<peername>[|item])
---
> SIPPEER(<peername>[:item])

Siehe auch. IAXPEER()

SIP_HEADER()

SIP_HEADER(Headername[,Nummer])

Gibt einen Header aus dem SIP-Protokoll zurück. Diese Funktion werden Sie nur benötigen, wenn Sie genaue Kenntnis des SIP-Protokolls haben. Da manche Header (wie Via) mehrfach vorkommen können, kann man mit Nummer (1-basiert) angeben, welche Zeile man haben will.

; den TO-Header abfragen:
exten => 123,1,Set(DN=${SIP_HEADER(TO):5})
exten => 123,2,Set(DN=${CUT(DN,@,1)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'SIP_HEADER' =- 

[Syntax]
SIP_HEADER(<name>[,<number>])

[Synopsis]
Gets the specified SIP header

[Description]
Since there are several headers (such as Via) which can occur multiple
times, SIP_HEADER takes an optional second argument to specify which header with
that name to retrieve. Headers start at offset 1.

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. SIPAddHeader()

SORT()

SORT(Schlüssel1:Wert1[,Schlüssel2:Wert2[,...]])

Sortiert eine Liste von Schlüsseln und Werten anhand der Werte (als Fließkommazahlen) und gibt eine durch Komma getrennte Liste der Schlüssel zurück.

; Liste sortieren:
exten => 123,1,Set(foo=${SORT(vier:4|haelfte:.5|hundert:100|pi:3.14|e:2.71828|minuseins:-1)})
; foo ist jetzt "minuseins,haelfte,e,pi,vier,hundert"
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'SORT' =- 

[Syntax]
SORT(key1:val1[...][,keyN:valN])

[Synopsis]
Sorts a list of key/vals into a list of keys, based upon the vals

[Description]
Takes a comma-separated list of keys and values, each separated by a colon, and returns a
comma-separated list of the keys, sorted by their values.  Values will be evaluated as
floating-point numbers.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

STAT()

STAT(Flag,Dateiname)

(ab Asterisk 1.4 verfügbar)

Gibt Status-Informationen über eine Datei zurück (vgl. die Shell-Befehl test und stat). Mit Dateiname ist ein Datei-Knoten („inode“) gemeint, kann also auch ein Verzeichnis oder eine besondere Datei sein. Flag ist eines der folgenden:

d
Prüft, ob die Datei ein Verzeichnis ist.
e
Prüft, ob die Datei existiert.
f
Prüft, ob die Datei eine reguläre Datei ist (im Gegensatz zu besonderen Dateien: block special file, character special file, symbolic link, named pipe, socket).
m
Gibt den Datei-Modus zurück (oktal), also die Rechte, z.B. 0754.
s
Gibt die Datei-Größe in Bytes zurück.
A
Gibt die Unix-Time des letzten Zugriffs zurück (access).
C
Gibt die Unix-Time zurück, wann sich der Knoten (inode) zuletzt geändert hat (change).
M
Gibt die Unix-Time der letzten Veränderung zurück (modification).
; letzte Veränderung der Datei /etc/crontab abfragen:
exten => 123,1,Set(foo=${STAT(M,/etc/crontab)})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'STAT' =- 

[Syntax]
STAT(<flag>,<filename>)

[Synopsis]
Does a check on the specified file

[Description]
flag may be one of the following:
  d - Checks if the file is a directory
  e - Checks if the file exists
  f - Checks if the file is a regular file
  m - Returns the file mode (in octal)
  s - Returns the size (in bytes) of the file
  A - Returns the epoch at which the file was last accessed
  C - Returns the epoch at which the inode was last changed
  M - Returns the epoch at which the file was last modified

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

STRFTIME()

STRFTIME([Unixtime][,[Zeitzone][,Format]])

Formatiert eine Unix-Zeit (Epoch), umgerechnet in die angegebene Zeitzone, in einem bestimmten Format. Wenn Unixtime nicht angegeben wird, gilt die aktuelle Zeit. Der Default der Zeitzone ist die des Rechners. Mögliche Zeitzonen finden Sie in /usr/share/zoneinfo/. Die Formatierungsplatzhalter sind die wie in der C-Funktion strftime() (siehe man strftime), der Default ist %c, also die Lokale-abhängige Darstellung von Datum und Zeit.

; Datum/Zeit im Format JJJJ-MM-TT HH:MM:SS
exten => 123,1,Set(zeit=${STRFTIME(${EPOCH},Europe/Berlin,"%Y-%m-%d %H:%M:%S")})
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'STRFTIME' =- 

[Syntax]
STRFTIME([<epoch>][|[timezone][|format]])

[Synopsis]
Returns the current date/time in a specified format.

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

5c5
< STRFTIME([<epoch>][|[timezone][|format]])
---
> STRFTIME([<epoch>][,[timezone][,format]])

STRPTIME()

STRPTIME(DatumZeit|Zeitzone|Format)

(ab Asterisk 1.4 verfügbar)

Wandelt einen formatierten Datums-/Zeit-String unter Berücksichtigung der Zeitzone in einen Unix-Timestamp um.

; Datum/Zeit im Format JJJJ-MM-TT HH:MM:SS in ${zeit} speichern:
exten => 123,1,Set(zeit=${STRFTIME(${EPOCH},Europe/Berlin,"%Y-%m-%d %H:%M:%S")})
; ${zeit} wieder in einen Timestamp umwandeln:
exten => 123,n,Set(timestamp=${STRPTIME(${zeit}|Europe/Berlin|%Y-%m-%d %H:%M:%S)} 
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'STRPTIME' =- 

[Syntax]
STRPTIME(<datetime>|<timezone>|<format>)

[Synopsis]
Returns the epoch of the arbitrary date/time string structured as described in the format.

[Description]
This is useful for converting a date into an EPOCH time, possibly to pass to
an application like SayUnixTime or to calculate the difference between two
date strings.

Example:
  ${STRPTIME(2006-03-01 07:30:35|America/Chicago|%Y-%m-%d %H:%M:%S)} returns 1141219835

Differenz zum internen Hilfetext in Asterisk 1.2: 

-- in Version 1.2 nicht vorhanden --

Siehe auch. STRFTIME()

TIMEOUT()

TIMEOUT(Art)

Liest/setzt einen Timeout auf einem Kanal. Diese Arten von Timeouts sind möglich:

absolute
Die gesamte, maximale Zeit, die ein Anruf dauern darf. Beim Erreichen dieser Dauer wird auf die Extension T (absolute timeout) weitergeleitet oder aufgelegt. Ein Wert von 0 bedeutet keine Begrenzung. Mit dem Aufruf dieser Funktion wird die vorangehende Einstellung ungültig und neu gesetzt. Der Timeout beginnt zum Zeitpunkt des Aufrufs dieser Funktion, nicht mit dem Beginn des Anrufs.
digit
Die maximale Zeit, die zwischen dem Eintippen von Ziffern erlaubt ist. Beim Überschreiten wird die Eingabe des Users als beendet angesehen. Wenn dann die Extension nicht existiert, wird auf die Extension i (invalid) weitergeleitet oder aufgelegt. Der Default ist 5 Sekunden.
response
Die maximale Zeit, die auf eine Eingabe vom User gewartet wird. Wenn der User keine Extension tippt, wird auf die Extension t (timeout) weitergeleitet oder aufgelegt. Default: 10 Sekunden.
; absoluten Timeout abfragen:
exten => 123,1,Set(foo=${TIMEOUT(absolute)})

; Anruf-Dauer auf maximal 60 Sekunden begrenzen:
exten => 123,1,Set(TIMEOUT(absolute)=60)
exten => 123,n,Dial(SIP/${EXTEN})
exten => T,1,Playback(tut-uns-leid) 
exten => T,n,Playback(auf-wiederhoeren) 
exten => T,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'TIMEOUT' =- 

[Syntax]
TIMEOUT(timeouttype)

[Synopsis]
Gets or sets timeouts on the channel.

[Description]
Gets or sets various channel timeouts. The timeouts that can be
manipulated are:

absolute: The absolute maximum amount of time permitted for a call.  A
     setting of 0 disables the timeout.

digit:    The maximum amount of time permitted between digits when the
          user is typing in an extension.  When this timeout expires,
          after the user has started to type in an extension, the
          extension will be considered complete, and will be
          interpreted.  Note that if an extension typed in is valid,
          it will not have to timeout to be tested, so typically at
          the expiry of this timeout, the extension will be considered
          invalid (and thus control would be passed to the 'i'
          extension, or if it doesn't exist the call would be
          terminated).  The default timeout is 5 seconds.

response: The maximum amount of time permitted after falling through a
     series of priorities for a channel in which the user may
     begin typing an extension.  If the user does not type an
     extension in this amount of time, control will pass to the
     't' extension if it exists, and if not the call would be
     terminated.  The default timeout is 10 seconds.

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

TXTCIDNAME()

TXTCIDNAME(Nummer)

Schlägt den Namen des Anrufers mittels DNS (im TXT-Record) nach.

exten => 123,1,Set(foo=${TXTCIDNAME(012345678)})

URIDECODE()

URIDECODE(String)

Dekodiert einen URI-kodierten String. Siehe URIENCODE().

; "www.beispiel.de/?seite=Hallo%20Welt" dekodieren:
exten => 123,1,Set(foo=${URIDECODE("Hallo%20Welt")})
; ergibt "Hallo Welt"
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'URIDECODE' =- 

[Syntax]
URIDECODE(<data>)

[Synopsis]
Decodes a URI-encoded string according to RFC 2396.

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

8c8
< Decodes a URI-encoded string according to RFC 2396.
---
> Decodes an URI-encoded string.

URIENCODE()

URIENCODE(String)

URI-kodiert einen String, d.h., dass Zeichen, die nicht in einer URI vorkommen dürfen, durch Escape-Sequenzen der Form %XX ersetzt werden, wobei XX der hexadezimale Wert des Zeichens ist.

; "Hallo Welt" kodieren:
exten => 123,1,Set(foo=${URIENCODE("Hallo Welt")})
; ergibt "Hallo%20Welt"
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'URIENCODE' =- 

[Syntax]
URIENCODE(<data>)

[Synopsis]
Encodes a string to URI-safe encoding according to RFC 2396.

[Description]
Not available

Differenz zum internen Hilfetext in Asterisk 1.2: 

8c8
< Encodes a string to URI-safe encoding according to RFC 2396.
---
> Encodes a string to URI-safe encoding.

VMCOUNT()

VMCOUNT(VM-Box[@Context][|Ordner])

Gibt die Anzahl der Voicemailnachrichten in einer Voicemailbox zurück. Der Default-Context ist default, der Default-Ordner ist INBOX.

; Anzahl der Nachrichten in der Mailbox 456 abfragen:
exten => 123,1,Answer()
exten => 123,n,Set(anzahl=${VMCOUNT(456)})
exten => 123,n,Playback(vm-youhave)          ; "Sie haben"
exten => 123,n,GotoIf($[ ${anzahl} = 0 ]?keine:neue)

exten => 123,10(keine),Playback(vm-no)       ; "keine"
exten => 123,n,Goto(weiter)

exten => 123,20(neue),SayNumber($COUNT)      ; Anzahl
exten => 123,n,Goto(weiter)

exten => 123,30(weiter),Playback(vm-INBOX)   ; "neue"
exten => 123,n,Playback(vm-messages)         ; "Nachrichten"
exten => 123,n,Playback(vm-goodbye)          ; "Auf Wiederhören!"
exten => 123,n,Hangup()
[Anmerkung]Anmerkung

Interner Hilfetext zu dieser Applikation in Asterisk 1.4: 

  -= Info about function 'VMCOUNT' =- 

[Syntax]
VMCOUNT(vmbox[@context][|folder])

[Synopsis]
Counts the voicemail in a specified mailbox

[Description]
  context - defaults to "default"
  folder  - defaults to "INBOX"

Differenz zum internen Hilfetext in Asterisk 1.2: 

- keine - 

Siehe auch MailboxExists()



[42] Eine Ausnahme stellt hier die Asterisk RealTime Architecture (ARA) dar. In einem ARA-System wird der Dialplan in einer Datenbank (z.B. MySQL) abgespeichert und dort von Asterisk bei jedem Anruf neu eingelesen (also nicht nur einmal beim Starten von Asterisk). So können Dialpläne auch im laufenden Betrieb ständig geändert werden. Allerdings hat diese Variante viele Nachteile. Nährere Informationen zu ARA finden Sie unter http://www.voip-info.org/wiki/view/Asterisk+RealTime .

[43] Es gibt noch weitere Elemente, die im deutschen Sprachraum aber im Allgemeinen wenig Sinn machen. Aus diesem Grund werden sie hier nicht aufgeführt.

[44] siehe auch Set()

[45] Ein klassisches Henne-Ei-Problem

[46] Für alle neugierigen Leser: Das ist die Telefonnummer des Parlamentsarchives des Deutschen Bundestages in Berlin.

[47] Leider macht diese Variante in Deutschland wenig Sinn, da es unterschiedlich lange Vorwahlen gibt. Mehr Informationen zur deutschen Vorwahl finden Sie unter http://de.wikipedia.org/wiki/Telefonvorwahl_%28Deutschland%29.

[48] Um Ihnen das Gespräch nach Amerika zu sparen: Dies ist die Nummer der Besucherzentrale des Weißen Hauses in Washington DC. ;-)

[49] Der Sprachbaustein in der Datei that-is-not-rec-phn-num.gsm enthält den folgenden Text: "That is not a recognized phone number".

[50] Man kann natürlich mit Goto() auch zu einer bestimmten Priorität springen. Aber dann ist der ganze Vorteil der n-Priorität wieder weg.

[51] Analog Display Services Interface

[52] zu Erinnerung: 0: stdin, 1: stdout, 2:stderr. 3 ist ein frei definierter File descriptor

[53] Zum Beispiel IAX, SIP, H.323, Skinny, PRI, FXO, FXS, Local ...

[54] :-)

[55] zu Erinnerung: 0: stdin, 1: stdout, 2:stderr. 3 ist ein frei definierter File descriptor

[56] Interactive Voice Response

[57] http://sox.sourceforge.net/, siehe Beschreibung in Abschnitt 2, „musiconhold.conf, mindestens Version 12.17.7, Ihre installierte Version erfahren Sie mit soxmix -help

[58] abhängig von der Asterisk-Version; ältere Versionen löschen nicht automatisch

[65] Frequency Shift Keying, FSK

[67] z.B. asterisk -vvvr für Level 3 - oder set verbose 3 im CLI

[68] deren Erklärung hier zu weit führen würde; siehe http://www.voip-info.org/wiki/view/Asterisk+cmd+ZapRAS

[69] Command Line Interface, kann durch asterisk -r aufgerufen werden

[70] Automatic Number Identification

[71] Dialed/Destination Number Identification Service

[72] Redirected Dialed Number Identification Service

[73] Call Data Record, siehe CDR

[74] Automated Message Accounting

[75] Diese Beschränkung auf 64 Gruppen scheint rein willkürlich zu sein, und dürfte für den ein oder anderen Anwender nicht ausreichen.


Version 1.2, November 2002

Neue Version verfügbar

Sie betrachten gerade die alte Version des Buches (Version 1.0). Wir empfehlen Ihnen für Asterisk 1.4 und 1.6 die neue Version des Buches.

Asterisk-Tag 2008

Lernen Sie Mark Spencer (den Erfinder von Asterisk) kennen! Viele Vorträge, Case-Studies und Workshops rund um das Thema VoIP. Asterisk-Tag.org

Das gedruckte Buch

Werbung