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 Abschnitt 110, „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[115] können Sie mit show functions
und
show function
bzw. FUNKTIONSNAME
core
show functions
und core show function
(ja nach
Asterisk-Version) herausfinden, welche Funktionen in Ihrer Installation
verfügbar sind. Dabei ist die komplette Großschreibung des Funktionsnamens
wichtig.Funktionsname
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
oderLOGGEDOUT
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 | |
---|---|
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(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 | |
---|---|
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_String)
(ab Asterisk 1.4 verfügbar)
Dekodiert einen Base64-kodierten String.
exten => 123,1,Set(foo=${BASE64_DECODE("SGFsbG8gV2VsdA==")})
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(String
)
(ab Asterisk 1.4 verfügbar)
Kodiert einen String mit Base64.
exten => 123,1,Set(foo=${BASE64_ENCODE("Hallo Welt")})
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(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[116]-Nummer, für ausgehende Anrufe
dnid
- DNID[117]-Nummer. Die gewählte Nummer (manchmal findet man
auch
dnis
, evtl. abhängig von der Asterisk-Version) rdnis
- RDNIS[118]-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)=
ersetzt, Name
)SetCallerID()
durch
Set(CALLERID(all)=
etc.Name
<Nummer
>)
; 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 | |
---|---|
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(Feld
)
Liest oder setzt CDR[119]-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
oderFAILED
amaflags
- Die AMA[120]-Flags.
DEFAULT
(System-Default),BILLING
(zur Abrechnung),DOCUMENTATION
(zur Dokumentierung) oderOMIT
(keine Aufzeichnung). (Manchmal findet man stattBILLING
undOMIT
auch die AngabenBILL
undIGNORE
- 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 | |
---|---|
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(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.[121]
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
) durchloadzone
unddefaultzone
festgelegt. Die möglichen Werte sind (wie in derindications.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 | |
---|---|
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(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 | |
---|---|
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(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(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 | |
---|---|
Der Parameter |
Siehe auch. Abschnitt 19, „FIELDQTY()
“
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(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 | |
---|---|
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. Abschnitt 13, „DB_EXISTS()
“, Abschnitt 12, „DB_DELETE()
“, Abschnitt 25, „DBdeltree()
“
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 | |
---|---|
Vor Asterisk 1.4 muss statt der Funktion
|
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. Abschnitt 11, „DB()
“, Abschnitt 13, „DB_EXISTS()
“, Abschnitt 24, „DBdel()
“, Abschnitt 25, „DBdeltree()
“
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 | |
---|---|
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. Abschnitt 11, „DB()
“, Abschnitt 12, „DB_DELETE()
“, Abschnitt 25, „DBdeltree()
“
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 | |
---|---|
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
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 | |
---|---|
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(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
$
ausgegeben werden.
Umgebungsvariablen unterscheiden zwischen Groß- unf Kleinschreibung und
werden fast immer großgeschrieben.Variablenname
; HOME lesen: exten => 123,1,Set(foo=${ENV(HOME)}) ; HOME setzen: exten => 123,1,Set(ENV(HOME)=/myAst)
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(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 | |
---|---|
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(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 | |
---|---|
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(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 | |
---|---|
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. Abschnitt 10, „CUT()
“
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 | |
---|---|
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(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()
(Abschnitt 110, „Set()
“) mit der Option
g
.
; eine globale Variable ${meinevariable} definieren: exten => 123,1,Set(GLOBAL(meinevariable)=Test)
Anmerkung | |
---|---|
Ob globale Variablen auch nach einem Reload von Asterisk noch
gültig sind, wird durch die Einstellung |
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([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 | |
---|---|
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. Abschnitt 23, „GROUP_COUNT()
“, Abschnitt 24, „GROUP_LIST()
“, Abschnitt 25, „GROUP_MATCH_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 | |
---|---|
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. Abschnitt 22, „GROUP()
“, Abschnitt 24, „GROUP_LIST()
“, Abschnitt 25, „GROUP_MATCH_COUNT()
“
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 | |
---|---|
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. Abschnitt 22, „GROUP()
“, Abschnitt 23, „GROUP_COUNT()
“, Abschnitt 25, „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 | |
---|---|
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. Abschnitt 22, „GROUP()
“, Abschnitt 23, „GROUP_COUNT()
“, Abschnitt 24, „GROUP_LIST()
“
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 | |
---|---|
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. Abschnitt 47, „SIPPEER()
“
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 | |
---|---|
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. Abschnitt 28, „IFTIME()
“, xAbschnitt 36, „ExecIf()
“, Abschnitt 50, „GotoIf()
“, Abschnitt 51, „GotoIfTime()
“
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
,
wobei jeder Teil auch eine Spanne (mit Uhrzeit
|Wochentag
|Monatstag
|Monat
-
) 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 | |
---|---|
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. Abschnitt 27, „IF()
“, Abschnitt 36, „ExecIf()
“, Abschnitt 50, „GotoIf()
“, Abschnitt 51, „GotoIfTime()
“
ISNULL(Wert
)
Gibt 1 zurück, wenn der Wert NULL (kein Wert) ist, sonst 0.
exten => 123,1,Set(foo=${ISNULL(${Var1})})
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(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.
1 | 2 ABC | 3 DEF |
4 GHI | 5 JKL | 6 MNO |
7 PQRS | 8 TUV | 9 WXYZ |
* | 0 | # |
exten => 123,1,Set(foo=${KEYPADHASH(AUTOHAUS)}) ; gibt 28864287 zurück
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()
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 | |
---|---|
Ist deprecated (unerwünscht). Nutzen Sie lieber die Funktion
|
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(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 | |
---|---|
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(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 | |
---|---|
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(String
)
Berechnet den MD5-Hash (Digest, Prüfsumme) eines Strings (hexadezimale Rückgabe).
exten => 123,1,Set(foo=${MD5(${string})})
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(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 | |
---|---|
Ab Asterisk 1.4 deprecated. Stattdessen
|
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(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(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)
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 | |
---|---|
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 -- |
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 | |
---|---|
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(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 | |
---|---|
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(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 | |
---|---|
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(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 | |
---|---|
Vor Asterisk 1.4 muss man stattdessen die Applikation
|
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. Abschnitt 90, „Random()
“
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 | |
---|---|
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(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 | |
---|---|
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. Abschnitt 110, „Set()
“
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 | |
---|---|
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(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 | |
---|---|
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(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 | |
---|---|
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. Abschnitt 26, „IAXPEER()
“
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 | |
---|---|
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. Abschnitt 117, „SIPAddHeader()
“
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 | |
---|---|
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(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 | |
---|---|
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([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 | |
---|---|
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(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 | |
---|---|
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. Abschnitt 51, „STRFTIME()
“
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 | |
---|---|
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(Nummer
)
Schlägt den Namen des Anrufers mittels DNS (im TXT-Record) nach.
exten => 123,1,Set(foo=${TXTCIDNAME(012345678)})
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 | |
---|---|
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(String
)
URI-kodiert einen String, d.h., dass Zeichen, die nicht in einer
URI vorkommen dürfen, durch Escape-Sequenzen der Form
%
ersetzt werden, wobei
XX
XX
der hexadezimale Wert des Zeichens ist.
; "Hallo Welt" kodieren: exten => 123,1,Set(foo=${URIENCODE("Hallo Welt")}) ; ergibt "Hallo%20Welt"
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(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 | |
---|---|
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 Abschnitt 62, „MailboxExists()
“
[115] Command Line Interface, kann durch asterisk -r aufgerufen werden
[116] Automatic Number Identification
[117] Dialed/Destination Number Identification Service
[118] Redirected Dialed Number Identification Service
[120] Automated Message Accounting
[121] Diese Beschränkung auf 64 Gruppen scheint rein willkürlich zu sein, und dürfte für den ein oder anderen Anwender nicht ausreichen.
$Revision:473 $
Beta-Version!
2.0 Entwickler-Version des Asterisk Buches. Die 1.0 stabile Version ist natürlich noch online. Die 2.0er Version enthält viele Neuerungen, ist aber noch nicht 100% fehlerfrei. Im Zweifelsfall bitte auf die 1.0er Version gehen.
Bitte melden Sie Fehler und Feedback zur neuen 2.0er Version per E-Mail an den Autor.
Asterisk-Tag.org 2008
Auf der Asterisk-Tag.org Webseite finden Sie die Folien und Videos der Vorträge.