Telegram-Benachrichtigung bei neuer Nachricht auf dem FritzBox-Anrufbeantworter

Skript läuft durch, kriege aber auf Telegram keine Nachricht / wav Datei

dann probiere das mal:

<?php
#----------------------------------------------------------------
#		Nachrichten auf dem AB aus der Fritzbox auslesen
#		und über Telegramm-Bot versenden
#		von Silberstreifen
#       baut auf VPN-V2.1 auf
#
#----------------------------------------------------------------

#----------------------------------------------------------------
#		Basis-Daten
#----------------------------------------------------------------

    $fritzbox   = 'fritz.box'; # muss ggf. angepasst werden
	$user       = 'Fritzbox-User'; # muss angepasst werden
	$password   = 'ganzGeheim'; # muss angepasst werden

    $url        = 'https://api.telegram.org';
    $bot        = '23123123mmmm234sfodis3o422pop-34';  # muss erzeugt und angepasst werden
    $chat_IDs   = array(
        123456789,                                                                    # muss angepasst werden
        987654321                                                                     # muss angepasst werden
    );
    $wav_file   = '/var/lib/symcon/webfront/user/rec.wav';

#----------------------------------------------------------------
#		Doppelausführung verhindern
#----------------------------------------------------------------

    $Thread = 0;
    foreach (IPS_GetScriptThreadList () as $lfdNr => $Nr) {
        if (IPS_GetScriptThread ($Nr)['ScriptID']==$_IPS['SELF'])$Thread++; 
    }  
    if($Thread>2) return;

#----------------------------------------------------------------
#		Anrufbeantworterliste abrufen und auswerten
#----------------------------------------------------------------

    $client = new SoapClient(
        null,
        array(
            'location'   => "http://$fritzbox:49000/upnp/control/x_tam",
            'uri'        => "urn:dslforum-org:service:X_AVM-DE_TAM:1",
            'noroot'     => true,
            'login'      => $user,
            'password'   => $password
        )
    );
    $result = $client->GetMessageList(new SoapParam(0, 'NewIndex'));

#----------------------------------------------------------------
#		SID ermitteln
#----------------------------------------------------------------

    $SID = explode("sid=", $result)[1];
    $SID = explode("&", $SID)[0];

#----------------------------------------------------------------
#		Daten holen
#----------------------------------------------------------------

	$anrufe = @simplexml_load_file($result)->Message;

#----------------------------------------------------------------
#		Daten auswerten
#----------------------------------------------------------------

    foreach($anrufe as $anruf){
        if($anruf->New == 0)continue;
        $title   = "Nachricht von ".$anruf->Name;
        if($anruf->Name == "")$title .=$anruf->Number;
        $caption = "Telefon-Nr: ".$anruf->Number." - Anrufzeit: ".$anruf->Date;

#----------------------------------------------------------------
#		Nachricht als gehört markieren
#----------------------------------------------------------------

        $result = $client->MarkMessage(new SoapParam((int)$anruf->Tam, 'NewIndex'), new SoapParam((int)$anruf->Index, 'NewMessageIndex'), new SoapParam(1, 'NewMarkedAsRead'));

#----------------------------------------------------------------
#		wav-Datei holen und temporär speichern
#----------------------------------------------------------------

        $ch_wav = curl_init($fritzbox.':49000/'.$anruf->Path);
        curl_setopt($ch_wav, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch_wav, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; de-DE; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
        curl_setopt($ch_wav, CURLOPT_RETURNTRANSFER, 1);
            
        curl_setopt($ch_wav, CURLOPT_POSTFIELDS, "sid=$SID"); 

        $wav = curl_exec($ch_wav);
        file_put_contents ($wav_file, $wav);
        curl_close($ch_wav);

#----------------------------------------------------------------
#		Nachricht in Telegram senden
#----------------------------------------------------------------

        foreach($chat_IDs as $chat_ID){
            $website="https://api.telegram.org/bot".$bot;
            $params=[
                'chat_id'=>$chat_ID,
                'caption'=>$caption,
                'audio'=>new CURLFile($wav_file),
                'title'=>$title,
                'parse_mode'=>'HTML'
            ];
            $ch = curl_init($website . '/sendAudio');
            curl_setopt($ch, CURLOPT_HEADER, false);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, ($params));
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            $result = curl_exec($ch);
            curl_close($ch); 
 
        }

#----------------------------------------------------------------
#		wav-Datei löschen und neues Datum speichern
#----------------------------------------------------------------

        exec('rm '.$wav_file);

    }

hat leider keinen Unterschied gemacht

Dann füge mal nach

echo $SID.chr(10);

ein. Was ist das Ergebnis?

Und dann nach

	$anrufe = @simplexml_load_file($result)->Message;

