Hallo Forum,
Ich habe mal ein kleines Script für die Fritzbox zusammen gestellt.
Das Script beinhaltet eine kleine interne Datenbank(Array) welche eingehende Nummern vergleicht, welche nicht gelistet(aber übertragen werden) und intern bekannt sind.
Sollte vor allen Intressant sein, welche nichts mit Datenbanken am Hut haben.
So wie ich
Hier sind auch einige Codeschnippsel von anderen Usern miteingebaut.
Vorraussetzung Freigabe des Port 1012 an der Fritzbox.
Zum öffnen des Port.
Angeschlossenes Telefon und #965 eingeben und Bestättigungston abwarten.
Zum Schliessen des Port.
Angeschlossenes Telefon und #964 eingeben und Bestättigungston abwarten.
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : Fritzbox.ips.php
Trigger : OnUpdate
Interval : Fritzbox
*/
$Fritzbox = GetValueString("Fritzbox");
$daten = explode(";", $Fritzbox);
// Nummern ohne Eintrag welche aber bekannt sind und übertragen werden (intern).
// Kleine interne Datenbank, erweiterbar.
$array["Nummer"][1] = "06043xxxxxxx";
$array["Name"] [1] = "Rainer";
$array["Nummer"][2] = "0604398xxxxxxx";
$array["Name"] [2] = "Gabi";
$array["Nummer"][3] = "0151xxxxxxxxx";
$array["Name"] [3] = "Rainer Handy";
$array["Nummer"][4] = "0161xxxxxxx";
$array["Name"] [4] = "Rainer Firma";
// Daten einlesen und auswerten
switch($daten[1])
{
case "RING":
$Rufnummer = ($daten[3]);
if(in_array($Rufnummer, $array["Nummer"]))
{
$intern = array_search($Rufnummer, $array["Nummer"]);
COMPort_SendText(50814, chr(27)."ZV".chr(5));
COMPort_SendText(50814, chr(27)."ZL".chr(5).chr(32)."Anruf von " . $array["Name"][$intern].".".chr(0));
return;
}
else
{
$Rufnummer = SucheNummer($Rufnummer);
}
break;
case "DISCONNECT":
SetValueString("Fritzbox","");
return;
break;
}
// Funktion zur Nummersuche und Umwamdlung von Ää,Öö,Üü,ß in das richtige Format
// zum Senden nach Edip muss entsprechend gewandelt werden, je nach Konfig mit \xAdresse oder .(chr).
function SucheNummer($Rufnummer)
{
$url_orig = XXXXXXXXXXXXXXXXXXXXXXXXXXXX
$url = str_replace("#TEL#","$Rufnummer",$url_orig);
//$url = $url_orig.$Rufnummer;
$Ausgabe = fopen("$url", "r");
if (!$Ausgabe){
echo("ERROR : Kann URL nicht öffnen : '$url'
"); // Kann URL nicht öffnen
}
$lineNb = 0;
$searchTag0 = '&Name=';
$searchTag1 = '&Vorname=';
$searchTag2 = '&Strasse';
$gefunden = 0;
while(!$gefunden && !feof($Ausgabe))
{
$lineNb++;
$buffer = fgets($Ausgabe);
if (strpos($buffer, $searchTag0) !== false)
{
$gefunden = 1;
$startLN = (strpos($buffer, $searchTag0)+6);
$endeLN = strpos($buffer, $searchTag1);
$Nachname = substr($buffer, $startLN, ($endeLN-$startLN));
$startFN = (strpos($buffer, $searchTag1)+9);
$endeFN = strpos($buffer, $searchTag2);
$Vorname = substr($buffer, $startFN, ($endeFN-$startFN));
$Name = $Vorname." ".$Nachname."
\r";
$Name = str_replace('+', ' ',$Name);
$Name = str_replace("Ä","Ä",$Name);
$Name = str_replace("ä","ä",$Name);
$Name = str_replace("Ö","Ö",$Name);
$Name = str_replace("ö","ö",$Name);
$Name = str_replace("%F6","ö",$Name);
//$Name = str_replace("%FC","ü",$Name);
$Name = str_replace("%FC","\x81",$Name); //Auflösung Edip
$Name = str_replace("Ü","Ü",$Name);
$Name = str_replace("ü","ü",$Name);
$Name = str_replace("ß","ß",$Name);
SetValueString("Teststring", $Name);
COMPort_SendText(50814, chr(27)."ZV".chr(5));
COMPort_SendText(50814, chr(27)."ZL".chr(5).chr(32)."Anruf von " .$Name.chr(0));
}
else {$Name = "Unbekannt";}
COMPort_SendText(50814, chr(27)."ZV".chr(5));
COMPort_SendText(50814, chr(27)."ZL".chr(5).chr(32)."Anrufer " .$Name.chr(0));
}
fclose($Ausgabe);
return $Name;
}
?>