NEWS
Telegram: GruppenID werden nicht unterstützt
-
Mal versucht die CHatId als Zahl und nicht als String anzugeben? Laut Telegram Doku ist es ein Unterschied
-
Mal versucht die CHatId als Zahl und nicht als String anzugeben? Laut Telegram Doku ist es ein Unterschied `
Bin nicht sicher was Du meinst? In allen Beispielen werden die Chat_Ids chatId: '227174xxx', geschrieben - also mit einfachen oder doppelten Anführungszeichen. Damit geht es auch.
Die xxx sind von mir als Platzhalter angezeigt worden um nicht alle Zahlen zu schreiben.
-
Du meinst so?
sendTo('telegram.0', { text: 'Testnachricht empfangen.', chatId: -179425xxx, });
Brachte leider auch nix. Also mit " oder mit ' oder gar nichts - immer das Gleiche bei negativen Zahlenwerten.
Per Debug gibt es diese Fehlerausgabe:
__telegram-0 2016-10-09 00:19:30.669 error Cannot send message: Error: 400 {"ok":false,"error_code":400,"description":"Bad Request: chat not found"} telegram-0 2016-10-09 00:19:30.489 debug Send message to "chat": Kannst Du das lesen?
host- 2016-10-09 00:19:30.487 debug redis pmessage messagebox.system.adapter.telegram.0 messagebox.system.adapter.telegram.0 {"command":"send","message":{"text":"Kannst Du das lesen?","chatId":"-179425xxx"},"from":"system.adapter.java__
(Hier mal mit " ).
Wennn dann positive Werte stehen, sieht der Befehl identisch aus - aber es funktioniert.
-
Also wenn "chat not found" kommt würde ich tippen das die Chat-ID einfach falsch ist. DIese ANtwort kommt ja scheinbar direkt von der Telegram API. DU bist sicher das der Wert der ChatId korrekt ist?
-
Ja. Ich verwende den gleichen String direkt auf der CCU und auf verschiedenen Linux Shells. Also einfach Copy&Paste
Deshalb hatte ich ja auch den Gegenvergleich direkt aus dem Browser angegeben.
Ich könnte mir vorstellen, dass das Minus irgendwie dazwischenfunkt. Hatte es auch mit Maskieren also einem \ erfolglos versucht.
Achso - und ich habe es mit zwei unterschiedlichen Gruppen getestet. Auch hier mittels Copy&Paste aus dem getUpdate-Log.
Gegenfrage: Nutzt es denn einer erfolgreich? Also Gruppen (die mit einem Minus beginnen) via Telegram Adapter auf ioBroker?
So long,
Fitti
-
Bin ich der Einzige mit diesem Problem - oder der Einzige, der an Gruppen sendet?
-
würde mich auch interessieren .. jemand ne Lösung?
-
Hier auch. Wenn ich's über den Browser schicke, funktioniert's einwandfrei, aus ioBroker gehts immer an meinen persönlichen Chat, nicht in die Gruppe.
-
Bin ich der Einzige mit diesem Problem - oder der Einzige, der an Gruppen sendet? `
Hallo zusammen,vielleicht hat sich das Problem ja mittlerweile schon gelöst, aber ich habe gerade erfolgreich Nachrichten an meine Gruppe weitergeleitet. Kein Problem.
sendTo('telegram.0', { text: 'TEXT', chatId: -1655xxxxx});
Ich habe Adapter v1.0.8 installiert.
@Fitti: In deinem Code ist direkt hinter der chatid ein Komma. Probiere es mal ohne. Das sieht irgendwie nicht richtig aus.
-
aber wie kann ich in Blockly die chatid hinzufügen?
-
gibts hier schon was neues?
-
Hi,
ich habe das gerade getestet, weil ich versucht habe dass mir mein Bot in Gruppen antwortet.
Das hier funktioniert:
sendTo('telegram.0', { text: 'TEXT', chatId: -1655xxxxx});
Mein Bot ist Admin im diesem Chat damit er die Nachrichten lesen kann. Weiß nicht ob das einen Unterschied macht.
-
Hi
habe das selbe Problem. Hier die Lösung… und die Erklärung, warum es im Blockly nicht funktioniert:
Wie oben bereits beschrieben, funktioniert folgender Code, um eine Telegramm Nachricht an eine Gruppenchat zu schreiben:
sendTo("telegram.0", "send", { text: 'Wau-Wau!', chatId: -301230000 });
Dabei ist es unerheblich, ob die Gruppen-Chat-Nummer als String ( '-301960000' ) oder - wie oben dargestellt - ohne Anführungszeichen geschrieben wird.
Das Problem ist nun, dass Blockly den o.a. Funktionsaufruf nicht verwendet.
Der von Blockly generierte Funktionsaufruf sieht so aus (testweise mit einer Gruppen-Id):
sendTo("telegram.0", "send", { text: 'Miau!', user: '-301230000' });
Wer sieht's?
Genau: statt chatId verwendet Blockly immer das Attribut user.
Mit "user" funktioniert das Senden an Gruppenchats nicht.
Es gibt eine Möglichkeit, dennoch Gruppenchats zu senden. Dazu muss das "Blockly" Diagramm nach Javascript umgewandelt werden. Wenn das allerdings mit der Drop-Down "Enginetyp" im Skriptfenster gemacht wird, dann gibt's von Javascript keinen Weg zurück nach Blockly!!! Bei komplexeren Skripten mag das für den einen oder anderen eine Delle in der Wartbarkeit bedeuten..
Die tatsächlich richtige Art der Korrektur wäre, wenn der Autor des Telegramm Adapters statt user immer chatId in Blockly verwenden würde: Mit chatId ist es egal, ob ich einen einzelnen Teilnehmer (über die positive User ID) oder einen Gruppenchat adressiere.
Vielleicht können wir das auch selber ändern??
Hoffe, das hilft dem einen oder anderen weiter.
-
… habe jetzt ein "issue" im Git geöffnet:
-
Gefixt in Version 1.2.6
-12345678 als Empfänger im Blockly Block wird ab Telegram Adapter Version 1.2.6 als chatId interpretiert und nicht mehr als User.
Gruß
-
Hi ich habe jetzt die 1.2.6 drauf und so wie ich das sehe ist es immer noch User ID oder ?
Mache ich evtl etwas falsch. ?
-
Wie sieht dein Script denn aus? Gruppenids beginnen immer mit - also z. B. -1234567..
Wenn du -1234567 als Empfänger einträgst im Blockly wird automatisch im Hintergrund auf chatId umgestellt..
Gruß
-
Hallo,
danke für die schnelle Antwort. So funktioniert es Prima
-
Hallo zusammen,
ich versuche gerade, mein Telegram Script an eine Gruppe ans Laufen zu bekommen.
Das Problem ist bei nachfolgendem Script, dass ich nicht die Variablen bekomme, sondern den Text als solches.
Kann mir jemand auf die Sprünge helfen und sagen, wie ich das Script umbauen kann?
Ist sicherlich nur ne Kleinigkeit, bin aber leider zu sehr Anfänger…
Vielen Dank im Voraus!!!
sendTo('telegram.0', { text: 'getState("javascript.0.zählen_Fenster.textFensteraufAnsage").val+" "+getState("javascript.0.Status.Lichter.Anzahl_ein"/*Anzahl der eingeschalteten Lichter*/).val+" "+getState("javascript.0.Status.Lichter.Ansage"/*Eingeschaltete Lichter (Ansage)*/).val);', chatId: '-24387978'});
-
Wenn du Code in Anführungszeichen setzt wird er nicht ausgeführt, sondern es wird der Text verwendet, der in den Anführungszeichen steht. So sollte es funktionieren:
sendTo('telegram.0', { text: getState("javascript.0.zählen_Fenster.textFensteraufAnsage").val+" "+getState("javascript.0.Status.Lichter.Anzahl_ein"/*Anzahl der eingeschalteten Lichter*/).val+" "+getState("javascript.0.Status.Lichter.Ansage"/*Eingeschaltete Lichter (Ansage)*/).val), chatId: '-24387978'});