Essayes avec les AGI.
Voici un AGI CIDLookup basé sur LDAP :
Code:
#!/usr/bin/php -q
<?php
$PhoneNumber=$argv[1] ;
set_time_limit(1);
ob_implicit_flush(false);
error_reporting(0);
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'));
}
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]);
}
# print all AGI variables for debugging purposes
foreach($agi as $key=>$value)
{
fwrite(STDERR,"-- $key = $value\n");
fflush(STDERR);
}
if($PhoneNumber == "asterisk") {
fwrite(STDOUT,"SET CALLERID \"Inconnu <Inconnu>\"\"\n");
fflush(STDOUT);
die("Don't touch this CID !");
}
# Script Beginning
$server = "****" ;
$port = "389";
$rootdn = "****";
$rootpw = "****";
$ds = ldap_connect($server); // On suppose que le serveur LDAP est sur cet hote
if (!$ds) { die("can't connect to LDAP server"); }
$r = ldap_bind($ds,$rootdn,$rootpw);
// Annuaire
$dir_dn = "ou=***, dc=***, dc=***";
$dir_restriction = array( "displayName", "mobile", "telephoneNumber");
$PhoneNumberSearch = '0'.$PhoneNumber ;
$filtre="(|(mobile=$PhoneNumberSearch)(telephoneNumber=$PhoneNumberSearch))";
$dir_sr = ldap_search($ds, $dir_dn, $filtre, $dir_restriction);
$info = ldap_get_entries($ds, $dir_sr);
$CallerName = $info[0]["displayname"][0] ;
if($CallerName)
{
fwrite(STDOUT,"SET CALLERID \"$CallerName <$PhoneNumber>\"\"\n");
fflush(STDOUT);
} else {
fwrite(STDOUT,"SET CALLERID \"$PhoneNumber <$PhoneNumber>\"\"\n");
fflush(STDOUT);
}
?>
Et un deuxième de test qui utilisait (dans le cadre de tests uniquement !) la base reverse Infobel
Code:
#!/usr/bin/php -q
<?php
$DirectoryURL="http://www.infobel.com/fr/france/Inverse.aspx?q=France&qPhone=" ;
$PhoneNumber=$argv[1] ;
set_time_limit(60);
error_reporting(0);
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'));
}
$DirectoryPage=file_get_contents($DirectoryURL.$PhoneNumber) ;
if(preg_match("/<div class=\"result-item\"><h2>1. (.*)<!--/i",$DirectoryPage,$matches))
{
$currentTemp=$matches[1];
}
if($currentTemp)
{
echo "SET CALLERID \"$currentTemp <$PhoneNumber>\"" ;
}
?>
N'hesites pas à faire des logs dans tes AGI qui contiennent le format du numéro reçu.