Lo primero que hay que saber es qué es un AGIqué es el AMI.
Una vez sepamos la diferencia entre estas dos maneras de ejecutar aplicaciones de manera que interactúen con Asterisk, nos daremos cuenta que los AGI deben ejecutarse cuando se realiza una llamada (para consultar un número de teléfono en una base de datos, o similar), mientras que el AMI está contínuamente conectado a Asterisk y puede ejecutar comandos cuando quiera independientemente de cuando haya o no llamadas activas.

El objetivo de esta técnica, consiste en ejecutar AGI cuando se produzca un evento, no cuando se ejecute desde el dialplan.

Combinando las dos técnicas (AGI y AMI), se puede llegar a hacer esto:

# telnet localhost 5038
Action: Login
Username: test
Secret: test

Action: AGI
Channel: SIP/33-blah
Command: EXEC Playback tt-monkeys
CommandID: MyCommandID

En este caso, habremos ejecutado un comando de AGI en el instante que hayamos decidido, no hace falta que lo ejecute el propio dialplan de Asterisk.

Otra idea estupenda sería poder ejecutar comandos AGI incluso desde la consola de Asterisk:

tcore*CLI> agi exec SIP/testing-09a5b960 “EXEC startmusiconhold”
tcore*CLI> agi exec SIP/testing-09a5b960 “EXEC stopmusiconhold”
tcore*CLI> agi exec SIP/testing-09a5b960 “EXEC Dial(Agent/23)”

Para esto, hay un parche que permite utilizar los comandos AGI desde la consola:
http://www.moythreads.com/asterisk-1.4.15-async-agi.patch

Una técnica más para poder llegar a hacer aquello que tenemos en la cabeza. 🙂

Vía: http://www.moythreads.com/wordpress/2007/12/24/asterisk-asynchronous-agi/
 

6 Comentarios

  • necesito hacer un identificador de llamadas en asterisk, de tal forma de que cuando un anexo llame al otro este sepa de donde proviene la llamada, estuve investigando sobre AGI y dice que permite extraer datos de asterisk pero no se como ejecutarlo una vez quer lo haya programado en PHP me podrian ayudar porfavor

  • Hola,

    La solución que apuntas, es muy potente y versatil, para realizar integraciones muy finas con Asterisk. Por ello me he puesto manos a la obra.

    Toda la parte de AMI sin problemas, pero cuando he intentado enviar tu ejemplo desde AMI

    Action: AGI
    Channel: SIP/33-blah
    Command: EXEC Playback tt-monkeys
    CommandID: MyCommandID

    Asterisk me devuelve:

    Response: Error
    Message: Invalid/unknown command

    Me podrias indicar donde hay mas informacion y ejemplos de como enviar comandos AGI a traves de AMI.

    Muchas gracias.

  • El soporte para el comando AGI en el Action del Manager fue introducido el 3 de enero de 2008 en la versión Trunk de Asterisk.
    http://bugs.digium.com/view.php?id=11282

    Aquí tienes el parche que tienes que aplicar para poder utilizar estos ejemplos. 🙂

    Más información en el enlace del artículo.

  • Muchas gracias Elio.

    Voy a probarlo ahora mismo. Te comentare como me ha ido.

  • Lo puse en marcha, con el parche y funciona bastante bien. Te da una versatilidad y un manejo completo de Asterisk.

    Muchas gracias por tu ayuda, Elio

  • De nada. 😀

Archivos

© 2014 Sinologic, inc. All rights reserved.

Menú

Redes sociales