Hace unos días publicamos el primero de una serie de artículos sobre como desarrollar scripts AGI.Al igual que la presentación anterior, en ésta, continuaremos tratando el marco teórico, mientras que en la próxima entrega traeremos ejemplos prácticos realizados en varios lenguajes de programación y varios frameworks.Espero que les sea de utilidad.
La aplicación AGI
La siguiente es la documentación pertenece al comando AGI dialplan, tal como aparece en Asterisk.
-= Info about application 'AGI' =-
[Synopsis]
Executes an AGI compliant application
[Description]
[E|Dead]AGI(command|args): 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 on
stdin and stdout.
This channel will stop dialplan execution on hangup inside of this
application, except when using DeadAGI. Otherwise, dialplan execution
will continue normally.
A locally executed AGI script will receive SIGHUP on hangup from
the channel except when using DeadAGI. This can be disabled by setting
the AGISIGHUP channel variable to "no" before executing the AGI
application.
Using 'EAGI' provides enhanced AGI, with incoming audio available
out of band on file descriptor 3
Use the CLI command 'agi show' to list available agi commands
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 SUCCESS | FAILURE | HANGUP
Flujo de ejecución de Asterisk
Al momento de invocar el script AGI, ocurre un intercambio de información entre el script AGI y Asterisk. Es crucial entender este flujo de datos, ya que la estructura el script depende de ello. El siguiente diagrama describe los pasos que ocurren cuando un script AGI es ejecutado en el dialplan.

