aboutsummaryrefslogtreecommitdiffstats
path: root/README.variables
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2002-09-06 15:22:51 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2002-09-06 15:22:51 +0000
commitd08711bdf946cc47e54f36c0039ebdd578007249 (patch)
tree54def398984ce83b00cd8e5e89f149c905fd4808 /README.variables
parentbfc8985acdef79d49fb2992b6525324b79897c64 (diff)
Version 0.2.0 from FTP
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@519 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'README.variables')
-rwxr-xr-xREADME.variables135
1 files changed, 135 insertions, 0 deletions
diff --git a/README.variables b/README.variables
new file mode 100755
index 000000000..9dbafd1f5
--- /dev/null
+++ b/README.variables
@@ -0,0 +1,135 @@
+GENERAL ENCHANCEMENTS TO EXTENSION LOGIC :
+
+QUOTING:
+
+exten => s,5,BackGround,blabla
+
+The parameter (blabla) can be quoted ("blabla"). In this case, a
+comma does not terminate the field.
+
+Also, characters special to variable substitution, expression evaluation, etc
+(see below), can be quoted. For example, to literally use a $ on the
+string "$1231", quote it with a preceeding \. Special characters that must
+be quoted to be used, are [ ] $ " \. (to write \ itself, use \\).
+
+VARIABLES:
+
+Parameter strings can include variables. Variable names are arbitrary strings.
+They are stored in the respective channel structure.
+
+To set a variable to a particular value, do :
+
+;exten => 1,2,SetVar,varname=value
+
+You can substitute the value of a variable everywhere using ${variablename}.
+For example, to stringwise append $lala to $blabla and store result in $koko,
+do:
+
+;exten => 1,2,SetVar,koko=${blabla}${lala}
+
+There are also the following special variables:
+
+${CALLERID} Caller ID
+${EXTEN} Current extension
+${CONTEXT} Current context
+${PRIORITY} Current priority
+
+There are two reference modes - reference by value and reference by name.
+To refer to a variable with its name (as an argument to a function that
+requires a variable), just write the name. To refer to the variable's value,
+enclose it inside ${}. For example, SetVar takes as the first argument
+(before the =) a variable name, so:
+
+;exten => 1,2,SetVar,koko=lala
+;exten => 1,3,SetVar,${koko}=blabla
+
+stores to the variable "koko" the value "lala" and to variable "lala" the
+value "blabla".
+
+In fact, everything contained ${here} is just replaced with the value of
+the variable "here".
+
+EXPRESSIONS:
+
+Everything contained inside a bracket pair prefixed by a $ (like $[this]) is
+considered as an expression and it is evaluated. Evaluation works similar to
+(but is done on a later stage than) variable substitution: the expression
+(including the square brackets) is replaced by the result of the expression
+evaluation. The arguments and operands of the expression MUST BE separated
+with spaces (take care NOT to leave ANY spaces between opening and closing
+square brackets and the first and last arguments).
+
+For example, after the sequence:
+
+exten => 1,1,SetVar,"lala=$[1 + 2]";
+exten => 1,2,SetVar,"koko=$[2 * ${lala}]";
+
+the value of variable koko is "6".
+
+Operators are listed below in order of increasing precedence. Operators
+with equal precedence are grouped within { } symbols.
+
+ expr1 | expr2
+ Return the evaluation of expr1 if it is neither an empty string
+ nor zero; otherwise, returns the evaluation of expr2.
+
+ expr1 & expr2
+ Return the evaluation of expr1 if neither expression evaluates to
+ an empty string or zero; otherwise, returns zero.
+
+ expr1 {=, >, >=, <, <=, !=} expr2
+ Return the results of integer comparison if both arguments are
+ integers; otherwise, returns the results of string comparison
+ using the locale-specific collation sequence. The result of each
+ comparison is 1 if the specified relation is true, or 0 if the
+ relation is false.
+
+ expr1 {+, -} expr2
+ Return the results of addition or subtraction of integer-valued
+ arguments.
+
+ expr1 {*, /, %} expr2
+ Return the results of multiplication, integer division, or
+ remainder of integer-valued arguments.
+
+ expr1 : expr2
+ The `:' operator matches expr1 against expr2, which must be a
+ regular expression. The regular expression is anchored to the
+ beginning of the string with an implicit `^'.
+
+ If the match succeeds and the pattern contains at least one regu-
+ lar expression subexpression `\(...\)', the string correspond-
+ ing to `\1' is returned; otherwise the matching operator
+ returns the number of characters matched. If the match fails and
+ the pattern contains a regular expression subexpression the null
+ string is returned; otherwise 0.
+
+Parentheses are used for grouping in the usual manner.
+
+The parser must be parsed with bison (bison is REQUIRED - yacc cannot
+produce pure parsers, which are reentrant)
+
+CONDITIONALS
+
+There is one conditional operator - the conditional goto :
+
+;exten => 1,2,gotoif,condition?label1:label2
+
+If condition is true go to label1, else go to label2. Labels are interpreted
+exactly as in the normal goto command.
+
+"condition" is just a string. If the string is empty or "0", the condition
+is considered to be false, if it's anything else, the condition is true.
+This is designed to be used together with the expression syntax described
+above, eg :
+
+exten => 1,2,gotoif,$[${CALLERID} = 123456]?2|1:3|1
+
+
+Example of use :
+
+exten => s,2,SetVar,"vara=1"
+exten => s,3,SetVar,"varb=$[${vara} + 2]"
+exten => s,4,SetVar,"varc=$[${varb} * 2]"
+exten => s,5,GotoIf,"$[${varc} = 6]?99|1:s|6";
+