Bonjour, pas obligatoire, il y a quelques exemples de script php sur le wiki voip-info.org
Bonjour, pas obligatoire, il y a quelques exemples de script php sur le wiki voip-info.org
Bonjour,
J'ai le script AGI mais je n'arrive pas à récupérer les variables de puis la base de donnée:
voici mon script:
function connect_db() {
$db_connection = mysql_connect ('localhost', 'root', 'pwd') or die (mysql_error());
$db_select = mysql_select_db('renvoiPlus') or die (mysql_error());
}
connect_db();
$query1 = "SELECT * FROM `renvoiPlus` WHERE `extension` ='".substr($agi[extension],1)."' ORDER BY RAND()";
$query_result1 = mysql_query($query1) or die("Erreur lors de l'exécution de la requête.\nMySQL a retourné :\n". mysql_error());
$row_count = mysql_num_rows($query_result1);
$row1 = @mysql_fetch_array ($query_result1);
If ($row_count !=0 ) {
$pin1 = $row1[extfinal1];
fwrite(STDOUT,"SET CALLERID <0".$row1[extfacturable].">\n");
fwrite(STDOUT,"SET VARIABLE NEWEXT". $pin1." \n");
}
dans le fichier extension.conf, j'ai la ligne suivante:
exten=> 01xxxxxxxx,n,DIAL(SIP/0${NEWEXT}@out)
la variable NEWEXT est Null ??
Quelqu'un peut m'aider svp?
pas de réponse ???
Bonjour, si dans le fichier php tu le log dans le fichier texte, est ce que tu le retrouves ?
Est ce que tu peux au lieu de passer la variable construire votre scipt avec un appel direct depuis le script php ?
Un vieux exemple:
La page à regarder pour les exemples : http://www.voip-info.org/wiki/view/Asterisk+AGI+php#!/usr/bin/php4 -q
<?php
ob_implicit_flush(true);
set_time_limit(6);
$in = fopen("php://stdin","r");
$stdlog = fopen("/var/log/asterisk/my_agi.log", "w");
// toggle debugging output (more verbose)
$debug = false;
// Do function definitions before we start the main loop
function read() {
global $in, $debug, $stdlog;
$input = str_replace("\n", "", fgets($in, 4096));
if ($debug) fputs($stdlog, "read: $input\n");
return $input;
}
function errlog($line) {
global $err;
echo "VERBOSE \"$line\"\n";
}
function write($line) {
global $debug, $stdlog;
if ($debug) fputs($stdlog, "write: $line\n");
echo $line."\n";
}
// parse agi headers into array
while ($env=read()) {
$s = split(": ",$env);
$agi[str_replace("agi_","",$s[0])] = trim($s[1]);
if (($env == "") || ($env == "\n")) {
break;
}
}
// main program
echo "VERBOSE \"Here we go!\" 2\n";
read();
errlog("Call from ".$agi['channel']." - Calling phone");
read();
write("SAY DIGITS 22 X"); // X is the escape digit. since X is not DTMF, no exit is possible
read();
write("SAY NUMBER 2233 X"); // X is the escape digit. since X is not DTMF, no exit is possible
read();
// clean up file handlers etc.
fclose($in);
fclose($stdlog);
exit;
?>
Bonjour,
Même dans les logs j'ai rien, voilà exactement mon script et je pense que ce n'est pas un problème de syntaxe.
Merci pour votre aide#!/usr/bin/php5 -q
<?php
ob_implicit_flush(true);
set_time_limit(6);
$in = fopen("php://stdin","r");
$stdlog = fopen("/var/log/asterisk/my_agi.log", "w");
function read() {
global $in, $debug;
$input = str_replace("\n", "", fgets($in, 4096));
return $input;
}
function errlog($line) {
global $err;
echo "VERBOSE \"$line\"\n";
}
function write($line) {
global $debug;
echo $line."\n";
}
// parse agi headers into array
while ($env=read()) {
$env = str_replace("\"","",$env);
$s = split(": ",$env);
$agi[str_replace("agi_","",$s[0])] = trim($s[1]);
if (($env == "") || ($env == "\n")) {
break;
}
}
errlog("Start ".$agi[request]." v1.1");
function connect_db() {
$db_connection = mysql_connect ('localhost', 'root', 'pwd') or die (mysql_error());
$db_select = mysql_select_db('renvoiPlus') or die (mysql_error());
}
// main program
errlog("Call from ".$agi[callerid].".");
errlog("Call to ".$agi[extension].".");
connect_db();
$query1 = "SELECT * FROM `renvoiPlus` WHERE `extension` ='".substr($agi[extension],1)."' ORDER BY RAND()";
$query_result1 = mysql_query($query1) or die("Erreur lors de l'exécution de la requête.\nMySQL a retourné :\n". mysql_error());
$row_count = mysql_num_rows($query_result1);
$row1 = @mysql_fetch_array ($query_result1);
If ($row_count !=0 ) { // caller is authenticated based on ANI
$pin1 = $row1[extfinal1];
fwrite(STDOUT,"SET CALLERID <".$row1[extfacturable].">\n");
fwrite(STDOUT,"SET VARIABLE NEWEXT $pin1\n");
}
Else {
fwrite(STDOUT,"SET VARIABLE NEWEXT 999999999999\n");
}
errlog("Call from 0".$row1[extfacturable].".");
errlog("Call to ".$row1[extfinal1].".");
fclose($in);
fclose($stdlog);
exit;
?>
Dans ce cas je te propose par commencer par plus simple, le vieux script cité plus haut fonctionne bien, tu peux commencer par, par exemple de l'utiliser pour capturer l’entrée de dtmf et le sortir sur la console asterisk.
le problème c'est que le script que j'ai cité avant fonctionne bien avec asterisk 1.6 mais je l'utilise dans asterisk 1.8 et je comprends pas pourquoi il fonctionne pas.
Je ne vais par vérifier votre code, pour commencer savoir pourquoi construisez vous un mini script avec une application très simple, et à partir de la chrerchez la difference.
Je vous conseille de régarder coté agi version 1.8 et ses changements par rapport 1.6 https://wiki.asterisk.org/wiki/displ...nagerInterface
Trouver des exemples de AGI pour 1.8 est également une bonne idée.
Bonjour,
J'ai activé les debugs CLi dans asterisk et quand je fais un appel, j'obtiens cette erreur: AGI Rx << Fatal error: Call to undefined function mysql_connect() in /var/lib/asterisk/agi-bin/renvoiPlus.php on line 37
donc c'est bien le problème de la fonction mysql_connect() mais cette fonctionne avec mysql et PHP par contre avec Asterisk non.
avez-vous une idée svp ???