Skip to end of metadata
Go to start of metadata



Executes an AGI compliant application.


Executes an Asterisk Gateway Interface compliant program on a channel. AGI allows Asterisk to launch external programs written in any language to control a telephony channel, play audio, read DTMF digits, etc. by communicating with the AGI protocol.

The following variants of AGI exist, and are chosen based on the value passed to command:

  • AGI - The classic variant of AGI, this will launch the script specified by command as a new process. Communication with the script occurs on stdin and stdout. If the full path to the script is not provided, the astagidir specified in asterisk.conf will be used.
  • FastAGI - Connect Asterisk to a FastAGI server using a TCP connection. The URI to the FastAGI server should be given in the form [scheme]://host.domain[:port][/script/name], where scheme is either agi or hagi.
    In the case of hagi, an SRV lookup will be performed to try to connect to a list of FastAGI servers. The hostname in the URI must be prefixed with _agi._tcp. prior to the DNS resolution. For example, if you specify the URI hagi:// the DNS query would be for You will need to make sure this resolves correctly.
  • AsyncAGI - Use AMI to control the channel in AGI. AGI commands can be invoked using the AMI action, with a variety of AGI specific events passed back over the AMI connection. AsyncAGI should be invoked by passing agi:async to the command parameter.



    As of 1.6.0, this channel will not stop dialplan execution on hangup inside of this application. Dialplan execution will continue normally, even upon hangup until the AGI application signals a desire to stop (either by exiting or, in the case of a net script, by closing the connection).

    A locally executed AGI script will receive SIGHUP on hangup from the channel except when using DeadAGI (or when the channel is already hungup). A fast AGI server will correspondingly receive a HANGUP inline with the command dialog. Both of these signals may be disabled by setting the AGISIGHUP channel variable to no before executing the AGI application. Alternatively, if you would like the AGI application to exit immediately after a channel hangup is detected, set the AGIEXITONHANGUP variable to yes.

    Example: Start the AGI script /tmp/, passing it the contents of the channel variable FOO
    Example: Start the AGI script located in the astagidir directory, specified in asterisk.conf
    Example: Connect to the FastAGI server located at and start the script awesome-script
    Example: Start AsyncAGI
    This application sets the following channel variable upon completion:
  • AGISTATUS - The status of the attempt to the run the AGI script text string, one of:
    • HANGUP


  • command - How AGI should be invoked on the channel.
  • args - Arguments to pass to the AGI script or server.
    • arg1
    • arg2[,arg2...]

See Also

Import Version

This documentation was imported from Asterisk Version GIT-19-edaf3a6

  • No labels