Hello! I'm trying to setup a perl-deadagi, but my perl skills lack. can someone tell me why the following code doesn't work: #!/usr/bin/perl use Asterisk::AGI; $AGI = new Asterisk::AGI; $dialstring = $AGI->get_variable("DIALSTRING"); $res = $AGI->exec("DIAL $dialstring"); the asterisk output says: AGI Rx << GET VARIABLE DIALSTRING AGI Tx >> 200 result=1 (089324154332) AGI Rx << EXEC DIAL "" -- AGI Script Executing Application: (DIAL) Options: () Mar 20 11:46:02 WARNING[21970]: app_dial.c:773 dial_exec_full: Dial requires an argument (technology/number) AGI Tx >> 200 result=-1 -- AGI Script agirouter/dialscript.pl completed, returning 0 so the get_variable-command seems to work, also the exec(with "$dialstring = 089324154332" the call goes out), but not setting the variable. should be so simple :-( astcc-agi seems to use the same syntax, so i have no clue what is wrong in my place... any ideas? thx! kind regards christian
Try setting it to sth like SIP/200 instead of a single number. l. On Mon, 20 Mar 2006 11:56:50 +0100, Christian B <bencokakao@gmail.com> wrote:> Hello! > > I'm trying to setup a perl-deadagi, but my perl skills lack. can > someone tell me why the following code doesn't work: > > #!/usr/bin/perl > use Asterisk::AGI; > $AGI = new Asterisk::AGI; > > $dialstring = $AGI->get_variable("DIALSTRING"); > $res = $AGI->exec("DIAL $dialstring"); > > > the asterisk output says: > > AGI Rx << GET VARIABLE DIALSTRING > AGI Tx >> 200 result=1 (089324154332) > AGI Rx << EXEC DIAL "" > -- AGI Script Executing Application: (DIAL) Options: () > Mar 20 11:46:02 WARNING[21970]: app_dial.c:773 dial_exec_full: Dial > requires an argument (technology/number) AGI Tx >> 200 result=-1 > -- AGI Script agirouter/dialscript.pl completed, returning 0 > > > so the get_variable-command seems to work, also the exec(with > "$dialstring = 089324154332" the call goes out), but not setting the > variable. should be so simple :-( astcc-agi seems to use the same > syntax, so i have no clue what is wrong in my place... > any ideas? thx! > > kind regards > christian >-- Loway Research - Home of QueueMetrics http://queuemetrics.loway.it
Benoît Mérouze
2006-Mar-20 07:06 UTC
[Asterisk-Users] simple perl-agi - where's the error?
You should try '$res = $AGI->exec("DIAL", "$dialstring");' Christian B wrote:> Hello! > > I'm trying to setup a perl-deadagi, but my perl skills lack. can > someone tell me why the following code doesn't work: > > #!/usr/bin/perl > use Asterisk::AGI; > $AGI = new Asterisk::AGI; > > $dialstring = $AGI->get_variable("DIALSTRING"); > $res = $AGI->exec("DIAL $dialstring"); > > > the asterisk output says: > > AGI Rx << GET VARIABLE DIALSTRING > AGI Tx >> 200 result=1 (089324154332) > AGI Rx << EXEC DIAL "" > -- AGI Script Executing Application: (DIAL) Options: () > Mar 20 11:46:02 WARNING[21970]: app_dial.c:773 dial_exec_full: Dial > requires an argument (technology/number) AGI Tx >> 200 result=-1 > -- AGI Script agirouter/dialscript.pl completed, returning 0 > > > so the get_variable-command seems to work, also the exec(with > "$dialstring = 089324154332" the call goes out), but not setting the > variable. should be so simple :-( astcc-agi seems to use the same > syntax, so i have no clue what is wrong in my place... > any ideas? thx! > > kind regards > christian > _______________________________________________ > --Bandwidth and Colocation provided by Easynews.com -- > > Asterisk-Users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users > >-- Benoit Merouze Network Software Developer benoit.merouze@ipercom.com
Mojo with Horan & Company, LLC
2006-Mar-22 11:20 UTC
[Asterisk-Users] simple perl-agi - where's the error?
the DIALSTRING you were given is just an extension, 089324154332. As Lenz pointed out, and it also says in the app_dial.c:773 WARNING, it must be technology/number, not just a number. Not sure perl methods, but you might concatenate a technology before the number, something like $res = $AGI->exec("DIAL Local/$dialstring"); or $res = $AGI->exec("DIAL SIP/$dialstring"); again, I don't know perl, so if that broke something, sorry ;) Christian B wrote:> Hello! > > I'm trying to setup a perl-deadagi, but my perl skills lack. can > someone tell me why the following code doesn't work: > > #!/usr/bin/perl > use Asterisk::AGI; > $AGI = new Asterisk::AGI; > > $dialstring = $AGI->get_variable("DIALSTRING"); > $res = $AGI->exec("DIAL $dialstring"); > > > the asterisk output says: > > AGI Rx << GET VARIABLE DIALSTRING > AGI Tx >> 200 result=1 (089324154332) > AGI Rx << EXEC DIAL "" > -- AGI Script Executing Application: (DIAL) Options: () > Mar 20 11:46:02 WARNING[21970]: app_dial.c:773 dial_exec_full: Dial > requires an argument (technology/number) AGI Tx >> 200 result=-1 > -- AGI Script agirouter/dialscript.pl completed, returning 0 > > > so the get_variable-command seems to work, also the exec(with > "$dialstring = 089324154332" the call goes out), but not setting the > variable. should be so simple :-( astcc-agi seems to use the same > syntax, so i have no clue what is wrong in my place... > any ideas? thx! > > kind regards > christian > _______________________________________________ > --Bandwidth and Colocation provided by Easynews.com -- > > Asterisk-Users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users >-- Mojo <mojo@horanappraisals.com> Office Manger, Horan & Company, LLC (907) 747-6666 x112
Michael Collins
2006-Mar-22 13:01 UTC
[Asterisk-Users] simple perl-agi - where's the error?
> the DIALSTRING you were given is just an extension, 089324154332. As > Lenz pointed out, and it also says in the app_dial.c:773 WARNING, it > must be technology/number, not just a number. Not sure perl methods, > but you might concatenate a technology before the number, somethinglike> $res = $AGI->exec("DIAL Local/$dialstring"); > or > $res = $AGI->exec("DIAL SIP/$dialstring"); > > again, I don't know perl, so if that broke something, sorry ;) > > > Christian B wrote: > > Hello! > > > > I'm trying to setup a perl-deadagi, but my perl skills lack. can > > someone tell me why the following code doesn't work: > > > > #!/usr/bin/perl > > use Asterisk::AGI; > > $AGI = new Asterisk::AGI; > > > > $dialstring = $AGI->get_variable("DIALSTRING"); > > $res = $AGI->exec("DIAL $dialstring"); > > > > > > the asterisk output says: > > > > AGI Rx << GET VARIABLE DIALSTRING > > AGI Tx >> 200 result=1 (089324154332) > > AGI Rx << EXEC DIAL "" > > -- AGI Script Executing Application: (DIAL) Options: () > > Mar 20 11:46:02 WARNING[21970]: app_dial.c:773 dial_exec_full: Dial > > requires an argument (technology/number) AGI Tx >> 200 result=-1 > > -- AGI Script agirouter/dialscript.pl completed, returning 0 > > > > > > so the get_variable-command seems to work, also the exec(with > > "$dialstring = 089324154332" the call goes out), but not setting the > > variable. should be so simple :-( astcc-agi seems to use the same > > syntax, so i have no clue what is wrong in my place... > > any ideas? thx! > > > > kind regards > > ChristianI believe the problem was that the expected value of $dialstring in the Perl script wasn't making it back to *. I would recommend a little debugging: #!/usr/bin/perl use Asterisk::AGI; $AGI = new Asterisk::AGI; $dialstring = $AGI->get_variable("DIALSTRING"); # Debug here: print STDERR "\$dialstring contains '$dialstring'\n\n"; # This _should_ print to the console on the Asterisk server # Note also the minor changes to the arguments for exec method: $res = $AGI->exec('DIAL', $dialstring); What you want to do is make absolutely certain that you are getting what you expect with the $AGI->get_variable("DIALSTRING") call. If you get only a phone number then you WILL need to add the technology to the exec call: $res = $AGI->exec('DIAL', "ZAP/g1/$dialstring"); -or- $res = $AGI->exec('DIAL', "SIP/$dialstring"); (Use the technology appropriate for your application.) Quickie Perl lesson: Putting a variable in double quotes causes interpolation. For example, if the variable $dialstring contains a phone number (e.g. 5595551212) then the command: $res = $AGI->exec('DIAL', "ZAP/g1/$dialstring"); Becomes the equivalent of: $res = $AGI->exec('DIAL', "ZAP/g1/5595551212"); HTH, MC