24. Diciembre 2007

Cómo ejecutar AGI de forma asíncrona

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/
 

Artículos relacionados





6 comentarios to "Cómo ejecutar AGI de forma asíncrona"

  • pablo escribió el dia

    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

     Vote: Add rating 0  Subtract rating 0  
  • Javier escribió el dia

    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.

     Vote: Add rating 0  Subtract rating 0  
  • Elio Rojano escribió el dia

    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.

     Vote: Add rating 0  Subtract rating 0  
  • Javier escribió el dia

    Muchas gracias Elio.

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

     Vote: Add rating 0  Subtract rating 0  
  • Javier escribió el dia

    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

     Vote: Add rating 0  Subtract rating 0  
  • Elio Rojano escribió el dia

    De nada. :D

     Vote: Add rating 0  Subtract rating 0  

Deja tu comentario


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word