folgendes

    print_r(simplexml_load_file($result));
    return;

Was kommt dabei heraus?

b5d9c9e53e310053

und

SimpleXMLElement Object
(
    [comment] => Array
        (
            [0] => SimpleXMLElement Object
                (
                )

            [1] => SimpleXMLElement Object
                (
                )

            [2] => SimpleXMLElement Object
                (
                )

        )

    [Message] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [Index] => 1
                    [Tam] => 0
                    [Called] => 7382529
                    [Date] => 15.09.21 13:11
                    [Duration] => 0:01
                    [Inbook] => 1
                    [Name] => Oliver mobil
                    [New] => 0
                    [Number] => 01723229382
                    [Path] => /download.lua?path=/var/media/ftp/CRUZER_16GB/FRITZ/voicebox/rec/rec.0.001
                )

            [1] => SimpleXMLElement Object
                (
                    [Index] => 0
                    [Tam] => 0
                    [Called] => 7382529
                    [Date] => 14.09.21 10:47
                    [Duration] => 0:01
                    [Inbook] => 1
                    [Name] => Oliver mobil
                    [New] => 0
                    [Number] => 01723229382
                    [Path] => /download.lua?path=/var/media/ftp/CRUZER_16GB/FRITZ/voicebox/rec/rec.0.000
                )

        )

)

Dann ist doch alles gut. Du hast gar keine neuen Nachrichten auf dem AB. Dann soll auch keine Nachricht kommen….

danach Skript gestartet, keine Nachricht bekommen

b5d9c9e53e310053
SimpleXMLElement Object
(
    [comment] => Array
        (
            [0] => SimpleXMLElement Object
                (
                )

            [1] => SimpleXMLElement Object
                (
                )

            [2] => SimpleXMLElement Object
                (
                )

        )

    [Message] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [Index] => 2
                    [Tam] => 0
                    [Called] => 7382529
                    [Date] => 15.09.21 15:17
                    [Duration] => 0:01
                    [Inbook] => 1
                    [Name] => Oliver mobil
                    [New] => 1
                    [Number] => 01723229382
                    [Path] => /download.lua?path=/var/media/ftp/CRUZER_16GB/FRITZ/voicebox/rec/rec.0.002
                )

            [1] => SimpleXMLElement Object
                (
                    [Index] => 1
                    [Tam] => 0
                    [Called] => 7382529
                    [Date] => 15.09.21 13:11
                    [Duration] => 0:01
                    [Inbook] => 1
                    [Name] => Oliver mobil
                    [New] => 0
                    [Number] => 01723229382
                    [Path] => /download.lua?path=/var/media/ftp/CRUZER_16GB/FRITZ/voicebox/rec/rec.0.001
                )

            [2] => SimpleXMLElement Object
                (
                    [Index] => 0
                    [Tam] => 0
                    [Called] => 7382529
                    [Date] => 14.09.21 10:47
                    [Duration] => 0:01
                    [Inbook] => 1
                    [Name] => Oliver mobil
                    [New] => 0
                    [Number] => 01723229382
                    [Path] => /download.lua?path=/var/media/ftp/CRUZER_16GB/FRITZ/voicebox/rec/rec.0.000
                )

        )

)

ok, Deine Bot-ID und die Chat-ID passen aber, oder?

Ja, die passen, habe ich mit dem Modul abgeglichen.

wie müsste denn eine normale Textnachricht „Test“ in dem Skript aussehen, dass ich probieren kann ob das so passt?

hast Du die Änderungen von oben wieder rausgenommen?

Sonst kann es nicht funktionieren.

:+1: das wars. wusst ich nicht, dass das wieder raus muss.

jetzt kam die Nachricht, danke

Frage noch: in der „alten“ version musste man je nach AB „sid=$SID&tamindex=0“) setzen. Wie mach ich das in der neuen version?

Die neue Version liefert alle ABs.

Hallo Jürgen,

kann es sein, dass ich unter IPS 6 wieder keine Nachricht bekomme, wenn eine Nachricht auf meinem AB ankommt?
Korrigiere, anscheinend kommen nur die vom AB2 nicht an.

bei mir läuft es auf der aktuellen stable-Version.

wo find ich das? in dem Skript gibt es das nicht

Verstehe die Frage nicht. Tam => 0 kam von Dir. Ich habe Dich nur zitiert…
Solltest Du auch weiterhin nicht auf Stable zurückgewechselt sein, solltest Du die Ursache bei IPS suchen und nicht hier.

Grüße
Jürgen

ah, das war nicht im Skript, sondern in der AusgabeDatei, als wir die echo Befehle drin hatten.

Aber trotzdem kommen nur die Nachrichten von AB 1 . Ich habe es heute mittag drei x probiert