Errata

Asterisk: The Future of Telephony

Errata for Asterisk: The Future of Telephony

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
PDF
Page 93
last 4 lines of the page

Note from the Author or Editor:
Change the passage to read:

We can verify that the TFTP service is set to run on startup by running the following commands:

# chkconfig --list | grep tftp\|xinetd

If you see both "tftp: on" and "xinetd: on", the TFTP server is configured to start automatically when the computer boots. You can then restart the xinetd service to ensure that the TFTP server is running (so that you don't have to restart your computer now) by typing:

# service xinetd restart

Anonymous  Feb 03, 2009 
Printed
Page xix
End of 2nd paragraph

"impossible with you."

NOW READS:
"impossible without you."

Anonymous    Dec 01, 2005
Printed
Page 8
Entire "This Book" section

The chapter references were previously all off by one. This HAS BEEN CORRECTED.

Anonymous    Dec 01, 2005
Printed
Page 95
Line of code above the heading "Enabling Outbound Dialing"

exten => _XXX,1,SayDigits(${EXTEN:-1))

NOW READS:
exten => _XXX,1,SayDigits(${EXTEN:-1})

Anonymous    Feb 01, 2006
Printed
Page 98
Paragraph just before "Conclusion" heading, 2nd sentence

"...make sure that your [inbound] context never allows outbound dialing."

NOW READS:
"...make sure that your [incoming] context never allows outbound dialing."

Anonymous    Feb 01, 2006
Printed
Page 104
top half

exten => 345,2,GotoIf($[{$TEST ...

NOW READS:
exten => 345,2,GotoIf($[${TEST ...

Anonymous    Dec 01, 2005
Printed
Page 106
Code snippet above "Voicemail" heading, 4th line

"exten => s,1,GotoIfTime(*,*,4,jul?open,s,1)";

NOW READS:
"exten => s,1,GotoIfTime(*,*,4,jul?closed,s,1)";

Anonymous    Feb 01, 2006
Printed
Page 113
"Storing Data in the AstDB" section, 1st code example

"exten => 456,1,Set(${DB(test/count)=1})"

NOW READS:
"exten => 456,1,Set(DB(test/count)=1)"

Anonymous    Feb 01, 2006
Printed
Page 114
Last code snippet, 3rd line

"exten => 678,3,SetVar(COUNT=$[${COUNT} + 1]"

NOW READS:
"exten => 678,3,SetVar(COUNT=$[${COUNT} + 1])"

Anonymous    Feb 01, 2006
Printed
Page 116
Code snippet near bottom of page, 1st line

"[incoming]"

NOW READS:
"[internal]"

Anonymous    Feb 01, 2006
Printed
Page 126
First paragraph

". . . compare Figure 7-7 with 7-8 . . .",

NOW READS:
" . . . compare Figure 7-2 with 7-6 . . ."

Anonymous    Dec 01, 2005
Printed
Page 160
first footnote

In the footnote phrase:
"If safe_9780596009625 was used to start Asterisk, the first Asterisk console will
be on TTY9, which means that you will not be able to view AGI errors remotely".

In really, we can use the 'conspy' software for view TTY9 from remote access. It
works like a vnc access, but to console instead X. You can access the server via ssh
or telnet, then run

conspy 9

, a voila!

Anonymous   
Printed
Page 213
regcontext (channel) & regexten (channel) entries

Replace regcontext (channel) & regexten (channel) entries with the following:

regcontext (channel)
The regcontext option is used in conjunction with the regexten option
to automatically create a NoOp() application entry into the dialplan
at the first priority of the specified context when a peer registers.
The extension will also automatically be removed from the dialplan
upon the peer either becoming unreachable, or unregistered. The
regcontext option is valid in both the iax.conf and sip.conf channel
configuration files and can be set globally or on a per-peer basis. If
regcontext is configured, and a regexten is not explicitly configured
for a peer definition, the peer name will be used as the extension to
be created. The context is not automatically created by Asterisk and
must defined manually in extensions.conf.

An example of the regcontext and regexten options may be in
combination with the DUNDi protocol. The context pointed to by the
regcontext option could be used as the "advertisement context" defined
in the [mappings] section of the dundi.conf file.
regcontext=registered-phones

regexten (channel)
The regexten option is used in conjunction with the regcontext option
to automatically create a NoOp() application entry into the dialplan
at the first priority of the specified context when a peer registers.
One or more extensions may automatically be created by separating them
with an ampersand (&) on the same line. You may add dialplan logic to
the context defined by the regcontext option starting at priority 2,
or optionally using the 'n' priority.
regexten=myphone

Anonymous   
Printed
Page 221
add an entry to this page

Below "recordhistory", add the following:

regcontext
The regcontext option is used in conjunction with the regexten option
to automatically create a NoOp() application entry into the dialplan
at the first priority of the specified context when a peer registers.
The extension will also automatically be removed from the dialplan
upon the peer either becoming unreachable, or unregistered. The
regcontext option is valid in both the iax.conf and sip.conf channel
configuration files and can be set globally or on a per-peer basis. If
regcontext is configured, and a regexten is not explicitly configured
for a peer definition, the peer name will be used as the extension to
be created. The context is not automatically created by Asterisk and
must defined manually in extensions.conf.

An example of the regcontext and regexten options may be in
combination with the DUNDi protocol. The context pointed to by the
regcontext option could be used as the "advertisement context" defined
in the [mappings] section of the dundi.conf file.
regcontext=registered-phones

Anonymous   
Printed
Page 227
regcontext (peer) entry

remove the regcontext entry from this section

Anonymous   
Printed
Page 228
regexten (peer) entry

replace the regexten (peer) entry with the following:

regexten (peer)
The regexten option is used in conjunction with the regcontext option
to automatically create a NoOp() application entry into the dialplan
at the first priority of the specified context when a peer registers.
One or more extensions may automatically be created by separating them
with an ampersand (&) on the same line. You may add dialplan logic to
the context defined by the regcontext option starting at priority 2,
or optionally using the 'n' priority.
regexten=myphone


Anonymous   
Printed
Page 238
first actual line of code under Congestion() heading

The original text says:

; if the Caller ID is 555-1234, always play congestion
exten => 123,1,GotoIf($[${CALLERIDNUM} = 5551234]?5:2)
exten => 123,2,Playtones(congestion)
exten => 123,3,Congestion()
exten => 123,4,Hangup()
exten => 123,5,Dial(Zap/1)

But in fact this will do the exact opposite. It will dial only if the calledID is
5551234 and play congestion for all other callerIDs.

The actual code should be:
; if the Caller ID is 555-1234, always play congestion
exten => 123,1,GotoIf($[${CALLERIDNUM} = 5551234]?2:5) ; swapped 5 and 2 at the end
exten => 123,2,Playtones(congestion)
exten => 123,3,Congestion()
exten => 123,4,Hangup()
exten => 123,5,Dial(Zap/1)



Anonymous   
Printed
Page 239
Curl() heading

Currently reads:
"Curl() is often used to signal external applications of dialplan events."

It should read:
"Curl() is often used to signal remote applications of dialplan events."

Reasoning:
System() is used to invoke external applications with dialplan events. Curl() is
unique in that it can invoke remote applications, something that System cannot
(directly) do.

Anonymous   
Printed
Page 240
Top of page

Somewhere in the description for Cut(), it should say: the real benefit of Cut is
that it allows parsing of variable-length fields.

Anonymous   
Printed
Page 249
EndWhile() section, sample code

exten => 123,1,Set(COUNT=1)
exten => 123,2,While($[ ${COUNT} < 5 ])
exten => 123,3,SayNumber(${COUNT})
exten => 123,4,EndWhile()

NOW READS:
exten => 123,1,Set(COUNT=1)
exten => 123,2,While($[ ${COUNT} < 5 ])
exten => 123,3,SayNumber(${COUNT})
exten => 123,4,Set(COUNT=$[ ${COUNT} + 1 ])
exten => 123,5,EndWhile()

Anonymous    Feb 01, 2006
Printed
Page 264
NoOp() heading

The description of NoOp() should note that its usage for debugging is entirely a side
effect of the dialplan, but only works if your verbose level is 3 or higher. For
true control of verbose output at any verbosity, see the Verbose() application.

Anonymous   
Printed
Page 267
First line of second paragraph under PrivacyManager() heading

"The privacy.conf configuration file changes the functionality of the PrivacyManger()
application"
should read:
"The privacy.conf configuration file changes the functionality of the
PrivacyManager() application"


Anonymous   
Printed
Page 269
Random() heading

Currently reads:
"The application will jump to the specified destination priority percent of the
time."

Should read:
"The application will jump to the specified destination priority that percent of the
time."


Anonymous   
Printed
Page 272
becasue

the word "because"
is misspelled "becasue"




Anonymous   
Printed
Page 281
SetVar() heading

"Reprecated" should be "Deprecated".

Anonymous   
Printed
Page 287
VMAuthenticate() heading

The description of this app notes that the variable AUTH_MAILBOX will be set. It
neglects to note that AUTH_CONTEXT is also set at the same time.

Anonymous   
Printed
Page 289
While() section, sample code

exten => 123,1,Set(COUNT=1)
exten => 123,2,While($[ ${COUNT} < 5 ])
exten => 123,3,SayNumber(${COUNT})
exten => 123,4,EndWhile()

NOW READS:
exten => 123,1,Set(COUNT=1)
exten => 123,2,While($[ ${COUNT} < 5 ])
exten => 123,3,SayNumber(${COUNT})
exten => 123,4,Set(COUNT=$[ ${COUNT} + 1 ])
exten => 123,5,EndWhile()

Anonymous    Feb 01, 2006
Printed
Page 310
Near top of page, before "Codecs" heading;

After the description of "chan_skinny.so", the following
description of "chan_zap.so" HAS BEEN ADDED:

chan_zap.so
Configuration file: zapata.conf
Requires: res_features.so
Provides: channel Zap, action ZapDialOffHook, action ZapDNDoff,
action ZapDNDon, action ZapHangup, action ZapShowChannels,
action ZapTransfer

Anonymous    Feb 01, 2006