AGI()¶
Synopsis¶
Executes an AGI compliant application.
Description¶
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://agi.example.com/foo.agi' the DNS query would be for '_agi._tcp.agi.example.com'. 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.
Note
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'.
same => n,AGI(/tmp/my-cool-script.sh,${FOO})
same => n,AGI(my-cool-script.sh)
same => n,AGI(agi://127.0.0.1/awesome-script)
-
AGISTATUS
- The status of the attempt to the run the AGI script text string, one of:-
SUCCESS
-
FAILURE
-
NOTFOUND
-
HANGUP
-
Syntax¶
Arguments¶
-
command
- How AGI should be invoked on the channel. -
args
- Arguments to pass to the AGI script or server.-
arg1
required -
arg2[,arg2...]
-
See Also¶
- AMI Actions AGI
- AMI Events AsyncAGIStart
- AMI Events AsyncAGIEnd
- Dialplan Applications EAGI
- Dialplan Applications DeadAGI
- {{asterisk.conf}}
Generated Version¶
This documentation was generated from Asterisk branch 21 using version GIT