[asterisk-users] how to pass a variable in extensions.conf to AGI file

Steve Totaro stotaro at totarotechnologies.com
Sat Sep 13 15:55:18 CDT 2008


On Sat, Sep 13, 2008 at 4:09 PM, Steve Edwards
<asterisk.org at sedwards.com> wrote:
> On Fri, 12 Sep 2008, Zen Kato wrote:
>
>> I would like to pass global variable(i.e., ${CALLERID(num)}) in
>> extensions.conf to the variable in an AGI file
>> (/var/lib/asterisk/agi-bin/some-agi-file).
>
> ${CALLERID(num)} references a channel variable, not a global variable.
>
> In the specific case of the channel variable you refer to, it is already
> "passed" to the AGI via stdin as part of the AGI setup.
>
> In general, you don't "pass" variables to an AGI, the AGI "gets" the
> variable using the "get variable" AGI command. Try (in 1.2.x) "show agi"
> for more information.
>
>> Can someone help me to implement the following?
>>
>> extensions.conf
>> --------------
>> exten => 9911,1,Answer
>> exten => 9911,2,Wait(1)
>> exten => 9911,3,Set(CALLER=${CALLERID(num)})
>> exten => 9911,4,AGI(callall-9911-1)
>> exten => 9911,5,AGI(callall-9911-2)
>> exten => 9911,8,AGI(callall-9911-3)
>>
>> /var/lib/asterisk/agi-bin/callall-9911-1
>> -----------------------------------------
>> #!/bin/sh
>> cp /var/lib/asterisk/agi-bin/demo1/call-all/telno/9911/* /var/tmp/call-all/9911
>>
>> /var/lib/asterisk/agi-bin/callall-9911-2
>> -----------------------------------------
>> #!/usr/bin/perl
>> use strict;
>> use Shell qw(rm);
>> rm "/var/tmp/call-all/9911/".$CALLER;
>>
>> /var/lib/asterisk/agi-bin/callall-9911-3
>> -----------------------------------------
>> #!/bin/sh
>> mv /var/tmp/call-all/9911/* /var/spool/asterisk/outgoing
>
> Your "AGIs" do not read the AGI environment nor execute any AGI
> commands...
>
> If all you want to do is copy, delete, and move files, the "system()"
> application would be more appropriate.
>
> When you get to the point that you actually need the power of AGI, Perl
> would be a distant 3rd in my choice of implementation languages -- behind
> C and PHP.
>
> The "agi debug" command will help resolve most AGI issues.
>
>> There are 0103,0203,0303,0403,.,1003 files under /var/tmp/call-all/9911/.
>>
>> If I dial 9911 from username=0103, I would like to delete 0103 file,
>> because 0103 is caller and callee.
>>
>> The perl script :
>>
>> rm  "/var/tmp/call-all/9911/".$CALLER;
>>
>> does not work.
>>
>>
>> Regards,
>>
>> Zen
>
> Unless your example above is contrived or "simplified," it indicates a
> need for a bit of reading. All that you show above could be accomplished
> with a couple of "system()" calls (each of which will create a new process
> -- considered an "expensive" operation) or as a single AGI (only creating
> a single new process).
>
> Thanks in advance,
> ------------------------------------------------------------------------
> Steve Edwards      sedwards at sedwards.com      Voice: +1-760-468-3867 PST
> Newline                                             Fax: +1-760-731-3000
>

RDNIS is often useful to stuff with other variables since it is not
used in most cases.

Thanks,
Steve Totaro



More information about the asterisk-users mailing list