Telegram Messenger Modul

Hallo Titus,

danke für die schnelle Änderung. Die Warnings sind jetzt verschwinden.
Allerdings funktioniert Dein optionaler Parameter $format nicht.


		public function SendText($text, $userid, $format='Markdown') {
			include_once(__DIR__ . "/Telegram.php");
			$frmt = "Markdown";
			if ($format == "HTML") {
				$frmt = "HTML";
			}

			IPS_LogMessage("Telegram DEBUG", "format=".$format."  parse_mode=".$frmt);

			$telegram = new Telegram($this->ReadPropertyString("BotID"));
			$content = array('chat_id' => $userid, 'text' => $text, 'parse_mode' => $frmt);
			$telegram->sendMessage($content);
		}

Ich habe mal in die Funktion ein IPS_LogMessage für das Debugging eingefügt.
Ich sende:


Telegram_SendText(24420, "Hallo ich bin <i>Italic</i> und ich <b>Bold</b>", "123456789", "HTML");

Die Variable $format hat aber immer den Wert ‚Markdown‘ laut IPS_LogMessage.

[b]Ich habe fast den Verdacht, dass optionale Parameter in IPS PHP Modulen nicht unterstützt werden!

@Paresy ist das so??? [/b]

Könntest Du den „parse_mode“ nicht über das form.json Konfigurationsmenü steuern?
D.h. eine Checkbox „HTML“ bestimmt dann, ob ‚Markdown‘ oder ‚HTML‘ gesendet wird.

Optionale Parameter gab es noch nie in den Modulen.
Egal welche IPS-Version.
Am einfachsten eine neue Funktion mit SendTextEx erstellen die den Parameter immer erwartet.
Michael

Ich habe das Script aus der Readme (2016-08-08) aus dem ersten Beitrag eingetragen.

Allerdings scheinen die Variablen beim Aufruf nicht gesetzt zu werden, somit erfolgt natürlich auch keine Verarbeitung :(.

Ich habe ein zusätzliches echo eingebaut:

22.08.2016 23:24:45*| ScriptEngine*| Ergebnis für Skript 21644
<br />
<b>Notice</b>:  Undefined variable: instance in <b>/var/lib/symcon/scripts/21644.ips.php</b> on line <b>3</b><br />
<br />
<b>Notice</b>:  Undefined variable: senderid in <b>/var/lib/symcon/scripts/21644.ips.php</b> on line <b>3</b><br />
<br />
<b>Notice</b>:  Undefined variable: text in <b>/var/lib/symcon/scripts/21644.ips.php</b> on line <b>3</b><br />
### #instance , #senderid , #text

:confused:

Senden geht direkt über das Kommando. Und das Array beim Empfangen ist auch gesetzt im Log.

Hallo Ralf,

das Read Me hat sich geändert. Schau Dir noch mal das neu verlinkte an.
Es werden jetzt, entgegen der ersten Version die $_IPS[‚SENDER‘] Variable, also die Systemvariablen gesetzt.
Die Funktion zur Auswertung ist jedoch geblieben.

Gruß
Christian

Hallo Titus,

das Projekt finde ich toll. Dazu eine banale Frage von mir: mir ist nicht ganz klar, wo die entpackten Dateien aus dem repository hinmüssen. Die *.json-Dateien wohl in den „forms“ Ordner, aber der Rest?

Danke & Gruß

Ecoli

Überhaupt nicht auspacken oder ablegen ;).

Einfach bei den Kerninstanzen/Module den GIT Link hinzufügen.

@Titus: Du könntest im ersten Beitrag mal die aktuelle Readme verlinken. Das macht es den Lesern etwas leichter ;).

Hallo Ralf,

mit den GIT-Links habe ich bisher noch nicht gearbeitet. Wie muss der konkret Link in diesem Fall aussehen/ heißen?

Dann unter Kerninstanzen -> Module -> hinzufügen eintragen? Hier wird mir im URL-Feld „git://github.com/paresy/SymconMisc.git“ angezeigt. Hier den Link eintagen?

Danke & Gruß

Ecoli

Könnte mir jemand bezüglich meiner Frage von gestern weiterhelfen?

Danke & Gruß

Ecoli

Hallo Ecoli,

du kopierst dir den Link zum Projekt aus BitBucket, in diesem Fall folgender:

https://bitbucket.org/jens_cramer/jmc-symcon-modules.git

Dann gehst du wie beschrieben unter Kerninstanzen -> Module -> hinzufügen eintragen? und trägst den oben genannten Link ein.

Das sollte es schon gewesen sein…

Danke für die Info!

Gruß Ecoli

Hallo,

das ist ja eine spannende Sache, ich hänge nur jetzt beim weiteren Vorgehen.

Das habe ich bisher gemacht:
Telegram Messenger als Instanz angelegt.
Wie im Readme angegeben, neuen Bot erstellt über den Windows-Client.
Bot ID in IPS-Instanz eingetragen.
Client auf Smartphone installiert, das hat auch mit meinem Windows-PC „kommuniniziert“.

Jetzt hänge ich:

  1. Verständnisfrage: Ich bin ein User auf meinem Smartphone bzw. PC, benötige ich einen zweiten User für IPS? Oder wie schicke ich als User vom Smartphone eine Nachricht an den „IPS-User“? Wie lege ich den zweiten User ggf. an?

  2. Wie kann ich also eine Test-Nachricht vom Smartphone an IPS senden?

  3. Woher bekomme ich die User-ID, die im Readme erwähnt wird? Das Feld Empfänger (CSV), erfordert ja dann wohl die User-ID, die eine von IPS ausgehende Nachricht empfangen soll, wenn ich das richtig sehe?

Danke & Gruß

Ecoli

Hallo Ecoli,

