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.
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