Asterisk: The Definitive Guide

Errata for Asterisk: The Definitive Guide, Third Edition

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.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

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

Version Location Description Submitted by Date submitted
Basic Expressions

The first code example fails for me. I need to add an answer() line.

exten => 321,1,Answer()
same => n,Set(COUNT=3)
same => n,Set(NEWCOUNT=$[${COUNT} + 1])
same => n,SayNumber(${NEWCOUNT})

D'Arcy Cain  Jun 18, 2013 
Other Digital Version

In chapter 16, section "Getting Funky with func_odbc: Hot-Desking" are two examples for "Multirow Functionality with func_odbc". The first one contains a line: "same => n,Set(COUNTER=$[${COUNTER + 1])" where a closing brace after "COUNTER" is missing.

Anonymous  Dec 15, 2014 
Other Digital Version

I have read (and relevant chapter).
I have not found any information about how to get error message from the ODBC function.
When we are in multirow mode, we can test the number of lines returned, but we do not know why no records are returned. In singlerow mode, I have not seen anything.
In PHP, we have a function called odbc_errormsg(), but I have not found anything like that in Asterisk.
I think it should be specified how we can get the error codes, or that it is not possible.

Great great thanks for your work.


Jean-Dominique  May 16, 2016 
Other Digital Version Ofwmx rx

Hello there,

My name is George, and I was wondering if you would like to have your website promoted as a resource on my blog ?

We are updating our broken link resources to include up to date resources for our readers. Our resource links are manually approved as a do follow link.
If you are interested in having your site included as a resource on our blog, please let me know.

Thanks for your consideration,

Anonymous  Mar 09, 2019 
PDF, Page 256
3rd line of the first example

In the chapter called "Deeper into the Dialer Plan", the section called "Using the Asterisk Database(AstDB)", under the sub-section "Using the AstDB in the Dialplan", there is a syntax error in the example following this sentence:

"Finally, we?ll loop back to the first priority. This way, the application will continue

exten => 504,1,noop(test for looping through and storing in the Database)
same => n,answer()
same => n,Set(COUNT=${DB(test/count)})
same => n,GotoIf($[${ISNULL(${COUNT})}]?:continue)
same => n,Set(DB(test/count)=1)
same => n,Goto(1)
same => n(continue),noop()
same => n,Playback(silence/1)
same => n,SayNumber(${COUNT})
same => n,Set(COUNT=$[${COUNT} + 1]
same => n,Set(DB(test/count)=${COUNT})
same => n,Goto(1)

The third-from-last line in the example has a parenthesis which is not closed. The correct is:

same => n,Set(COUNT=$[${COUNT} + 1])

Rahul Nair  Dec 25, 2013 
PDF, Other Digital Version Page 352
2nd example code block

The include in the LocalSets context has a typo in the context name that's being included. It shows "Queue" but the name of the context in the example is "Queues" so if someone were to copy/paste this example it wouldn't work. I'm all for making people learn how to debug but this error is one that would be no fun to find...

Here's the relevant portion of the text:

include => Queue ; allow direct transfer of calls to queues

exten => 7000,1,Verbose(2,Entering the support queue)
same => n,Queue(support) ; standard support queue available


Thanks for the book. I've used every edition and remember how grateful I was when it was first released. It was pretty challenging dealing with only in the beginning. I didn't really grasp much of anything until I had the book. Now 8 years later and it's still helping me figure out how to do things. Thanks again.

Moriah Trostler  Jul 02, 2015 
Printed Page 364f
text and example for extension "logout_login"

The chapter deals with some custom functions defined in func_odbc.conf

The mentioned example uses the function "HOTDESK_LOGGED_IN_USER", but does not provide the implementation of this function itself.
From context I would say the function is identical to the "HOTDESK_PHONE_STATUS" defined on Page 366.

(the function is supposed to return the extension of every logged in 'agent' with the given location)

Is this correct?

Marco Meklenburg  Mar 17, 2013 
Printed Page 367
dialplan example, context "[hotdesk_outbound]"

The text explaining the example states, that in case the "WHO" Variable is NULL, the outgoing call shall be rejected.

To achieve this, the example for extension _X. shows a conditional Goto:
same => n,GotoIf($[${ISNULL(WHO)}]?no_outgoing,1)

the extension "no_outgoing" however is not defined. If I am right, Asterisk will look for the extension "i" in this case, and as this is not existing either in the current context, it will look for the extension "h" - which also is not existing.
The behaviour however will in fact be, that asterisks will close the channel and hang up the call, but as a result of error handling instead of a programmed behaviour.

I think it would make a more clean attempt to provide at least the "i" extension (which is existent in the other contexts showed on the page) or maybe even better, the originally extension "no_outgoing" called by the GotoIf.

My suggestion for the extension (in order to match the behaviour of the other mentioned contexts):

exten => no_outgoing,1,NoOp()
same => n,Playback()silence/2&sorry-cant-let-you-do-that2)
same => n,Hangup()

Marco Meklenburg  Mar 17, 2013 
Printed Page 371
second to the last paragraph (below the hint)

The line says
"In our example, we'll be using the ast_sippeers table [...]"

in fact the example uses the "ast_sipfriends" table. I think this is a typo - the standard name would be "sippeers", which is stated some lines before.

Marco Meklenburg  Mar 17, 2013 
PDF Page 421

Chapter 16 RDBMS:
The commands to install mySQL sudo yum install mysql-server do not work any more.
The commands for creating a user in PostgresSQL also seem to have problem.
$ sudo su - postgres
$ createuser -P
Enter name of user
Enter password for new user
Enter it again:
Shall the new role
Shall the new user
Shall the new user

Anonymous  Jan 04, 2015