Merge a big batch of documentation fixes for escaping, marking URLs, places
[asterisk/asterisk.git] / doc / tex / channelvariables.tex
index 571ffd4..5fc4f93 100644 (file)
@@ -170,10 +170,10 @@ The double quotes will be counted as part of that lexical token.
 As an example:
 
 \begin{verbatim}
-exten => s,6,GotoIf($[ "${CALLERIDNAME}" : "Privacy Manager" ]?callerid-liar|s|1:s|7)
+exten => s,6,GotoIf($[ "${CALLERID(name)}" : "Privacy Manager" ]?callerid-liar|s|1:s|7)
 \end{verbatim}
 
-The variable CALLERIDNAME could evaluate to "DELOREAN MOTORS" (with a space)
+The variable CALLERID(name) could evaluate to "DELOREAN MOTORS" (with a space)
 but the above will evaluate to:
 
 \begin{verbatim}
@@ -197,67 +197,77 @@ evaluate this expression, because it does not match its grammar.
 Operators are listed below in order of increasing precedence.  Operators
 with equal precedence are grouped within { } symbols.
 
-\begin{verbatim}
-     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 floating point comparison if both arguments are
-             numbers; 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 floating point-valued
-             arguments.
-
-     expr1 {*, /, %} expr2
-             Return the results of multiplication, floating point division, or
-             remainder of arguments.
-
-     - expr1
-            Return the result of subtracting expr1 from 0.
-            This, the unary minus operator, is right associative, and
-            has the same precedence as the ! operator.
-
-     ! expr1
-            Return the result of a logical complement of expr1.
-            In other words, if expr1 is null, 0, an empty string,
-            or the string "0", return a 1. Otherwise, return a 0.
-            It has the same precedence as the unary minus operator, and
-            is also right associative.
-
-     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.
-
-             Normally, the double quotes wrapping a string are left as part
-             of the string. This is disastrous to the : operator. Therefore,
-             before the regex match is made, beginning and ending double quote
-             characters are stripped from both the pattern and the string.
-
-      expr1 =~ expr2
-             Exactly the same as the ':' operator, except that the match is
-             not anchored to the beginning of the string. Pardon any similarity
-             to seemingly similar operators in other programming languages!
-             The ":" and "=~" operators share the same precedence.
-
-      expr1 ? expr2 :: expr3
-             Traditional Conditional operator. If expr1 is a number
+\begin{itemize}
+  \item \verb!expr1 | expr2!
+
+       Return the evaluation of expr1 if it is neither an empty string
+       nor zero; otherwise, returns the evaluation of expr2.
+
+  \item \verb!expr1 & expr2!
+
+       Return the evaluation of expr1 if neither expression evaluates to
+       an empty string or zero; otherwise, returns zero.
+
+  \item \verb+expr1 {=, >, >=, <, <=, !=} expr2+
+
+       Return the results of floating point comparison if both arguments are
+       numbers; 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.
+
+  \item \verb!expr1 {+, -} expr2!
+
+       Return the results of addition or subtraction of floating point-valued
+       arguments.
+
+  \item \verb!expr1 {*, /, %} expr2!
+
+       Return the results of multiplication, floating point division, or
+       remainder of arguments.
+
+  \item \verb!- expr1!
+
+       Return the result of subtracting expr1 from 0.
+       This, the unary minus operator, is right associative, and
+       has the same precedence as the ! operator.
+
+  \item \verb+! expr1+
+
+       Return the result of a logical complement of expr1.
+       In other words, if expr1 is null, 0, an empty string,
+       or the string "0", return a 1. Otherwise, return a 0.
+       It has the same precedence as the unary minus operator, and
+       is also right associative.
+
+  \item \verb!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 regular 
+       expression subexpression `\(...\)', the string corresponing 
+       to `\textbackslash1' 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.
+
+       Normally, the double quotes wrapping a string are left as part
+       of the string. This is disastrous to the : operator. Therefore,
+       before the regex match is made, beginning and ending double quote
+       characters are stripped from both the pattern and the string.
+
+   \item \verb!expr1 =~ expr2!
+
+       Exactly the same as the ':' operator, except that the match is
+       not anchored to the beginning of the string. Pardon any similarity
+       to seemingly similar operators in other programming languages!
+       The ":" and "=\~" operators share the same precedence.
+
+   \item \verb!expr1 ? expr2 :: expr3!
+
+       Traditional Conditional operator. If expr1 is a number
        that evaluates to 0 (false), expr3 is result of the this
        expression evaluation.  Otherwise, expr2 is the result.
        If expr1 is a string, and evaluates to an empty string,
@@ -267,7 +277,7 @@ with equal precedence are grouped within { } symbols.
        will be the result of the "evaluation" of this
        expression.  expr3 will be the result otherwise. This
        operator has the lowest precedence.
-\end{verbatim}
+\end{itemize}
 
 Parentheses are used for grouping in the usual manner.
 
@@ -276,7 +286,7 @@ or C derived languages.
 
 \subsection{Floating Point Numbers}
 
