PDA

Voir la version complète : Scripts AGI ... ?



Tfdi
26/07/2011, 19h09
Bonjour à tous,

Dans le cadre de mon apprentissage d'astérisk, j'ai décidé de développer un petit script AGI, simplement pour voir un peu comment ca fonctionne.

Pour commencer simplement, j'ai un extension.conf comme ca:


exten=20,1,Answer()
exten=20,n,AGI(/home/test/test.php)
exten=20,n,Hangup()

Dans mon script test.php, je veux simplement dire à asterisk de lire un fichier audio.



#!/usr/bin/php -q
<?
function ast_debug($param)
{
$fichier=fopen("/home/test/debug.log","a");
fputs($fichier,date("d/m/Y Ã* H:i:s",mktime())." -> ".$param."\n");
fclose($fichier);
}

if(defined('STDOUT'))
{
ast_debug("Ok, chaine définie");
$command="STREAM FILE /home/test/p001\n";
fputs(STDOUT,$command);
fflush(STDOUT);
ast_debug("COMMANDE : ".$command);
}

?>


Je teste ca avec X-Lite sous windows, qui se connecte à une machine virtuelle sur laquelle est installé Asterisk (Linux CentOS).

Sous le CLI d'asterisk j'ai ca :



-- Executing [30@default:1] Answer("SIP/1001-00000006", "") in new stack
-- Executing [30@default:2] AGI("SIP/1001-00000006", "/home/test/test.php") in new stack
-- Launched AGI Script /home/test/test.php
-- <SIP/1001-00000006>AGI Script /home/test/test.php completed, returning 0
-- Executing [30@default:3] Hangup("SIP/1001-00000006", "") in new stack


Cependant, je n'entends jamais le message vocal.

Si je modifie l'extension.conf pour y mettre un Playback direct du message vocal, c'est ok, ca fonctionne, donc pas de probleme de fichier audio (c'est un alaw).

Ca fait plus de 8h de que je suis dessus, vais pas tarder à craquer !! ... :pt1cable:

Reaper
26/07/2011, 21h15
Si tu lance le script avec le binaire php seul, il passe sans erreurs ?

Reaper
26/07/2011, 21h16
Et fais attention au répertoires, il me semble que asterisk par défaut cherche sous le répertoire agi-bin

Tfdi
27/07/2011, 10h02
Ayé j'ai trouvé.

Les '' sont obligatoires pour la commande stream file ...

Il me semblait pourtant que j'avais déjà essayé, mais non, j'ai dû le rêver.

enfin, quoi qu'il en soit, si vous testez les scripts AGI, pensez que lors de l'utilisation de la commande stream file, il faut les '' à la fin, même si vous n'utilisez pas les escapes digits.

STREAM FILE nomdufichier ''

Pas compliqué pourtant, il le dit dans le debug agi du CLI .... lol.

Hier devait être un jour sans ....

Tfdi
27/07/2011, 12h01
Dans la continuité.

Maintenant le fichier vocal est bien lu par asterisk, mais il y a un point que je ne comprends pas, une fois le script agi terminé, dans l'extensions.conf, il y a un hangup juste après l'appel au script agi, et il ne se fait pas.

En clair, le fichier audio est lu par asterisk via le script agi, mais un fois le script terminé, on dirait qu'asterisk attend quelque chose, il n'execute pas le hangup du extensions.conf.

Quelqu'un aurait une idée ?...

fricasse
27/07/2011, 13h23
Pourtant dans ta CLI il y a bien :

-- Executing [30@default:3] Hangup("SIP/1001-00000006", "") in new stack