Dann versuch dich mal an meinem Script :). Ein gemischt aus verschiedenen Scripten und Schnipseln aus dem Forum.
Als Ziel Script in die Registervariable, außerdem musst du ein paar Variablen anlegen und natürlich dein FB Passwort eintragen ;).
Bei $anrufliste findest du ein wenig CSS zum Design anpassen ;).
<?
if ($IPS_SENDER == "Execute") {
echo "Dieses Script kann nicht von Hand gestartet werden.";
return;
}
$debug = true;
//$debug = false;
if ($debug) IPS_LogMessage(IPS_GetName($IPS_SELF), "Script START");
// Normaler Scriptdurchlauf, nachdem das Script durch die RegVar getriggert wurde
// Daten aus Registervariable lesen
$daten = explode(";", $IPS_VALUE);
// Datum/Uhrzeit mit ausgeben
define ("datetime", $daten[0]);
// Daten aus Registervariable auswerten
switch($daten[1]) {
#Ab hier Auswertung für Anrufer-------------------------------------------------
case "RING":
$Name = SucheNummer2($daten[3]);
if ($debug) IPS_LogMessage(IPS_GetName($IPS_SELF), "Nummer: " . $daten[3] . " Name : " . $Name);
$interneNummer = SucheIntern($daten[4]);
SetValue(53258 /*[.Kommunikation\Anrufe\Eingehender Anruf]*/ , "Eingehender Anruf ".datetime. "
an ".$interneNummer."
von ".$Name);
SetValue(42423 /*[.Kommunikation\Anrufe\Letzter Anruf]*/ , "Letzter Anruf ".datetime. "
an ".$interneNummer."
von ".$Name);
break;
// Auswertung für ausgehende Anrufe
case "CALL":
$interneNummer = SucheIntern($daten[4]);
$externeNummer = $daten[5];
SetValue(55304 /*[.Kommunikation\Anrufe\Ausgehender Anruf]*/, "Ausgehender Anruf ".datetime."
von ".$interneNummer."
an ".$externeNummer);
break;
#Ab hier Auswertung für Anrufliste----------------------------------------------
case "DISCONNECT":
// Dashboard Anzeige sofort nach Auflegen leeren
SetValue(53258 /*[.Kommunikation\Anrufe\Eingehender Anruf]*/, "");
SetValue(55304 /*[.Kommunikation\Anrufe\Ausgehender Anruf]*/, "");
// Puffer (Fritz.Log Port) löschen
RegVar_SetBuffer(55775 /*[.Kommunikation\FB_LogdatenRegister]*/, ""); #ANPASSEN!
$anrufliste="";
$fritzbox_ip = 'fritz.box';
$fritzgui = 'http://fritz.box/cgi-bin/webcm';
$fritzseite = '../html/de/menus/menu2.html';
$filename = IPS_GetKernelDir()."\\webfront\\user\\Fritzbox\\Anrufliste.csv"; #ANPASSEN!
$password = '..........'; #ANPASSEN!
$ein = '1';
$aus = '0';
$ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$login = curl_exec($ch);
curl_close($ch);
$session_status_simplexml = simplexml_load_string($login);
if ($session_status_simplexml->iswriteaccess == 1) {
$SID = $session_status_simplexml->SID;
} else {
$challenge = $session_status_simplexml->Challenge;
$response = $challenge . '-' . md5(mb_convert_encoding($challenge . '-' . $password, "UCS-2LE", "UTF-8"));
$login = array('getpage' => $fritzseite, 'login:command/response' => $response);
$sendlogin = http_post_fields($fritzgui, $login);
preg_match('@<input type="hidden" name="sid" value="([A-Fa-f0-9]{16})" id="uiPostSid">@i', $sendlogin, $matches);
if (isset($matches[1]) && $matches[1] != '0000000000000000') {
$SID = $matches[1];
} else {
echo "Fehler: Login fehlgeschlagen";
return;
}
}
//Anrufliste aktualisieren
$gotopage = array('getpage' => $fritzseite,'sid' => $SID, 'var:menu' => 'home', 'var:pagename' => 'foncalls');
$getnewlist = http_post_fields($fritzgui, $gotopage);
//Anrufliste abholen
$anrufliste = http_post_fields($fritzgui, array('getpage' => '../html/de/FRITZ!Box_Anrufliste.csv', 'sid' => $SID));
$anrufliste = explode(';', $anrufliste, 4);
$anrufliste = $anrufliste[3];
$fileHandle = @fopen($filename, 'wb+');
@fwrite($fileHandle, $anrufliste);
@fclose($fileHandle);
//Anrufliste einlesen
$filename = "../webfront/user/Fritzbox/Anrufliste.csv";
$id = @fopen($filename, "r");
while ($data = fgetcsv($id, filesize($filename),";")) $table[] = $data;
@fclose($id);
//Anrufliste auswerten
setlocale (LC_ALL, 'German_Germany.1252');
$s1 = strftime("Aktualisiert am %A, den %d.%m.%y, um %H:%M Uhr");
$anruferliste='<html><head><style type="text/css">body { background-color:#D4D0C8; font: 10pt Arial; margin:0; padding:10px 5px 0px 5px;} </style></head><body scroll="no"><table width="780px" border="1" cellspacing="0" cellpadding="4">
<tr><td width="20%"><b>Datum</b></td><td width="40%"><b>Anrufer</b></td><td width="15%"><b>Nummer</b></td><td width="5%"><b>Angen.</b></td><td width="15%"><b>Ziel</b></td></tr>';
array_shift($table); #die ersten drei Zeilen aus dem Array löschen
array_shift($table);#die ersten drei Zeilen aus dem Array löschen
array_shift($table);#die ersten drei Zeilen aus dem Array löschen
$max_row = 0;
foreach($table as $row) { #Rest der Tabelle auswerten
if ($row[0]<> 3) { #Abgehende Anrufe ausblenden
if (($max_row++) >= 15) {break;}
$Rufnummer = $row[3]; #Rufnummer aus Array holen
$word_count = str_word_count($row[2]);
if ($word_count == 0) {
$row[2] = SucheNummer2($Rufnummer);
}
if ($row[0] == 1) $row[0]="Ja"; #Angenommen JA
else $row[0]="Nein"; #Angenommen Nein
$pos = (strpos($row[5], ':')+1);
$an_nummer = SucheIntern( substr($row[5], $pos));
if ($row[3] == "") $row[3] = "Keine Nummer";
if ($row[2] == $Rufnummer ) $row[2] = "Unbekannt";
$row[2] = substr($row[2], 0, 35);
$anruferliste= $anruferliste.'<tr><td>'.$row[1].'</td><td>'.$row[2].'</td><td>'.$row[3].'</td><td>'.$row[0].'</td><td>'.$an_nummer.'</td></tr>';
}
}
$anruferliste =$anruferliste.'</table><small>'.$s1.'</small></body></html>';
setvalue(23324 /*[.Kommunikation\Anrufe\Anrufliste]*/, $anruferliste); #ANPASSEN! IPS Variable für speichern der Liste
$logout = array('getpage' => $fritzseite, 'sid' => $SID, 'security:command/logout' => 'logout');
$sendlogout = http_post_fields($fritzgui, $logout);
return;
break;
}
#--------------------------------------------------------------------------------
function SucheNummer($Rufnummer)
{
$url_orig="http://www.klicktel.de/inverssuche/index/search?method=searchSimple&_dvform_posted=1&phoneNumber=#TEL#";
$url = str_replace("#TEL#","$Rufnummer",$url_orig);
$Ausgabe = fopen($url, "r");
if (!$Ausgabe) {
echo("ERROR : Kann URL nicht öffnen : '$url'
");
}
$lineNb = 0;
$searchTag0 = 'namelink';
$searchTag1 = '<strong>';
$searchTag2 = '</strong>';
$gefunden = 0;
while(!$gefunden && !feof($Ausgabe)) {
$lineNb++;
$buffer = fgets($Ausgabe);
if ( substr_count( $buffer, "Die Ergebnisse wurden durch Verkürzung der eingegebenen Rufnummer gefunden." )) {
$gefunden = 1;
$row[2]= "unbekannt 1";
} elseif (strpos($buffer, $searchTag0) != false) {
$gefunden = 1;
$startLN = strpos($buffer, $searchTag1) + strlen($searchTag1);
$endeFN = strpos($buffer, $searchTag2) ;
$Name = substr($buffer, $startLN, $endeFN - $startLN) ;
$Name = html_entity_decode($Name);
$row[2]=$Name;
} else
$row[2]="unbekannt 2"; #Keine Nummer gefunden
return;
}
}
function SucheNummer2($Rufnummer) // via Das Örtliche
{
//$debug = true;
$debug = false;
// Nummern ohne Eintrag im öffentlichen Telefonbuch welche aber bekannt sind und übertragen werden ($intern).
// unendlich erweiterbar
$array["Nummer"][1] = "03012345678";
$array["Name"] [1] = "Angela Merkel";
$array["Nummer"][2] = "03012345679";
$array["Name"] [2] = "Verteidigungsminister";
if(in_array($Rufnummer, $array["Nummer"])) {
$intern = array_search($Rufnummer, $array["Nummer"]);
$Name = $array["Name"][$intern];
if ($debug) IPS_LogMessage("FB_Anrufliste", "SucheNummer2: Rufnummer INTERN gefunden, ".$Name);
} else {
$url="http://www.dasoertliche.de/Controller";
$query=array(
"form_name"=>"search_inv",
"ph"=>$Rufnummer
);
$data=http_post_fields($url,$query);
if(preg_match('/na: "(.*)"/', $data, $result)) {
// Haben wir ein Ergebniss?
$Name=$result[1];
if ($debug) IPS_LogMessage("FB_Anrufliste", "SucheNummer2: Rufnummer im Örtlichen gefunden, ".$Name);
} else {
$Name=$Rufnummer;
if ($debug) IPS_LogMessage("FB_Anrufliste", "SucheNummer2: Rufnummer NICHT gefunden, ".$Name);
}
}
Return $Name;
}
function SucheIntern($Nummer) {
switch( $Nummer ) {
case "1234567":
$Intern = "Privat";
break;
case "1234568":
$Intern = "Fax";
break;
default:
$Intern =$Nummer;
break;
}
return $Intern;
}
?>