Auswertung Fritzbox per Datenbank

Nein … lies doch bitte mal meinen Text genau durch …

Ich lasse die anrufende Nummer per Reversesuche identifizieren und Klicktel liefert auch ein Ergebnis … aber der Name gehört nicht zur anrufenden Nummer, sondern ist der Name einer Nummer die Klicktel (auf Grund von „nicht finden“ der eigentlichen Nummer) selbst gewählt hat!!

Gib mal von Hand auf der Seite diese Nummer ein: 072191181010, dann siehst du was ich meine!

Jens

Warum machst Du es nicht einfach mal so, wie beschrieben.

Das ist das(dein) Problem, es funktioniert so.

Das hatte ich auch :slight_smile:

Andernfalls, werden wir eine Lösung finden :wink:

Deine Datenbanken kenne ich nicht !!!

Hier noch mal ein Script

als Beispiel :wink:

<?
/*
*******************************
 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] = "060xxxxxx";
  $array["Name"]  [1] = "Rainer";
  $array["Nummer"][2] = "06xxxxxxxxx";
  $array["Name"]  [2] = "Gabi";
  $array["Nummer"][3] = "015xxxxxxxx";
  $array["Name"]  [3] = "Rainer Handy";
  $array["Nummer"][4] = "0161xxxxxxx";
  $array["Name"]  [4] = "Rainer Firma";
  $array["Nummer"][5] = "";
  $array["Name"]  [5] = "Unbekannt";
  $array["Nummer"][6] = "xxxxxxxxxxxx";
  $array["Name"]  [6] = "xxxxxxxxxx";

// Daten einlesen und auswerten
switch($daten[1])
{
  case "RING":
   $Rufnummer = ($daten[3]);
     if(in_array($Rufnummer, $array["Nummer"]))
      {
       $intern = array_search($Rufnummer, $array["Nummer"]);
       XBee_SendBuffer(49578, chr(27)."ZV".chr(5));
       XBee_SendBuffer(49578, 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 = xxxxxxxxxxxxxxxxxx#TEL#";
   $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);
    echo $buffer;
      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);
        XBee_SendBuffer(49578, chr(27)."ZV".chr(5));
        XBee_SendBuffer(49578, chr(27)."ZL".chr(5).chr(32)."Anruf von " .$Name.chr(0));
        }
   }
   fclose($Ausgabe);
   return $Name;
}

?>

Ok, laß es mich anders formulieren … ich glaub du verstehst nicht was ich vor habe :frowning:

Anruf kommt -> schaue in DB ob vorhanden
Ergebnis: Nicht vorhanden, also -> Reversesuche
Reversesuche liefert Ergebnis -> Ergebnis in Adressdatenbak und Anrufliste

Aber das Ergebnis ist falsch … die Rufnummer wurde von Klicktel verkürzt, also ist der eigentliche Anrufer jetzt unter einem falschen Namen gespeichert.

Das heißt ich müßte vor der Auswertung der Searchtags hier nach suchen:

Die Ergebnisse wurden durch Verkürzung der gesuchten Rufnummer

Und bei Ergebnis == true, abbrechen und $Name == „Unbekannt“ ausgeben, oder wie macht man das am einfachsten?

Jens

Hallo Jens,

[QUOTE]Ok, laß es mich anders formulieren … ich glaub du verstehst nicht was ich vor habe
[/QUOTE]

Richtig. wir reden hier von Arrays und nicht von Datenbanken, wovon ich keine Ahnung habe.

Anruf kommt -> schaue in DB ob vorhanden
Ergebnis: Nicht vorhanden, also -> Reversesuche
Reversesuche liefert Ergebnis -> Ergebnis in Adressdatenbak und Anrufliste

keine Ahnung, da Datenbank.

Aber das Ergebnis ist falsch … die Rufnummer wurde von Klicktel verkürzt, also ist der eigentliche Anrufer jetzt unter einem falschen Namen gespeichert.

Bei mir nicht, da über Array ausgelesen wird.

Sorry, da müssen Datenbank Profis ans Werk.

Gerd oder wer auch immer.

Sorry Rainer … aber das hat in dem Moment noch gar nix mit Datenbanken zu tun, aber egal … :stuck_out_tongue:

Lassen wir das … ich mache da einen eigenen Thread auf, dann brauchst du dich nicht damit rum ärgern.

Trotzdem danke für deine Mühe

Jens

Sorry Rainer … aber das hat in dem Moment noch gar nix mit Datenbanken zu tun, aber egal .

Nö, ist ja kein Thema, mach das mal.

Anruf kommt -> schaue in DB ob vorhanden

Leider weis ich nicht, wonach ich noch suchen soll.

Ok … letzter Versuch …

Du hast die Funktion SucheNummer() wofür eingebaut? Ich nehme doch mal an, um unbekannte Rufnummern zu identifizieren, oder?

Genau dafür nutze ich sie auch, nur etwas erweitert:

function SucheNummer($Rufnummer)
{
   $url_orig = "http://www.klicktel.de/inverssuche/backwardssearch.html?newSearch=1&boxtype=backwards&sid=fps7pcduq8779vnlvglv8scr60&vollstaendig=#TEL#";
   $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=';
   $searchTag3 = '&Hausnummer=';
   $searchTag4 = '&HausnummerZus=';
   $searchTag5 = '&PLZ=';
   $searchTag6 = '&Ort=';
   $searchTag7 = '&xcode=';
   $gefunden   = 0;
   while(!$gefunden && !feof($Ausgabe))
   {
    $lineNb++;
    $buffer = fgets($Ausgabe);
    //echo $buffer;
      if (strpos($buffer, $searchTag0) !== false)
        {
        $gefunden = 1;
        $startNN  = (strpos($buffer, $searchTag0)+6);
        $endeNN   =  strpos($buffer, $searchTag1);
        $Nachname = substr($buffer, $startNN, ($endeNN-$startNN));
        $startVN  = (strpos($buffer, $searchTag1)+9);
        $endeVN   =  strpos($buffer, $searchTag2);
        $Vorname  = substr($buffer, $startVN, ($endeVN-$startVN));
        $startSTR = (strpos($buffer, $searchTag2)+9);
        $endeSTR  =  strpos($buffer, $searchTag3);
        $Strasse  = substr($buffer, $startSTR, ($endeSTR-$startSTR));
        $startHN  = (strpos($buffer, $searchTag3)+12);
        $endeHN   =  strpos($buffer, $searchTag4);
        $Hausnr   = substr($buffer, $startHN, ($endeHN-$startHN));
        $startPLZ = (strpos($buffer, $searchTag5)+5);
        $endePLZ  =  strpos($buffer, $searchTag6);
        $PLZ      = substr($buffer, $startPLZ, ($endePLZ-$startPLZ));
        $startOrt = (strpos($buffer, $searchTag6)+5);
        $endeOrt  =  strpos($buffer, $searchTag7);
        $Ort      = substr($buffer, $startOrt, ($endeOrt-$startOrt));
        $Name = array($Vorname,$Nachname,$Strasse,$Hausnr,$PLZ,$Ort);
        //$Name = $Vorname." ".$Nachname."\r".$Strasse." ".$Hausnr."\r".$PLZ." ".$Ort."
\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("Ãœ","Ü",$Name);
        $Name = str_replace("ü","ü",$Name);
        $Name = str_replace("ß","ß",$Name);

        }
        else {$Name = "Unbekannt";}
       }
   fclose($Ausgabe);
   return $Name;
}

Damit bekomme ich entweder ein Ergebnis als Array, in dem die Daten stehen oder ein „Unbekannt“ … soweit klar?

Wie ich das Ergebnis weiter verwerte ist im Moment völlig uninteressant!!!

Die Nummer, die ich weiter vorn angegeben habe ist ein Faxdienst von Web.de … wird aber über Klicktel als Name incl. Adresse eines Immobilienbüros zurückgegeben … was leider FALSCH ist, da Klicktel die Rufnummer verändert(verkürzt) hat. Ein „unbekannt“ kommt auch nicht zu Stande, da ja etwas gefunden wurde.

Jetzt müßte man (so denke ich mir das) den

$Buffer

nach folgendem String durchsuchen

Die Ergebnisse wurden durch Verkürzung der gesuchten Rufnummer
und wenn der gefunden wird als Ergebnis ein

$Name = "unbekannt"

zurück geben.

Gruß
Jens

Würde das hier gehen?:


...
$searchTag8 = "Die Ergebnisse wurden durch Verkürzung der gesuchten Rufnummer";

if (strpos($buffer, $searchTag0) !== false || strpos($buffer, $searchTag8) === false)
...

else
{$Name = "Unbekannt";}

Jens

Der letzte Wink

Ich will dir ja nicht auf die Füsse treten :slight_smile:

Verstanden hast Du es aber immer noch nicht.

Dein Script kannst Du so nicht gebrauchen.

Außerdem findet man unter der Suche dazu genau die Funktion, die ich einwenig eingedeutscht habe. Mehr nicht.

Deswegen steht auch am Anfang Hier sind auch einige Codeschnippsel von anderen Usern miteingebaut.

Also.

Noch ein kleiner Tipp. Wenn Du dir die Auswertung noch mal anschaust, siehst Du obendrüber die Nummer, welche entweder richtig oder abgeschnitten angezeigt wird. Diese brauchst Du eigentlich nur zu vergleichen. Eingang => Ausgang.

Hallo Rainer, bekomme bei diesem Script die Fehlermeldung „Parse error: parse error, unexpected T_VARIABLE in [.allgemein\Test Script] on line 49“ was habe ich vergessen. Habe eigendlich nur die Variable „Fritzbox“ angelegt und die XBee Befehle rausgenommen.

Mirco

Ich weiss zwar nicht was bei Dir jetzt in zeile 49 steht, aber änder das mal um.

SetValueString(xxxxx, $Name); 

xxxxx = ID der Variable.

Woher auch. :smiley:

 $url = str_replace("#TEL#","$Rufnummer",$url_orig);

Mirco

Das man Dir alles aus der Nase ziehen muss :frowning:

$url_orig = xxxxxxxxxxxxxxxxxx#TEL#"; 

ist aus rechtlichen Gründen ausgexxxxxxxxxt :smiley:

Jetzt mach Dir mal Gedanken wo oder was darin hätte stehen können.

Bin mir aber sicher, das im Forum noch irgendwo die Adresse steht.

Nach 1sdt Forumssuche leider nicht gefunden. PM ?:confused:

Beitrag Nr. 28 in diesem Thread.

Man könnte ein neues Spiel erfinden: Forumcaching.