Randall Degges
2011-Sep-24 23:00 UTC
[asterisk-users] Asynchronous AGI Problems (Asterisk 1.8.7.0), ubuntu-server
Hi Everyone, I've been trying to get asynchronous AGIs working in some Asterisk code I have. I'm using Asterisk 1.8.7.0, and I'm very familiar with dialplan and AGI scripting overall. Here's my problem: I can't get Asterisk to execute *any* AGIs asynchronously. Firstly, I discovered asynchronous AGIs via "Asterisk: The Definitive Guide". The asynchronous AGI information I read can be found online, here: http://ofps.oreilly.com/titles/9780596517342/AGI.html (scroll down to the section titled "Async AGI--AMI Controlled AGI"). According to the book, since Asterisk 1.6.0 the AGI dialplan application has been able to execute AGI scripts asynchronously, via the syntax: exten => s,1,AGI(async:script) According to the book, using the "async:" prefix should have Asterisk run the AGI script in the background and instantly continue executing dialplan code. So here's my Asterisk dialplan code that's being run: [hangup] exten => s,1,AGI(async:/etc/asterisk/scripts/hangup.py) exten => s,n,Return() Pretty simple context--essentially my AGI script just does some call clean up logic before a caller hangs up, talking to a few web servers and generating statistics for later usage. What happens when Asterisk executes this context, is: WARNING[7911]: res_agi.c:1622 launch_script: Failed to execute '/var/lib/asterisk/agi-bin/async:/etc/asterisk/scripts/hangup.py': File does not exist. As you can see, Asterisk is ignoring the async: directive, and treating it as part of the AGI script path. Is there anyway for me to make asynchronous AGIs work? I've tried searching online to no avail. I'd greatly appreciate any responses, thanks for your time. -Randall -- Randall Degges *http://rdegges.com/* -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20110924/9a741391/attachment.htm>
Mehmet Avcioglu
2011-Sep-25 12:26 UTC
[asterisk-users] Asynchronous AGI Problems (Asterisk 1.8.7.0), ubuntu-server
Actually it doesn't say "AGI(async:script)" it says "AGI(async:agi)" and than continues further to setting up an AMI user so the script is executed through the manager interface?? Than it says "AGI(agi:async)".?? Well most importantly it says "Cons of async AGI: It is the most complex method of using AGI to implement." ..:) I have been interested in Async AGI as well and after reading your post looked into the link you provided, seems different than what we immediately think, a background process. Perhaps just start the script normally "AGI(script.sh)" and than inside it run your background process "background-script.sh > /dev/null 2>&1 < /dev/null &" or fork a new process, detach, run in background, etc... Hopefully somebody else can point us towards the right direction in setting up a real asterisk asynchronous AGI application. -- Mehmet On Sep 25, 2011, at 2:00 AM, Randall Degges wrote:> Hi Everyone, > > I've been trying to get asynchronous AGIs working in some Asterisk code I have. I'm using Asterisk 1.8.7.0, and I'm very familiar with dialplan and AGI scripting overall. Here's my problem: I can't get Asterisk to execute *any* AGIs asynchronously. > > Firstly, I discovered asynchronous AGIs via "Asterisk: The Definitive Guide". The asynchronous AGI information I read can be found online, here: http://ofps.oreilly.com/titles/9780596517342/AGI.html (scroll down to the section titled "Async AGI--AMI Controlled AGI"). > > According to the book, since Asterisk 1.6.0 the AGI dialplan application has been able to execute AGI scripts asynchronously, via the syntax: > > exten => s,1,AGI(async:script) > > According to the book, using the "async:" prefix should have Asterisk run the AGI script in the background and instantly continue executing dialplan code. > > So here's my Asterisk dialplan code that's being run: > > [hangup] > exten => s,1,AGI(async:/etc/asterisk/scripts/hangup.py) > exten => s,n,Return() > > Pretty simple context--essentially my AGI script just does some call clean up logic before a caller hangs up, talking to a few web servers and generating statistics for later usage. What happens when Asterisk executes this context, is: > > WARNING[7911]: res_agi.c:1622 launch_script: Failed to execute '/var/lib/asterisk/agi-bin/async:/etc/asterisk/scripts/hangup.py': File does not exist. > > As you can see, Asterisk is ignoring the async: directive, and treating it as part of the AGI script path. > > Is there anyway for me to make asynchronous AGIs work? I've tried searching online to no avail. > > I'd greatly appreciate any responses, thanks for your time. > > -Randall > > -- > Randall Degges > http://rdegges.com/ > > -- > _____________________________________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > New to Asterisk? Join us for a live introductory webinar every Thurs: > http://www.asterisk.org/hello > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users