Asterisk Gateway Interface 1.4 and 1.6 Programming Table of Contents

Back to BOOK PAGE

Table of Contents

Preface
Chapter 1: Installing a 'Vanilla' Asterisk
Chapter 2: Basic IVR Development: Using the Asterisk DialPlan
Chapter 3: More IVR Development: Input, Recordings, and Call Control
Chapter 4: A Primer to AGI: Asterisk Gateway Interface
Chapter 5: AGI Scripting with PHP
Chapter 6: PHPAGI: An AGI Class Library in PHP
Chapter 7: FastAGI: AGI as a TCP Server
Chapter 8: AMI: The Asterisk Manager Interface
Chapter 9: Final Programming Project
Chapter 10: Scaling Asterisk Applications
Index

  • Chapter 1: Installing a 'Vanilla' Asterisk
    • Downloading Asterisk
    • Zaptel—Zapata Telephony Driver
    • DAHDI—Digium Asterisk Hardware Device Interface
    • Libpri—ISDN PRI Library
    • Asterisk—the open source PBX
    • Asterisk-addons—the open source PBX
    • Asterisk—SVN source packages
      • Obtaining the source code packages from SVN
      • Compilation dependencies
    • Compiling the source code
      • Compiling and installing Zaptel
        • Step 1: Configure
        • Step 2: Define the options you would like to compile
        • Step 3: Compiling and installing
      • Compiling and installing DAHDI
        • Step 1: Compile the kernel module
        • Step 2: Install the dahdi kernel module
        • Step 3: Compile the dahdi-tools package
        • Step 4: Configure the dahdi-tools to be installed
        • Step 5: Compile and install dahdi-tools
      • Differences between Zaptel and DAHDI
      • Compiling and installing libpri
      • Compiling and installing Asterisk
        • Step 1: Configure
        • Step 2: Define the options you would like to compile
        • Step 3: Compiling the code
    • Summary
  • Chapter 2: Basic IVR Development: Using the Asterisk DialPlan
    • The dialplan is a set of "finite state machines"
    • The dialplan syntax
      • The extension
        • Inclusion of contexts
        • The [general] and [global] contexts
        • Extension pattern matching
        • Special extensions
      • Dialplan Switches
      • Variables, applications, and functions
        • Variables—built-in and custom
      • Applications and functions
        • Your first IVR application
    • Summary
  • Chapter 3: More IVR Development: Input, Recordings, and Call Control
    • Grabbing and processing user input
      • The Read application
      • Branching—Goto, GotoIf, Gosub, and GosubIf
        • Goto and GotoIf
        • Writing expressions
        • Regular expressions
        • Gosub and GosubIf
        • Exec, ExecIf, and TryExec
      • Macros—Macro and MacroExclusive
        • Additional Asterisk applications
      • Self exploration
    • Summary
  • Chapter 4: A Primer to AGI: Asterisk Gateway Interface
    • How does AGI work?
      • EAGI, DeadAGI and FastAGI
        • EAGI—Enhanced Asterisk Gateway Interface
        • DeadAGI—execution on hangup
        • FastAGI—AGI execution via a TCP socket
        • AGI scripting frameworks
      • The AGI application
      • The AGI execution flow
      • The AGI methods API
    • The ten rules of AGI development
      • Rule #1: An AGI script should terminate as fast as possible
      • Rule #2: Blocking applications have no place in AGI
      • Rule #3: Asterisk channels are stateful—use them
      • Rule #4: AGI scripts should manipulate data—no more
      • Rule #5: VM based languages are bad for AGI scripting
      • Rule #6: Binary-compiled AGI is not always the answer
      • Rule #7: Balance your scripts with dialplan logic
      • Rule #8: Balance your scripts with web services
      • Rule #9: Syslog is your friend—use it
      • Rule #10: The Internet is for Asterisk
    • A preface to what's coming ahead
    • Summary
  • Chapter 5: AGI Scripting with PHP
    • PHP-CLI vs. PHP-CGI
    • The php.ini configuration file
    • AGI script permissions
    • The structure of a PHP based AGI script
    • Communication between Asterisk and AGI
    • The AGI Hello-World program
    • AGI debugging
    • Summary
  • Chapter 6: PHPAGI: An AGI Class Library in PHP
    • Obtaining PHPAGI
    • The file structure of PHPAGI
    • A very simple PHPAGI example
    • The AGI/Dialplan high-wire act
      • Introducing Atomic-AGI
      • Atomic-AGI—a dialplan example
      • SetSessionID.agi—meet your state maintainer
      • agiWrapper.agi—an all purpose AGI execution wrapper
    • A slightly more complex PHPAGI example
      • db_validate_target.inc.php
      • db_register_cdr.inc.php
    • AGI Scripts in popular Asterisk applications
      • FreePBX™—the most popular Asterisk management GUI
      • A2Billing™—a pre-paid calling card system
    • Summary
  • Chapter 7: FastAGI: AGI as a TCP Server
    • FastAGI argument handling
      • Asterisk 1.2.X and 1.4.X
      • Asterisk 1.6.X
    • FastAGI error handling
      • Asterisk 1.2.X
      • Asterisk 1.4.X and 1.6.X
    • FastAGI with PHPAGI and xinetd
      • Introducing xintetd—the Internet services daemon
      • Configuring xinetd for FastAGI and PHPAGI
      • Configuring PHPAGI for FastAGI
      • The fastagiWrapper.php bootstrap
      • Performance consideration
    • FastAGI with PHPAGI and Google
    • FastAGI with other tool kits
      • Asterisk::FastAGI—a PERL module for FastAGI handling
      • Asterisk-JAVA—a Java package for Asterisk
    • Summary
  • Chapter 8: AMI: The Asterisk Manager Interface
    • AMI—the history
      • How does AMI work?
      • AMI with Asterisk 1.0 and 1.2
      • AMI with Asterisk 1.4 and 1.6
    • AMI–understanding basics
      • Events and Actions
      • Logging in to the Manager Interface
      • Sending actions to the Manager Interface
      • Logging off from the Manager Interface
    • PHPAGI and the AMI Interface
      • Direct AMI interface invocation
      • AMI interface invocation via the PHPAGI class
      • Interacting with the AMI interface
        • Sending actions to the AMI inteface
        • Event callbacks from AMI interface
      • PHPAGI AMI originate quirk
    • Click-2-Call and Web-Callback
      • Demystifying the Asterisk Originate manager action
      • Welcome to Jabka—the world's favourite Click-2-Call
      • AMI proxy servers
      • AJAM—AJAX Enabled Manager
    • Summary
  • Chapter 9: Final Programming Project
    • ACRG—Asterisk Call Recording Gateway
      • Requirements
      • Network connectivity—PSTN
    • Project implementation guide
      • Step 1: Analysis of the requirements
      • Step 2: Understanding operational constraints
      • Step 3: Detailed call flow charts
      • Step 4: The Asterisk dialplan context
      • Step 5: Develop your human interfaces
      • Step 6: Test, test, and test again
    • Additional programming projects
      • Click-2-Call
        • Jajah.Com
      • Stateful call masking
      • Punk'ed call
      • Date rescue call
      • Conference bridge
    • Summary
  • Chapter 10: Scaling Asterisk Applications
    • Scaling Asterisk platforms
      • Database query caching
        • Starting up
        • Using it in a script
      • Utilization of web services
        • Introduction to XML-RPC
      • Apache versus Lighttpd
        • Virtualization and cloud computing
    • Summary

Back to BOOK PAGE

Awards Voting Nominations Previous Winners
Judges Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software
Resources
Open Source CMS Hall Of Fame CMS Most Promising Open Source Project Open Source E-Commerce Applications Open Source JavaScript Library Open Source Graphics Software
Sort A-Z