[Asterisk-Users] AGI Rocks!! (A happy camper)

costas costas at meezon.com
Tue Nov 25 19:18:31 MST 2003


Reading the code is easy. Finding the correct code to read is the tough part. Thanks for the overview. Now it make sense how the mechanism of AGI communication works, via stdin/stdout.


---------- Original Message ----------------------------------
From: Steven Critchfield <critch at basesys.com>
Reply-To: asterisk-users at lists.digium.com
Date:  Tue, 25 Nov 2003 15:42:40 -0600

>On Tue, 2003-11-25 at 14:02, costas wrote:
>> I was just looking at AGI with PHP myself. I just have a real dumb question. How does Linux know to send $stdout(or echo) to *? What if there are other apps open as well waiting for input. WOn't they get the output?
>> 
>> Also, how does the AGI know to read from $stdin is * input?
>
>I understand that sometimes C can be daunting to a non programmer, but
>this is a fairly easy look at the source question. I'll help you out on
>this one.
>
>In /usr/src/asterisk/apps/app_agi.c you will find a function
>load_module. In fact, you will find this with all builtin applications.
>Near the end of this function you will see ...
>    return ast_register_application(app, agi_exec, synopsis, descrip);
>The action here should be fairly easy to understand. It registers an
>application with each of those arguments. Of interest is the agi_exec
>function as it is what asterisk will call when launching the AGI
>application. 
>
>At this point it may seem odd that all that agi_exec does is call
>agi_exec_full, but it is due to the eagi application being intertwined
>into agi. In agi_exec_full, you scan through it, you will find
>launch_script. This is where your application gets launched and
>connected to asterisk.
>
>In launch_script you will find a section like this.
>    pid = fork();
>    if (pid < 0) {
>        ast_log(LOG_WARNING, "Failed to fork(): %s\n", strerror(errno));
>        return -1;
>    }
>    if (!pid) {
>        /* Redirect stdin and out, provide enhanced audio channel if desired */
>        dup2(fromast[0], STDIN_FILENO);
>        dup2(toast[1], STDOUT_FILENO);
>
>
>So this is how it reconnects the stdin and stdout to asterisk.
>
>> ---------- Original Message ----------------------------------
>> From: WipeOut <wipe_out at users.sourceforge.net>
>> Reply-To: asterisk-users at lists.digium.com
>> Date:  Tue, 25 Nov 2003 19:14:48 +0000
>> 
>> >A note to all those who are avoiding writing up an AGI becasue it looks 
>> >two complicated..
>> >
>> >I have just written up my first and its awesome.. It makes Asterisk open 
>> >to all sorts of possibilities.. let your imagination run wild..
>> >
>> >I put off writing an AGI script because a) I could not find any docs b) 
>> >it looked like the only way to do it was perl and I know nothing about 
>> >perl and c) I am not a coder, more a simple sysadmin..
>> >
>> >Eventually I decided to give it a try, and seeing as the language I know 
>> >the best is PHP I decided to do my script in PHP.. The truth of the 
>> >matter is that once you have worked out how to get your variables from 
>> >Asterisk into a usable array or whatever you are happy using the rest is 
>> >a piece of cake..
>> >
>> >It goes without saying that what I have done is stupidly simple but for 
>> >a non coder its still a giant achivement..
>> >
>> >So all I can say is thanks to the Mark and the team for dreaming up 
>> >AGI... To those who are putting off giving it a go, don't!!.. Dive in 
>> >and give it a try..
>> >
>> >PS. I won't be much help to anyone on AGI related questions, the list is 
>> >still you best bet, this was just to hopefully inspire others to give it 
>> >a try..
>> >
>> >_______________________________________________
>> >Asterisk-Users mailing list
>> >Asterisk-Users at lists.digium.com
>> >http://lists.digium.com/mailman/listinfo/asterisk-users
>> >
>> 
>> --
>> Costas Menico
>> Meezon Software Corp
>> 201-224-8111
>> costas at meezon.com
>> 
>> --
>> _______________________________________________
>> Asterisk-Users mailing list
>> Asterisk-Users at lists.digium.com
>> http://lists.digium.com/mailman/listinfo/asterisk-users
>-- 
>Steven Critchfield  <critch at basesys.com>
>
>_______________________________________________
>Asterisk-Users mailing list
>Asterisk-Users at lists.digium.com
>http://lists.digium.com/mailman/listinfo/asterisk-users
>

--
Costas Menico
Meezon Software Corp
201-224-8111
costas at meezon.com

--



More information about the asterisk-users mailing list