joris
13/12/2012, 10h55
Bonjour,
Je suis étudiant en L3 Télécoms et Réseau, nous avons un projet à réaliser avec l'AGI php d'Asterisk.
Nous somme un peu bloqué, j'explique:
Nous devons récupérer des information dans une BDD (numéro etc). pour les traiter ensuite.
Nous avons récupéré un script php simple pour tester, mais voila, impossible de savoir si il est pris en compte ou pas car on n'a aucun retour dans le client asterisk malgré la commande agi set debug on.
Voici le code du script.
#!/usr/bin/php -q
<?php
// limite le temps d'execution du script a 60 secondes
set_time_limit(60);
// supprime le "buffering" sur les sorties
ob_implicit_flush(false);
// supprime l'affichage des erreurs pour éviter que celles-ci interferent avec Asterisk
error_reporting(0);
// creation des fichiers STDIN, STDOUT et STDERR si besoin
if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
if(!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
if(!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
// # retrieve all AGI variables from Asterisk
// récupération des variables envoyés par Asterisk au lancement de l'AGI.
while(!feof(STDIN))
{
$temp = trim(fgets(STDIN,4096));
if (($temp == "") || ($temp == "\n")) break;
$s = split(":",$temp);
$name = str_replace("agi_","",$s[0]);
$agi[$name] = trim($s[1]);
}
// l'ordre que l'on envoi à Asterisk, dans cette exemple, on met "bonjour" dans "Myvar"
fwrite(STDOUT,"SET VARIABLE Myvar Bonjour\n");
// force l'envoi de l'ordre. Pas réellement nécessaire puisse que la bufferisation
// est désactivée, mais conseillé.
fflush(STDOUT);
exit();
?>
Et le code dans le dial plan
[AGI_PHP]
exten => s,1,Set(Myvar=Test)
exten => s,n,NoOp(Myvar=${Myvar})
exten => s,n,AGI(/usr/bin/php,"/var/lib/asterisk/agi-bin/test_php.agi")
exten => s,n,NoOp(Myvar=${Myvar})
Nous avons placé le script dans /var/lib/asterisk/agi_bin avec les permission 755.
En espérant que vous pourrez nous aider.
Merci d'avance.
Joris
Je suis étudiant en L3 Télécoms et Réseau, nous avons un projet à réaliser avec l'AGI php d'Asterisk.
Nous somme un peu bloqué, j'explique:
Nous devons récupérer des information dans une BDD (numéro etc). pour les traiter ensuite.
Nous avons récupéré un script php simple pour tester, mais voila, impossible de savoir si il est pris en compte ou pas car on n'a aucun retour dans le client asterisk malgré la commande agi set debug on.
Voici le code du script.
#!/usr/bin/php -q
<?php
// limite le temps d'execution du script a 60 secondes
set_time_limit(60);
// supprime le "buffering" sur les sorties
ob_implicit_flush(false);
// supprime l'affichage des erreurs pour éviter que celles-ci interferent avec Asterisk
error_reporting(0);
// creation des fichiers STDIN, STDOUT et STDERR si besoin
if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r'));
if(!defined('STDOUT')) define('STDOUT', fopen('php://stdout', 'w'));
if(!defined('STDERR')) define('STDERR', fopen('php://stderr', 'w'));
// # retrieve all AGI variables from Asterisk
// récupération des variables envoyés par Asterisk au lancement de l'AGI.
while(!feof(STDIN))
{
$temp = trim(fgets(STDIN,4096));
if (($temp == "") || ($temp == "\n")) break;
$s = split(":",$temp);
$name = str_replace("agi_","",$s[0]);
$agi[$name] = trim($s[1]);
}
// l'ordre que l'on envoi à Asterisk, dans cette exemple, on met "bonjour" dans "Myvar"
fwrite(STDOUT,"SET VARIABLE Myvar Bonjour\n");
// force l'envoi de l'ordre. Pas réellement nécessaire puisse que la bufferisation
// est désactivée, mais conseillé.
fflush(STDOUT);
exit();
?>
Et le code dans le dial plan
[AGI_PHP]
exten => s,1,Set(Myvar=Test)
exten => s,n,NoOp(Myvar=${Myvar})
exten => s,n,AGI(/usr/bin/php,"/var/lib/asterisk/agi-bin/test_php.agi")
exten => s,n,NoOp(Myvar=${Myvar})
Nous avons placé le script dans /var/lib/asterisk/agi_bin avec les permission 755.
En espérant que vous pourrez nous aider.
Merci d'avance.
Joris