in der Readme von Titus auf Bitbucket steht eigendlich alles drin. Einfach genau 1:1 abarbeiten.
Oder ganz ausführlich hier: https://www.youtube.com/watch?v=hJBYojK7DO4

Wichtig! Du musst anschliessend Deinen neu erzeugten Bot starten. Nach der Einrichtung hat Dir „BotFather“ eine Bestätigung geschickt. In dieser Nachricht den Link anklicken und den Button STARTEN anklicken. (Siehe Bilder)

Telegram1.JPG

Erst dann ist der neue Bot funktionsbereit!

  1. Verständnisfrage: Ich bin ein User auf meinem Smartphone bzw. PC, benötige ich einen zweiten User für IPS? Oder wie schicke ich als User vom Smartphone eine Nachricht an den „IPS-User“? Wie lege ich den zweiten User ggf. an?

IPS benutzt den von Dir eingerichteten Bot. Programme/Scripte können nur als Bot mit Usern (eingerichtet über Handynummer) kommunizieren.

  1. Wie kann ich also eine Test-Nachricht vom Smartphone an IPS senden?

Du sendest eine Nachricht an den von Dir eingerichteten Bot. (Unter „Suchen“ nach dem Namen Deines Bots suchen und ihn auswählen)

  1. Woher bekomme ich die User-ID, die im Readme erwähnt wird? Das Feld Empfänger (CSV), erfordert ja dann wohl die User-ID, die eine von IPS ausgehende Nachricht empfangen soll, wenn ich das richtig sehe?

Die User ID des Telegram Users steht hinter „Update von“ im Log. (Siehe Bild)

Telegram3.JPG

Hallo Uwe,

Danke für die Rückmeldung. Den Bot hatte ich gestartet, das lief also schon.
Ich habe die ID des Bots noch einmal neu eingetragen, jetzt läuft alles, offenbar hatte ich hier einen kleinen Fehler drin (Prinzip IBAN beim Bankkonto :)).
Die Nachrichten an meinen Bot werden jetzt im IPS-Meldungsfenster angezeigt. So bin ich jetzt auch an meine User-ID gekommen.

Danke für die Hilfe & Gruß

Ecoli

After have been installed the telegram module Ip-symcon server stop working…
Now is impossible to connect to the Ips view manager and the server doesn’t work anymore… S**t…
Does it possible to manual uninstall this module and fix the server without lose everything?

Danke für das Modul, es läuft!

ABER wieso werden bei der „Auswertung“ nur kleine Bezeichner im Switch/Case angenommen?

<?php
if ($_IPS['SENDER'] == "Telegram") {
    process_incoming($_IPS['INSTANCE'], $_IPS['CHAT'], $_IPS['VALUE']);
}

function process_incoming($instance, $senderid, $text) {
    $return = "";

    switch(strtolower($text)) {

        case "wetterkarte": // Aussentemperatur
           IPS_RunScript(23564 /*[Telegram\Radar]*/);
            break;
            
		  case "Test":
			  $return = "Nix mit Test hier!";
			  break;
			  
		  case "hue an":
			 IPS_RunScript(19734 /*[Wohnung Pro\Licht\Entspannung]*/);
			 $return = "Szene Entspannung wurde eingestellt.";
			 break;
			 
		  case "licht aus":
			 IPS_RunScript(47878 /*[Sonstiges\Licht Aus]*/);
			 $return = "Licht ist aus.";
			break;
			
        default:
           $return = "Der Befehl '".$text."' ist unbekannt.";
           break;
    }

    if ($return != "") {
        Telegram_SendText($instance, $return, $senderid);
    }
}
?>

Bei „Test“ wird nur default ausgespuckt. „test“ hingegen wird korrekt ausgeführt/gegeben. Hab ich da einen Denkfehler? :confused:

Case „xxx“ funktioniert. Case „Xxx“ hingegen nicht.

Weil $text mit strtolower in Kleinbuchstaben umgewandelt wird ;).

Die Idee dazu ist vermutlich, das die Schreibweise nicht relevant ist, so muss man sich nur die Begriffe merken.

Aber das kAnNsT du für dich ja eInFaCh ändern :).

MfG
Ralf

Ja, genau das war die Idee :slight_smile:

Mein Telefon macht gerne Auto-Vervollständigung inkl. Großschreibung des ersten Buchstabens. Damit ich das nicht durch umständlich abfangen musste habe ich das in der Switch-Anweisung einfach auf Kleinschreibung geändert.

Check! Bin nicht so der PHP Künstler :wink:

Noch mal für mich: Ist es also egal was ich ins Handy Tipp? Der wandelt das in klein um? Nur der Bezeichner im Case muss klein geschrieben werden?

Steht ja zwei Beiträge weiter ob:banghead:. Also ja. Danke für die Antworten! :smiley:

Hallo Titus und die anderen Benutzer von dem Modul

benutze Dein Modul :loveips: schon sehr lange und hab mir damit von meinen Test-Ip-symcon Raspberry Bilder schicken lassen bei Bewegung vor der Haustür oder wenn es geklingelt hat. Hat ja auch seit Oktober super funktioniert. Jetzt hatte ich leider nen absturz beim Testsystem und da hab ich festgestellt das ich kein Backup vom Test-Ip-symcon hab:banghead:, nicht weiter schlimm dachte ich da je eh nicht viel darauf läuft. :slight_smile:
Pustekuchen. :banghead:
Irgendwie hab ich Bilder verschickt bekommen und ich glaube das ich es ohne Pfadangabe beim Raspberry geschafft habe, da man ja hier nur mit Bildern im Cache arbeite sollte.
Nur komme ich nicht mehr darauf wie ich das gelöst haben könnte.
Hoffe Ihr könnt mir auf die sprünge helfen.

Mfg

Jannis