-
Etann38 je t'explique !
J'ai une BD sous Mysql qui a 3 tables : client(code_clt,nom_clt), compte(code_cpt,solde_courant, solde_debiteur) et phone(numero,code_pin,code_clt,code_cpt)
J'ai écris un script agi qui doit permettre de récupérer la valeur du solde courant de l'appellant (Callerid(num)) lorsqu'il sollicite cela comme je vais l'indiquer dans mon Dialplan , mais je coince grave ! regarde mon script : solde.agi
#!/usr/bin/php5
<?php
/*
//temps limite d'execution du script 30 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 log avec droit d'écriture
$stdlog= fopen("/var/log/asterisk/infosolde.log", "w");
// creation des fichiers STDIN, STDOUT et STDERR qui se chargera de toutes les communications
//entre Asterisk et notre script php
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'));
$pdo_options [PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=blalla', 'admin', 'admin', $pdo_options);
//On fait une requete du numero
$req = $bdd->prepare('SELECT numero FROM phone WHERE numero = :callid');
// va verifier s'il existe
$donnees = $req->fetch();
// $reqsolde=$bdd->prepare("SELECT solde_courant as sd FROM phone,compte WHERE phone.code_cpt=compte.code_cpt AND numero=$callid");
$reqsolde->execute(array(':numero'=>$[callid]));
$reqsolde->execute();
$row= $reqsolde ->fetch();
$result_solde='<tr><td>Le solde du numero </td>'.$callid.'<td> est de </td>'.$row['sd'].'<td> FCFA</td></tr>';
echo $result_solde;
fclose($stdlog);
$bdd =null;
?>
Mon dialplan :
exten => s,1,Festival(Please enter your phone number to check your request, thanks you)
exten => s,2,Read(callid)
exten => s,3,Gotoif($[${callid} = CALLERID(num)]?5:2)
exten => s,4,Festival(You have enter the correct number)
exten => s,5,agi(/usr/share/asterisk/agi-bin/solde.agi, ${callid})
exten => s,6,Festival(you are welcome)
exten => s,7,Hangup()
Ce que je voudrais savoir c'est comment faire pour passer en paramètre le numero de l'appellant pour que le script puisse réssir son execution, car vous tu peux le constater à la ligne 5 j'ai passé ${callid} en paramètre mais lorsque j'ouvre la CLI je n'ai aucun resulat mais en revanche tout le dialplan ci-dessus s'execute jusqu'au Hangup()...
En passant lorsque j'ouvre le fichier solde.agi et que je fixe le callid ($callid=23) et que j'execute le dialplan je vois apparaitre dans la CLI la valeur exacte qui se trouve dans ma BD du solde courant pour ce numero
J'aimerais un coup de main, Merci l'ami..........
"Votre Atitude determinera votre Altitude dans la vie !" ![Jap](images/smilies/jap.gif)
Règles de messages
- Vous ne pouvez pas créer de nouvelles discussions
- Vous ne pouvez pas envoyer des réponses
- Vous ne pouvez pas envoyer des pièces jointes
- Vous ne pouvez pas modifier vos messages
-
Règles du forum