PDA

Voir la version complète : Script perl agi et variable



tito68
04/04/2013, 16h00
Bonjour a tous,

Me re voila avec une autre énigme , j'explique :

Je souhaite récupérer les variables $var1 et $var2 de mon fichier test.agi ci-dessous et les afficher dans mon dialplan pour executer les sons corespondant aux variables $var1 et $var2 comme ci-dessous :

exten => s,1,Answer ; Repond a l'appel
exten => s,n,AGI(agi-test.agi)
exten => s,n,Playback($var1)
exten => s,n,Playback($var2)
exten => s,n,Hangup()


Le fichier agi-test :
#!/usr/bin/perl

$var1 = 1;
$var2 = 2;

La question est pourquoi les variables $var1 et $var2 ne sont pas récupérés ?
Merci pour votre aide

YBDOMO
05/04/2013, 15h25
Bonjour,

Voir
http://www.voip-info.org/wiki/view/Asterisk+perl+agi
et
http://search.cpan.org/~jamesgol/asterisk-perl/lib/Asterisk/AGI.pm

A+

Comdif
05/04/2013, 15h59
Quel est l’intérêt d'utiliser une agi pour stocker des variables ?
c'est normalement le job d'une database comme Astdb, Mysql ou Sqlite
Je doute qu'on puisse revenir naturellement dans le dialplan en sortie d'AGI sauf si c'est programmé dans l'AGI
pourquoi ne pas continuer le tout en AGI, c'est normalement fait pour ça.

fastm3
05/04/2013, 20h43
Si si , ca peut avoir un interet pour separer justement l'aspect dialplan de la partie "metier". Je vais publier un script bientot ( des que j'ai un peu de temps pour faire un tuto ) qui montrera comment j'utilise cela.

Pour repondre à la question initiale en Perl, moi j'utilise Asterisk::AGI
On peut alors ecrire quelque chose comme cela:



use Asterisk::AGI;
my $AGI = new Asterisk::AGI;
$AGI->noop("Debut agi");
$AGI->set_variable("VARIABLE",$variable);On pourra l'utiliser ensuite dans le dialplan comme cela:
( ici avec passage d'une variable en entree )


exten => s,1,AGI(testAGI,${CALLERID(num)})
exten => s,n,Noop(La variable VARIABLE a été setté à ${VARIABLE} dans l'agi)Ca devrait te permettre d'aller plus loin.
Fastm3.