Telegram Messenger Modul

Ich hab jetzt mal ein paar andere Blogs zu dem Thema quergelesen. Kann es sein das animierte gifs nicht als Image sondern als Dokument verschickt werden müssen?

Gesendet von iPhone mit Tapatalk

Ja, das ist mir auch aufgefallen. Ich habe mal zwei Zeilen in Titus Quelltext geändert, und siehe da es funktioniert :).


//$content = array('chat_id' => $userid, 'caption' => $text, 'photo' => $img);           
//$telegram->sendPhoto($content);            
$content = array('chat_id' => $userid, 'caption' => $text, 'document' => $img);           
$telegram->sendDocument($content);

Vielleicht findet Titus die Zeit „sendDokument“ offiziell einzubauen, dann könnte man auch csv-Dateien o.ä. senden.

Hi,

hier das Script

<?php

    $id_instanz        = 19333 /*[Telegram\TelegramMessenger]*/;
    $tx_telegram    = "Das ist ein Test";
    $id_user        = "491772994567";

//    Telegram_SendText($id_instanz, $tx_telegram, $id_user);

    Telegram_SendTextToAll($id_instanz, $tx_telegram);

?>

und bildchen

Hallo WiBo,

stimmt Deine Empfänger-ID? Sieht mir aus wie eine Telefonnummer.
Du musst aber die interne Bot-ID nehmen. Sende mal von Deinem Handy an den Bot dann siehst Du die ID im IPS Messagelog.

Hallo Titus,

Super Modul. Installiert und funzt.

Aber, könntest Du eventuell einen Schalter in der Config einbauen um den Debug zu deaktivieren/aktivieren.

Momentan müllt mir das den php Error log zu.

Vielen Dank im voraus

Am besten im Modul gleich auf SendDebug umstellen :slight_smile:
Und wenn ich mir etwas wünschen darf; anstatt der Funktion in dem Empfangscript hätte ich gerne die $_IPS-Variable mit den Index Sender, Value, Instance etc…
Dann kann ich ein AuswerteScript für mehrere Funktionen nutzen :smiley:
Michael

Moin zusammen,
vielen Dank für dieses geniale Modul.
Muss mich leider der Meldung anschließen. Bei mir erscheint die gleiche Meldung in den Meldungen von IPS. Unter „Empfänger CSV“ habe ich die Chat ID eingetragen, an welche ich mir die Meldungen schicken lasse. Hab ich was falsch gemacht?

Gruß,
Christoph

So, die lästige Fehlermeldung im Log sollte nun verschwunden sein.

Zudem habe ich die Funktionen SendDocument und SendDocumentToAll eingebaut. Darüber funktioniert dann auch der Versand von animierten GIF (Mimetype: image/gif).

@Michael: Verrate einem doofen doch etwas genauer was Du gerne möchtest :wink:

Hallo Titus,

Ein Traum hat sich erfüllt, ein funktionierendes Modul für Telegram!
Einen herzlichen riesen Dank dafür.

Gesendet von meinem SM-N910F mit Tapatalk

Das die Werte in $_IPS also z.B. der Text in $_IPS[‚Value‘] steht. So wie es ja auch alle anderen IPS-Instanzen handhaben.
Bin heute mit den Kids unterwegs, kann sonst heute Abend mal ein Beispiel schreiben.
Michael

Das kann ich bestätigen! Vielen Dank!

Hallo,

ich habe noch einen Fehler entdeckt. Wenn ich ankommende Nachrichten auswerten möchte, wird das Auswerte-Script im falschen Pfad gesucht.

Fehlermeldung:

include_once(): Failed opening ‚/usr/share/symcon/scripts/39412.ips.php‘ for inclusion

Die Scripte liegen aber nicht unter /usr/share/symcon/scripts/ sondern unter /var/lib/symcon/scripts. Siehe https://www.symcon.de/service/dokumentation/installation/installation/#Raspberry_Pi_Installation. In einer früheren Version lagen sie dort. Jetzt nicht mehr :wink:

Gruß,
Christoph

OK, das ist dann ein Problem der Linux-Version. Unter Windows liegen die Skripte unterhalb des IPS-Stammverzeichnisses. Deshalb versuche ich das Skript auch wie folgt zu inkludieren:

include_once(IPS_GetKernelDirEx()."scripts/".IPS_GetScriptFile($this->ReadPropertyInteger("ProcessIncomingSkript")));

Frage an die Profis: Wie finde ich den Pfad der IPS-Skripte am besten heraus? Oder gibt es die Möglichkeit ein Skript anhand seiner ID zu includen?

Am besten gar nicht erst includen (Thema Sicherheit, bzw. dann könne man aus diesem Script innerhalb deiner Instanz ja Code einschleusen).
Sondern gleich hiermit :
IPS_RunScriptEx — IP-Symcon :: Automatisierungssoftware

Dann würde auch das mit der $_IPS-Variable gleich funktionieren :smiley:
Also anstatt

								include_once(IPS_GetKernelDirEx()."scripts/".IPS_GetScriptFile($this->ReadPropertyInteger("ProcessIncomingSkript")));
								process_incoming($this->InstanceID, $chat_id, $text);

Das hier nutzen:


IPS_RunScriptEx($this->ReadPropertyInteger("ProcessIncomingSkript"), Array("SENDER"=>"Telegram", "INSTANCE"=> $this->InstanceID, "CHAT"=>$chat_id, "VALUE"=>$text));

IPS_RunScriptEx führt das Script in einen eigenen PHP-Threas aus und ist somit nicht mehr direkt in deinem Code ‚included‘.
Außerdem brauchst du dir keine Gedanken machen wo das Script liegt oder welches OS gerade genutzt wird.
Michael

Danke Michael, ist jetzt genau so umgesetzt.

Wer das Modul schon installiert hatte muss nach dem Update sein „Incoming“-Skript anpassen. Details und Beispiel im Readme!

Das Auswerte-Script im Readme hat sich nicht geändert?

Edit:

Jetzt habe ich es gefunden … Inder Readme.md im Ordner TelegramMessenger.

Hatte ich auch erst gedacht.
Aber BitBucket hat einfach einen alten Commit angezeigt.
Sobald man den neuesten auswählt stimmt dann auch die Readme.
Michael

Funktioniert hervorragend! Vielen Dank!

Hallo Titus,

super Modul, es ist eine tolle Möglichkeit IPS zu erweitern!

Ich habe allerdings noch einen kleinen „Schönheitsfehler“. Der GetUpdates Timer verursacht alle 15 Sekunden ein WARNING im Log. Wegen der WARNING wird dIe entsprechende Zeile im „Meldungen“ Log gelb markiert angezeigt.

Es wäre natürlich schöner, wenn nur bei Fehlern oder bei Empfang einer Telegram Nachricht etwas im Log erscheint.

EIn weiterer Punkt betrift den Parameter ‚parse_mode‘ => „Markdown“ in Deiner SendText Funktion.
Ich fände es besser, wenn dort ‚parse_mode‘ => „HTML“ stehen würde.

Die Text Formatierung ist damit irgendwie „natürlicher“.


Telegram_SendText(24420, "Hallo ich bin ein <i>Italic Text</i> oder <b>Bold Text</b> Formatierungstest!", "123456789");

Siehe https://core.telegram.org/bots/api#markdown-style

Jo, das nervte. Die Ausgabe habe ich entfernt.

Da muss ich widersprechen :slight_smile: Ich nutze, wo immer es geht, nur noch Markdown. Aber das ist natürlich Geschmackssache.

Ich habe aber die beiden „SendText“-Funktionen noch um den weiteren Parameter „ParseMode“ ergänzt. Dort kannst Du jetzt „HTML“ übergeben. Wenn Du nichts angibst wird Markdown angenommen.

Leider wird die Formatierung aktuell wohl nur von Android unterstützt, auf meinem Windows Mobile 10 und im Web wird leider immer nur Plain Text ausgegeben :frowning: