You are previewing Asterisk: The Future of Telephony, 2nd Edition.
O'Reilly logo
Asterisk: The Future of Telephony, 2nd Edition

Book Description

This bestselling book is now the standard guide to building phone systems with Asterisk, the open source IP PBX that has traditional telephony providers running scared! Revised for the 1.4 release of the software, the new edition of Asterisk: The Future of Telephony reveals how you can save money on equipment and support, and finally be in control of your telephone system. If you've worked with telephony in the past, you're familiar with the problem: expensive and inflexible systems that are tuned to the vendor's needs, not yours. Asterisk isn't just a candle in the darkness, it's a whole fireworks show. Because Asterisk is so powerful, configuring it can seem tricky and difficult. This book steps you through the process of installing, configuring, and integrating Asterisk with your existing phone system. You'll learn how to write dialplans, set up applications including speech synthesis and voice recognition, how to script Asterisk, and much more -- everything you need to design a simple but complete system with little or no Asterisk experience, and no more than rudimentary telecommunications knowledge. The book includes:

  • A new chapter on managing/administering your Asterisk system

  • A new chapter on using Asterisk with databases

  • Coverage of features in Asterisk 1.4

  • A new appendix on dialplan functions

  • A simplified installation chapter

  • New simplified SIP configuration, including examples for several popular SIP clients (soft phones and IP telephones)

  • Revised chapters and appendicies reviewed and updated for the latest in features, applications, trends and best-practices

  • Asterisk is revolutionizing the telecom industry, due in large part to the way it gets along with other network applications. While other PBXs are fighting their inevitable absorption into the network, Asterisk embraces it. If you need to take control of your telephony systems, move to Asterisk and see what the future of telecommunications looks like.

    Table of Contents

    1. Asterisk™: The Future of Telephony
    2. Dedication
    3. Foreword
    4. Preface
      1. Audience
      2. Organization
      3. Software
      4. Conventions Used in This Book
      5. Using Code Examples
      6. Safari® Books Online
      7. How to Contact Us
      8. Acknowledgments
        1. Jim Van Meggelen
        2. Leif Madsen
        3. Jared Smith
    5. 1. A Telephony Revolution
      1. VoIP: Bridging the Gap Between Traditional and Network Telephony
        1. The Zapata Telephony Project
      2. Massive Change Requires Flexible Technology
      3. Asterisk: The Hacker’s PBX
      4. Asterisk: The Professional’s PBX
      5. The Asterisk Community
        1. The Asterisk Mailing Lists
        2. The Asterisk Wiki
        3. The IRC Channels
        4. Asterisk User Groups
        5. The Asterisk Documentation Project
      6. The Business Case
      7. This Book
    6. 2. Preparing a System for Asterisk
      1. Server Hardware Selection
        1. Performance Issues
        2. Choosing a Processor
          1. Small systems
          2. Medium systems
          3. Large systems
        3. Choosing a Motherboard
        4. Power Supply Requirements
          1. Computer power supplies
          2. Redundant power supplies
      2. Environment
        1. Power Conditioning and Uninterruptible Power Supplies
          1. Power-conditioned UPSes
        2. Grounding
        3. Electrical Circuits
        4. The Equipment Room
          1. Humidity
          2. Temperature
          3. Dust
          4. Security
      3. Telephony Hardware
        1. Connecting to the PSTN
          1. Analog interface cards
          2. Digital interface cards
          3. Channel banks
          4. Other types of PSTN interfaces
        2. Connecting Exclusively to a Packet-Based Telephone Network
        3. Echo Cancellation
      4. Types of Phones
        1. Physical Telephones
          1. Analog telephones
          2. Proprietary digital telephones
          3. ISDN telephones
          4. IP telephones
        2. Softphones
        3. Telephony Adaptors
        4. Communications Terminals
      5. Linux Considerations
      6. Conclusion
    7. 3. Installing Asterisk
      1. What Packages Do I Need?
        1. Linux Package Requirements
      2. Obtaining the Source Code
        1. Obtaining Asterisk Source Code
        2. Extracting the Source Code
      3. Menuselect
      4. Compiling Zaptel
        1. The ztdummy Driver
        2. The Zapata Telephony Drivers
        3. Using ztcfg and zttool
      5. Compiling libpri
      6. Compiling Asterisk
        1. Standard Installation
        2. Alternative make Arguments
          1. make clean
          2. make distclean
          3. make update
          4. make webvmail
          5. make progdocs
          6. make config
        3. Using Precompiled Binaries
      7. Installing Additional Prompts
      8. Common Compiling Issues
        1. Asterisk
          1. configure: error: no acceptable C compiler found in $PATH
          2. configure: error: C++ preprocessor "/lib/cpp" fails sanity check
          3. configure: error: *** termcap support not found
        2. Zaptel
          1. make: cc: Command not found
          2. FATAL: Module wctdm/fxs/fxo not found
          3. Unresolved symbol link when loading ztdummy
          4. Depmod errors during compilation
      9. Loading Asterisk and Zaptel Quickly
      10. Loading Zaptel Modules Without Scripts
        1. Systems Running udevd
        2. Loading Zaptel
        3. Loading ztdummy
      11. Loading libpri Without Script
      12. Starting Asterisk Without Scripts
        1. Console Commands
      13. Directories Used by Asterisk
        1. /etc/asterisk/
        2. /usr/lib/asterisk/modules/
        3. /var/lib/asterisk
        4. /var/spool/asterisk/
        5. /var/run/
        6. /var/log/asterisk/
        7. /var/log/asterisk/cdr-csv
      14. AsteriskNOW™
        1. What Is AsteriskNOW?
        2. Before You Begin
        3. What You Will Need
        4. Installation
          1. Quick installation
          2. Extended procedure
        5. Accessing the GUI
        6. Alternate Installations
        7. For More Information
      15. Conclusion
    8. 4. Initial Configuration of Asterisk
      1. What Do I Really Need?
      2. Working with Interface Configuration Files
      3. Setting Up the Dialplan for Some Test Calls
      4. FXO and FXS Channels
        1. Determining the FXO and FXS Ports on Your TDM400P
      5. Configuring an FXO Channel for a PSTN Connection
        1. Zaptel Hardware Configuration
        2. Zapata Hardware Configuration
        3. Dialplan Configuration
        4. Dialing In
      6. Configuring an FXS Channel for an Analog Telephone
        1. Zaptel Hardware Configuration
        2. Zapata Hardware Configuration
        3. Dialplan Configuration
      7. Configuring SIP Telephones
        1. Basic SIP Telephone Configuration in Asterisk
          1. Defining the SIP device in Asterisk
        2. Configuring the Device Itself
        3. Essential Server Components
          1. DHCP server
          2. FTP server
        4. CounterPath’s X-Lite Softphone
        5. Polycom’s IP 430
          1. DHCP server
          2. Protocol to use for downloading
          3. FTP
          4. The Polycom configuration files
            1. The bootROM
            2. The application image
            3. The sip.cfg file
            4. The master config file for each phone
            5. The set-specific config file
            6. Gotchas
        6. Cisco 7960 Telephone
        7. Linksys SPA-942
          1. Logging in to the phone
          2. Registering your phone to Asterisk
        8. Configuring the Dialplan for Testing
      8. Connecting to a SIP Service Provider
      9. Connecting Two Asterisk Boxes Together via SIP
        1. Configuring Our Asterisk Boxes
        2. SIP Phone Configuration
        3. Configuring the Dialplan
      10. Configuring an IAX Softphone
        1. Configuring the Channel Configuration File (iax.conf)
        2. Configure the Softphone
        3. Configuring the Dialplan for Testing
      11. Connecting to an IAX Service Provider
      12. Connecting Two Asterisk Boxes Together via IAX
        1. Configuring Our Asterisk Boxes
        2. IAX Phone Configuration
        3. Configuring the Dialplan
      13. Using Templates in Your Configuration Files
      14. Debugging
        1. Connecting to the Console
        2. Enabling Verbosity and Debugging
      15. Conclusion
    9. 5. Dialplan Basics
      1. Dialplan Syntax
        1. Contexts
        2. Extensions
        3. Priorities
          1. Unnumbered priorities
          2. Priority labels
        4. Applications
      2. A Simple Dialplan
        1. The s Extension
        2. The Answer(), Playback(), and Hangup() Applications
        3. Our First Dialplan
      3. Building an Interactive Dialplan
        1. The Background(), WaitExten(), and Goto() Applications
        2. Handling Invalid Entries and Timeouts
        3. Using the Dial() Application
        4. Adding a Context for Internal Calls
        5. Using Variables
          1. Global variables
          2. Channel variables
          3. Environment variables
          4. Adding variables to our dialplan
        6. Pattern Matching
          1. Pattern-matching syntax
          2. Pattern-matching examples
          3. Using the ${EXTEN} channel variable
        7. Enabling Outbound Dialing
        8. Includes
      4. Conclusion
    10. 6. More Dialplan Concepts
      1. Expressions and Variable Manipulation
        1. Basic Expressions
        2. Operators
      2. Dialplan Functions
        1. Syntax
        2. Examples of Dialplan Functions
      3. Conditional Branching
        1. The GotoIf() Application
        2. Time-Based Conditional Branching with GotoIfTime()
      4. Voicemail
        1. Creating Mailboxes
        2. Adding Voicemail to the Dialplan
        3. Accessing Voicemail
        4. Creating a Dial-by-Name Directory
      5. Macros
        1. Defining Macros
        2. Calling Macros from the Dialplan
        3. Using Arguments in Macros
      6. Using the Asterisk Database (AstDB)
        1. Storing Data in the AstDB
        2. Retrieving Data from the AstDB
        3. Deleting Data from the AstDB
        4. Using the AstDB in the Dialplan
      7. Handy Asterisk Features
        1. Zapateller()
        2. Call Parking
        3. Conferencing with MeetMe()
      8. Conclusion
    11. 7. Understanding Telephony
      1. Analog Telephony
        1. Parts of an Analog Telephone
          1. Ringer
          2. Dial pad
          3. Hybrid (or network)
            1. Hook switch (or switch hook)
            2. Handset
        2. Tip and Ring
      2. Digital Telephony
        1. Pulse-Code Modulation
          1. Digitally encoding an analog waveform
          2. Increasing the sampling resolution and rate
          3. Nyquist’s Theorem
          4. Logarithmic companding
          5. Aliasing
      3. The Digital Circuit-Switched Telephone Network
        1. Circuit Types
          1. The humble DS-0―the foundation of it all
          2. T-carrier circuits
          3. SONET and OC circuits
        2. Digital Signaling Protocols
          1. Channel Associated Signaling (CAS)
          2. ISDN
            1. ISDN-BRI/BRA
            2. ISDN-PRI/PRA
          3. Signaling System 7
      4. Packet-Switched Networks
      5. Conclusion
    12. 8. Protocols for VoIP
      1. The Need for VoIP Protocols
      2. VoIP Protocols
        1. IAX (The “Inter-Asterisk eXchange” Protocol)
          1. History
          2. Future
          3. Security considerations
          4. IAX and NAT
        2. SIP
          1. History
          2. Future
          3. Security considerations
          4. SIP and NAT
        3. H.323
          1. History
          2. Future
          3. Security considerations
          4. H.323 and NAT
        4. MGCP
        5. Proprietary Protocols
          1. Skinny/SCCP
          2. UNISTIM
      3. Codecs
        1. G.711
        2. G.726
        3. G.729A
        4. GSM
        5. iLBC
        6. Speex
        7. MP3
      4. Quality of Service
        1. TCP, UDP, and SCTP
          1. Transmission Control Protocol
          2. User Datagram Protocol
          3. Stream Control Transmission Protocol
        2. Differentiated Service
        3. Guaranteed Service
          1. MPLS
          2. RSVP
        4. Best Effort
      5. Echo
        1. Why Echo Occurs
        2. Managing Echo on Zaptel Channels
        3. Hardware Echo Cancellation
      6. Asterisk and VoIP
        1. Users and Peers and Friends—Oh My!
          1. Users
          2. Peers
          3. Friends
        2. register Statements
      7. VoIP Security
        1. Spam over Internet Telephony (SPIT)
        2. Encrypting Audio with Secure RTP
        3. Spoofing
        4. What Can Be Done?
          1. Basic network security
            1. Segregating voice and data traffic
            2. DMZ
            3. Server hardening
          2. Encryption
          3. Physical security
      8. Conclusion
    13. 9. The Asterisk Gateway Interface (AGI)
      1. Fundamentals of AGI Communication
        1. What Are STDIN, STDOUT, and STDERR?
        2. The Standard Pattern of AGI Communication
        3. Calling an AGI Script from the Dialplan
      2. Writing AGI Scripts in Perl
        1. The Perl AGI Library
      3. Creating AGI Scripts in PHP
        1. The PHP AGI Library
      4. Writing AGI Scripts in Python
        1. The Python AGI Library
      5. Debugging in AGI
        1. Debugging from the Operating System
        2. Using Asterisk’s agi debug Command
      6. Conclusion
    14. 10. Asterisk Manager Interface (AMI) and Adhearsion
      1. The Manager Interface
        1. Connecting to the Manager Interface
        2. Sending Commands
          1. Transferring a call
          2. Reading a configuration file
          3. Updating configuration files
      2. The Flash Operator Panel
      3. Asterisk Development with Adhearsion
        1. A New Approach to Dialplans
        2. Asterisk Development with Adhearsion
        3. Installing Adhearsion
          1. Installing Ruby/RubyGems on AsteriskNOW
          2. Installing Ruby/RubyGems on Linux
          3. Installing Ruby/RubyGems on Mac OS X
          4. Ruby/RubyGems on Windows
          5. Installing Adhearsion from RubyGems
        4. Exploring a New Adhearsion Project
          1. Adhearsion dialplan writing
          2. Database integration
          3. Distributing and reusing code
        5. Integrate with Your Desk Phone Using Micromenus
        6. Integrating with a Web Application
        7. Using Java
        8. More Information
    15. 11. The Asterisk GUI Framework
      1. Why a GUI for Asterisk?
      2. What Is the GUI?
        1. Mark Spencer Talks About the GUI
          1. Using the GUI
          2. GUI elements
      3. Architecture of the Asterisk GUI
        1. Components of the Asterisk GUI
          1. Asterisk Manager Interface
          2. Manager over HTTP and the Asterisk web server
          3. AJAM and JavaScript
      4. Installing the Asterisk GUI
        1. Setting up http.conf and manager.conf
      5. Developing for the Asterisk GUI
        1. Issuing Manager Commands over HTTP
          1. LOGIN
          2. Transferring a call
          3. Reading a configuration file
          4. Updating configuration files using UPDATECONFIG
          5. Error response
        2. Ajax, AJAM, and Asterisk
          1. Form processing in a traditional web application
          2. Form processing in an Ajax application
          3. The Prototype framework
        3. Customization of the GUI
          1. Adding a new tab to the GUI
          2. Exposing configuration settings in the GUI
        4. For More Information
    16. 12. Relational Database Integration
      1. Introduction
      2. Installing the Database
      3. Installing and Configuring ODBC
        1. Configuring res_odbc for Access to Our Database
      4. Using Realtime
        1. Static Realtime
        2. Dynamic Realtime
      5. Storing Call Detail Records
      6. Getting Funky with func_odbc: Hot-Desking
      7. ODBC Voicemail
        1. Creating the Large Object Type
        2. Configuring voicemail.conf for ODBC Storage
        3. Testing ODBC Voicemail
      8. Conclusion
    17. 13. Managing Your Asterisk System
      1. Call Detail Recording
      2. Managing Logs
      3. Running Asterisk As a Non-root User
      4. Customizing System Prompts
      5. Music on Hold
      6. Conclusion
    18. 14. Potpourri
      1. Festival
        1. Getting Festival Set Up and Ready for Asterisk
        2. Configuring Asterisk for Festival
        3. Starting the Festival Server
        4. Calling Festival from the Dialplan
      2. Call Files
      3. DUNDi
        1. How Does DUNDi Work?
        2. Configuring Asterisk for Use with DUNDi
          1. The General Peering Agreement
          2. General configuration
          3. Creating mapping contexts
          4. Defining DUNDi peers
          5. Allowing remote connections
          6. Configuring the dialplan
      4. Alternative Voicemail Storage Methods
        1. Storing Voicemail in an IMAP Server
        2. Storing Voicemail in an ODBC Database
      5. Asterisk and Jabber (XMPP)
      6. Conclusion
    19. 15. Asterisk: The Future of Telephony
      1. The Problems with Traditional Telephony
        1. Closed Thinking
        2. Limited Standards Compliancy
        3. Slow Release Cycles
        4. Refusing to Let Go of the Past and Embrace the Future
      2. Paradigm Shift
      3. The Promise of Open Source Telephony
        1. The Itch That Asterisk Scratches
        2. Open Architecture
        3. Standards Compliance
        4. Lightning-Fast Response to New Technologies
        5. Passionate Community
        6. Some Things That Are Now Possible
          1. Legacy PBX migration gateway
          2. Low-barrier IVR
          3. Conference rooms
          4. Home automation
      4. The Future of Asterisk
        1. Speech Processing
          1. Festival
          2. Speech recognition
        2. High-Fidelity Voice
        3. Video
          1. The challenge of video-conferencing
          2. Why we love video-conferencing
          3. Why video-conferencing may never totally replace voice
        4. Wireless
          1. Wi-Fi
          2. Wi-MAX
        5. Unified Messaging
        6. Peering
          1. E.164
          2. ENUM
          3. e164.org
          4. DUNDi
        7. Challenges
          1. Too much change, too few standards
          2. VoIP spam
          3. Fear, uncertainty, and doubt
          4. Bottleneck engineering
          5. Regulatory wars
          6. Quality of service
          7. Complexity
        8. Opportunities
          1. Tailor-made private telecommunications networks
          2. Low barrier to entry
          3. Hosted solutions of similar complexity to corporate web sites
          4. Proper integration of communications technologies
    20. A. VoIP Channels
      1. IAX
        1. General IAX Settings
        2. Registering to Other Servers with register Statements
        3. IAX Channel Definitions
          1. Channel-specific parameters
      2. SIP
        1. General SIP Parameters
        2. SIP Channel Definitions
    21. B. Application Reference
      1. AddQueueMember()
      2. ADSIProg()
      3. AgentCallbackLogin()
      4. AgentLogin()
      5. AgentMonitorOutgoing()
      6. AGI()
      7. AlarmReceiver()
      8. AMD()
      9. Answer()
      10. AppendCDRUserField()
      11. Authenticate()
      12. Background()
      13. BackgroundDetect()
      14. Busy()
      15. ChangeMonitor()
      16. ChanIsAvail()
      17. ChannelRedirect()
      18. ChanSpy()
      19. Congestion()
      20. ContinueWhile()
      21. ControlPlayback()
      22. DateTime()
      23. DBdel()
      24. DBdeltree()
      25. DeadAGI()
      26. Dial()
      27. Dictate()
      28. Directory()
      29. DISA()
      30. DumpChan()
      31. EAGI()
      32. Echo()
      33. EndWhile()
      34. Exec()
      35. ExecIf()
      36. ExitWhile()
      37. ExtenSpy()
      38. ExternalIVR()
      39. FastAGI()
      40. Festival()
      41. Flash()
      42. FollowMe()
      43. ForkCDR()
      44. GetCPEID()
      45. Gosub()
      46. GosubIf()
      47. Goto()
      48. GotoIf()
      49. GotoIfTime()
      50. Hangup()
      51. HasNewVoicemail()
      52. HasVoicemail()
      53. IAX2Provision()
      54. ICES()
      55. ImportVar()
      56. Log()
      57. LookupBlacklist()
      58. LookupCIDName()
      59. Macro()
      60. MacroExclusive()
      61. MacroExit()
      62. MacroIf()
      63. MailboxExists()
      64. MeetMe()
      65. MeetMeAdmin()
      66. MeetMeCount()
      67. Milliwatt()
      68. MixMonitor()
      69. Monitor()
      70. MorseCode()
      71. MP3Player()
      72. MusicOnHold()
      73. NBScat()
      74. NoCDR()
      75. NoOp()
      76. Page()
      77. Park()
      78. ParkAndAnnounce()
      79. ParkedCall()
      80. PauseMonitor()
      81. PauseQueueMember()
      82. Pickup()
      83. Playback()
      84. Playtones()
      85. PrivacyManager()
      86. Progress()
      87. Queue()
      88. QueueLog()
      89. Random()
      90. Read()
      91. ReadFile()
      92. RealTime
      93. RealTimeUpdate()
      94. Record()
      95. RemoveQueueMember()
      96. ResetCDR()
      97. RetryDial()
      98. Return()
      99. Ringing()
      100. SayAlpha()
      101. SayDigits()
      102. SayNumber()
      103. SayPhonetic()
      104. SayUnixTime()
      105. SendDTMF()
      106. SendImage()
      107. SendText()
      108. SendURL()
      109. Set()
      110. SetAMAFlags()
      111. SetCallerID()
      112. SetCallerPres()
      113. SetCDRUserField()
      114. SetGlobalVar()
      115. SetMusicOnHold()
      116. SetTransferCapability()
      117. SIPAddHeader()
      118. SIPDtmfMode()
      119. SLAStation()
      120. SLATrunk()
      121. SoftHangup()
      122. StackPop()
      123. StartMusicOnHold()
      124. StopMixMonitor()
      125. StopMonitor()
      126. StopPlaytones()
      127. StopMusicOnHold()
      128. System()
      129. Transfer()
      130. TryExec()
      131. TrySystem()
      132. UnpauseMonitor()
      133. UnpauseQueueMember()
      134. UserEvent()
      135. Verbose()
      136. VMAuthenticate()
      137. VoiceMail()
      138. VoiceMailMain()
      139. Wait()
      140. WaitExten()
      141. WaitForRing()
      142. WaitForSilence()
      143. WaitMusicOnHold()
      144. While()
      145. Zapateller()
      146. ZapBarge()
      147. ZapRAS()
      148. ZapScan()
    22. C. AGI Reference
      1. ANSWER
      2. CHANNEL STATUS
      3. DATABASE DEL
      4. DATABASE DELTREE
      5. DATABASE GET
      6. DATABASE PUT
      7. EXEC
      8. GET DATA
      9. GET FULL VARIABLE
      10. GET OPTION
      11. GET VARIABLE
      12. HANGUP
      13. NoOp
      14. RECEIVE CHAR
      15. RECORD FILE
      16. SAY ALPHA
      17. SAY DATE
      18. SAY DATETIME
      19. SAY DIGITS
      20. SAY NUMBER
      21. SAY PHONETIC
      22. SAY TIME
      23. SEND IMAGE
      24. SEND TEXT
      25. SET AUTOHANGUP
      26. SET CALLERID
      27. SET CONTEXT
      28. SET EXTENSION
      29. SET MUSIC ON
      30. SET PRIORITY
      31. SET VARIABLE
      32. STREAM FILE
      33. TDD MODE
      34. VERBOSE
      35. WAIT FOR DIGIT
    23. D. Configuration Files
      1. modules.conf
      2. adsi.conf
      3. adtranvofr.conf
      4. agents.conf
      5. alarmreceiver.conf
      6. alsa.conf
      7. amd.conf
      8. asterisk.conf
      9. cdr.conf
      10. cdr_manager.conf
      11. cdr_odbc.conf
      12. cdr_pgsql.conf
      13. cdr_tds.conf
      14. codecs.conf
      15. dnsmgr.conf
      16. dundi.conf
      17. enum.conf
      18. extconfig.conf
      19. extensions.conf
      20. extensions.ael
      21. features.conf
      22. festival.conf
      23. followme.conf
      24. func_odbc.conf
      25. gtalk.conf
      26. http.conf
      27. iax.conf
      28. iaxprov.conf
      29. indications.conf
      30. jabber.conf
      31. logger.conf
        1. [general]
        2. [logfiles]
      32. manager.conf
      33. meetme.conf
      34. mgcp.conf
      35. modem.conf
      36. musiconhold.conf
      37. osp.conf
      38. oss.conf
      39. phone.conf
      40. privacy.conf
      41. queues.conf
      42. res_odbc.conf
      43. res_snmp.conf
      44. rpt.conf
      45. rtp.conf
      46. say.conf
      47. sip.conf
      48. sip_notify.conf
      49. skinny.conf
      50. sla.conf
      51. smdi.conf
      52. udptl.conf
      53. users.conf
      54. voicemail.conf
        1. General Voicemail Settings
        2. Voicemail Zones
        3. Defining Voicemail Contexts and Mailboxes
      55. vpb.conf
      56. zapata.conf
      57. zaptel.conf
    24. E. Asterisk Dialplan Functions
      1. AGENT
      2. ARRAY
      3. BASE64_DECODE
      4. BASE64_ENCODE
      5. BLACKLIST
      6. CALLERID
      7. CDR
      8. CHANNEL
      9. CHECK_MD5
      10. CHECKSIPDOMAIN
      11. CURL
      12. CUT
      13. DB
      14. DB_DELETE
      15. DB_EXISTS
      16. DUNDILOOKUP
      17. ENUMLOOKUP
      18. ENV
      19. EVAL
      20. EXISTS
      21. FIELDQTY
      22. FILTER
      23. GLOBAL
      24. GROUP
      25. GROUP_COUNT
      26. GROUP_LIST
      27. GROUP_MATCH_COUNT
      28. IAXPEER
      29. IF
      30. IFTIME
      31. ISNULL
      32. KEYPADHASH
      33. LANGUAGE
      34. LEN
      35. MATH
      36. MD5
      37. MUSICCLASS
      38. QUEUE_MEMBER_COUNT
      39. QUEUE_MEMBER_LIST
      40. QUEUE_WAITING_COUNT
      41. QUEUEAGENTCOUNT
      42. QUOTE
      43. RAND
      44. REALTIME
      45. REGEX
      46. SET
      47. SHA1
      48. SIP_HEADER
      49. SIPCHANINFO
      50. SIPPEER
      51. SORT
      52. SPEECH
      53. SPEECH_ENGINE
      54. SPEECH_GRAMMAR
      55. SPEECH_SCORE
      56. SPEECH_TEXT
      57. SPRINTF
      58. STAT
      59. STRFTIME
      60. STRPTIME
      61. TIMEOUT
      62. TXTCIDNAME
      63. URIDECODE
      64. URIENCODE
      65. VMCOUNT
    25. F. Asterisk Manager Interface Actions
      1. AbsoluteTimeout
      2. AgentCallbackLogin
      3. AgentLogoff
      4. Agents
      5. ChangeMonitor
      6. Command
      7. DBGet
      8. DBPut
      9. Events
      10. ExtensionState
      11. GetConfig
      12. GetVar
      13. Hangup
      14. IAXNetstats
      15. IAXPeers
      16. ListCommands
      17. Logoff
      18. MailboxCount
      19. MailboxStatus
      20. MeetmeMute
      21. MeetMeUnmute
      22. Monitor
      23. Originate
      24. Park
      25. ParkedCalls
      26. PauseMonitor
      27. Ping
      28. PlayDTMF
      29. QueueAdd
      30. QueuePause
      31. QueueRemove
      32. QueueStatus
      33. Queues
      34. Redirect
      35. SIPpeers
      36. SIPShowPeer
      37. SetCDRUserField
      38. SetVar
      39. Status
      40. StopMonitor
      41. UnpauseMonitor
      42. UpdateConfig
      43. UserEvent
      44. WaitEvent
      45. ZapDNDoff
      46. ZapDNDon
      47. ZapDialOffhook
      48. ZapHangup
      49. ZapRestart
      50. ZapShowChannels
      51. ZapTransfer
    26. G. An Example of func_odbc
      1. Hot-Desking (extensions.conf)
      2. Hot-Desking (func_odbc.conf)
      3. Hot-Desking (sip.conf)
    27. Index
    28. About the Authors
    29. Colophon
    30. Copyright