-In 1.6 and above, we shifted the \$\[...\] expressions to be calculated
+In 1.6 and above, we shifted the \$[...] expressions to be calculated
 via floating point numbers instead of integers. We use 'long double' numbers
 when possible, which provide around 16 digits of precision with 12 byte numbers. 
 
@@ -309,7 +319,7 @@ don't want to preclude it, either.
 
 Here is a list of the 'builtin' functions in Expr2. All other dialplan functions
 are available by simply calling them (read-only). In other words, you don't need to
-surround function calls in \$\[...\] expressions with \$\{...\}. Don't jump to conclusions,
+surround function calls in \$[...] expressions with \$\{...\}. Don't jump to conclusions,
 though! -- you still need to wrap variable names in curly braces!
 
 \begin{enumerate}
@@ -338,6 +348,7 @@ If this quotient is 1/2, it is rounded to the nearest even number.
 
 \subsection{Examples}
 
+\begin{astlisting}
 \begin{verbatim}
  "One Thousand Five Hundred" =~ "(T[^ ]+)"
    returns: Thousand
@@ -422,10 +433,11 @@ TRUNC(-3.5)
    returns -3.
 
 \end{verbatim}
+\end{astlisting}
 
 Of course, all of the above examples use constants, but would work the
 same if any of the numeric or string constants were replaced with a
-variable reference \${CALLERIDNUM}, for instance.
+variable reference \${CALLERID(num)}, for instance.
 
 
 \subsection{Numbers Vs. Strings}
@@ -453,7 +465,7 @@ This is designed to be used together with the expression syntax described
 above, eg : 
 
 \begin{verbatim}
-  exten => 1,2,GotoIf($[${CALLERID} = 123456]?2|1:3|1)
+  exten => 1,2,GotoIf($[${CALLERID(all)} = 123456]?2|1:3|1)
 \end{verbatim}
 
 Example of use : 
@@ -472,7 +484,7 @@ Syntax errors are now output with 3 lines.
 If the extensions.conf file contains a line like:
 
 \begin{verbatim}
-exten => s,6,GotoIf($[ "${CALLERIDNUM}"  = "3071234567" & &  "${CALLERIDNAME}" : "Privacy Manager" ]?callerid-liar|s|1:s|7)
+exten => s,6,GotoIf($[ "${CALLERID(num)}"  = "3071234567" & &  "${CALLERID(name)}" : "Privacy Manager" ]?callerid-liar|s|1:s|7)
 \end{verbatim}
 
 You may see an error in /var/log/asterisk/messages like this:
@@ -635,7 +647,7 @@ references with '555'. You can override the 555 for variable values,
 by entering in var=val arguments after the filename on the command
 line.  So...
 
- check\_expr /etc/asterisk/extensions.conf CALLERIDNUM=3075551212 DIALSTATUS=TORTURE EXTEN=121
+ check\_expr /etc/asterisk/extensions.conf CALLERID(num)=3075551212 DIALSTATUS=TORTURE EXTEN=121
 
 will substitute any \${CALLERIDNUM} variable references with
 3075551212, any \${DIALSTATUS} variable references with 'TORTURE', and
@@ -644,15 +656,19 @@ going on in the reference, like \${EXTEN:2}, then the override will
 not work. Everything in the \${...} has to match. So, to substitute
 \${EXTEN:2} references, you'd best say:
 
- check\_expr /etc/asterisk/extensions.conf CALLERIDNUM=3075551212 DIALSTATUS=TORTURE EXTEN:2=121
+ check\_expr /etc/asterisk/extensions.conf CALLERID(num)=3075551212 DIALSTATUS=TORTURE EXTEN:2=121
 
 on stdout, you will see something like:
 
- OK -- \$[ "\${DIALSTATUS}"  = "TORTURE" | "\${DIALSTATUS}" = "DONTCALL" ] at line 416
+\begin{verbatim}
+ OK -- $[ "${DIALSTATUS}"  = "TORTURE" | "${DIALSTATUS}" = "DONTCALL" ] at line 416
+\end{verbatim}
 
 In the expr2\_log file that is generated, you will see:
 
- line 416, evaluation of \$[  "TORTURE"  = "TORTURE" | "TORTURE" = "DONTCALL"  ] result: 1
+\begin{verbatim}
+ line 416, evaluation of $[  "TORTURE"  = "TORTURE" | "TORTURE" = "DONTCALL"  ] result: 1
+\end{verbatim}
 
 check\_expr is a very simplistic algorithm, and it is far from being
 guaranteed to work in all cases, but it is hoped that it will be
@@ -712,7 +728,7 @@ ${SYSTEMNAME}          * value of the systemname option of asterisk.conf
 \end{verbatim}
 
 \subsection{Application return values}
--------------------------
+
 In Asterisk 1.2, many applications return the result in a variable
 instead of, as in Asterisk 1.0, changing the dial plan priority (+101).
 For the various status values, see each application's help text.