[Asterisk-Users] Asterisk::AGI script calling macro with arguments - has to be a simpler way...

Shaun Dwyer shaund at wadata.com.au
Wed Mar 30 23:51:07 MST 2005


Hi All,

I'm hoping that some one has come across this one before or knows of a 
better solution for this problem...

I've (partially) written a perl AGI script with Asterisk::AGI. I need to 
be able to execute a macro within
the dialplan and pass it a single option (the external phone number to 
dial). I can't seem to get the argument
passed thru though.

I want to be able to do something along the lines of:
$return = $AGI->exec('Macro(outdial,' . @num[1] . ')');

where @num[1] is the variable containing the phone number to dial.
I must use the macro 'outdial' as it does alsorts of funky stuff like 
failover between different phone providers.
the outdial macro expects a single argument (the phone number to dial).

I've also tried:
$return = $AGI->exec('Macro', outdial, @num[1]);

$return = $AGI->exec('Macro', 'outdial, @num[1]');

$return = $AGI->exec('Macro', outdial, at num[1]);

my $odparam = "outdial," . @num[1];
$return = $AGI->exec('Macro' , $odparam);

but nothing seems to work.

My current workaround for this is to:
in the AGI script:
my $odparam = "Local/" . @num[1] . "\@agidial" ;
$return = $AGI->exec('Dial' , $odparam);

Where in my extensions.conf I have:
[agidial]
exten => _X.,1,Macro(outdial,${EXTEN})

This dodgy workaround seems to work OK, but its rather messy and I think 
that there should
be a better way of doing it :)

Any thoughts?

Cheers,
-Shaun




More information about the asterisk-users mailing list