The Hitchhiker's Guide to Asterisk

Leif Madsen

Jared Smith

Steven Sokol

Wasim Baig

Daniel Heinzen

Josh Rollyson

Peter Grace

Nick Bachmann

Mike Preston

Martin List-Petersen

William Suffill

Jim Van Meggelen

Chris Tooley


Table of Contents
Introductory letter from Mark Spencer (hopefully?)
Introduction to Asterisk
General Concept of Asterisk
Asterisk: The Swiss Army Knife of Telephony
Prerequisite Knowledge and Skills
What to expect
Asterisk Architecture
The Big Picture
Channels
Codecs and Conversions
Protocols
Key Components
Asterisk Software
Zaptel Hardware
Protocols
Applications
Add-On/Optional Components
Soft Phones
Management Tools
Hardware
Installing Asterisk
Requirements
PC Hardware Requirements
Linux Requirements
Hardware Installation
IRQ Sharing Issues
Digium Cards
Downloading Asterisk from CVS
What is CVS?
Your Initial Download
Getting the files from CVS
Getting the files using CVSup
Updates
Compiling Asterisk
Compiling the software
Making the Samples/Demo
Making Code Documentation (Doxygen)
Common Build Errors / Warnings
Loading Drivers
Linux Kernel Loadable Modules
Starting Asterisk
Manually starting Asterisk and the CLI
Starting Asterisk using safe_asterisk
Starting Automatically at Boot Time
Asterisk
Zaptel
Asterisk Channels
What are Asterisk Channels?
Zap Devices/Channels
Channel Configuration Files
Creating Dialplans
Introduction to Creating Dialplans
Contexts
Extensions
Priorities
Applications
A Simple Example
The special 's' extension
The Answer(), Playback(), and Hangup() functions
Our First Dialplan
A more useful example
The Dial() application
Adding Additional Functionality
Adding another FXS port
Creating Voice Menus
Accepting User Input With The Background() Application
Adding a Voice Menu
Handling Calls Between Internal Users
Variables
Global Variables
Call Variables
Adding Variables
Macros
What are Macros?
Attributes of Macros
Adding Macros to our Dial Plan
Jumping Between Priorities Based on Call Status
Call Flow
Pattern Matching
Pattern Sort Order
Linking Contexts with Includes
The other special extensions (i,t,o,h,fax,???)
Using Goto and GotoIf
Advanced Dial Plan Concepts
VoiceMail
Music on Hold
Conferences
Call Parking
Modules, or "Things that make Asterisk work."
Core Asterisk configuration
Defining file locations (asterisk.conf)
The Dialplan (extensions.conf, see chapter 4 and 5)
Mysterious Modules (modules.conf)
Modules
Digium Zaptel Cards (chan_zap)
ISDN CAPI (chan_capi)
mISDN (chan_mISDN)
Voicetronix Cards (chan_vpb)
Defining IAX Channels and connections (chan_iax & chan_iax2)
Defining SIP Channels and connections (chan_sip)
Defining H.323 channels and connections (chan_h323)
asterisk-oh323, or another way of getting H.323 connectivity (chan_oh323)
Configuring E.164 lookups (app_enumlookup)
Voicemail (app_voicemail)
Conferencing (app_meetme)
Call Parking (app_parkandannounce)
The Asterisk Cookbook
Scripting with the Asterisk Gateway Interface (AGI)
What is AGI?
What languages can I use?
AGI Basics
Language-specific AGI notes and examples
C
Perl
Python
PHP
EAGI
Advanced Asterisk Configuration
Agents and the Asterisk ACD
Queues
Agents
Text-To-Speech: Festival
CLASS Features (John Todd?)
Fax (Software Fax) (Steve Underwood?)
Sphinx Speech Recognition (ASR)
Distributed Asterisk (Clustering/TDMoE)
TDMoE (Time Domain Multiplexing over Ethernet)
ENUM/E164 Call Routing (LCR)
Introduction
Making ENUM Work for You
Setting up ENUM Routing on your Asterisk System
Configuring your System to Allow ENUM Calls through your PSTN Interface
Databases and Asterisk
PostgreSQL and Applications
CDR - Call Data Records
AstDB - The built-in database
Auto-Dialout (Call Files)
Call File Caveats
Common Issues
Music on Hold/MP3 Playback
Proper Version of MPG123
Timing: zaptel/ztdummy/zaprtc
Configuration File: /etc/asterisk/musiconhold.conf
Adding Music on Hold to the Dialplan
A Final Note on Choosing Music
DTMF over SIP
Inband
Info
rfc2833
The "Flash"
Internationalization of Asterisk
Tones and Ringback
Call Supervision
SIP and NAT
Optional/Added Codecs
G.729
G.723
Message Waiting Indication
Common Hardware Device Issues
Grandstream BT100 Series
Cisco ATA-186
Cisco 79XX Series
SNOM VoIP Phones
Carrier Access Channel Banks
Zhone Channel Banks
Echo Cancellation Issues
Introduction
Echo Training
Adjusting the rxgain/txgain Settings
Interfacing with Legacy PBX Equipment
Nortel Meridian/Norstar
Avaya Definity Systems
Others (Mitel, Aspect, Telrad, Vodavi, Dialogic, etc.)
How to politely use the Asterisk-Users List
How to politely use the Asterisk IRC channel
Creating Asterisk Applications in C
Sources of Additional Information
Connecting Asterisk to Common VoIP Providers
Overview
Free Service Providers
Free World Dialup (FWD)
IAXTEL
IPTel
Gossiptel
SipGate
SIPPhone.com
XVOIP
Commercial Service Providers
NuFone
VoicePulse
XVOIP
Technical Issues
More Information
Applications Reference
CLI Command Reference
Which Commands Can I Use?
Obtaining Help About a Command
The show Command
show agents
show agi
show application
show applications
show audio
show channel
show channels
show codec
show codecs
show conferences
show config
show dialplan
show file
show image
show indications
show keys
show manager
show modules
show parkedcalls
show queue
show queues
show switches
show translation
show uptime
show version
show video
show voicemail
Manager Commands Reference
The Asterisk C API Reference
Other Open Source Telephony Systems
Other Hardware
Other hardware options
VoiceTronix OpenLine and OpenSwitch Cards
QuickNet Cards
Dialogic Cards (and Proprietary Drivers)
ISDN Cards
Eicon Diva
AVM Fritz!
HFC based ISDN cards, quadBRI, octoBRI
Other Cards (LineJack/PhoneJack/VoiceTronix/Dialogic)
Building Additional Modules
Building additional modules
H323 - McNamara
H323 - Manousos
MySQL CDR
CAPI/ISDN
Glossary of Asterisk & Telecom Terms
Colophon