Log In
Or create an account -> 
Imperial Library
  • Home
  • About
  • News
  • Upload
  • Forum
  • Help
  • Login/SignUp

Index
Asterisk™: The Definitive Guide
SPECIAL OFFER: Upgrade this ebook with O’Reilly Foreword Preface
Audience Organization Software Conventions Used in This Book Using Code Examples Safari Books Online How to Contact Us Acknowledgments
Leif Madsen Jim Van Meggelen Russell Bryant
1. A Telephony Revolution
Asterisk and VoIP: Bridging the Gap Between Traditional and Network Telephony
The Zapata Telephony Project
Massive Change Requires Flexible Technology Asterisk: The Hacker’s PBX Asterisk: The Professional’s PBX The Asterisk Community
The Asterisk Mailing Lists Asterisk Wiki Sites The IRC Channels Asterisk User Groups The Asterisk Documentation Project
The Business Case Conclusion
2. Asterisk Architecture
Modules
Applications Bridging Modules Call Detail Recording Modules Channel Event Logging Modules Channel Drivers Codec Translators Format Interpreters Dialplan Functions PBX Modules Resource Modules Addon Modules Test Modules
File Structure
Configuration Files Modules The Resource Library The Spool Logging
The Dialplan Hardware Asterisk Versioning
Previous Release Methodologies The New Release Methodology
Conclusion
3. Installing Asterisk
Installation Cheat Sheet Distribution Installation
CentOS Server
Base system installation Base system update Enabling NTP for accurate system time Adding a system user
Ubuntu Server
Base system installation Base system update Enable NTP for accurate system time
Software Dependencies Downloading What You Need
Getting the Source via Subversion Getting the Source via wget
How to Install It
LibPRI DAHDI Asterisk Setting File Permissions
Base Configuration
Disable SELinux Initial Configuration
indications.conf and asterisk.conf modules.conf musiconhold.conf
make menuselect
Uses for menuselect menuselect interfaces Using menuselect Scripting menuselect
Updating Asterisk Common Issues
-bash: wget: command not found configure: error: no acceptable C compiler found in $PATH make: gcc: command not found configure: error: C++ preprocessor “/lib/cpp” fails sanity check configure: error: *** Please install GNU make. It is required to build Asterisk! configure: *** XML documentation will not be available because the ‘libxml2’ development package is missing. configure: error: *** termcap support not found You do not appear to have the sources for the 2.6.18-164.6.1.el5 kernel installed. E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Upgrading Asterisk Conclusion
4. Initial Configuration Tasks
asterisk.conf
The [directories] Section The [options] Section The [files] Section The [compat] Section
modules.conf
The [modules] Section
indications.conf musiconhold.conf
Converting Music to a Format That Works Best with Asterisk
CentOS Ubuntu Completing file conversion
Conclusion
5. User Device Configuration
Telephone Naming Concepts Hardphones, Softphones, and ATAs Configuring Asterisk
How Channel Configuration Files Work with the Dialplan sip.conf iax.conf Modifying Your Channel Configuration Files for Your Environment
Loading Your New Channel Configurations
The Asterisk CLI
Testing to Ensure Your Devices Have Registered Analog Phones A Basic Dialplan to Test Your Devices Under the Hood: Your First Call Conclusion
6. Dialplan Basics
Dialplan Syntax
Contexts Extensions Priorities
Unnumbered priorities The 'same =>' operator Priority labels
Applications The Answer(), Playback(), and Hangup() Applications
A Simple Dialplan
Hello World
Building an Interactive Dialplan
The Goto(), Background(), and WaitExten() Applications Handling Invalid Entries and Timeouts Using the Dial() Application
Argument 1: Destination Argument 2: Timeout Argument 3: Option Argument 4: URI Updating the dialplan Blank arguments
Using Variables
Global variables Channel variables Environment variables Adding variables to our dialplan
Pattern Matching
Pattern-matching syntax Pattern-matching examples Using the ${EXTEN} channel variable
Includes
Conclusion
7. Outside Connectivity
The Basics of Trunking Fundamental Dialplan for Outside Connectivity PSTN Circuits
Traditional PSTN Trunks
Analog telephony Digital telephony
Installing PSTN Trunks
Downloading and installing DAHDI Configuring digital circuits
PRI ISDN BRI ISDN MFC/R2
Configuring analog circuits
The s extension
VoIP
PSTN Termination PSTN Origination VoIP to VoIP Configuring VoIP Trunks
Configuring SIP trunks between Asterisk systems
Connecting two Asterisk systems together with SIP Connecting an Asterisk system to a SIP provider Encrypting SIP calls
Configuring IAX trunks between Asterisk systems
IAX trunking IAX encryption
Emergency Dialing Conclusion
8. Voicemail
Comedian Mail
The [general] Section The [zonemessages] Section The Contexts Section An Initial voicemail.conf File
Dialplan Integration
The VoiceMail() Dialplan Application The VoiceMailMain() Dialplan Application Creating a Dial-by-Name Directory Using a Jitterbuffer
Storage Backends
Linux Filesystem ODBC IMAP
Using Asterisk As a Standalone Voicemail Server
Integrating Asterisk into a SIP Environment As a Standalone Voicemail Server
Dialplan requirements sip.conf requirements
SMDI (Simplified Message Desk Interface)
Conclusion
9. Internationalization
Devices External to the Asterisk Server PSTN Connectivity, DAHDI, Digium Cards, and Analog Phones
DAHDI Drivers
Asterisk
Caller ID Language and/or Accent of Prompts Time/Date Stamps and Pronunciation
Conclusion—Easy Reference Cheat Sheet
10. Deeper into the Dialplan
Expressions and Variable Manipulation
Basic Expressions Operators
Dialplan Functions
Syntax Examples of Dialplan Functions
Conditional Branching
The GotoIf() Application Time-Based Conditional Branching with GotoIfTime()
Macros
Defining Macros Calling Macros from the Dialplan Using Arguments in Macros
GoSub()
Defining Subroutines Calling Subroutines from the Dialplan Using Arguments in Subroutines Returning from a Subroutine
Local Channels Using the Asterisk Database (AstDB)
Storing Data in the AstDB Retrieving Data from the AstDB Deleting Data from the AstDB Using the AstDB in the Dialplan
Handy Asterisk Features
Zapateller() Call Parking Conferencing with MeetMe()
Conclusion
11. Parking and Paging
features.conf
The [general] section The [featuremap] Section The [applicationmap] Section Application Map Grouping Parking Lots
Overhead and “Underchin” Paging (a.k.a. Public Address)
Places to Send Your Pages
External paging Set paging Multicast paging via the MulticastRTP channel VoIP paging adaptors Combination paging Bringing it all together
Zone Paging
Conclusion
12. Internet Call Routing
DNS and SIP URIs
The SIP URI SRV Records Accepting Calls to Your System
Modifying sip.conf Standard dialplan File parsing Database lookup
Dialing SIP URIs from Asterisk
ENUM and E.164
E.164 and the ITU ENUM Asterisk and ENUM
ISN, ITAD, and freenum.org
Got ISN? ITAD Subscriber Numbers (ISNs) Management of Internet Numbering IP Telephony Administrative Domains (ITADs) Create a DNS Entry for Your ITAD Testing Your ITAD Using ISNs in Your Asterisk System
Receiving calls to your ITAD
Security and Identity
Toll Fraud Spam over Internet Telephony (SPIT) Distributed Denial of Service Attacks Phishing Security Is an Ongoing Process
Conclusion
13. Automatic Call Distribution (ACD) Queues
Creating a Simple ACD Queue Queue Members
Controlling Queue Members via the CLI Controlling Queue Members with Dialplan Logic Automatically Logging Into and Out of Multiple Queues An Introduction to Device State
The queues.conf File The agents.conf File Advanced Queues
Priority Queue (Queue Weighting) Queue Member Priority Changing Penalties Dynamically (queuerules.conf) Announcement Control Overflow
Controlling timeouts Controlling when to join and leave a queue
Using Local Channels
Queue Statistics: The queue_log File Conclusion
14. Device States
Device States
Checking Device States
Extension States
Hints Checking Extension States
SIP Presence
Asterisk Configuration
Using Custom Device States
An Example
Distributed Device States
Using OpenAIS
Installation OpenAIS configuration Asterisk configuration Testing device state changes
Using XMPP
Installation Creating XMPP accounts Asterisk configuration Testing
Shared Line Appearances
Installing the SLA Applications Configuration Overview Key System Example with Analog Trunks
sla.conf extensions.conf Additional phone configuration tasks
Key System Example with SIP Trunks
sla.conf extensions.conf
Shared Extension Example
sla.conf extensions.conf
Additional Configuration Limitations
Conclusion
15. The Automated Attendant
An Auto Attendant Is Not an IVR Designing Your Auto Attendant
The Greeting The Main Menu
Selection 1 Selection 2 Selection # Selection 3 Selection 9 Selection 0
Timeout Invalid Dial by Extension
Building Your Auto Attendant
Recording Prompts
Using the dialplan to create recordings
The Dialplan Delivering Incoming Calls to the Auto Attendant IVR
Conclusion
16. Relational Database Integration
Installing and Configuring PostgreSQL and MySQL
Installing PostgreSQL for CentOS Installing PostgreSQL for Ubuntu Installing MySQL for CentOS Installing MySQL for Ubuntu Configuring PostgreSQL Configuring MySQL
Installing and Configuring ODBC
Configuring ODBC for PostgreSQL Configuring ODBC for MySQL Configuring ODBC for Microsoft SQL Validating the ODBC Connector Configuring res_odbc to Allow Asterisk to Connect Through ODBC
Managing Databases
Troubleshooting Database Issues
A Gentle Introduction to func_odbc Getting Funky with func_odbc: Hot-Desking Using Realtime
Static Realtime Dynamic Realtime
Storing Call Detail Records (CDRs) ODBC Voicemail
Creating the Large Object Type for PostgreSQL ODBC Voicemail Storage Table Layout Configuring voicemail.conf for ODBC Storage Testing ODBC Voicemail
Verifying binary data stored in PostgreSQL Verifying binary data stored in MySQL
Conclusion
17. Interactive Voice Response
What Is IVR? Components of an IVR IVR Design Considerations
Do Don’t
Asterisk Modules for Building IVRs
CURL func_odbc AGI AMI
A Simple IVR Using CURL
Installing the cURL Module The Dialplan
A Prompt-Recording Application Speech Recognition and Text-to-Speech
Text-to-Speech Speech Recognition
Conclusion
18. External Services
Calendar Integration
Compiling Calendaring Support into Asterisk
CentOS dependencies Ubuntu dependencies
Configuring Calendar Support for Asterisk Triggering Calendar Reminders to Your Phone
Triggering a wakeup call Scheduling calls between two participants Calling meeting participants and placing them into a conference
Controlling Calls Based on Calendar Information Writing Call Information to a Calendar Conclusion
VoiceMail IMAP Integration
Compiling IMAP VoiceMail Support into Asterisk
CentOS dependencies Ubuntu dependencies Compiling the IMAP library Compiling Asterisk Configuring Asterisk
Enabling IMAP on your Gmail account Configuring voicemail.conf for IMAP
Using XMPP (Jabber) with Asterisk
Compiling Jabber Support into Asterisk
CentOS dependencies Ubuntu dependencies
Jabber Dialplan Commands
Connecting to an XMPP server Sending messages with JabberSend() Receiving messages with JABBER_RECEIVE()
chan_gtalk
Configuring gtalk.conf Accepting calls from Google Talk Accepting calls from Google Voice Outgoing calls via Google Talk Outgoing calls via Google Voice
Skype Integration
Installation of Skype for Asterisk Using Skype for Asterisk
Configuring chan_skype.conf Placing and receiving calls via Skype Sending and receiving messages via Skype Calling your Skype buddies without assigning extension numbers
LDAP Integration
Configuring OpenLDAP Compiling LDAP Support into Asterisk
Ubuntu dependencies CentOS dependencies
Configuring Asterisk for LDAP Support
Configuring res_ldap.conf Configuring extconfig.conf Configuring sip.conf for realtime
Text-to-Speech Utilities
Festival
Installing Festival on CentOS Installing Festival on Ubuntu Using Festival with Asterisk
Cepstral
Conclusion
19. Fax
What Is a Fax? Ways to Handle Faxes in Asterisk spandsp
Obtaining spandsp Compiling and Installing spandsp Adding the spandsp Library to Your libpath Recompiling Asterisk with spandsp Support Disabling spandsp (Should You Want to Test Digium Fax)
Digium Fax For Asterisk
Obtaining Digium FFA Disabling Digium FFA (Should You Want to Test spandsp)
Incoming Fax Handling
Fax to TIFF Fax to Email Fax Detection
Outgoing Fax Handling
Transmitting a Fax from Asterisk File Format for Faxing An Experiment in Email to Fax
Fax Pass-Through
Using Fax Buffers in chan_dahdi.conf
Conclusion
20. Asterisk Manager Interface (AMI)
Quick Start
AMI over TCP AMI over HTTP
Configuration
manager.conf http.conf
Protocol Overview
Message Encoding
Events Actions
AMI over HTTP
Authentication and session handling /rawman encoding /manager encoding /mxml encoding Manager events
Development Frameworks
CSTA
Interesting Applications
AsteriskGUI Flash Operator Panel
Conclusion
21. Asterisk Gateway Interface (AGI)
Quick Start AGI Variants
Process-Based AGI
EAGI
DeadAGI Is Dead FastAGI—AGI over TCP Async AGI—AMI-Controlled AGI
AGI Communication Overview
Setting Up an AGI Session
Process-based AGI/FastAGI Async AGI
Commands and Responses
Process-based AGI/FastAGI Async AGI
Ending an AGI Session
Process-based AGI/FastAGI Async AGI
Development Frameworks Conclusion
22. Clustering
Traditional Call Centers Hybrid Systems Pure Asterisk, Nondistributed Asterisk and Database Integration
Single Database Replicated Databases
Asterisk and Distributed Device States
Distributing Device States over a LAN Distributing Device States over a WAN
Multiple Queues, Multiple Sites Conclusion
23. Distributed Universal Number Discovery (DUNDi)
How Does DUNDi Work? The dundi.conf File Configuring Asterisk for Use with DUNDi
General Configuration Initial DUNDi Peer Definition Creating Mapping Contexts Using Mapping Contexts with Peers Allowing Remote Connections Controlling Responses
Manually adding responses Using pattern matches Dynamically adding extension numbers Using dialplan functions in mappings
Performing Lookups from the Dialplan
Conclusion
24. System Monitoring and Logging
logger.conf
Reviewing Asterisk Logs Logging to the Linux syslog Daemon Verifying Logging
Call Detail Records
CDR Contents Dialplan Applications cdr.conf Backends
cdr_adaptive_odbc cdr_csv cdr_custom cdr_manager cdr_mysql cdr_odbc cdr_pgsql cdr_radius cdr_sqlite cdr_sqlite3_custom cdr_syslog cdr_tds
Example Call Detail Records
Single-party call Two-party call
Caveats
CEL (Channel Event Logging)
Channel Event Types Channel Event Contents Dialplan Applications cel.conf Backends
cel_odbc cel_custom cel_manager cel_pgsql cel_radius cel_sqlite3_custom cel_tds
Example Channel Events
Single-party call Two-party call Blind transfer
SNMP
Installing the SNMP Module for Asterisk
CentOS dependency Ubuntu dependency Recompiling Asterisk with the res_snmp module
Configuring SNMP for Asterisk Using OpenNMS
Installing OpenNMS Editing /etc/asterisk/res_snmp.conf to work with your OpenNMS server Editing /etc/snmp/snmpd.conf to work with your OpenNMS server Enabling SNMPv3
Monitoring Asterisk with OpenNMS
Conclusion
25. Web Interfaces
Flash Operator Panel Queue Status and Reporting
Queue Status Display Queue Reporting
Call Detail Records A2Billing Conclusion
26. Security
Scanning for Valid Accounts Authentication Weaknesses Fail2ban
Installation
iptables Sending email
Configuration
Encrypted Media Dialplan Vulnerabilities Securing Asterisk Network APIs IAX2 Denial of Service Other Risk Mitigation Resources Conclusion—A Better Idiot
27. Asterisk: A Future for Telephony
The Problems with Traditional Telephony
Closed Thinking Limited Standards Compliancy Slow Release Cycles Refusing to Let Go of the Past and Embrace the Future
Paradigm Shift The Promise of Open Source Telephony
The Itch That Asterisk Scratches Open Architecture Standards Compliance Lightning-Fast Response to New Technologies Passionate Community Some Things That Are Now Possible
Legacy PBX migration gateway Low-barrier IVR Conference rooms Home automation
The Future of Asterisk
Speech Processing
Festival Speech recognition
High-Fidelity Voice Video
The challenge of videoconferencing Why we love videoconferencing Why videoconferencing may never totally replace voice
Wireless
WiFi WiMAX
Unified Messaging Peering
E.164 ENUM e164.org
Challenges
Too much change, too few standards Toll fraud VoIP spam Fear, uncertainty, and doubt Bottleneck engineering Regulatory wars Quality of service Complexity
Opportunities
Tailor-made private telecommunications networks Low barrier to entry Hosted solutions of similar complexity to corporate websites Proper integration of communications technologies
A. Understanding Telephony
Analog Telephony
Parts of an Analog Telephone
Ringer Dialpad Hybrid (or network)
Hook switch (or switch hook) Handset
Tip and Ring
Digital Telephony
Pulse-Code Modulation
Digitally encoding an analog waveform Increasing the sampling resolution and rate Nyquist’s Theorem Logarithmic companding Aliasing
The Digital Circuit-Switched Telephone Network
Circuit Types
The humble DS-0―The foundation of it all T-carrier circuits SONET and OC circuits
Digital Signaling Protocols
Channel Associated Signaling (CAS) ISDN
ISDN-BRI/BRA ISDN-PRI/PRA
Signaling System 7
Packet-Switched Networks Conclusion
B. Protocols for VoIP
The Need for VoIP Protocols VoIP Protocols
IAX (The “Inter-Asterisk eXchange” Protocol)
History Future Security considerations IAX and NAT
SIP
History Future Security considerations SIP and NAT
H.323
History Future Security considerations H.323 and NAT
MGCP Proprietary Protocols
Skinny/SCCP UNISTIM
Codecs
G.711 G.726 G.729A GSM iLBC Speex G.722 MP3
Quality of Service
TCP, UDP, and SCTP
Transmission Control Protocol User Datagram Protocol Stream Control Transmission Protocol
Differentiated Service Guaranteed Service
MPLS RSVP
Best Effort
Echo
Why Echo Occurs Managing Echo on DAHDI Channels Hardware Echo Cancellation
Asterisk and VoIP
Users and Peers and Friends—Oh My!
Users Peers Friends
register Statements
VoIP Security
Spam over Internet Telephony (SPIT) Encrypting Audio with Secure RTP Spoofing What Can Be Done?
Basic network security
Segregating voice and data traffic DMZ Server hardening
Encryption Physical security
Conclusion
C. Preparing a System for Asterisk
Server Hardware Selection
Performance Issues Choosing a Processor
Small systems Medium systems Large systems
Choosing a Motherboard Power Supply Requirements
Computer power supplies Redundant power supplies
Environment
Power Conditioning and Uninterruptible Power Supplies
Power-conditioned UPSs
Grounding Electrical Circuits The Equipment Room
Humidity Temperature Dust Security
Telephony Hardware
Connecting to the PSTN
Analog interface cards Digital interface cards Channel banks Other types of PSTN interfaces
Connecting Exclusively to a Packet-Based Telephone Network Echo Cancellation
Types of Phones
Physical Telephones
Analog telephones Proprietary digital telephones ISDN telephones IP telephones
Softphones Telephony Adaptors Communications Terminals
Linux Considerations Conclusion
Index About the Authors Colophon SPECIAL OFFER: Upgrade this ebook with O’Reilly
  • ← Prev
  • Back
  • Next →
  • ← Prev
  • Back
  • Next →

Chief Librarian: Las Zenow <zenow@riseup.net>
Fork the source code from gitlab
.

This is a mirror of the Tor onion service:
http://kx5thpx2olielkihfyo4jgjqfb7zx7wxr3sd4xzt26ochei4m6f7tayd.onion