NEWS
Test Adapter Telegram 3.4.1 - Blockly-Bausteine für Fragen
-
Aktuelle Test Version 3.4.1 Veröffentlichungsdatum 08.06.2024 Github Link Bitte über npm installieren Ich habe gerade ein Blockly-Todo erledigt, welches schon lange auf meiner Liste stand: Die Frage-Möglichkeit für Telegram umsetzen. Per JavaScript ging das ja schon sehr lange.
Die Idee ist, dass man eine Frage definieren kann und darunter mehrere Antwortmöglichkeiten (über das Zahnrad kann man mehr Antworten hinzufügen). Und dann wird eben die Logik im jeweiligen Block ausgeführt, wenn man auf die Antwort klickt. Beispiel:
Sieht im Chat dann so aus:
Das ganz muss man logischerweise in einen Trigger packen, welcher die Frage zum richtigen Zeitpunkt versendet... Logisch.
Neu ist, dass nach einer Antwort die Tastatur ausgeblendet wird. Also die Nachricht wird nachträglich bearbeitet. Es gibt (wie vorher auch schon) einen Timeout, wenn man in x Sekunden nicht auf die Frage geantwortet hat. Das ist nicht neu. Aber auch dann wird die Tastatur ausgeblendet!
Ich bitte um Feedback für die neue Funktion! Bitte ausführlich testen!
Was ich mir noch vorstellen könnte: Ein weiterer Block, welcher eine einfache Antwort auf in den gleichen Chat ermöglicht. Dann muss man nicht den großen Telegram-Text-Block öfter einfügen und die Chat-ID ausfüllen usw.
Die Version landet zeitnah im Beta-Repo. Sonst per npm installieren (NICHT per GitHub-Url installieren!).
-
@haus-automatisierung das ist genial das hab ich schon lange gesucht. Vielen Dank für Deine Arbeit
-
@drapo sagte in Test Adapter Telegram 3.4.0 - Blockly-Bausteine für Fragen:
das hab ich schon lange gesucht
Ging ja auch vorher schon, nur etwas umständlicher mit dem generischen sendTo-Block. 2022 hab ich das im Kurs so erklärt:
Mit den Objekt-Blöcken könnte man das jetzt noch etwas schöner lösen (ohne die Funktion), aber ist ja nicht mehr nötig mit dem Block. Also am Ende nicht neu, nur deutlich einfacher.
-
Vermutlich stelle ich mich zu blöd an, aber Blockly scheint bei mir den neuen "Baustein" komplett zu ignorieren.
Wenn ich ihn hinzufüge, dann erscheint komischerweise keine "Speichern"-Schaltfläche. Auch eine Konvertierung zu JS erzeugt nur ein leeres Skript.
Die anderen Blöcke vom Telegram-Adapter funktionieren reibungslos.
Auch ein Neustart des JS-Adapters (v.8.3.1) hat daran nichts geändert.
NodeJS ist 18.20.3
NPM 10.7.0
JS-Controller 5.0.19 -
@oxident sagte in Test Adapter Telegram 3.4.0 - Blockly-Bausteine für Fragen:
Vermutlich stelle ich mich zu blöd an, aber Blockly scheint bei mir den neuen "Baustein" komplett zu ignorieren.
Wenn ich ihn hinzufüge, dann erscheint komischerweise keine "Speichern"-Schaltfläche. Auch eine Konvertierung zu JS erzeugt nur ein leeres Skript.
Die anderen Blöcke vom Telegram-Adapter funktionieren reibungslos.
Auch ein Neustart des JS-Adapters (v.8.3.1) hat daran nichts geändert.
NodeJS ist 18.20.3
NPM 10.7.0
JS-Controller 5.0.19wollte ebenfalls testen, mit gleichem Ergebnis.
-
Könnt ihr mal nach Fehlern in der Entwicklerconsole vom Browser schauen? Hab das nur mit der aktuellen Beta getestet vom JavaScript Adapter
Kann ich mir sonst heute Abend nochmal anschauen
-
@haus-automatisierung Klar, gerne.
Beim Einfügen des Blocks kommt folgender "uncaught"-Fehler:Error: Language "JavaScript" does not know how to generate code for block type "telegram_ask". at $.CodeGenerator$$module$build$src$core$generator.blockToCode (blockly_compressed.js:1426:165) at $.CodeGenerator$$module$build$src$core$generator.workspaceToCode (blockly_compressed.js:1424:236) at Dt.blocklyCode2JSCode (BlocklyEditor.jsx:358:44) at Dt.onChange (BlocklyEditor.jsx:575:34) at Dt.onBlocklyChanged (BlocklyEditor.jsx:458:14) at BlocklyEditor.jsx:532:22 at r (helpers.ts:100:17) blockToCode @ blockly_compressed.js:1426 workspaceToCode @ blockly_compressed.js:1424 blocklyCode2JSCode @ BlocklyEditor.jsx:358 onChange @ BlocklyEditor.jsx:575 onBlocklyChanged @ BlocklyEditor.jsx:458 (anonym) @ BlocklyEditor.jsx:532 r @ helpers.ts:100 setTimeout (asynchron) (anonym) @ trycatch.ts:124 (anonym) @ BlocklyEditor.jsx:530 fireChangeListener @ blockly_compressed.js:1312 fireNow$$module$build$src$core$events$utils @ blockly_compressed.js:82 r @ helpers.ts:100 setTimeout (asynchron) (anonym) @ trycatch.ts:124 (anonym) @ blockly_compressed.js:81 r @ helpers.ts:100 requestAnimationFrame (asynchron) (anonym) @ trycatch.ts:133 fireInternal$$module$build$src$core$events$utils @ blockly_compressed.js:81 fire$$module$build$src$core$events$utils @ blockly_compressed.js:80 doInit_ @ blockly_compressed.js:762 BlockSvg$$module$build$src$core$block_svg @ blockly_compressed.js:901 WorkspaceSvg$$module$build$src$core$workspace_svg.newBlock @ blockly_compressed.js:1662 (anonym) @ blockly.js:641 r @ helpers.ts:100 setTimeout (asynchron) (anonym) @ trycatch.ts:124 updateShape_ @ blockly.js:639 domToMutation @ blockly.js:536 createMarkerBlock @ blockly_compressed.js:813 InsertionMarkerManager$$module$build$src$core$insertion_marker_manager @ blockly_compressed.js:811 BlockDragger$$module$build$src$core$block_dragger @ blockly_compressed.js:826 startDraggingBlock_ @ blockly_compressed.js:1130 updateIsDraggingBlock_ @ blockly_compressed.js:1129 updateIsDragging_ @ blockly_compressed.js:1130 updateFromEvent_ @ blockly_compressed.js:1126 handleMove @ blockly_compressed.js:1135 g @ blockly_compressed.js:133 r @ helpers.ts:100
-
@oxident Danke, war nicht mehr mit Blockly 9 kompatibel. 3.4.1 ist auf dem Weg.
-
@haus-automatisierung
Okay, heißt das dann also, dass es mit der derzeitigen Stable vom JS-Adapter nicht kompatibel ist?Sorry, jetzt Github gelesen...
-
@haus-automatisierung
kann man das timeout setzen? -
@stenmic Ja, fehlt die Info in der Doku?
-
@haus-automatisierung kann ich denn mit dem ask auch einen freien Text in einen Datenpunkt schreiben. Also so quasi dass die Frage wäre: Bitte gib Deine Meldung für Dein Sonos System ein:
Die Antwort kann beliebig sein. Ich habe einen Datenpunkt im System, wenn ich den beschreibe ertönt die Meldung auf meinem Sonos. Wie wäre so etwas umzusetzen? Geht das überhaupt?
-
@drapo Das geht, aber nicht mit dem Baustein. Dann würdest Du einfach eine Nachricht senden und die nächste Nachricht im Chat ist dann die Antwort.
Der Block ist explizit für eine Inline-Tastatur mit Auswahlmöglichkeiten. Wie in JavaScript vorher auch
-
@haus-automatisierung mit welchem Baustein werte ich denn die frei definierte Telegram Antwort aus?
ich glaube das attribut data ist falsch. was wäre da das richtige?
Edit:
So geht es. Dank Dir...
-
@haus-automatisierung moin, ich kann das Skript nicht speichern?!
Wenn ich es über Umwege schaffe ist es hinterher trotzdem alles wieder weg. -
@chefkochts Mit dieser Fehlerbeschreibung kann ich nicht viel anfangen. Was ist "das Script"? Und welche Version des JavaScript-Adapters? Und Version des Telegram-Adapters bitte (da hab ich auch recht viel gemacht).
Und was ist "über Umwege speichern"?
-
@haus-automatisierung Ich habe Telegram jetzt auf 3.5.1 aktualisiert. Jetzt kann ich speichern. JavaScript habe ich 8.3.1.
Muss ich den fragen per telegram auch in einen Trigger packen?
Er wird nur bei einem Neustart des Skriptes ausgeführt.
Wenn ich licht schicke kommt nur zurück das er es nicht versteht.
-
@chefkochts Grundlagen bitte anderweitig besprechen. Logischerweise muss das in einen Trigger, damit es dann ausgeführt wird, wenn die Frage gestellt werden soll.
Sonst wird, wie bei allen Blöcken, alles auf der obersten Ebene natürlich sofort ausgeführt. Wäre mit einer normalen Telegram-Nachricht ja nicht anders.
Diese „ich verstehe … nicht“ Meldungen kommen aus Text2Command. Dort deaktivieren. Im Kurs habe ich das doch alles ganz ausführlich erklärt
-
Ich habe gerade rausgefunden (vielleicht ist das aber auch nichts neues und ich habe es nur überlesen ), dass man auf jeden Fall irgendwas bei den Aktionen (in Matthias' Beispiel control select ID...) rein machen muss sonst kommt die Antwort nicht in Telegram an.