Telegram Messenger Modul

Moin Moin,

ich möchte heute mein Modul für den Telegram Messenger vorstellen. Wer Telegram nicht kennt, es ist im Prinzip vergleichbar mit WhatsApp. Allerdings verschlüsselt Telegram schon sehr lange und es gibt nicht nur Mobile-Clients sondern auch welche für Desktop. Zudem bietet Telegram die Möglichkeit „Bots“ anzulegen, und um genau die geht es bei meinem Modul.

Was kann das Modul?

Über einen Telegram-Bot kann man mit dem Modul Nachrichten an seine Clients verschicken. Dies können sowohl Text- als auch Bild-Nachrichten sein. Quasi eine weitere Form der „Push Notification“.

Aber auch der umgekehrte Weg ist möglich: ein Client sendet einen Text an den IPS-Server. Dieser kann den Text auswerten und darauf reagieren (in der Config abschaltbar). Ich nutze das z.B. um mir über den Befehl „wetter“ von meinem IPS einen „Wetterbericht“ auf mein Mobile schicken zu lassen oder über „cam“ ein Foto der Überwachungskamera.

Eine genaue Beschreibung, auch der Einrichtung, findet Ihr im im Readme

Das Modul selbst gibt es hier bei BitBucket

Versions-Historie

  • v0.5 Incoming-Skript wird nun per RunScriptEx eingebunden und nicht mehr per include (Umbau eurer Skripte erforderlich!)
  • v0.3 Support für Dokumentenversand und animierte GIF
  • v0.2 Support für JPG, PNG und GIF
  • v0.1 Initial release

Hallo Titus,

ich habe mal versucht das einzurichten, bekomme aber im Log eine Fehlermeldung.

Der Fehler ist in periodischen Abständen im Meldungsfenster.
Auch eingehende Nachrichten werden nicht verarbeitet. Ich bekomme aber im Meldungsfenster das Array welches Empfangen wurde angezeigt.

Gruß
Christian

Super, hab letzte Woche noch nach einer Lösung gesucht um Fotos per Messenger zu versenden. Da kommt dein Modul gerade zum richtigen Zeitpunkt. Meine Wunschvorstellung wäre eigentlich iMessage, aber da gibts ja leider keine API. Werde ich die Tage mal ausgiebig testen :slight_smile:

Vielen Dank!

Gruß Stephan

Moin Christian,

das stimmt. Das ist noch eine Debug-Ausgabe der zugrundeliegenden PHP-Klasse. Wird ausgegeben, wenn er Nachrichten abruft aber keine neuen vorliegen. Das werde ich noch mal rausnehmen, kannst Du aber ignorieren.

Hast Du in der Konfig ein Script definiert zum verarbeiten der eingehenden Nachrichten? Ist das Skript so aufgebaut wie in der Readme bei Bitbucket beschrieben?

Hallo,

die Antwort verstehe ich nicht.
Es kommt die von mir dargestellte Fehlermeldung mit „undefined Index…“ und, wenn er etwas empfängt eine Ausgabe des Array.

Aber das verarbeiten eingehender Nachrichten funktioniert nicht. Ich habe mal Dein Beispiel genommen, und sende eine Temperatur raus, oder einen Fehler. Das Script wird aber gar nicht aufgerufen.

Gruß
Christian

Hallo,

ich ich korrigiere mich mal selbst, Ich hatte wohl eine falsche Nummer bei den Empfängern eingetragen, dadurch kam es zu einem Fehler, jetzt eingehend und ausgehende Nachrichten.

Der Fehler im Log mit"undefined index…" bleibt aber bestehen.

Kann man die bots von Telegram suchen, so dass jeder meinen Bot finden könnte?

Gruß
Christian

Das ist (noch) eine Debug-Ausgabe, wenn keine neuen Nachrichten vorliegen. Bitte erstmal einfach ignorieren!

Ja. Deshalb auch die Notwendigkeit die eigenen Clients in der Config einzutragen. Es werden auch nur Nachrichten von diesen Absendern verarbeitet.

Trotzdem: Sicherheitsrelevante Funktionen würde ich darüber nicht öffentlich zugänglich machen! Es ist schliesslich ein externer Dienst mit im Spiel, von dem man nicht weiß wer sich da wie Zugriff verschaffen kann.

Hallo Titus,

vielen Dank für die Rückmeldung.
Klar ist, dass man über so eine Schnittstelle keine wesentlichen Funktionen öffnet.
Und schon gar nicht gibt man eine Hilfeseite aus, welche Funktionen möglich sind.

Danke und Gruß
Christian

„Bitte senden Sie ‚explosion‘ um den Selbstzerstörungsmechanismus zu aktivieren“

:D:D:D

/opendoor

öffnet automatisch die Haustür und benachrichtigt die Polizei:D

HI,

bin gerade zu dämlich ein JPG zu verschicken. Hat jemand mal ein Beispiel wie die Pfadangabe aussehen muss wenn das Bild im Medien Ordner von IPS liegt?

Aktuelle hab ich folgendes getestet:

<?
$bild ="C:\\IP-Symcon\\media\\moon.jpg";
$UserID ="XXXXXX";
Telegram_SendImage(47603 /*[Telegram\TelegramMessenger]*/,$bild, $UserID);
?>

