Anrufname und Radiolautstärke mit Fritzbox

ich mühe mich wieder mal ziemlich erfolglos mit bestehenden Scripts ab. Ich möchte, resp. meine Frau möchte, dass bei einem eingehenden Anruf der Name aus dem Fritz-Telefonbuch angezeigt wird und die Musik vorübergehend stumm geschaltet wird. Grundlage dafür wäre ja gemäss beiliegendem Bild vorhanden. Aber ich krieg da nichts brauchbares hin. Hätte jemand Lust, mir dabei zu helfen?

Das Thema mit der Lautstärke, hatten wir doch schon mal. Du brauchst eine Integer Variable, welche dir deine letzte Lautstärke speichert, mehr nicht.

switch($daten[1])
{
   case "RING":
   $Rufnummer = $daten[3];
   $lautstaerkeRing = GetValue(49573 /*[WebRadio\Volume]*/);
   SetValue(30611 /*[Fritzbox\Anrufe\LautstärkeMediaplayer\letzteLautstärke]*/, $lautstaerkeRing);
   WAC_SetVolume(44140 /*[WebRadio]*/, 5);
   //IPS_RunScript(23169 /*[Fritzbox\Anrufe\LautstärkeMediaplayer]*/);
   break;

   case "DISCONNECT":
   $lautstaerke = GetValue(30611 /*[Fritzbox\Anrufe\LautstärkeMediaplayer\letzteLautstärke]*/);
   WAC_SetVolume(44140 /*[WebRadio\Web Radio]*/, $lautstaerke);
   break;
}

Hier das Script(23169), welches dir die Lautstärke bei Anruf leiser stellt. Du kannst auch alles in ein Script schreiben. :slight_smile:

<?
$lautstaerke = GetValue(49573 /*[WebRadio\Volume]*/);
SetValue(30611 /*[Fritzbox\Anrufe\LautstärkeMediaplayer\letzteLautstärke]*/, $lautstaerke);

WAC_SetVolume(44140 /*[WebRadio]*/, 5);


?>

Die IDs noch anpassen und fertig.

Hab wieder mal versucht, die Anrufliste mit der Nummerdes eingehenden Anrufs zu verknüpfen. Aber… :mad:

Hat da jemand was fertiges?

Hallo jbu,
so ein Zufall ich bin selber seit zwei Tagen dran die Anzeige des Anrufers in einem PopUp Fenster zu realisieren. Es läuft zur Zeit nur mit einem internen Telefonbuch, welches nicht die Lösung ist, die ich selber wünsche. Es ist ein großer Aufwand das Tefeonbuch aus der FritzBox zu übernehmen und aktuel zu halten. Habe bei mir Freetz auf der Box drauf, will mal ausprobieren den Callmonitor für den Zweck ein zusetzen. Bei der DBox klappt es wirklich gut. Es wäre Klasse IPS und Freetz zu kopplen.

Vielleicht erlöst uns der Rainer von dem Problem :smiley: Sonst muss ich mich weiter mit php prügeln. Habe bis jetzt nur mit C++ Erfahrung gehabt.:frowning:

Hier habt ihr was zum spielen. :wink:

<?

if ($IPS_SENDER == "Variable")
{
    $fritzbox_ip = 'fritz.box';
    $fritzgui    = 'http://fritz.box/cgi-bin/webcm';
    $fritzCfg    = 'http://fritz.box/cgi-bin/firmwarecfg';
    $fritzseite  = '../html/de/menus/menu2.html';
    $telefonbuch = 2; // Auswahl des Telefonbuches
    $password    = 'xxxxx';

    $ch = curl_init('http://' . $fritzbox_ip . '/cgi-bin/webcm?getpage=../html/login_sid.xml');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $login = curl_exec($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;
        }
    }

    curl_setopt($ch, CURLOPT_URL, $fritzCfg);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('sid' => $SID, 'PhonebookId' => $telefonbuch, 'PhonebookExportName' => 'Telefonbuch', 'PhonebookExport' => ""));
    $book = curl_exec($ch);
   curl_close($ch);

    $logout = array('getpage' => $fritzseite, 'sid' => $SID, 'security:command/logout' => 'logout');
    $sendlogout = http_post_fields($fritzgui, $logout);
}

$xml = simplexml_load_string($book);

foreach($xml->phonebook->contact as $nummer => $value)
{
    $nummern = $value->telephony->number."
";
    $namen = $value->person->realName."
";
    $daten[] = array(0 => trim($nummern), 1 => trim($namen));

}

$rufnummer = '3542658'; // Nummer vom Anrufer, Variable z.B. mit GetValue und Trigger auf das Script

for($i=0; $i<count($daten); $i++)
{
    if($daten[$i][0] == $rufnummer)
    {
        echo $daten[$i][1]; // Ausgabe des Namen, z.B in Variable schreiben mit SetValue(xxxxx, $daten[$i][1]);
    }
}

?>

ging ja wieder mal flott :):):slight_smile:

Fragen:
die Telefonbuchnummer, ist das diese? gPhoneBooks.books[0] = {

Wenn ich dann das Script ausführe, zeigt es mir alle Einträge an :confused:

Hast du mir da ein wenig Unterstützung?

die Telefonbuchnummer, ist das diese? gPhoneBooks.books[0] = {

Was ist das ? :confused: Sehe ich nirgends im Script stehen.

$telefonbuch = 2; // Auswahl des Telefonbuches

meine Frage bezieht sich auf diese Zeile

und warum schreibst Du es nicht gleich hin. Das bezieht sich auf dein ausgewähltes Telefonbuch. Jenachdem wieviele Du hast, hat jedes seine eigene Nummer.

…und ja, es zeigt alle Namen und Nummern an solange print_r… nicht auskommentiert wird.

Ich denke Du willst vergleichen oder nicht deswegen steht es im array.

…und ja, es zeigt alle Namen und Nummern an solange print_r… nicht auskommentiert wird.

Ich denke Du willst vergleichen oder nicht deswegen steht es im array.

meine Grundidee war (und ist immer noch) bei eingehendem Anruf den entsprechenden Namen aus dem Tel.Buch der Fritzbox zu erhalten.

und „solange print_r… nicht auskommentiert wird“ übersteigt meine Kenntnisse wieder mal.

Ich hab dir das Script noch mal angepasst. Ich hoffe, es ist jetzt genehm. Wenn du noch die Lautstärke ändern willst, einfach den Befehl dafür unter die echo Ausgabe in Zeile 64 schreiben. Wenn du den Namen in eine Variable schreibst, kommt vor das echo //

Das gibt es doch schon ewig hierim Forum.

In dem Thread ist auch dieser nette Linkgenannt.

Er will ja nicht die Anruferliste sondern das Telefonbuch auslesen.

Ähm, bin ich blind? :rolleyes:

Ja. :smiley:

Er will den Anrufername angezeigt bekommen (wenn ich richtig lesen kann) und genau das ist dort verwirklicht. Es muß doch nur das Script entsprechend verändert werden, damit nur der Name angezeigt wird. Bei mir ist das jedenfalls so realisiert.

Sorry ich bin raus. :confused:
Vielleicht sollte ich meinen APC ausschalten und nach Hause fahren. ist schon spät. :rolleyes:

seid mal ein wenig Nachsichtig mit Boui, der hat grad ne heftige Packung durch seine LAN-Adapter to CCU-Migration bekommen. Vielleicht auch mittlerweile von seiner Chefin:D

Ich kann dich ja mal anrufen, leider wirst Du meinen Namen aber nicht sehen, da ich nicht gelistet bin. Da nutzt dir weder Rückwärtssuche noch Anruferliste was.
Hättest Du mich jetzt aber in deinem Telefonbuch stehen, würdest Du auch meinen Namen sehen.

Ich hoffe, es war soweit verständlich.

Komme gerade nach Hause: 6 Servicemeldungen.
z.B. Fensterdrehgriff - Wandthermostat blinkt mit S und ich gehe zum Fenster und bewege nur den Griff einmal auf und zu und schon ist die Kommunikationsstörung weg. Ich habe die Versuche schon von 6 auf 10 gesetzt.

Da soll man mal nicht abdrehen.

Mit Telefonbüchern der Fritz könnt ihr mich nun muscheln. :cool:

was heisst denn hier genehm? Vielen herzlichen Dank. :slight_smile:
Aber eben, mein"Php-Verständnis. Egal von welcher Nummer ich anrufe zum testen, es zeigt mir immer den letzten Eintrag des Tel. Buches an. Und diese Fehlermeldung

Und für alle andern - Rainer hat es richtig interpretiert