Fix escaping and some of the formattting (closes issue #10285)
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 24 Jul 2007 18:19:18 +0000 (18:19 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 24 Jul 2007 18:19:18 +0000 (18:19 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@76874 65c4cc65-6c06-0410-ace0-fbb531ad65f3

13 files changed:
doc/tex/ael.tex
doc/tex/asterisk.tex
doc/tex/billing.tex
doc/tex/channelvariables.tex
doc/tex/hardware.tex
doc/tex/jitterbuffer.tex
doc/tex/manager.tex
doc/tex/misdn.tex
doc/tex/odbcstorage.tex
doc/tex/privacy.tex
doc/tex/qos.tex
doc/tex/queuelog.tex
doc/tex/realtime.tex

index 416b67e..87e224b 100644 (file)
@@ -584,7 +584,7 @@ name/number with a slash (/) and the number to match against the Caller ID:
 \begin{verbatim}
 context zoombo 
 {
-       819/7079953345 => { NoOp(hello, 3345); }
+  819/7079953345 => { NoOp(hello, 3345); }
 }
 \end{verbatim}
 
@@ -727,8 +727,8 @@ You can declare variables in Macros, as so:
 \begin{verbatim}
 Macro myroutine(firstarg, secondarg)
 {
-       Myvar=1;
-       NoOp(Myvar is set to ${myvar});
+  Myvar=1;
+  NoOp(Myvar is set to ${myvar});
 }
 \end{verbatim}
 
@@ -747,8 +747,8 @@ before setting them to a value;
 \begin{verbatim}
 Macro myroutine(firstarg, secondarg)
 {
-       local Myvar=1;
-       NoOp(Myvar is set to ${Myvar}, and firstarg is ${firstarg}, and secondarg is ${secondarg});
+  local Myvar=1;
+  NoOp(Myvar is set to ${Myvar}, and firstarg is ${firstarg}, and secondarg is ${secondarg});
 }
 \end{verbatim}
 
@@ -760,8 +760,8 @@ If you need to make a local variable within the Set() application, you can do it
 \begin{verbatim}
 Macro myroutine(firstarg, secondarg)
 {
-       Set(LOCAL(Myvar)=1);
-       NoOp(Myvar is set to ${Myvar}, and firstarg is ${firstarg}, and secondarg is ${secondarg});
+  Set(LOCAL(Myvar)=1);
+  NoOp(Myvar is set to ${Myvar}, and firstarg is ${firstarg}, and secondarg is ${secondarg});
 }
 \end{verbatim}
 
@@ -787,9 +787,9 @@ context loops {
 }
 \end{verbatim}
 
-NOTE: The conditional expression (the "\${y} >= 0" above) is wrapped in
+NOTE: The conditional expression (the "\${y} $>$= 0" above) is wrapped in
       \$[ ] so it can be evaluated.  NOTE: The for loop test expression
-      (the "\${x} < 3" above) is wrapped in \$[ ] so it can be evaluated.
+      (the "\${x} $<$ 3" above) is wrapped in \$[ ] so it can be evaluated.
 
 
 
@@ -1134,9 +1134,7 @@ These checks will be:
       currently known functions. A warning is issued if it is not.
 \end{itemize}
 
-
-Differences with the original version of AEL
-============================================
+\section{Differences with the original version of AEL}
 
 \begin{enumerate}
    \item The \$[...] expressions have been enhanced to include the ==, ||,
@@ -1174,8 +1172,8 @@ Differences with the original version of AEL
       AEL README.
   \item Added the "return" keyword, which will jump to the end of an
       extension/Macro.
-  \item Added the ifTime (<time range>|<days of week>|<days of
-      month>|<months> ) {} [else {}] construct, which executes much
+  \item Added the ifTime ($<$time range$>$|$<$days of week$>$|$<$days of
+      month$>$|$<$months$>$ ) {} [else {}] construct, which executes much
       like an if () statement, but the decision is based on the
       current time, and the time spec provided in the ifTime. See the
       example above. (Note: all the other time-dependent Applications
@@ -1200,7 +1198,7 @@ Differences with the original version of AEL
       NoOp() added, to make sure the label exists in the extension on
       Asterisk. (0.6)
   \item (0.9) the semicolon is no longer required after a closing brace!
-      (i.e. "];" ===> "\}". You can have them there if you like, but
+      (i.e. "];" ===$>$ "\}". You can have them there if you like, but
       they are not necessary. Someday they may be rejected as a syntax
       error, maybe.
   \item (0.9) the // comments are not recognized and removed in the
@@ -1208,11 +1206,11 @@ Differences with the original version of AEL
       arguments. You may have to move a comment if you get errors in
       existing files.
   \item (0.10) the random statement has been added. Syntax: random (
-      <expr> ) <lucky-statement> [ else <unlucky-statement> ]. The
-      probability of the lucky-statement getting executed is <expr>,
+      $<$expr$>$ ) $<$lucky-statement$>$ [ else $<$unlucky-statement$>$ ]. The
+      probability of the lucky-statement getting executed is $<$expr$>$,
       which should evaluate to an integer between 0 and 100. If the
-      <lucky-statement> isn't so lucky this time around, then the
-      <unlucky-statement> gets executed, if it is present.
+      $<$lucky-statement$>$ isn't so lucky this time around, then the
+      $<$unlucky-statement$>$ gets executed, if it is present.
 \end{enumerate}
 
 
index 942f501..b2536e7 100644 (file)
@@ -61,10 +61,10 @@ reference purposes.
 \chapter{Channel Variables}
 \input{channelvariables.tex}
 
-\chapter{AEL, Asterisk Extension Language}
+\chapter{AEL: Asterisk Extension Language}
 \input{ael.tex}
 
-\chapter{SLA (Shared Line Appearances)}
+\chapter{SLA: Shared Line Appearances}
 \input{sla.tex}
 
 \chapter{Channel Drivers}
@@ -96,6 +96,7 @@ reference purposes.
 
 \chapter{Voicemail}
   \section{ODBC Storage}
+  \label{odbcstorage}
   \input{odbcstorage.tex}
   \section{IMAP Storage}
   \input{imapstorage.tex}
@@ -112,18 +113,19 @@ reference purposes.
 %
 %Misc
 %----
-%asterisk-mib.txt      SNMP mib for Asterisk (net-snmp)
-%digium-mib.txt                SNMP mib for Asterisk (net-snmp)
+%asterisk-mib.txt   SNMP mib for Asterisk (net-snmp)
+%digium-mib.txt     SNMP mib for Asterisk (net-snmp)
 %
 %For developers
 %--------------
 %See http://www.asterisk.org/developers for more information
 %
-%backtrace.txt         How to produce a backtrace when Asterisk crashes
-%CODING-GUIDELINES     Guidelines for developers
-%externalivr.txt       Documentation of the protocol used in externalivr()
-%modules.txt           How Asterisk modules work
-%datastores.txt                About channel data stores
-%speechrec.txt         The Generic Speech Recognition API
-
-\enddocument
+%backtrace.txt      How to produce a backtrace when Asterisk crashes
+%callfiles.txt      Asterisk callfiles using instruction
+%CODING-GUIDELINES  Guidelines for developers
+%externalivr.txt    Documentation of the protocol used in externalivr()
+%modules.txt        How Asterisk modules work
+%datastores.txt     About channel data stores
+%speechrec.txt      The Generic Speech Recognition API
+
+\end{document}
index e1d3131..82a9007 100644 (file)
@@ -1,48 +1,47 @@
 \section{Applications}
 
 \begin{itemize}
-    \item SetAccount -                 Set account code for billing
-    \item SetAMAFlags -                Sets AMA flags
-    \item NoCDR -              Make sure no CDR is saved for a specific call
-    \item ResetCDR -           Reset CDR
-    \item ForkCDR -            Save current CDR and start a new CDR for this call
-    \item Authenticate -       Authenticates and sets the account code
-    \item SetCDRUserField -    Set CDR user field
-    \item AppendCDRUserField -         Append data to CDR User field 
+    \item SetAccount - Set account code for billing
+    \item SetAMAFlags - Sets AMA flags
+    \item NoCDR - Make sure no CDR is saved for a specific call
+    \item ResetCDR - Reset CDR
+    \item ForkCDR - Save current CDR and start a new CDR for this call
+    \item Authenticate - Authenticates and sets the account code
+    \item SetCDRUserField - Set CDR user field
+    \item AppendCDRUserField - Append data to CDR User field 
 \end{itemize}
 
 For more information, use the "core show application <application>" command.
 You can set default account codes and AMA flags for devices in 
 channel configuration files, like sip.conf, iax.conf etc.
 
-
 \section{Fields of the CDR in Asterisk}
 
 \begin{itemize}
-   \item accountcode:  What account number to use, (string, 20 characters)
-   \item src:          Caller*ID number (string, 80 characters)
-   \item dst:          Destination extension (string, 80 characters)
-   \item dcontext:             Destination context (string, 80 characters)
-   \item clid:         Caller*ID with text (80 characters)
-   \item channel:              Channel used (80 characters)
-   \item dstchannel:   Destination channel if appropriate (80 characters)
-   \item lastapp:              Last application if appropriate (80 characters)
-   \item lastdata:             Last application data (arguments) (80 characters)
-   \item start:                Start of call (date/time)
-   \item answer:               Answer of call (date/time)
-   \item end:          End of call (date/time)
-   \item duration:             Total time in system, in seconds (integer), from dial to hangup
-   \item billsec:              Total time call is up, in seconds (integer), from answer to hangup
-   \item disposition:  What happened to the call: ANSWERED, NO ANSWER, BUSY
-   \item amaflags:             What flags to use: DOCUMENTATION, BILL, IGNORE etc, 
-                       specified on a per channel basis like accountcode.
-   \item user field:   A user-defined field, maximum 255 characters 
+   \item accountcode:  What account number to use, (string, 20 characters)
+   \item src:  Caller*ID number (string, 80 characters)
+   \item dst:  Destination extension (string, 80 characters)
+   \item dcontext:  Destination context (string, 80 characters)
+   \item clid:  Caller*ID with text (80 characters)
+   \item channel:  Channel used (80 characters)
+   \item dstchannel:  Destination channel if appropriate (80 characters)
+   \item lastapp:  Last application if appropriate (80 characters)
+   \item lastdata:  Last application data (arguments) (80 characters)
+   \item start:  Start of call (date/time)
+   \item answer:  Answer of call (date/time)
+   \item end:  End of call (date/time)
+   \item duration:  Total time in system, in seconds (integer), from dial to hangup
+   \item billsec:  Total time call is up, in seconds (integer), from answer to hangup
+   \item disposition:  What happened to the call: ANSWERED, NO ANSWER, BUSY
+   \item amaflags:  What flags to use: DOCUMENTATION, BILL, IGNORE etc, 
+            specified on a per channel basis like accountcode.
+   \item user field:  A user-defined field, maximum 255 characters 
 \end{itemize}
 
 In some cases, uniqueid is appended:
 
 \begin{itemize}
-   \item uniqueid:             Unique Channel Identifier (32 characters) 
+   \item uniqueid:  Unique Channel Identifier (32 characters) 
       This needs to be enabled in the source code at compile time
 \end{itemize}
 
@@ -61,24 +60,24 @@ can be accessed just like channel variables. The following builtin variables
 are available.
 
 \begin{verbatim}
-${CDR(clid)}                   Caller ID
-${CDR(src)}                    Source 
-${CDR(dst)}                    Destination
-${CDR(dcontext)}               Destination context
-${CDR(channel)}                        Channel name
-${CDR(dstchannel)}             Destination channel
-${CDR(lastapp)}                        Last app executed
-${CDR(lastdata)}               Last app's arguments
-${CDR(start)}                  Time the call started.
-${CDR(answer)}                 Time the call was answered.
-${CDR(end)}                    Time the call ended.
-${CDR(duration)}               Duration of the call.
-${CDR(billsec)}                        Duration of the call once it was answered.
-${CDR(disposition)}            ANSWERED, NO ANSWER, BUSY
-${CDR(amaflags)}               DOCUMENTATION, BILL, IGNORE etc
-${CDR(accountcode)}            The channel's account code.
-${CDR(uniqueid)}               The channel's unique id.
-${CDR(userfield)}              The channels uses specified field.
+${CDR(clid)}         Caller ID
+${CDR(src)}          Source 
+${CDR(dst)}          Destination
+${CDR(dcontext)}     Destination context
+${CDR(channel)}      Channel name
+${CDR(dstchannel)}   Destination channel
+${CDR(lastapp)}      Last app executed
+${CDR(lastdata)}     Last app's arguments
+${CDR(start)}        Time the call started.
+${CDR(answer)}       Time the call was answered.
+${CDR(end)}          Time the call ended.
+${CDR(duration)}     Duration of the call.
+${CDR(billsec)}      Duration of the call once it was answered.
+${CDR(disposition)}  ANSWERED, NO ANSWER, BUSY
+${CDR(amaflags)}     DOCUMENTATION, BILL, IGNORE etc
+${CDR(accountcode)}  The channel's account code.
+${CDR(uniqueid)}     The channel's unique id.
+${CDR(userfield)}    The channels uses specified field.
 \end{verbatim}
 
 In addition, you can set your own extra variables by using Set(CDR(name)=value).
index 77fcca4..571ffd4 100644 (file)
@@ -22,8 +22,8 @@ will be passed down to the Background command, in this example.
 
 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 preceding \\. Special characters that must
-be quoted to be used, are [ ] \$ " \\. (to write \\ itself, use \\). 
+string "\$1231", quote it with a preceding \textbackslash. Special characters that must
+be quoted to be used, are [ ] \$ " \textbackslash. (to write \textbackslash itself, use \textbackslash). 
 
 These Double quotes and escapes are evaluated at the level of the
 asterisk config file parser. 
@@ -35,7 +35,7 @@ Double quotes can also be used inside expressions, as discussed below.
 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 : 
+To set a variable to a particular value, do: 
 \begin{verbatim}
     exten => 1,2,Set(varname=value)
 \end{verbatim}
@@ -52,8 +52,8 @@ requires a variable), just write the name. To refer to the variable's value,
 enclose it inside \${}. For example, Set takes as the first argument 
 (before the =) a variable name, so: 
 \begin{verbatim}
-       exten => 1,2,Set(koko=lala)
-       exten => 1,3,Set(${koko}=blabla)
+  exten => 1,2,Set(koko=lala)
+  exten => 1,3,Set(${koko}=blabla)
 \end{verbatim}
 stores to the variable "koko" the value "lala" and to variable "lala" the 
 value "blabla". 
@@ -91,14 +91,14 @@ NoOp(${__FOO}) is identical to NoOp(${FOO})
 
 The format for selecting characters from a variable can be expressed as:
 \begin{verbatim}
-       ${variable_name[:offset[:length]]}
+  ${variable_name[:offset[:length]]}
 \end{verbatim}
 If you want to select the first N characters from the string assigned
 to a variable, simply append a colon and the number of characters to
 skip from the beginning of the string to the variable name.
 \begin{verbatim}
-       ;Remove the first character of extension, save in "number" variable
-       exten => _9X.,1,Set(number=${EXTEN:1})
+  ; Remove the first character of extension, save in "number" variable
+  exten => _9X.,1,Set(number=${EXTEN:1})
 \end{verbatim}
 Assuming we've dialed 918005551234, the value saved to the 'number' variable
 would be 18005551234. This is useful in situations when we require users to 
@@ -110,16 +110,16 @@ of the string and then selects everything after the new position. The following
 example will save the numbers 1234 to the 'number' variable, still assuming
 we've dialed 918005551234.
 \begin{verbatim}
-       ;Remove everything before the last four digits of the dialed string
-       exten => _9X.,1,Set(number=${EXTEN:-4})
+  ; Remove everything before the last four digits of the dialed string
+  exten => _9X.,1,Set(number=${EXTEN:-4})
 \end{verbatim}
 We can also limit the number of characters from our offset position that we
 wish to use. This is done by appending a second colon and length value to the
 variable name. The following example will save the numbers 555 to the 'number'
 variable.
 \begin{verbatim}
-       ;Only save the middle numbers 555 from the string 918005551234
-       exten => _9X.,1,Set(number=${EXTEN:5:3})
+  ; Only save the middle numbers 555 from the string 918005551234
+  exten => _9X.,1,Set(number=${EXTEN:5:3})
 \end{verbatim}
 The length value can also be used in conjunction with a negative offset. This
 may be useful if the length of the string is unknown, but the trailing digits
@@ -127,14 +127,14 @@ are. The following example will save the numbers 555 to the 'number' variable,
 even if the string starts with more characters than expected (unlike the
 previous example).
 \begin{verbatim}
-       ;Save the numbers 555 to the 'number' variable
-       exten => _9X.,1,Set(number=${EXTEN:-7:3})
+  ; Save the numbers 555 to the 'number' variable
+  exten => _9X.,1,Set(number=${EXTEN:-7:3})
 \end{verbatim}
 If a negative length value is entered, Asterisk will remove that many characters
 from the end of the string.
 \begin{verbatim}
-       ;Set pin to everything but the trailing #.
-       exten => _XXXX#,1,Set(pin=${EXTEN:0:-1})
+  ; Set pin to everything but the trailing #.
+  exten => _XXXX#,1,Set(pin=${EXTEN:0:-1})
 \end{verbatim}
 
 \section{Expressions} 
@@ -258,15 +258,15 @@ with equal precedence are grouped within { } symbols.
 
       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,
-            or the two characters (""), then expr3 is the
-            result. Otherwise, expr2 is the result.  In Asterisk, all
-            3 exprs will be "evaluated"; if expr1 is "true", expr2
-            will be the result of the "evaluation" of this
-            expression.  expr3 will be the result otherwise. This
-            operator has the lowest precedence.
+       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,
+       or the two characters (""), then expr3 is the
+       result. Otherwise, expr2 is the result.  In Asterisk, all
+       3 exprs will be "evaluated"; if expr1 is "true", expr2
+       will be the result of the "evaluation" of this
+       expression.  expr3 will be the result otherwise. This
+       operator has the lowest precedence.
 \end{verbatim}
 
 Parentheses are used for grouping in the usual manner.
@@ -274,7 +274,7 @@ Parentheses are used for grouping in the usual manner.
 Operator precedence is applied as one would expect in any of the C
 or C derived languages.
 
-subsection{Floating Point Numbers}
+\subsection{Floating Point Numbers}
 
 In 1.6 and above, we shifted the \$\[...\] expressions to be calculated
 via floating point numbers instead of integers. We use 'long double' numbers
@@ -290,13 +290,13 @@ on integer behavior. If you were counting on 1/4 evaluating to 0, you need to no
 TRUNC(1/4). For a list of all the truncation/rounding capabilities, see the next section.
 
 
-subsection{Functions}
+\subsection{Functions}
 
-In 1.6 and above, we upgraded the $[] expressions to handle floating point numbers.
+In 1.6 and above, we upgraded the \$[] expressions to handle floating point numbers.
 Because of this, folks counting on integer behavior would be disrupted. To make
 the same results possible, some rounding and integer truncation functions have been
 added to the core of the Expr2 parser. Indeed, dialplan functions can be called from
-$[..] expressions without the ${...} operators. The only trouble might be in the fact that
+\$[..] expressions without the \$\{...\} operators. The only trouble might be in the fact that
 the arguments to these functions must be specified with a comma. If you try to call
 the MATH function, for example, and try to say 3 + MATH(7*8), the expression parser will
 evaluate 7*8 for you into 56, and the MATH function will most likely complain that its 
@@ -312,7 +312,7 @@ are available by simply calling them (read-only). In other words, you don't need
 surround function calls in \$\[...\] expressions with \$\{...\}. Don't jump to conclusions,
 though! -- you still need to wrap variable names in curly braces!
 
-\begin{Enumerate}
+\begin{enumerate}
 \item COS(x) x is in radians. Results vary from -1 to 1. 
 \item SIN(x) x is in radians. Results vary from -1 to 1.
 \item TAN(x) x is in radians.
@@ -334,94 +334,94 @@ If this quotient is 1/2, it is rounded to the nearest even number.
 \item LOG(x) returns the natural logarithm of x.
 \item LOG2(x) returns the base 2 log of x.
 \item LOG10(x) returns the base 10 log of x.
-\end{Enumerate}
+\end{enumerate}
 
-subsection{Examples}
+\subsection{Examples}
 
 \begin{verbatim}
  "One Thousand Five Hundred" =~ "(T[^ ]+)"
-       returns: Thousand
+   returns: Thousand
 
  "One Thousand Five Hundred" =~ "T[^ ]+"
-       returns: 8
+   returns: 8
 
  "One Thousand Five Hundred" : "T[^ ]+"
-       returns: 0
+   returns: 0
 
  "8015551212" : "(...)"
-       returns: 801
+   returns: 801
 
  "3075551212":"...(...)"
-       returns: 555
+   returns: 555
 
  ! "One Thousand Five Hundred" =~ "T[^ ]+"
-       returns: 0 (because it applies to the string, which is non-null,
+   returns: 0 (because it applies to the string, which is non-null,
                     which it turns to "0", and then looks for the pattern
                     in the "0", and doesn't find it)
 
  !( "One Thousand Five Hundred" : "T[^ ]+" )
-       returns: 1  (because the string doesn't start with a word starting
+   returns: 1  (because the string doesn't start with a word starting
                      with T, so the match evals to 0, and the ! operator
                      inverts it to 1 ).
 
  2 + 8 / 2
-       returns 6. (because of operator precedence; the division is done first, then the addition).
+   returns 6. (because of operator precedence; the division is done first, then the addition).
 
  2+8/2
-       returns 6. Spaces aren't necessary.
+   returns 6. Spaces aren't necessary.
 
 (2+8)/2
-       returns 5, of course.
+   returns 5, of course.
 
 (3+8)/2
-       returns 5.5 now.
+   returns 5.5 now.
 
 TRUNC((3+8)/2)
-       returns 5.
+   returns 5.
 
 FLOOR(2.5)
-       returns 2
+   returns 2
 
 FLOOR(-2.5)
-       returns -3
+   returns -3
 
 CEIL(2.5)
-       returns 3.
+   returns 3.
 
 CEIL(-2.5)
-       returns -2.
+   returns -2.
 
 ROUND(2.5)
-       returns 3.
+   returns 3.
 
 ROUND(3.5)
-       returns 4.
+   returns 4.
 
 ROUND(-2.5)
-       returns -3
+   returns -3
 
 RINT(2.5)
-       returns 2.
+   returns 2.
 
 RINT(3.5)
-       returns 4.
+   returns 4.
 
 RINT(-2.5)
-       returns -2.
+   returns -2.
 
 RINT(-3.5)
-       returns -4.
+   returns -4.
 
 TRUNC(2.5)
-       returns 2.
+   returns 2.
 
 TRUNC(3.5)
-       returns 3.
+   returns 3.
 
 TRUNC(-3.5)
-       returns -3.
+   returns -3.
 
-\begin{verbatim}
+\end{verbatim}
 
 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
@@ -441,7 +441,7 @@ case.
 There is one conditional application - the conditional goto : 
 
 \begin{verbatim}
-       exten => 1,2,gotoif(condition?label1:label2)
+  exten => 1,2,GotoIf(condition?label1:label2)
 \end{verbatim}
 
 If condition is true go to label1, else go to label2. Labels are interpreted
@@ -453,7 +453,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} = 123456]?2|1:3|1)
 \end{verbatim}
 
 Example of use : 
@@ -494,9 +494,9 @@ marked with the "\^" character.
 \subsection{NULL Strings}
 Testing to see if a string is null can be done in one of two different ways:
 \begin{verbatim}
-       exten => _XX.,1,GotoIf($["${calledid}" != ""]?3) 
+  exten => _XX.,1,GotoIf($["${calledid}" != ""]?3) 
 
-       exten => _XX.,1,GotoIf($[foo${calledid} != foo]?3) 
+  exten => _XX.,1,GotoIf($[foo${calledid} != foo]?3) 
 \end{verbatim}
 
 The second example above is the way suggested by the WIKI. It will 
@@ -574,7 +574,7 @@ of possible concern with "legacy" extension.conf files:
    quotes, it was no reason for concern. It is now!
 
 \item LE, GE, NE operators removed. The code supported these operators,
-   but they were not documented. The symbolic operators, <=, >=, and !=
+   but they were not documented. The symbolic operators, $<$=, $>$=, and !=
    should be used instead.
 
 \item  Added the unary '-' operator. So you can 3+ -4 and get -1.
@@ -670,43 +670,45 @@ only read in the dialplan.  Writes to such variables are silently
 ignored.
 
 \begin{verbatim}
-${ACCOUNTCODE}                 * Account code (if specified) (Deprecated; use ${CDR(accountcode)})
-${BLINDTRANSFER}       The name of the channel on the other side of a blind transfer
-${BRIDGEPEER}          Bridged peer
-${CALLERANI}           * Caller ANI (PRI channels) (Deprecated; use ${CALLERID(ani)})
-${CALLERID}            * Caller ID (Deprecated; use ${CALLERID(all)})
-${CALLERIDNAME}                * Caller ID Name only (Deprecated; use ${CALLERID(name)})
-${CALLERIDNUM}         * Caller ID Number only (Deprecated; use ${CALLERID(num)})
-${CALLINGANI2}         * Caller ANI2 (PRI channels)
-${CALLINGPRES}         * Caller ID presentation for incoming calls (PRI channels)
-${CALLINGTNS}          * Transit Network Selector (PRI channels)
-${CALLINGTON}          * Caller Type of Number (PRI channels)
-${CHANNEL}             * Current channel name
-${CONTEXT}             * Current context
-${DATETIME}            * Current date time in the format: DDMMYYYY-HH:MM:SS (Deprecated; use ${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)})
-${DB_RESULT}           Result value of DB_EXISTS() dial plan function
-${DNID}                * Dialed Number Identifier (Deprecated; use ${CALLERID(dnid)})
-${EPOCH}               * Current unix style epoch
-${EXTEN}               * Current extension
-${ENV(VAR)}            Environmental variable VAR
-${GOTO_ON_BLINDXFR}    Transfer to the specified context/extension/priority
-                       after a blind transfer (use ^ characters in place of
-                       | to separate context/extension/priority when setting
-                       this variable from the dialplan)
-${HANGUPCAUSE}         * Asterisk cause of hangup (inbound/outbound)
-${HINT}                * Channel hints for this extension
-${HINTNAME}            * Suggested Caller*ID name for this extension
-${INVALID_EXTEN}       The invalid called extension (used in the "i" extension)
-${LANGUAGE}            * Current language (Deprecated; use ${LANGUAGE()})
-${LEN(VAR)}            * String length of VAR (integer)
-${PRIORITY}            * Current priority in the dialplan
-${PRIREDIRECTREASON}   Reason for redirect on PRI, if a call was directed
-${RDNIS}               * Redirected Dial Number ID Service (Deprecated; use ${CALLERID(rdnis)})
-${TIMESTAMP}           * Current date time in the format: YYYYMMDD-HHMMSS (Deprecated; use ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
-${TRANSFER_CONTEXT}    Context for transferred calls
-${FORWARD_CONTEXT}     Context for forwarded calls
-${UNIQUEID}            * Current call unique identifier
-${SYSTEMNAME}          * value of the systemname option of asterisk.conf
+${CDR(accountcode)}    * Account code (if specified)
+${BLINDTRANSFER}         The name of the channel on the other side of a blind transfer
+${BRIDGEPEER}            Bridged peer
+${CALLERID(ani)}       * Caller ANI (PRI channels)
+${CALLERID(all)}       * Caller ID
+${CALLERID(dnid)}      * Dialed Number Identifier
+${CALLERID(name)}      * Caller ID Name only
+${CALLERID(num)}       * Caller ID Number only
+${CALLERID(rdnis)}     * Redirected Dial Number ID Service
+${CALLINGANI2}         * Caller ANI2 (PRI channels)
+${CALLINGPRES}         * Caller ID presentation for incoming calls (PRI channels)
+${CALLINGTNS}          * Transit Network Selector (PRI channels)
+${CALLINGTON}          * Caller Type of Number (PRI channels)
+${CHANNEL}             * Current channel name
+${CONTEXT}             * Current context
+${DATETIME}            * Current date time in the format: DDMMYYYY-HH:MM:SS 
+                         (Deprecated; use ${STRFTIME(${EPOCH},,%d%m%Y-%H:%M:%S)})
+${DB_RESULT}             Result value of DB_EXISTS() dial plan function
+${EPOCH}               * Current unix style epoch
+${EXTEN}               * Current extension
+${ENV(VAR)}              Environmental variable VAR
+${GOTO_ON_BLINDXFR}      Transfer to the specified context/extension/priority
+                         after a blind transfer (use ^ characters in place of
+                         | to separate context/extension/priority when setting
+                         this variable from the dialplan)
+${HANGUPCAUSE}         * Asterisk cause of hangup (inbound/outbound)
+${HINT}                * Channel hints for this extension
+${HINTNAME}            * Suggested Caller*ID name for this extension
+${INVALID_EXTEN}         The invalid called extension (used in the "i" extension)
+${LANGUAGE}            * Current language (Deprecated; use ${LANGUAGE()})
+${LEN(VAR)}            * String length of VAR (integer)
+${PRIORITY}            * Current priority in the dialplan
+${PRIREDIRECTREASON}     Reason for redirect on PRI, if a call was directed
+${TIMESTAMP}           * Current date time in the format: YYYYMMDD-HHMMSS 
+                         (Deprecated; use ${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
+${TRANSFER_CONTEXT}      Context for transferred calls
+${FORWARD_CONTEXT}       Context for forwarded calls
+${UNIQUEID}            * Current call unique identifier
+${SYSTEMNAME}          * value of the systemname option of asterisk.conf
 \end{verbatim}
 
 \subsection{Application return values}
@@ -715,189 +717,189 @@ 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.
 \begin{verbatim}
-${AGISTATUS}                   * agi()
-${AQMSTATUS}                   * addqueuemember()
-${AVAILSTATUS}                 * chanisavail()
-${CHECKGROUPSTATUS}            * checkgroup()
-${CHECKMD5STATUS}              * checkmd5()
-${CPLAYBACKSTATUS}             * controlplayback()
-${DIALSTATUS}                  * dial()
-${DBGETSTATUS}                 * dbget()
-${ENUMSTATUS}                  * enumlookup()
-${HASVMSTATUS}                 * hasnewvoicemail()
-${LOOKUPBLSTATUS}              * lookupblacklist()
-${OSPAUTHSTATUS}               * ospauth()
-${OSPLOOKUPSTATUS}             * osplookup()
-${OSPNEXTSTATUS}               * ospnext()
-${OSPFINISHSTATUS}             * ospfinish()
-${PARKEDAT}                    * parkandannounce()
-${PLAYBACKSTATUS}              * playback()
-${PQMSTATUS}                   * pausequeuemember()
-${PRIVACYMGRSTATUS}            * privacymanager()
-${QUEUESTATUS}                 * queue()
-${RQMSTATUS}                   * removequeuemember()
-${SENDIMAGESTATUS}             * sendimage()
-${SENDTEXTSTATUS}              * sendtext()
-${SENDURLSTATUS}               * sendurl()
-${SYSTEMSTATUS}                        * system()
-${TRANSFERSTATUS}              * transfer()
-${TXTCIDNAMESTATUS}            * txtcidname()
-${UPQMSTATUS}                  * unpausequeuemember()
-${VMSTATUS}                    * voicmail()
-${VMBOXEXISTSSTATUS}           * vmboxexists()
-${WAITSTATUS}                  * waitforsilence()
+${AGISTATUS}         * agi()
+${AQMSTATUS}         * addqueuemember()
+${AVAILSTATUS}       * chanisavail()
+${CHECKGROUPSTATUS}  * checkgroup()
+${CHECKMD5STATUS}    * checkmd5()
+${CPLAYBACKSTATUS}   * controlplayback()
+${DIALSTATUS}        * dial()
+${DBGETSTATUS}       * dbget()
+${ENUMSTATUS}        * enumlookup()
+${HASVMSTATUS}       * hasnewvoicemail()
+${LOOKUPBLSTATUS}    * lookupblacklist()
+${OSPAUTHSTATUS}     * ospauth()
+${OSPLOOKUPSTATUS}   * osplookup()
+${OSPNEXTSTATUS}     * ospnext()
+${OSPFINISHSTATUS}   * ospfinish()
+${PARKEDAT}          * parkandannounce()
+${PLAYBACKSTATUS}    * playback()
+${PQMSTATUS}         * pausequeuemember()
+${PRIVACYMGRSTATUS}  * privacymanager()
+${QUEUESTATUS}       * queue()
+${RQMSTATUS}         * removequeuemember()
+${SENDIMAGESTATUS}   * sendimage()
+${SENDTEXTSTATUS}    * sendtext()
+${SENDURLSTATUS}     * sendurl()
+${SYSTEMSTATUS}      * system()
+${TRANSFERSTATUS}    * transfer()
+${TXTCIDNAMESTATUS}  * txtcidname()
+${UPQMSTATUS}        * unpausequeuemember()
+${VMSTATUS}          * voicmail()
+${VMBOXEXISTSSTATUS} * vmboxexists()
+${WAITSTATUS}        * waitforsilence()
 \end{verbatim}
 
 \subsection{Various application variables}
 \begin{verbatim}
-${CURL}                        * Resulting page content for curl()
-${ENUM}                        * Result of application EnumLookup
-${EXITCONTEXT}         Context to exit to in IVR menu (app background())
-                       or in the RetryDial() application
-${MONITOR}             * Set to "TRUE" if the channel is/has been monitored (app monitor())
-${MONITOR_EXEC}                Application to execute after monitoring a call
-${MONITOR_EXEC_ARGS}   Arguments to application
-${MONITOR_FILENAME}    File for monitoring (recording) calls in queue
-${QUEUE_PRIO}          Queue priority
-${QUEUE_MAX_PENALTY}   Maximum member penalty allowed to answer caller
-${QUEUESTATUS}                 Status of the call, one of:
-                       (TIMEOUT | FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL)
-${RECORDED_FILE}       * Recorded file in record()
-${TALK_DETECTED}       * Result from talkdetect()
-${TOUCH_MONITOR}       The filename base to use with Touch Monitor (auto record)
-${TOUCH_MONITOR_FORMAT} The audio format to use with Touch Monitor (auto record)
+${CURL}                 * Resulting page content for curl()
+${ENUM}                 * Result of application EnumLookup
+${EXITCONTEXT}            Context to exit to in IVR menu (app background())
+                          or in the RetryDial() application
+${MONITOR}              * Set to "TRUE" if the channel is/has been monitored (app monitor())
+${MONITOR_EXEC}           Application to execute after monitoring a call
+${MONITOR_EXEC_ARGS}      Arguments to application
+${MONITOR_FILENAME}       File for monitoring (recording) calls in queue
+${QUEUE_PRIO}             Queue priority
+${QUEUE_MAX_PENALTY}      Maximum member penalty allowed to answer caller
+${QUEUESTATUS}            Status of the call, one of:
+                          (TIMEOUT | FULL | JOINEMPTY | LEAVEEMPTY | JOINUNAVAIL | LEAVEUNAVAIL)
+${RECORDED_FILE}        * Recorded file in record()
+${TALK_DETECTED}        * Result from talkdetect()
+${TOUCH_MONITOR}          The filename base to use with Touch Monitor (auto record)
+${TOUCH_MONITOR_FORMAT}   The audio format to use with Touch Monitor (auto record)
 ${TOUCH_MONITOR_OUTPUT} * Recorded file from Touch Monitor (auto record)
-${TXTCIDNAME}          * Result of application TXTCIDName
-${VPB_GETDTMF}         chan_vpb
+${TXTCIDNAME}           * Result of application TXTCIDName
+${VPB_GETDTMF}            chan_vpb
 \end{verbatim}
 
 \subsection{The MeetMe Conference Bridge}
 \begin{verbatim}
-${MEETME_RECORDINGFILE}        Name of file for recording a conference with 
-                               the "r" option
-${MEETME_RECORDINGFORMAT}      Format of file to be recorded
-${MEETME_EXIT_CONTEXT}                 Context for exit out of meetme meeting
-${MEETME_AGI_BACKGROUND}       AGI script for Meetme (zap only)
-${MEETMESECS}                  * Number of seconds a user participated in a MeetMe conference
+${MEETME_RECORDINGFILE}     Name of file for recording a conference with 
+                            the "r" option
+${MEETME_RECORDINGFORMAT}   Format of file to be recorded
+${MEETME_EXIT_CONTEXT}      Context for exit out of meetme meeting
+${MEETME_AGI_BACKGROUND}    AGI script for Meetme (zap only)
+${MEETMESECS}             * Number of seconds a user participated in a MeetMe conference
 \end{verbatim}
 
 \subsection{The VoiceMail() application}
 \begin{verbatim}
-${VM_CATEGORY}         Sets voicemail category
-${VM_NAME}             * Full name in voicemail
-${VM_DUR}              * Voicemail duration
-${VM_MSGNUM}           * Number of voicemail message in mailbox
-${VM_CALLERID}         * Voicemail Caller ID (Person leaving vm)
-${VM_CIDNAME}          * Voicemail Caller ID Name
-${VM_CIDNUM}           * Voicemail Caller ID Number
-${VM_DATE}             * Voicemail Date
-${VM_MESSAGEFILE}      * Path to message left by caller
+${VM_CATEGORY}      Sets voicemail category
+${VM_NAME}        * Full name in voicemail
+${VM_DUR}         * Voicemail duration
+${VM_MSGNUM}      * Number of voicemail message in mailbox
+${VM_CALLERID}    * Voicemail Caller ID (Person leaving vm)
+${VM_CIDNAME}     * Voicemail Caller ID Name
+${VM_CIDNUM}      * Voicemail Caller ID Number
+${VM_DATE}        * Voicemail Date
+${VM_MESSAGEFILE} * Path to message left by caller
 \end{verbatim}
 
 \subsection{The VMAuthenticate() application}
 \begin{verbatim}
-${AUTH_MAILBOX}        * Authenticated mailbox
-${AUTH_CONTEXT}        * Authenticated mailbox context
+${AUTH_MAILBOX}   * Authenticated mailbox
+${AUTH_CONTEXT}   * Authenticated mailbox context
 \end{verbatim}
 
 \subsection{DUNDiLookup()}
 \begin{verbatim}
-${DUNDTECH}    * The Technology of the result from a call to DUNDiLookup()
-${DUNDDEST}    * The Destination of the result from a call to DUNDiLookup()
+${DUNDTECH}       * The Technology of the result from a call to DUNDiLookup()
+${DUNDDEST}       * The Destination of the result from a call to DUNDiLookup()
 \end{verbatim}
 
 \subsection{chan\_zap}
 \begin{verbatim}
-${ANI2}                        * The ANI2 Code provided by the network on the incoming call. 
-                       (ie, Code 29 identifies call as a Prison/Inmate Call)
-${CALLTYPE}            * Type of call (Speech, Digital, etc)
-${CALLEDTON}           * Type of number for incoming PRI extension
-                       i.e. 0=unknown, 1=international, 2=domestic, 3=net_specific, 
-                       4=subscriber, 6=abbreviated, 7=reserved 
-${CALLINGSUBADDR}      * Called PRI Subaddress
-${FAXEXTEN}            * The extension called before being redirected to "fax" 
-${PRIREDIRECTREASON}   * Reason for redirect, if a call was directed
-${SMDI_VM_TYPE}                * When an call is received with an SMDI message, the 'type'
-                       of message 'b' or 'u'
+${ANI2}               * The ANI2 Code provided by the network on the incoming call. 
+                        (ie, Code 29 identifies call as a Prison/Inmate Call)
+${CALLTYPE}           * Type of call (Speech, Digital, etc)
+${CALLEDTON}          * Type of number for incoming PRI extension
+                        i.e. 0=unknown, 1=international, 2=domestic, 3=net_specific, 
+                        4=subscriber, 6=abbreviated, 7=reserved 
+${CALLINGSUBADDR}     * Called PRI Subaddress
+${FAXEXTEN}           * The extension called before being redirected to "fax" 
+${PRIREDIRECTREASON}  * Reason for redirect, if a call was directed
+${SMDI_VM_TYPE}       * When an call is received with an SMDI message, the 'type'
+                        of message 'b' or 'u'
 \end{verbatim}
 
 \subsection{chan\_sip}
 \begin{verbatim}
-${SIPCALLID}           * SIP Call-ID: header verbatim (for logging or CDR matching)
-${SIPDOMAIN}           * SIP destination domain of an inbound call (if appropriate)
-${SIPUSERAGENT}        * SIP user agent (deprecated)
-${SIPURI}              * SIP uri
-${SIP_CODEC}           Set the SIP codec for a call    
-${SIP_URI_OPTIONS}     * additional options to add to the URI for an outgoing call
-${RTPAUDIOQOS}         RTCP QoS report for the audio of this call
-${RTPVIDEOQOS}         RTCP QoS report for the video of this call
+${SIPCALLID}         * SIP Call-ID: header verbatim (for logging or CDR matching)
+${SIPDOMAIN}         * SIP destination domain of an inbound call (if appropriate)
+${SIPUSERAGENT}      * SIP user agent (deprecated)
+${SIPURI}            * SIP uri
+${SIP_CODEC}           Set the SIP codec for a call  
+${SIP_URI_OPTIONS}   * additional options to add to the URI for an outgoing call
+${RTPAUDIOQOS}         RTCP QoS report for the audio of this call
+${RTPVIDEOQOS}         RTCP QoS report for the video of this call
 \end{verbatim}
 
 \subsection{chan\_agent}
 \begin{verbatim}
-${AGENTMAXLOGINTRIES}  Set the maximum number of failed logins
-${AGENTUPDATECDR}      Whether to update the CDR record with Agent channel data
-${AGENTGOODBYE}                Sound file to use for "Good Bye" when agent logs out
-${AGENTACKCALL}        Whether the agent should acknowledge the incoming call
-${AGENTAUTOLOGOFF}     Auto logging off for an agent
-${AGENTWRAPUPTIME}     Setting the time for wrapup between incoming calls
-${AGENTNUMBER}         * Agent number (username) set at login
-${AGENTSTATUS}         * Status of login       ( fail | on | off )
-${AGENTEXTEN}          * Extension for logged in agent
+${AGENTMAXLOGINTRIES}  Set the maximum number of failed logins
+${AGENTUPDATECDR}      Whether to update the CDR record with Agent channel data
+${AGENTGOODBYE}        Sound file to use for "Good Bye" when agent logs out
+${AGENTACKCALL}        Whether the agent should acknowledge the incoming call
+${AGENTAUTOLOGOFF}     Auto logging off for an agent
+${AGENTWRAPUPTIME}     Setting the time for wrapup between incoming calls
+${AGENTNUMBER}       * Agent number (username) set at login
+${AGENTSTATUS}       * Status of login ( fail | on | off )
+${AGENTEXTEN}        * Extension for logged in agent
 \end{verbatim}
 
 
 \subsection{The Dial() application}
 \begin{verbatim}
-${DIALEDPEERNAME}              * Dialed peer name
-${DIALEDPEERNUMBER}            * Dialed peer number
-${DIALEDTIME}                  * Time for the call (seconds)
-${ANSWEREDTIME}                * Time from dial to answer (seconds)
-${DIALSTATUS}                  * Status of the call, one of:
-                               (CHANUNAVAIL | CONGESTION | BUSY | NOANSWER 
-                                       | ANSWER | CANCEL | DONTCALL | TORTURE)
-${DYNAMIC_FEATURES}            * The list of features (from the [applicationmap] section of
-                                 features.conf) to activate during the call, with feature
-                                 names separated by '#' characters
-${LIMIT_PLAYAUDIO_CALLER}      Soundfile for call limits
-${LIMIT_PLAYAUDIO_CALLEE}      Soundfile for call limits
-${LIMIT_WARNING_FILE}          Soundfile for call limits
-${LIMIT_TIMEOUT_FILE}          Soundfile for call limits
-${LIMIT_CONNECT_FILE}          Soundfile for call limits
-${OUTBOUND_GROUP}              Default groups for peer channels (as in SetGroup)
-* See "show application dial" for more information
+${DIALEDPEERNAME}     * Dialed peer name
+${DIALEDPEERNUMBER}   * Dialed peer number
+${DIALEDTIME}         * Time for the call (seconds)
+${ANSWEREDTIME}       * Time from dial to answer (seconds)
+${DIALSTATUS}         * Status of the call, one of:
+                        (CHANUNAVAIL | CONGESTION | BUSY | NOANSWER 
+                        | ANSWER | CANCEL | DONTCALL | TORTURE)
+${DYNAMIC_FEATURES}   * The list of features (from the [applicationmap] section of
+                        features.conf) to activate during the call, with feature
+                        names separated by '#' characters
+${LIMIT_PLAYAUDIO_CALLER}  Soundfile for call limits
+${LIMIT_PLAYAUDIO_CALLEE}  Soundfile for call limits
+${LIMIT_WARNING_FILE}      Soundfile for call limits
+${LIMIT_TIMEOUT_FILE}      Soundfile for call limits
+${LIMIT_CONNECT_FILE}      Soundfile for call limits
+${OUTBOUND_GROUP}          Default groups for peer channels (as in SetGroup)
+                           * See "show application dial" for more information
 \end{verbatim}
 
 \subsection{The chanisavail() application}
 \begin{verbatim}
-${AVAILCHAN}           * the name of the available channel if one was found    
-${AVAILORIGCHAN}       * the canonical channel name that was used to create the channel
-${AVAILSTATUS}         * Status of requested channel
+${AVAILCHAN}          * the name of the available channel if one was found  
+${AVAILORIGCHAN}      * the canonical channel name that was used to create the channel
+${AVAILSTATUS}        * Status of requested channel
 \end{verbatim}
 
 \subsection{Dialplan Macros}
 \begin{verbatim}
-${MACRO_EXTEN}         * The calling extensions
-${MACRO_CONTEXT}       * The calling context
-${MACRO_PRIORITY}      * The calling priority
-${MACRO_OFFSET}                Offset to add to priority at return from macro
+${MACRO_EXTEN}        * The calling extensions
+${MACRO_CONTEXT}      * The calling context
+${MACRO_PRIORITY}     * The calling priority
+${MACRO_OFFSET}         Offset to add to priority at return from macro
 \end{verbatim}
 
 \subsection{The ChanSpy() application}
 \begin{verbatim}
-${SPYGROUP}            * A ':' (colon) separated list of group names.
-                         (To be set on spied on channel and matched against the g(grp) option)
+${SPYGROUP}           * A ':' (colon) separated list of group names.
+                        (To be set on spied on channel and matched against the g(grp) option)
 \end{verbatim}
 
 \subsection{OSP}
 \begin{verbatim}
-${OSPINHANDLE}         OSP handle of in_bound call
-${OSPINTIMELIMIT}      Duration limit for in_bound call
-${OSPOUTHANDLE}                OSP handle of out_bound call
-${OSPTECH}             OSP technology 
-${OSPDEST}             OSP destination
-${OSPCALLING}          OSP calling number
-${OSPOUTTOKEN}         OSP token to use for out_bound call
-${OSPOUTTIMELIMIT}     Duration limit for out_bound call
-${OSPRESULTS}          Number of remained destinations
+${OSPINHANDLE}          OSP handle of in_bound call
+${OSPINTIMELIMIT}       Duration limit for in_bound call
+${OSPOUTHANDLE}         OSP handle of out_bound call
+${OSPTECH}              OSP technology 
+${OSPDEST}              OSP destination
+${OSPCALLING}           OSP calling number
+${OSPOUTTOKEN}          OSP token to use for out_bound call
+${OSPOUTTIMELIMIT}      Duration limit for out_bound call
+${OSPRESULTS}           Number of remained destinations
 \end{verbatim}
index 3d7cabd..f1b1b9e 100644 (file)
@@ -1,8 +1,8 @@
 \subsection{Introduction}
 
 A PBX is only really useful if you can get calls into it.  Of course, you
-can use Asterisk with VoIP calls (SIP, H.323, IAX), but you can also talk
-to the real PSTN through various cards.
+can use Asterisk with VoIP calls (SIP, H.323, IAX, etc.), but you can also 
+talk to the real PSTN through various cards.
 
 Supported Hardware is divided into two general groups:  Zaptel devices and 
 non-zaptel devices.  The Zaptel compatible hardware supports pseudo-TDM 
@@ -31,7 +31,7 @@ compatible hardware may have different features.
        \item TE210P - The TE210P improves performance and scalability through bus mastering architecture. It supports E1, T1, and J1 environments and is selectable on a per-card or per-port basis.
        \item TE207P - The TE207P offers an on-board DSP-based echo cancellation module. It supports E1, T1, and J1 environments and is selectable on a per-card or per-port basis.
        \item TE205P - The TE205P improves performance and scalability through bus mastering architecture. It supports both E1 and T1/J1 environments and is selectable on a per-card or per-port basis.
-       \item TE120P - The TE120P is a single span, selectable T1, E1, or J1 card and utilizes Digium's VoiceBus™ technology. It supports both voice and data modes.          
+       \item TE120P - The TE120P is a single span, selectable T1, E1, or J1 card and utilizes Digium's VoiceBus\texttrademark technology. It supports both voice and data modes.       
        \item TE110P - The TE110P brings a high-performance, cost-effective, and flexible single span togglable T1, E1, J1 interface to the Digium line-up of telephony interface devices.
      \end{itemize}
   \end{itemize}
@@ -60,7 +60,7 @@ chan\_misdn. See the mISDN section for more information.
 
 \begin{itemize}
   \item Digium, Inc. (Primary Developer of Asterisk) 
-       http://www.digium.com
+  http://www.digium.com
   \begin{itemize}
     \item B410P - 4 Port BRI card (TE/NT)
    \end{itemize}
@@ -68,7 +68,7 @@ chan\_misdn. See the mISDN section for more information.
 
 \begin{itemize}
   \item beroNet 
-       http://www.beronet.com
+  http://www.beronet.com
   \begin{itemize}
     \item BN4S0 - 4 Port BRI card (TE/NT)
 
index 5122f12..59e1474 100644 (file)
@@ -43,7 +43,7 @@ backwards compatible architecture. Look in the source code for instructions.
 \subsubsection{Testing and monitoring}
 
 You can test the effectiveness of PLC and the new jitterbuffer's detection of loss by using 
-the new CLI command "iax2 test losspct <n>".  This will simulate n percent packet loss 
+the new CLI command "iax2 test losspct $<$n$>$".  This will simulate n percent packet loss 
 coming \_in\_ to chan\_iax2. You should find that with PLC and the new JB, 10 percent packet 
 loss should lead to just a tiny amount of distortion, while without PLC, it would lead to 
 silent gaps in your audio.
index 4c505ce..b5f7071 100644 (file)
@@ -41,7 +41,7 @@ subscriptions and call limits)
 \section{Command Syntax}
 
 Management communication consists of tags of the form "header: value", 
-terminated with an empty newline (\\r\\n) in the style of SMTP, HTTP, and
+terminated with an empty newline (\textbackslash r\textbackslash n) in the style of SMTP, HTTP, and
 other headers.
 
 The first tag MUST be one of the following:
@@ -106,143 +106,143 @@ http://www.asterisk.org web site for more information.
 
 \section{Some standard AMI headers}
 \begin{verbatim}
- Account:                      -- Account Code (Status)
- AccountCode:                  -- Account Code (cdr_manager)
- ACL: <Y | N>                  -- Does ACL exist for object ?
- Action: <action>              -- request or notification of a particular action
- Address-IP:                   -- IPaddress 
- Address-Port:                 -- IP port number
- Agent: <string>               -- Agent name
- AMAflags:                     -- AMA flag (cdr_manager, sippeers)
- AnswerTime:                   -- Time of answer (cdr_manager)
- Append: <bool>                        -- CDR userfield Append flag
- Application:                  -- Application to use
- Async:                                -- Whether or not to use fast setup
- AuthType:                     -- Authentication type (for login or challenge)
-                                       "md5"
- BillableSeconds:              -- Billable seconds for call (cdr_manager)
- CallerID:                     -- Caller id (name and number in Originate & cdr_manager)
- CallerID:                     -- CallerID number
-                                  Number or "<unknown>" or "unknown" 
-                                       (should change to "<unknown>" in app_queue)
- CallerID1:                     -- Channel 1 CallerID (Link event)
- CallerID2:                     -- Channel 2 CallerID (Link event)
- CallerIDName:                 -- CallerID name
-                                  Name or "<unknown>" or "unknown" 
-                                       (should change to "<unknown>" in app_queue)
- Callgroup:                    -- Call group for peer/user
- CallsTaken: <num>             -- Queue status variable
- Cause: <value>                        -- Event change cause - "Expired"
- Cause: <value>                        -- Hangupcause (channel.c)
- CID-CallingPres:              -- Caller ID calling presentation
- Channel: <channel>            -- Channel specifier
- Channel: <dialstring>         -- Dialstring in Originate
+ Account:                 -- Account Code (Status)
+ AccountCode:             -- Account Code (cdr_manager)
+ ACL: <Y | N>             -- Does ACL exist for object ?
+ Action: <action>         -- Request or notification of a particular action
+ Address-IP:              -- IPaddress 
+ Address-Port:            -- IP port number
+ Agent: <string>          -- Agent name
+ AMAflags:                -- AMA flag (cdr_manager, sippeers)
+ AnswerTime:              -- Time of answer (cdr_manager)
+ Append: <bool>           -- CDR userfield Append flag
+ Application:             -- Application to use
+ Async:                   -- Whether or not to use fast setup
+ AuthType:                -- Authentication type (for login or challenge)
+          "md5"
+ BillableSeconds:         -- Billable seconds for call (cdr_manager)
+ CallerID:                -- Caller id (name and number in Originate & cdr_manager)
+ CallerID:                -- CallerID number
+                             Number or "<unknown>" or "unknown" 
+                             (should change to "<unknown>" in app_queue)
+ CallerID1:               -- Channel 1 CallerID (Link event)
+ CallerID2:               -- Channel 2 CallerID (Link event)
+ CallerIDName:            -- CallerID name
+                             Name or "<unknown>" or "unknown" 
+                             (should change to "<unknown>" in app_queue)
+ Callgroup:               -- Call group for peer/user
+ CallsTaken: <num>        -- Queue status variable
+ Cause: <value>           -- Event change cause - "Expired"
+ Cause: <value>           -- Hangupcause (channel.c)
+ CID-CallingPres:         -- Caller ID calling presentation
+ Channel: <channel>       -- Channel specifier
+ Channel: <dialstring>    -- Dialstring in Originate
  Channel: <tech/[peer/username]> -- Channel in Registry events (SIP, IAX2)
- Channel: <tech>               -- Technology (SIP/IAX2 etc) in Registry events
- ChannelType:                  -- Tech: SIP, IAX2, ZAP, MGCP etc
- Channel1:                     -- Link channel 1
- Channel2:                     -- Link channel 2
- ChanObjectType:               -- "peer", "user"
- Codecs:                       -- Codec list
- CodecOrder:                   -- Codec order, separated with comma ","
- Command:                      -- Cli command to run
- Context:                      -- Context
- Count: <num>                  -- Number of callers in queue
- Data:                         -- Application data
- Default-addr-IP:              -- IP address to use before registration
- Default-Username:             -- Username part of URI to use before registration
- Destination:                  -- Destination for call (Dialstring ) (dial, cdr_manager)
- DestinationContext:           -- Destination context (cdr_manager)
- DestinationChannel:           -- Destination channel (cdr_manager)
- DestUniqueID:                 -- UniqueID of destination (dial event)
- Disposition:                  -- Call disposition (CDR manager)
- Domain: <domain>              -- DNS domain
- Duration: <secs>              -- Duration of call (cdr_manager)
- Dynamic: <Y |  N>             -- Device registration supported?
- Endtime:                      -- End time stamp of call (cdr_manager)
- EventList: <flag>             -- Flag being "Start", "End", "Cancelled" or "ListObject"
- Events: <eventmask>           -- Eventmask filter ("on", "off", "system", "call", "log")
- Exten:                                -- Extension (Redirect command)
- Extension:                    -- Extension (Status)
- Family: <string>              -- ASTdb key family
- File: <filename>              -- Filename (monitor)
- Format: <format>              -- Format of sound file (monitor)
- From: <time>                  --  Parking time (ParkedCall event)
- Hint:                         -- Extension hint
- Incominglimit:                        -- SIP Peer incoming limit
+ Channel: <tech>          -- Technology (SIP/IAX2 etc) in Registry events
+ ChannelType:             -- Tech: SIP, IAX2, ZAP, MGCP etc
+ Channel1:                -- Link channel 1
+ Channel2:                -- Link channel 2
+ ChanObjectType:          -- "peer", "user"
+ Codecs:                  -- Codec list
+ CodecOrder:              -- Codec order, separated with comma ","
+ Command:                 -- Cli command to run
+ Context:                 -- Context
+ Count: <num>             -- Number of callers in queue
+ Data:                    -- Application data
+ Default-addr-IP:         -- IP address to use before registration
+ Default-Username:        -- Username part of URI to use before registration
+ Destination:             -- Destination for call (Dialstring ) (dial, cdr_manager)
+ DestinationContext:      -- Destination context (cdr_manager)
+ DestinationChannel:      -- Destination channel (cdr_manager)
+ DestUniqueID:            -- UniqueID of destination (dial event)
+ Disposition:             -- Call disposition (CDR manager)
+ Domain: <domain>         -- DNS domain
+ Duration: <secs>         -- Duration of call (cdr_manager)
+ Dynamic: <Y |  N>        -- Device registration supported?
+ Endtime:                 -- End time stamp of call (cdr_manager)
+ EventList: <flag>        -- Flag being "Start", "End", "Cancelled" or "ListObject"
+ Events: <eventmask>      -- Eventmask filter ("on", "off", "system", "call", "log")
+ Exten:                   -- Extension (Redirect command)
+ Extension:               -- Extension (Status)
+ Family: <string>         -- ASTdb key family
+ File: <filename>         -- Filename (monitor)
+ Format: <format>         -- Format of sound file (monitor)
+ From: <time>             --  Parking time (ParkedCall event)
+ Hint:                    -- Extension hint
+ Incominglimit:           -- SIP Peer incoming limit
  Key:
- Key:                          -- ASTdb Database key
- LastApplication:              -- Last application executed (cdr_manager)
- LastCall: <num>               -- Last call in queue
- LastData:                     -- Data for last application (cdr_manager)
- Link:                         -- (Status)
- ListItems: <number>           -- Number of items in Eventlist (Optionally sent in "end" packet)
- Location:                     -- Interface (whatever that is -maybe tech/name in app_queue )
- Loginchan:                    -- Login channel for agent
- Logintime: <number>           -- Login time for agent
- Mailbox:                      -- VM Mailbox (id@vmcontext) (mailboxstatus, mailboxcount)
- MD5SecretExist: <Y | N>       -- Whether secret exists in MD5 format 
- Membership: <string>          -- "Dynamic" or "static" member in queue
- Message: <text>               -- Text message in ACKs, errors (explanation)
- Mix: <bool>                   -- Boolean parameter (monitor) 
- NewMessages: <count>          -- Count of new Mailbox messages (mailboxcount)
- Newname:              
- ObjectName:                   -- Name of object in list
- OldName:                      -- Something in Rename (channel.c)
- OldMessages: <count>          -- Count of old mailbox messages (mailboxcount) 
- Outgoinglimit:                        -- SIP Peer outgoing limit
- Paused: <num>                 -- Queue member paused status
- Peer: <tech/name>             -- "channel" specifier :-)
- PeerStatus: <tech/name>       -- Peer status code 
-                                       "Unregistered", "Registered", "Lagged", "Reachable"
- Penalty: <num>                        -- Queue penalty
- Priority:                     -- Extension priority
- Privilege: <privilege>                -- AMI authorization class (system, call, log, verbose, command, agent, user)
- Pickupgroup:                  -- Pickup group for peer
- Position: <num>               -- Position in Queue
- Queue:                                -- Queue name
- Reason:                       -- "Autologoff"
- Reason:                       -- "Chanunavail"
- Response: <response>          -- response code, like "200 OK"
-                                       "Success", "Error", "Follows"
- Restart:                      -- "True", "False"
- RegExpire:                    -- SIP registry expire
- RegExpiry:                    -- SIP registry expiry
- Reason:                       -- Originate reason code
- Seconds:                      -- Seconds (Status)
- Secret: <password>            -- Authentication secret (for login)
- SecretExist: <Y | N>          -- Whether secret exists 
- Shutdown:                     -- "Uncleanly", "Cleanly" 
+ Key:                     -- ASTdb Database key
+ LastApplication:         -- Last application executed (cdr_manager)
+ LastCall: <num>          -- Last call in queue
+ LastData:                -- Data for last application (cdr_manager)
+ Link:                    -- (Status)
+ ListItems: <number>      -- Number of items in Eventlist (Optionally sent in "end" packet)
+ Location:                -- Interface (whatever that is -maybe tech/name in app_queue )
+ Loginchan:               -- Login channel for agent
+ Logintime: <number>      -- Login time for agent
+ Mailbox:                 -- VM Mailbox (id@vmcontext) (mailboxstatus, mailboxcount)
+ MD5SecretExist: <Y | N>  -- Whether secret exists in MD5 format 
+ Membership: <string>     -- "Dynamic" or "static" member in queue
+ Message: <text>          -- Text message in ACKs, errors (explanation)
+ Mix: <bool>              -- Boolean parameter (monitor) 
+ NewMessages: <count>     -- Count of new Mailbox messages (mailboxcount)
+ Newname:   
+ ObjectName:              -- Name of object in list
+ OldName:                 -- Something in Rename (channel.c)
+ OldMessages: <count>     -- Count of old mailbox messages (mailboxcount) 
+ Outgoinglimit:           -- SIP Peer outgoing limit
+ Paused: <num>            -- Queue member paused status
+ Peer: <tech/name>        -- "channel" specifier :-)
+ PeerStatus: <tech/name>  -- Peer status code 
+                           "Unregistered", "Registered", "Lagged", "Reachable"
+ Penalty: <num>           -- Queue penalty
+ Priority:                -- Extension priority
+ Privilege: <privilege>   -- AMI authorization class (system, call, log, verbose, command, agent, user)
+ Pickupgroup:             -- Pickup group for peer
+ Position: <num>          -- Position in Queue
+ Queue:                   -- Queue name
+ Reason:                  -- "Autologoff"
+ Reason:                  -- "Chanunavail"
+ Response: <response>     -- response code, like "200 OK"
+                           "Success", "Error", "Follows"
+ Restart:                 -- "True", "False"
+ RegExpire:               -- SIP registry expire
+ RegExpiry:               -- SIP registry expiry
+ Reason:                  -- Originate reason code
+ Seconds:                 -- Seconds (Status)
+ Secret: <password>       -- Authentication secret (for login)
+ SecretExist: <Y | N>     -- Whether secret exists 
+ Shutdown:                -- "Uncleanly", "Cleanly" 
  SIP-AuthInsecure:
- SIP-FromDomain:               -- Peer FromDomain
- SIP-FromUser:                 -- Peer FromUser
+ SIP-FromDomain:          -- Peer FromDomain
+ SIP-FromUser:            -- Peer FromUser
  SIP-NatSupport:
  SIPLastMsg:
- Source:                       -- Source of call (dial event, cdr_manager)
- SrcUniqueID:                  -- UniqueID of source (dial event)
- StartTime:                    -- Start time of call (cdr_manager)
- State:                                -- Channel state
- Status:                       -- Registration status (Registry events SIP)
- Status:                       -- Extension status (Extensionstate)
- Status:                       -- Peer status (if monitored)  ** Will change name **
-                                       "unknown", "lagged", "ok"
- Status: <num>                 -- Queue Status
- Status:                       -- DND status (DNDState)
- Time: <sec>                   -- Roundtrip time (latency)
- Timeout:                      -- Parking timeout time
- Timeout:                      -- Timeout for call setup (Originate)
- Timeout: <seconds>            -- Timeout for call
- Uniqueid:                     -- Channel Unique ID
- Uniqueid1:                    -- Channel 1 Unique ID (Link event)
- Uniqueid2:                    -- Channel 2 Unique ID (Link event)
- User:                         -- Username (SIP registry)
- UserField:                    -- CDR userfield (cdr_manager)
- Val:                          -- Value to set/read in ASTdb
- Variable:                     -- Variable AND value to set (multiple separated with | in Originate)
- Variable: <name>              -- For channel variables
- Value: <value>                        -- Value to set
- VoiceMailbox:                 -- VM Mailbox in SIPpeers
- Waiting:                      -- Count of mailbox messages (mailboxstatus)
+ Source:                  -- Source of call (dial event, cdr_manager)
+ SrcUniqueID:             -- UniqueID of source (dial event)
+ StartTime:               -- Start time of call (cdr_manager)
+ State:                   -- Channel state
+ Status:                  -- Registration status (Registry events SIP)
+ Status:                  -- Extension status (Extensionstate)
+ Status:                  -- Peer status (if monitored)  ** Will change name **
+                             "unknown", "lagged", "ok"
+ Status: <num>            -- Queue Status
+ Status:                  -- DND status (DNDState)
+ Time: <sec>              -- Roundtrip time (latency)
+ Timeout:                 -- Parking timeout time
+ Timeout:                 -- Timeout for call setup (Originate)
+ Timeout: <seconds>       -- Timeout for call
+ Uniqueid:                -- Channel Unique ID
+ Uniqueid1:               -- Channel 1 Unique ID (Link event)
+ Uniqueid2:               -- Channel 2 Unique ID (Link event)
+ User:                    -- Username (SIP registry)
+ UserField:               -- CDR userfield (cdr_manager)
+ Val:                     -- Value to set/read in ASTdb
+ Variable:                -- Variable AND value to set (multiple separated with | in Originate)
+ Variable: <name>         -- For channel variables
+ Value: <value>           -- Value to set
+ VoiceMailbox:            -- VM Mailbox in SIPpeers
+ Waiting:                 -- Count of mailbox messages (mailboxstatus)
 \end{verbatim}
 
  ** Please try to re-use existing headers to simplify manager message parsing in clients.
index 3b1ca17..5cc50b5 100644 (file)
@@ -129,15 +129,15 @@ The Optionsstring looks Like:
 the ":" character is the delimiter.
 
 The available Optchars are: 
-       d - Send display text on called phone, text is the optparam
-       n - don't detect dtmf tones on called channel
-       h - make digital outgoing call
-       c - make crypted outgoing call, param is keyindex
-       e - perform echo cancellation on this channel, 
-           takes taps as arguments (32,64,128,256)
-       s - send Non Inband DTMF as inband
-       vr - rxgain control
-       vt - txgain control
+  d - Send display text on called phone, text is the optparam
+  n - don't detect dtmf tones on called channel
+  h - make digital outgoing call
+  c - make crypted outgoing call, param is keyindex
+  e - perform echo cancellation on this channel, 
+      takes taps as arguments (32,64,128,256)
+  s - send Non Inband DTMF as inband
+  vr - rxgain control
+  vt - txgain control
 \end{verbatim}
 
 chan\_misdn registers a new dial plan application "misdn\_set\_opt" when
@@ -182,24 +182,24 @@ Now you should see the misdn cli commands:
 
 \begin{verbatim}
 - clean
-       -> pid          (cleans a broken call, use with care, leads often
-                        to a segmentation fault)
+  -> pid    (cleans a broken call, use with care, leads often
+       to a segmentation fault)
 - send
-       -> display      (sends a Text Message to a Asterisk channel, 
-                        this channel must be an misdn channel)
+  -> display  (sends a Text Message to a Asterisk channel, 
+       this channel must be an misdn channel)
 - set
-       -> debug        (sets debug level)
+  -> debug  (sets debug level)
 - show
-       -> config       (shows the configuration options)
-       -> channels     (shows the current active misdn channels)
-       -> channel      (shows details about the given misdn channels)
-       -> stacks       (shows the current ports, their protocols and states)
-       -> fullstacks   (shows the current active and inactive misdn channels)
+  -> config (shows the configuration options)
+  -> channels (shows the current active misdn channels)
+  -> channel  (shows details about the given misdn channels)
+  -> stacks (shows the current ports, their protocols and states)
+  -> fullstacks (shows the current active and inactive misdn channels)
 
 - restart 
-       -> port         (restarts given port (L2 Restart) )
+  -> port   (restarts given port (L2 Restart) )
 
-- reload               (reloads misdn.conf)
+- reload    (reloads misdn.conf)
 \end{verbatim}
 
 You can only use "misdn send display" when an Asterisk channel is created and
@@ -218,8 +218,8 @@ msn (callerid) of the Phone to send the text to.
 mISDN Exports/Imports a few Variables: 
 
 \begin{verbatim}
-- MISDN_ADDRESS_COMPLETE :     Is either set to 1 from the Provider, or you 
-                               can set it to 1 to force a sending complete.
+- MISDN_ADDRESS_COMPLETE :  Is either set to 1 from the Provider, or you 
+        can set it to 1 to force a sending complete.
 \end{verbatim}
 
 
@@ -258,9 +258,7 @@ as Display Message to the Phone.
 
 \subsection{Known Problems}
 
-\begin{verbatim}
-* I cannot hear any tone after a successful CONNECT to the other end
+Q: I cannot hear any tone after a successful CONNECT to the other end
 
--> you forgot to load mISDNdsp, which is now needed by chan\_misdn for switching
+A: You forgot to load mISDNdsp, which is now needed by chan\_misdn for switching
 and dtmf tone detection
-\end{verbatim}
index 97d1c94..3e205f2 100644 (file)
@@ -1,3 +1,5 @@
+
+
 ODBC Storage allows you to store voicemail messages within a database 
 instead of using a file.  This is *not* a full realtime engine and 
 *only* supports ODBC.  The table description for the "voicemessages" 
index eed4764..8334b5a 100644 (file)
@@ -268,25 +268,27 @@ option):
 
 \begin{verbatim}
 [home-introduction]
-exten => s,1,Background,intro-options   ;; Script: To hear your Introduction, dial 1.
-                                        ;;         to record a new introduction, dial 2.
-                                        ;;         to return to the main menu, dial 3.
-                                        ;;         to hear what this is all about, dial 4.
+exten => s,1,Background,intro-options ;; Script: 
+     ;; To hear your Introduction, dial 1.
+     ;;    to record a new introduction, dial 2.
+     ;;    to return to the main menu, dial 3.
+     ;;    to hear what this is all about, dial 4.
 exten => 1,1,Playback,priv-callerintros/${CALLERIDNUM}
 exten => 1,2,Goto(s,1)
 exten => 2,1,Goto(home-introduction-record,s,1)
 exten => 3,1,Goto(homeline,s,7)
-exten => 4,1,Playback,intro-intro     ;; Script:
-                                ;; This may seem a little strange, but it really is a neat
-                                ;; thing, both for you and for us. I've taped a short introduction
-                                ;; for many of the folks who normally call us. Using the Caller ID
-                                ;; from each incoming call, the system plays the introduction
-                                ;; for that phone number over a speaker, just as the call comes in.
-                                ;; This helps the folks
-                                ;; here in the house more quickly determine who is calling.
-                                ;; and gets the right ones to gravitate to the phone.
-                                ;; You can listen to, and record a new intro for your phone number
-                                ;; using this menu.
+exten => 4,1,Playback,intro-intro
+     ;; Script:
+     ;; This may seem a little strange, but it really is a neat
+     ;; thing, both for you and for us. I've taped a short introduction
+     ;; for many of the folks who normally call us. Using the Caller ID
+     ;; from each incoming call, the system plays the introduction
+     ;; for that phone number over a speaker, just as the call comes in.
+     ;; This helps the folks
+     ;; here in the house more quickly determine who is calling.
+     ;; and gets the right ones to gravitate to the phone.
+     ;; You can listen to, and record a new intro for your phone number
+     ;; using this menu.
 exten => 4,2,Goto(s,1)
 exten => t,1,Goto(s,1)
 exten => i,1,Background,invalid
@@ -295,37 +297,37 @@ exten => o,1,Goto(s,1)
 
 [home-introduction-record]
 exten => s,1,Background,intro-record-choices    ;; Script:
-                                ;;      If you want some advice about recording your
-                                ;;      introduction, dial 1. 
-                                ;;      otherwise, dial 2, and introduce yourself after
-                                ;;      the beep.
+     ;; If you want some advice about recording your
+     ;; introduction, dial 1. 
+     ;; otherwise, dial 2, and introduce yourself after
+     ;; the beep.
 exten => 1,1,Playback,intro-record
-                                ;;      Your introduction should be short and sweet and crisp.
-                                ;;      Your introduction will be limited to 4 seconds.
-                                ;;      This is NOT meant to be a voice mail message, so
-                                ;;      please, don't say anything about why you are calling.
-                                ;;      After we are done making the recording, your introduction
-                                ;;      will be saved for playback. 
-                                ;;      If you are the only person that would call from this number, 
-                                ;;      please state your name.  Otherwise, state your business
-                                ;;      or residence name instead. For instance, if you are 
-                                ;;      friend of the family, say, Olie McPherson, and both
-                                ;;      you and your kids might call here a lot, you might
-                                ;;      say: "This is the distinguished Olie McPherson Residence!"
-                                ;;      If you are the only person calling, you might say this:
-                                ;;      "This is the illustrious Kermit McFrog! Pick up the Phone, someone!!"
-                                ;;      If you are calling from a business, you might pronounce a more sedate introduction,like,
-                                ;;      "Fritz from McDonalds calling.", or perhaps the more original introduction:
-                                ;;      "John, from the Park County Morgue. You stab 'em, we slab 'em!".
-                                ;;      Just one caution: the kids will hear what you record every time
-                                ;;      you call. So watch your language!
-                                ;;      I will begin recording after the tone. 
-                                ;;      When you are done, hit the # key. Gather your thoughts and get 
-                                ;;      ready. Remember, the # key will end the recording, and play back
-                                ;;      your intro. Good Luck, and Thank you!"
+     ;; Your introduction should be short and sweet and crisp.
+     ;; Your introduction will be limited to 4 seconds.
+     ;; This is NOT meant to be a voice mail message, so
+     ;; please, don't say anything about why you are calling.
+     ;; After we are done making the recording, your introduction
+     ;; will be saved for playback. 
+     ;; If you are the only person that would call from this number, 
+     ;; please state your name.  Otherwise, state your business
+     ;; or residence name instead. For instance, if you are 
+     ;; friend of the family, say, Olie McPherson, and both
+     ;; you and your kids might call here a lot, you might
+     ;; say: "This is the distinguished Olie McPherson Residence!"
+     ;; If you are the only person calling, you might say this:
+     ;; "This is the illustrious Kermit McFrog! Pick up the Phone, someone!!"
+     ;; If you are calling from a business, you might pronounce a more sedate introduction,like,
+     ;; "Fritz from McDonalds calling.", or perhaps the more original introduction:
+     ;; "John, from the Park County Morgue. You stab 'em, we slab 'em!".
+     ;; Just one caution: the kids will hear what you record every time
+     ;; you call. So watch your language!
+     ;; I will begin recording after the tone. 
+     ;; When you are done, hit the # key. Gather your thoughts and get 
+     ;; ready. Remember, the # key will end the recording, and play back
+     ;; your intro. Good Luck, and Thank you!"
 exten => 1,2,Goto(2,1)
 exten => 2,1,Background,intro-start
-                                ;;  OK, here we go! After the beep, please give your introduction.
+     ;;  OK, here we go! After the beep, please give your introduction.
 exten => 2,2,Background,beep
 exten => 2,3,Record,priv-callerintros/${CALLERIDNUM}:gsm|4
 exten => 2,4,Background,priv-callerintros/${CALLERIDNUM}
index b86107f..619f78c 100644 (file)
@@ -7,7 +7,7 @@ congested with other traffic.
 
 Also asterisk running on Linux can set 802.1p CoS marks in VLAN packets 
 for all used VoIP protocols. It is useful when you are working in switched 
-enviropment. For maping skb->priority and VLAN CoS mark you need to use 
+enviropment. For maping skb-$>$priority and VLAN CoS mark you need to use 
 command "vconfig set\_egress\_map [vlan-device] [skb-priority] [vlan-qos]".
 
 \subsubsection{SIP}
@@ -64,30 +64,30 @@ integer values from 0 to 7.
 
 
 \begin{verbatim}
-===========================================
-Configuration  Parameter       Recommended
-File                           Setting
--------------------------------------------
-sip.conf       tos\_sip        cs3
-sip.conf       tos\_audio      ef
-sip.conf       tos\_video      af41
-sip.conf       tos\_text       af41
-sip.conf       cos\_sip        4
-sip.conf       cos\_audio      6
-sip.conf       cos\_video      5
-sip.conf       cos\_text       0
--------------------------------------------
-iax.conf       tos             ef
-iax.conf       cos             6       
--------------------------------------------
-iaxprov.conf   tos             ef
--------------------------------------------
-mgcp.conf      tos             ef
-mgcp.conf      cos             6
--------------------------------------------
-h323.conf      tos             ef
-h323.conf      cos             6
-===========================================
++==============+============+==============+
+|Configuration | Parameter  | Recommended  |
+|File          | Setting    |              |
++--------------+------------+--------------+
+|              | tos_sip    | cs3          |
+|              | tos_audio  | ef           |
+|              | tos_video  | af41         |
+| sip.conf     | tos_text   | af41         |
+|              | cos_sip    | 4            |
+|              | cos_audio  | 6            |
+|              | cos_video  | 5            |
+|              | cos_text   | 0            |
++--------------+------------+--------------+
+| iax.conf     | tos        | ef           |
+|              | cos        | 6            |
++--------------+------------+--------------+
+| iaxprov.conf | tos        | ef           |
++--------------+------------+--------------+
+| mgcp.conf    | tos        | ef           |
+|              | cos        | 6            |
++--------------+------------+--------------+
+| h323.conf    | tos        | ef           |
+|              | cos        | 6            |
++==============+============+==============+
 \end{verbatim}
 
 \subsubsection{Reference}
@@ -108,12 +108,11 @@ To get the most out of setting the TOS on packets generated by
 Asterisk, you will need to ensure that your network handles packets
 with a TOS properly.  For Cisco devices, see the previously mentioned
 "Enterprise QoS Solution Reference Network Design Guide".  For Linux
-systems see the "Linux Advanced Routing \& Traffic Control HOWTO" at
-<http://www.lartc.org/>.
+systems see the "Linux Advanced Routing \& Traffic Control HOWTO" at 
+http://www.lartc.org/.
 
 For more information on Quality of
 Service for VoIP networks see the "Enterprise QoS Solution Reference
 Network Design Guide" version 3.3 from Cisco at:
-
-<http://www.cisco.com/application/pdf/en/us/guest/netsol/ns432/c649/ccmigration\_09186a008049b062.pdf>
+http://www.cisco.com/application/pdf/en/us/guest/netsol/ns432/c649/ccmigration\_09186a008049b062.pdf
 
index dd2047a..741c18a 100644 (file)
@@ -6,59 +6,71 @@ queue log, located (by default) in /var/log/asterisk/queue\_log.
 
 These are the events (and associated information) in the queue log:
 
-ABANDON(position|origposition|waittime)
+\textbf{ABANDON(position|origposition|waittime)}
+
 The caller abandoned their position in the queue.  The position is the
 caller's position in the queue when they hungup, the origposition is
 the original position the caller was when they first entered the
 queue, and the waittime is how long the call had been waiting in the 
 queue at the time of disconnect.
 
-AGENTDUMP
+\textbf{AGENTDUMP}
+
 The agent dumped the caller while listening to the queue announcement.
 
-AGENTLOGIN(channel)
+\textbf{AGENTLOGIN(channel)}
+
 The agent logged in.  The channel is recorded.
 
-AGENTCALLBACKLOGIN(exten@context)
+\textbf{AGENTCALLBACKLOGIN(exten@context)}
+
 The callback agent logged in.  The login extension and context is recorded.
 
-AGENTLOGOFF(channel|logintime)
+\textbf{AGENTLOGOFF(channel|logintime)}
+
 The agent logged off.  The channel is recorded, along with the total time
 the agent was logged in.
 
-AGENTCALLBACKLOGOFF(exten@context|logintime|reason)
+\textbf{AGENTCALLBACKLOGOFF(exten@context|logintime|reason)}
+
 The callback agent logged off.  The last login extension and context is
 recorded, along with the total time the agent was logged in, and the
 reason for the logoff if it was not a normal logoff 
 (e.g., Autologoff, Chanunavail)
 
-COMPLETEAGENT(holdtime|calltime|origposition)
+\textbf{COMPLETEAGENT(holdtime|calltime|origposition)}
+
 The caller was connected to an agent, and the call was terminated normally
 by the *agent*.  The caller's hold time and the length of the call are both
 recorded.  The caller's original position in the queue is recorded in
 origposition.
 
-COMPLETECALLER(holdtime|calltime|origposition)
+\textbf{COMPLETECALLER(holdtime|calltime|origposition)}
+
 The caller was connected to an agent, and the call was terminated normally
 by the *caller*.  The caller's hold time and the length of the call are both
 recorded.  The caller's original position in the queue is recorded in
 origposition.
 
-CONFIGRELOAD
+\textbf{CONFIGRELOAD}
+
 The configuration has been reloaded (e.g. with asterisk -rx reload)
 
-CONNECT(holdtime|bridgedchanneluniqueid)
+\textbf{CONNECT(holdtime|bridgedchanneluniqueid)}
+
 The caller was connected to an agent.  Hold time represents the amount
 of time the caller was on hold. The bridged channel unique ID contains
 the unique ID of the queue member channel that is taking the call. This
 is useful when trying to link recording filenames to a particular
 call in the queue.
 
-ENTERQUEUE(url|callerid)
+\textbf{ENTERQUEUE(url|callerid)}
+
 A call has entered the queue.  URL (if specified) and Caller*ID are placed
 in the log.
 
-EXITEMPTY(position|origposition|waittime)
+\textbf{EXITEMPTY(position|origposition|waittime)}
+
 The caller was exited from the queue forcefully because the queue had no
 reachable members and it's configured to do that to callers when there
 are no reachable members. The position is the caller's position in the
@@ -66,29 +78,35 @@ queue when they hungup, the origposition is the original position the
 caller was when they first entered the queue, and the waittime is how 
 long the call had been waiting in the queue at the time of disconnect.
 
-EXITWITHKEY(key|position|origposition|waittime)
+\textbf{EXITWITHKEY(key|position|origposition|waittime)}
+
 The caller elected to use a menu key to exit the queue.  The key and
 the caller's position in the queue are recorded.  The caller's entry
 position and amoutn of time waited is also recorded.
 
-EXITWITHTIMEOUT(position|origposition|waittime)
+\textbf{EXITWITHTIMEOUT(position|origposition|waittime)}
+
 The caller was on hold too long and the timeout expired.  The position in the
 queue when the timeout occurred, the entry position, and the amount of time
 waited are logged.
 
-QUEUESTART
+\textbf{QUEUESTART}
+
 The queueing system has been started for the first time this session.
 
-RINGNOANSWER(ringtime)
+\textbf{RINGNOANSWER(ringtime)}
+
 After trying for ringtime ms to connect to the available queue member,
 the attempt ended without the member picking up the call. Bad queue
 member!
 
-SYSCOMPAT
+\textbf{SYSCOMPAT}
+
 A call was answered by an agent, but the call was dropped because the 
 channels were not compatible.
 
-TRANSFER(extension|context|holdtime|calltime)
+\textbf{TRANSFER(extension|context|holdtime|calltime)}
+
 Caller was transferred to a different extension.  Context and extension
 are recorded. The caller's hold time and the length of the call are both
 recorded. PLEASE remember that transfers performed by SIP UA's by way
index c08dbc8..cf3a28d 100644 (file)
@@ -6,9 +6,6 @@ functions implemented in Asterisk.
 The benefits of this architecture are many, both from a code management
 standpoint and from an installation perspective. 
 
-Additional information on the configuration of Realtime with Asterisk 
-can be found in doc/extconfig.txt
-
 The ARA is designed to be independent of storage. Currently, most
 drivers are based on SQL, but the architecture should be able to handle
 other storage methods in the future, like LDAP.
@@ -77,7 +74,7 @@ databases and reload it whenever you want. You can force a reload over
 the AMI, Asterisk Manager Interface or by calling Asterisk from a 
 shell script with 
 
-       asterisk -rx "reload"
+  asterisk -rx "reload"
 
 You may also dynamically add SIP and IAX devices and extensions 
 and making them available without a reload, by using the realtime
@@ -87,7 +84,7 @@ objects and the realtime switch.
 
 You configure the ARA in extconfig.conf (yes, it's a strange name, but
 is was defined in the early days of the realtime architecture and kind
-of stuck). Please see doc/extconfig.txt for database schemas.
+of stuck).
 
 The part of Asterisk that connects to the ARA use a well defined family
 name to find the proper database driver. The syntax is easy:
@@ -110,11 +107,8 @@ Defined well-known family names are:
   \item extensions - Realtime extensions (switch)
 \end{itemize}
 
-There is documentation of the SQL database in the file
-doc/extconfig.txt in your Asterisk source code tree.
-
-For voicemail storage with the support of ODBC, there is a 
-doc/odbcstorage.txt documentation file.
+Voicemail storage with the support of ODBC described in file 
+docs/odbcstorage.tex (\ref{odbcstorage}).
 
 \subsubsection{Limitations}