und erhalte diese Fehlermeldung:

PHP-Error-Warning: Missing argument 4 for Telegram_SendImage(), called in C:\IP-Symcon\scripts\36721.ips.php on line 4 and defined
Error in Script C:\IP-Symcon\scripts__generated.inc.php on Line 717
Warning: Missing argument 4 for Telegram_SendImage(), called in C:\IP-Symcon\scripts\36721.ips.php on line 4 and defined in C:\IP-Symcon\scripts__generated.inc.php on line 717

Notice: Undefined variable: userid in C:\IP-Symcon\scripts__generated.inc.php on line 721
------couldn’t open file „XXXXXX“------

Der Pfad ist bestimmt OK, aber es fehlt der Text:

Telegram_SendImage($InstanzID, $text, $img, $user)

Das ist noch ein Fehler in der Readme… :banghead: Der Text darf auch leer ($text = „“) sein, aber Du musst ihn der Funktion übergeben.

danke für das Feedback, aber dann ist das Beispiel in deiner Doku falsch :wink:

Funktioniert jetzt :slight_smile:

Schöne Grüße
Stephan

Hallo,

bekomme folgende Fehlermeldung.

--------{„ok“:false,„error_code“:400,„description“:„Bad Request: chat not found“}------

was mache ich falsch?

Danke

An welcher Stelle bekommst Du den Fehler? Wie ist Deine Instanz konfiguriert und welchen Befehl rufst Du auf?

Hi Titus,

ich möchte mich bei Dir für die großartige Leistung bedanken, den Telegram - Messenger als PHP-Modul anzubieten.:):):slight_smile:

Ich wurschtle schon seit Monaten (vielleicht auch Jahren) mit der WhatsAPI rum. Grundsätzlich hat das Ding ja funktioniert zumindest das Senden. Das Empfangen von Nachrichten habe ich nie hinbekommen. Zu guter letzt hat WhatsApp meine Festnetznummer, welche ich verwendete, gesperrt. Ich habe dann noch eine Menge anderer Festnetznummern probiert, die auch erst mal gingen, aber spätestens nach der ersten Message wurden auch die gesperrt. Eine Mail an den Support brachte nur die lapidare Antwort, dass sie mich verstehen können, aber eine Lösung habe ich bis jetzt nicht Nun habe ich mir gerade von V*ne eine kostenlose SIM bestellt als Christian den Hinweis gab, dass Du ein Modul für Telegram entwickelt hast.
Ich habe mich gleich ran gesetzt um dieses in meine Notifications zu integrieren. Und was soll ich sagen: Es funktioniert einfach super. Und durch die bots braucht man auch keine extra Telefonnummern.

Du hast meinen tiefsten Respekt. Wenn ich noch einen Wunsch äußern darf: Es wäre schön auch Videos hochladen zu können. :smiley:

Hi Norman,

vielen Dank :slight_smile:

Das sollte theoretisch möglich sein, dieTelegram API bietet auch Funktionen um Videos, Audio und Dokumente zu senden. Allerdings darf eine über den Bot verschickte Datei max. 50 MB groß sein, das kann bei Videos ja ggf. eng werden. Zudem wird der Upload zum Telegram Server, je nach Geschwindigkeit der Internetverbindung, dann auch ganz schön lange dauern - und das PHP-Skript dann ggf. die Max_execution_time erreichen?! Oder gilt die nicht für Module?

Wenn ich Zeit finde schaue ich mir das mal an.

Super ich freu mich drauf. :slight_smile:

Ich möchte Videos von meinen Überwachungskameras hochladen. Dazu erstelle ich Schnappschüsse im Abstand von einer Sekende, welche ich dann zu einem Video zusammenfüge. Das ist besser als nur ein oder zwei Bilder von der Kamera zu sehen. So hat man gleich mal 10-20 Sekunden im Timelaps. Ein gif würde es auch tun, wenn das mit Telegramm hochzuladen geht, In WhatsApp ging das nicht, ist aber geplant, wenn ich das richtig im Hinterkopf habe.

Gif ist die Idee, das teste ich mal…
Also, man kann gifs hochladen. Das funktioniert sogar mit Deinem Modul. Allerdings sieht man dann die Animation nicht. :frowning:
Wenn ich ein Gif über den Desktop-Client sende funktioniert es.

Laut API werden aktuell nur MP4-Videos von der SendVideo-Funktion unterstützt.

GIF Support habe ich eben eingebaut. Ein testweise gesendetes animiertes GIF wird bei mir auf dem Telefon und im Web Client nur als statisches Bild dargestellt.

Ich komme leider zu dem selben Ergebnis. Die gifs werden nicht animiert dargestellt. :mad:
Den mime Typ hatte ich auch schon in Deinem Quelltext, ohne Erfolg, ausgetauscht.
Irgendwo muss da noch was fehlen. Denn wenn ich dieselbe Datei über den Telegram-Desktop-Client versende wird diese animiert. Vielleicht fällt Dir noch was ein.

PS: Im neuen Code hast Du einen kleinen Schreibfehler

if ($mime == "image/jpeg" or[i][b] [u]$mine [/u][/b][/i]== "image/jpg")