PDA

Voir la version complète : Variable non transmise au context depuis l'action Originate



titinto
25/08/2014, 16h07
Bonjour à tous,

J'utilise l'AMI pour lancer des appels avec Asterisk.
j'utilise pour cela l'action Originate; tout se passe bien, sauf que mes variables passées avec "Variable" sont vides dans le context.

le manager.conf


[admin]
secret = admin
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
permit=192.168.0.1/255.255.255.0
read = system,call,log,verbose,command,agent,user,origina te
write = system,call,log,verbose,command,agent,user,origina te


code de l'AGI


#!/usr/bin/php -q
<?php

$sys_ip = "127.0.0.1";
$User_str = "admin";
$Secret_str = "admin";
$wrets = "";
$langue = "English";
if($oSocket = fsockopen($sys_ip, 5038, $errnum, $errdesc) or die("Connection to host failed"))
{
fputs($oSocket, "Action: login\r\n");
fputs($oSocket, "Username: $User_str\r\n");
fputs($oSocket, "Secret: $Secret_str\r\n\r\n");

fputs($oSocket, "Action: Originate\r\n");
fputs($oSocket, "Channel: SIP/999\r\n");
fputs($oSocket, "Context: Test\r\n");
fputs($oSocket, "Exten: 100\r\n");
fputs($oSocket, "Priority: 1\r\n\r\n");
fputs($oSocket, "Variable: LANGUE=$langue\r\n");
fputs($oSocket, "Timeout: 10000\r\n");
fputs($oSocket, "Async: true\r\n\r\n");

fputs($oSocket, "Action: Logoff\r\n\r\n");

while (!feof($oSocket)) {
$wrets .= fread($oSocket, 4096);
}
//fclose($oSocket);
echo "ASTERISK MANAGER OUTPUT:$wrets";
}
else
echo "connexion echoue";
?>


Le context "Test"


[Test]
exten => 100,1,Background(custom/${LANGUE}/Bienvenu)


Merci de me venir en aide :)

jean
25/08/2014, 17h48
essaie sans espace apres les :
dans un vieux script, j'ai retrouvé Variable=nomdelavariable=valeur - à essayer aussi

titinto
25/08/2014, 21h12
essaie sans espace apres les :
dans un vieux script, j'ai retrouvé Variable=nomdelavariable=valeur - à essayer aussi

Merci jean
J'ai essayé sans l'espace après le : , et j'ai aussi essayé Variable=nomdelavariable=valeur, mais ni l'un ni l'autre ne marche.
J'utilise Asterisk 11.7.0, sur ubuntu 14.04

Merci

titinto
01/09/2014, 16h21
C'est fou comme une petite erreur peut passer inaperçue.
En fait cette partie du code


fputs($oSocket, "Priority: 1\r\n\r\n");
fputs($oSocket, "Variable: LANGUE=$langue\r\n");

devait plutôt être comme ça:


fputs($oSocket, "Priority: 1\r\n");
fputs($oSocket, "Variable: LANGUE=$langue\r\n");


Donc c'est le
\r\n en plus après le Priority qui causait le problème :)