NEWS
Erstellung eines Keyboard Arrays für Telegram
-
Hallo Zusammen,
ich scheitere gerade an einem wahrscheinlich simplen JavaScript Problem.
Ich möchte aus einer Reihe Datenpunkten eine Buttonliste an Telegram senden. Erwartet wird vom Telegram Adapter ein Array. In dem Script erstelle ich einen String welchen ich jedoch nicht mehr in ein Array umwandeln kann. Ein Array.from liefert nicht das erwartete Ergebnis. Entferne ich die Kommentierung in Zeile 12, bekomme ich die Nachricht wie erwartet. Kann ich in der Schleife gleich ein Array erstellen?let message = "auswählen"; let keyboard = "["; $('state[id=0_userdata.0.Telegram.Menue.*.1]').each(function (id) { //log("Wert: "+id.split(".")[4]); keyboard = keyboard+"['"+id.split(".")[4]+"'],"; }); keyboard = keyboard+"];"; log("Buttons aus DPs: "+keyboard); // => [["Button1"],["Button2"],["Button3"],]; //keyboard=[["Button1"],["Button2"],["Button3"],]; sendTo('telegram.0', {user: 'User', text: message, parse_mode: 'HTML', reply_markup: { keyboard: keyboard, resize_keyboard: true, one_time_keyboard: true} });
Im Voraus vielen Dank für eure Hilfe.
Lutz
-
Evtl, wäre der Adapter was für dich
https://github.com/MiRo1310/ioBroker.telegram-menu/blob/main/docs/de/README.md
-
@david-g
Danke für die schnelle Antwort. Ich nutze das Script als Backanleitung für Brot. In den Datenpunkten ist eine Zeit und die Zutaten und Arbeiten für jeden Schritt hinterlegt. Nach Ablauf der Zeit bis zum nächsten Schritt bekommt man eine Nachricht was weiter zu tun ist. Um Ordnung zu halten werden bei einer neuen Nachricht die gesendeten und empfangenen alten Nachrichten gelöscht. Dies lässt sich mit vorhandenen Adaptern / Scripten kaum abbilden. Das läuft auch schon recht gut, jedoch ist die Anleitung noch in einem Array im Script selbst hinterlegt.Lutz
-
@lutzg
vielleicht hilft das - ist zwar ein inline keyboard, aber du kannst es auch als keyboard sendendieses script erzeugt folgende übersicht
-
Mit
JSON.parse
kannst du aus einem richtig formatierten String ein array machen, da das 100% nicht richtig formatiert ist im ersten durchlauf sollte der Code so aussehen.const a = '["button1", "Button2"]#' // den Fehler sieht man wohl try { const arr = JSON.parse(a); } catch { log('ich habs gesagt :)') }
Wenn das JSON.parse schief geht, zieht es sonst die ganze Javascriptinstanz mit in den Tod.
-
@ticaki sagte in Erstellung eines Keyboard Arrays für Telegram:
const a = '["button1", "Button2"]#' // den Fehler sieht man wohl try { const arr = JSON.parse(a); } catch { log('ich habs gesagt :)') }
Perfekt! Danke das hatte mir gefehlt.
@liv-in-sky danke schön die ticaki Lösung ist übersichtlicher