| | Copyright |
| | Foreword |
| | Preface |
| | | Audience |
| | | Organization |
| | | Software |
| | | Conventions Used in This Book |
| | | Using Code Examples |
| | | Safari Enabled |
| | | How to Contact Us |
| | | Acknowledgments |
| | Chapter 1. A Telephony Revolution |
| | | Section 1.1. VoIP: Bridging the Gap Between Traditional Telephony and Network Telephony |
| | | Section 1.2. Massive Change Requires Flexible Technology |
| | | Section 1.3. Asterisk: The Hacker's PBX |
| | | Section 1.4. Asterisk: The Professional's PBX |
| | | Section 1.5. The Asterisk Community |
| | | Section 1.6. The Business Case |
| | | Section 1.7. This Book |
| | Chapter 2. Preparing a System for Asterisk |
| | | Section 2.1. Server Hardware Selection |
| | | Section 2.2. Environment |
| | | Section 2.3. Telephony Hardware |
| | | Section 2.4. Types of Phone |
| | | Section 2.5. Linux Considerations |
| | | Section 2.6. Conclusion |
| | Chapter 3. Installing Asterisk |
| | | Section 3.1. What Packages Do I Need? |
| | | Section 3.2. Obtaining the Source Code |
| | | Section 3.3. Compiling Zaptel |
| | | Section 3.4. Compiling libpri |
| | | Section 3.5. Compiling Asterisk |
| | | Section 3.6. Installing Additional Prompts |
| | | Section 3.7. Updating Your Source Code |
| | | Section 3.8. Common Compiling Issues |
| | | Section 3.9. Loading Zaptel Modules |
| | | Section 3.10. Loading libpri |
| | | Section 3.11. Loading Asterisk |
| | | Section 3.12. Directories Used by Asterisk |
| | | Section 3.13. Conclusion |
| | Chapter 4. Initial Configuration of Asterisk |
| | | Section 4.1. What Do I Really Need? |
| | | Section 4.2. Working with Interface Configuration Files |
| | | Section 4.3. FXO and FXS Channels |
| | | Section 4.4. Configuring an FXO Channel |
| | | Section 4.5. Configuring an FXS Channel |
| | | Section 4.6. Configuring SIP |
| | | Section 4.7. Configuring Inbound IAX Connections |
| | | Section 4.8. Configuring Outbound IAX Connections |
| | | Section 4.9. Debugging |
| | | Section 4.10. Conclusion |
| | Chapter 5. Dialplan Basics |
| | | Section 5.1. Dialplan Syntax |
| | | Section 5.2. A Simple Dialplan |
| | | Section 5.3. Adding Logic to the Dialplan |
| | | Section 5.4. Conclusion |
| | Chapter 6. More Dialplan Concepts |
| | | Section 6.1. Expressions and Variable Manipulation |
| | | Section 6.2. Dialplan Functions |
| | | Section 6.3. Conditional Branching |
| | | Section 6.4. Voicemail |
| | | Section 6.5. Macros |
| | | Section 6.6. Using the Asterisk Database (AstDB) |
| | | Section 6.7. Handy Asterisk Features |
| | | Section 6.8. Conclusion |
| | Chapter 7. Understanding Telephony |
| | | Section 7.1. Analog Telephony |
| | | Section 7.2. Digital Telephony |
| | | Section 7.3. The Digital Circuit-Switched Telephone Network |
| | | Section 7.4. Packet-Switched Networks |
| | | Section 7.5. Conclusion |
| | Chapter 8. Protocols for VoIP |
| | | Section 8.1. The Need for VoIP Protocols |
| | | Section 8.2. VoIP Protocols |
| | | Section 8.3. Codecs |
| | | Section 8.4. Quality of Service |
| | | Section 8.5. Echo |
| | | Section 8.6. Asterisk and VoIP |
| | | Section 8.7. Conclusion |
| | Chapter 9. The Asterisk Gateway Interface (AGI) |
| | | Section 9.1. Fundamentals of AGI Communication |
| | | Section 9.2. Writing AGI Scripts in Perl |
| | | Section 9.3. Creating AGI Scripts in PHP |
| | | Section 9.4. Writing AGI Scripts in Python |
| | | Section 9.5. Debugging in AGI |
| | | Section 9.6. Conclusion |
| | Chapter 10. Asterisk for the ber-Geek |
| | | Section 10.1. Festival |
| | | Section 10.2. Call Detail Recording |
| | | Section 10.3. Customizing System Prompts |
| | | Section 10.4. Manager |
| | | Section 10.5. Call Files |
| | | Section 10.6. DUNDi |
| | | Section 10.7. Conclusion |
| | Chapter 11. Asterisk: The Future of Telephony |
| | | Section 11.1. The Problems with Traditional Telephony |
| | | Section 11.2. Paradigm Shift |
| | | Section 11.3. The Promise of Open Source Telephony |
| | | Section 11.4. The Future of Asterisk |
| | Appendix A. VoIP Channels |
| | | Section A.1. IAX |
| | | Section A.2. SIP |
| | Appendix B. Application Reference |
| | | AbsoluteTimeout( ) |
| | | AddQueueMember( ) |
| | | ADSIProg( ) |
| | | AgentCallbackLogin( ) |
| | | AgentLogin( ) |
| | | AgentMonitorOutgoing( ) |
| | | AGI( ) |
| | | AlarmReceiver( ) |
| | | Answer( ) |
| | | AppendCDRUserField( ) |
| | | Authenticate( ) |
| | | Background( ) |
| | | BackgroundDetect( ) |
| | | Busy( ) |
| | | CallingPres( ) |
| | | ChangeMonitor( ) |
| | | ChanIsAvail( ) |
| | | CheckGroup( ) |
| | | Congestion( ) |
| | | ControlPlayback( ) |
| | | Curl( ) |
| | | Cut( ) |
| | | DateTime( ) |
| | | DBdel( ) |
| | | DBdeltree( ) |
| | | DBget( ) |
| | | DBput( ) |
| | | DeadAGI( ) |
| | | Dial( ) |
| | | DigitTimeout( ) |
| | | Directory( ) |
| | | DISA( ) |
| | | DumpChan( ) |
| | | DUNDiLookup( ) |
| | | EAGI( ) |
| | | Echo( ) |
| | | EndWhile( ) |
| | | ENUMLookup( ) |
| | | Eval( ) |
| | | Exec( ) |
| | | ExecIf( ) |
| | | FastAGI( ) |
| | | Festival( ) |
| | | Flash( ) |
| | | ForkCDR( ) |
| | | GetCPEID( ) |
| | | GetGroupCount( ) |
| | | GetGroupMatchCount( ) |
| | | Goto( ) |
| | | GotoIf( ) |
| | | GotoIfTime( ) |
| | | Hangup( ) |
| | | HasNewVoicemail( ) |
| | | HasVoicemail( ) |
| | | IAX2Provision( ) |
| | | ImportVar( ) |
| | | LookupBlacklist( ) |
| | | LookupCIDName( ) |
| | | Macro( ) |
| | | MailboxExists( ) |
| | | Math( ) |
| | | MeetMe ( ) |
| | | MeetMeAdmin( ) |
| | | MeetMeCount( ) |
| | | Milliwatt( ) |
| | | Monitor( ) |
| | | MP3Player( ) |
| | | MusicOnHold( ) |
| | | NBScat( ) |
| | | NoCDR( ) |
| | | NoOp( ) |
| | | Park( ) |
| | | ParkAndAnnounce( ) |
| | | ParkedCall( ) |
| | | PauseQueueMember( ) |
| | | Playback( ) |
| | | Playtones( ) |
| | | Prefix( ) |
| | | PrivacyManager( ) |
| | | Progress( ) |
| | | Queue( ) |
| | | Random( ) |
| | | Read( ) |
| | | RealTime |
| | | RealTimeUpdate( ) |
| | | Record( ) |
| | | RemoveQueueMember( ) |
| | | ResetCDR( ) |
| | | ResponseTimeout( ) |
| | | RetryDial( ) |
| | | Ringing( ) |
| | | SayAlpha( ) |
| | | SayDigits( ) |
| | | SayNumber( ) |
| | | SayPhonetic( ) |
| | | SayUnixTime( ) |
| | | SendDTMF( ) |
| | | SendImage( ) |
| | | SendText( ) |
| | | SendURL( ) |
| | | Set( ) |
| | | SetAccount( ) |
| | | SetAMAFlags( ) |
| | | SetCallerID( ) |
| | | SetCallerPres( ) |
| | | SetCDRUserField( ) |
| | | SetCIDName( ) |
| | | SetCIDNum( ) |
| | | SetGlobalVar( ) |
| | | SetGroup( ) |
| | | SetLanguage( ) |
| | | SetMusicOnHold( ) |
| | | SetRDNIS( ) |
| | | SetVar( ) |
| | | SIPAddHeader( ) |
| | | SIPDtmfMode( ) |
| | | SIPGetHeader( ) |
| | | SoftHangup( ) |
| | | StopMonitor( ) |
| | | StopPlaytones( ) |
| | | StripLSD( ) |
| | | StripMSD( ) |
| | | SubString( ) |
| | | Suffix( ) |
| | | System( ) |
| | | Transfer( ) |
| | | TrySystem( ) |
| | | TXTCIDName( ) |
| | | UnpauseQueueMember( ) |
| | | UserEvent( ) |
| | | Verbose( ) |
| | | VMAuthenticate( ) |
| | | VoiceMail( ) |
| | | VoiceMailMain( ) |
| | | Wait( ) |
| | | WaitExten( ) |
| | | WaitForRing( ) |
| | | WaitForSilence( ) |
| | | WaitMusicOnHold( ) |
| | | While( ) |
| | | Zapateller( ) |
| | | ZapBarge( ) |
| | | ZapRAS( ) |
| | | ZapScan( ) |
| | Appendix C. AGI Reference |
| | | ANSWER |
| | | CHANNEL STATUS |
| | | DATABASE DEL |
| | | DATABASE DELTREE |
| | | DATABASE GET |
| | | DATABASE PUT |
| | | EXEC |
| | | GET DATA |
| | | GET FULL VARIABLE |
| | | GET OPTION |
| | | GET VARIABLE |
| | | HANGUP |
| | | NOOP |
| | | RECEIVE CHAR |
| | | RECORD FILE |
| | | SAY ALPHA |
| | | SAY DATE |
| | | SAY DATETIME |
| | | SAY DIGITS |
| | | SAY NUMBER |
| | | SAY PHONETIC |
| | | SAY TIME |
| | | SEND IMAGE |
| | | SEND TEXT |
| | | SET AUTOHANGUP |
| | | SET CALLERID |
| | | SET CONTEXT |
| | | SET EXTENSION |
| | | SET MUSIC ON |
| | | SET PRIORITY |
| | | SET VARIABLE |
| | | STREAM FILE |
| | | TDD MODE |
| | | VERBOSE |
| | | WAIT FOR DIGIT |
| | Appendix D. Configuration Files |
| | | Section D.1. modules.conf |
| | | Section D.2. adsi.conf |
| | | Section D.3. adtranvofr.conf |
| | | Section D.4. agents .conf |
| | | Section D.5. alarmreceiver.conf |
| | | Section D.6. alsa.conf |
| | | Section D.7. asterisk.conf |
| | | Section D.8. cdr.conf |
| | | Section D.9. cdr_manager.conf |
| | | Section D.10. cdr_odbc.conf |
| | | Section D.11. cdr_pgsql.conf |
| | | Section D.12. cdr_tds.conf |
| | | Section D.13. codecs.conf |
| | | Section D.14. dnsmgr.conf |
| | | Section D.15. dundi.conf |
| | | Section D.16. enum.conf |
| | | Section D.17. extconfig .conf |
| | | Section D.18. extensions.conf |
| | | Section D.19. features.conf |
| | | Section D.20. festival.conf |
| | | Section D.21. iax.conf |
| | | Section D.22. iaxprov.conf |
| | | Section D.23. indications .conf |
| | | Section D.24. logger.conf |
| | | Section D.25. manager.conf |
| | | Section D.26. meetme.conf |
| | | Section D.27. mgcp.conf |
| | | Section D.28. modem.conf |
| | | Section D.29. musiconhold.conf |
| | | Section D.30. osp.conf |
| | | Section D.31. oss.conf |
| | | Section D.32. phone.conf |
| | | Section D.33. privacy.conf |
| | | Section D.34. queues.conf |
| | | Section D.35. res_odbc.conf |
| | | Section D.36. rpt.conf |
| | | Section D.37. rtp.conf |
| | | Section D.38. sip.conf |
| | | Section D.39. sip_notify.conf |
| | | Section D.40. skinny.conf |
| | | Section D.41. voicemail.conf |
| | | Section D.42. vpb.conf |
| | | Section D.43. zapata.conf |
| | | Section D.44. zaptel.conf |
| | Appendix E. Asterisk Command-Line Interface Reference |
| | | ! |
| | | abort halt |
| | | Section E.1. add |
| | | Section E.2. agi |
| | | Section E.3. database |
| | | Section E.4. iax2 |
| | | Section E.5. indication |
| | | Section E.6. logger |
| | | Section E.7. meetme |
| | | Section E.8. pri |
| | | Section E.9. remove |
| | | Section E.10. restart |
| | | Section E.11. set |
| | | Section E.12. show |
| | | Section E.13. sip |
| | | Section E.14. stop |
| | | Section E.15. zap |
| | Colophon |
| | | About the Authors |
| | | Colophon |
| | Index |