NEWS
[gelöst] JS sicherstellen, dass Telegram Nachricht gesendet hat
-
Hallo zusammen,
ich verfolge das Projekt ioBroker schon länger und bin wirklich begeistert, was hier auf die Beine gestellt wurde.
Nun zu meiner Frage:
Wie kann ich in einem JS-Skript sicherstellen, dass Code nur weiter ausgeführt wird, wenn Telegram "richtig" gearbeitet hat (Adapter hat gesendet)?
Oder auch andersrum: Wie kann ich einen möglichen Fehler von Telegram in JS abfangen?
Vielen Dank,
Tram
-
Hi,
Telegram sendest DU per einer Message die Du an den Telegram Adapter sendest.
sendTo('telegram', {user: 'UserName', text: 'Test message'}, function (res) { console.log('Sent to ' + res + ' users'); });
Der Callback wird mit einem "res" Parameter aufgerufen.
Jetzt müsste man mal schauen was da zurückkommt wenn Es nicht gesendet werden kann … wenn 0 dann cool wenn ne andere Zahl dann blöd
Kannst ja mal experimentieren. Die Ergebnisse sind bestimmt interessant
-
Danke für die flotte Antwort.
sendTo hatte ich eingebaut, mir fehlte ein Callback zum Auswerten.
Hatte zwar auf Github mir den Adapter angesehen, hab den Wald aber vor lauter Bäumen nicht gesehen…
Hintergrund: Es soll eine tägliche Meldung abgesetzt werden. Wenn die Meldung abgesetzt wurde, dann Variablen auf 0. Leider hatte ich von gestern auf heute das Problem, dass Telegram nichts angezeigt hat, aber die Variablen zurückgesetzt wurden.
Werde ich heute Abend gleich mal einbauen und schauen, was passiert.
Bist du sicher, dass 0 der Callbackwert für Okay ist? Liest sich eher so, dass er die Anzahl der Empfänger zurückgibt...
-
habe nicht geschrieben das 0 für OK steht
Die Frage die man rausfinden müsste ist ob die Zahl anders ist in Erfolgs vs Fehlerfall. Baue es doch mal ein und Logge es, dann siehst Du ob die Zahl ne andere ist und damit weisst Du ob das reicht
-
Dann hatte ich dich falsch verstanden.
Aber egal, was ich an Telegram sende, bekomme ich keinen Callbackwert. Nachricht geht durch, die Callbackfunction liefert aber nichts…
-
Wenn ich nur den folgenden Code als Skript unter Common laufen lasse, bekomme ich eine Nachricht auf Telegram aber keine Ausgabe im Log.
sendTo('telegram', 'Test message', function(res) { log('Testeintrag!'); log('------------------------' + res); } );
Woran kann das liegen?
-
Bei mir funktioniert das bestens.
Gebe mal folgenden Code unverändert in einem neuen Skript ein:
sendTo('telegram.0', { text: 'Kannst Du das lesen?'}, function (err) { console.log('Fehlercode: ' + err ); });
Dann starte das Skript und schaue unten auf die Log-Ausgabe (Du musst auch nichts weiter aktivieren, wie z. B. die Debug oder Hilfeausgabe).
Bei mir kommt dann sofort:
` > 20:37:27.948 [info] javascript.1 script.js._Test.TelegramTest: registered 0 subscriptions and 0 schedules20:37:27.957 [info] javascript.1 script.js._Test.TelegramTest: Fehlercode: 0 `
Wenn Du die erste Zeile auch nicht siehst mit dem subscription, dann machst Du vermutlich noch irgendwo was falsch.Kommt das Telegram bei Dir an?
Es gibt noch eine zweite Möglichkeit:
Schaue auf die SentMessageID, ob diese sich ändert.
Diese findest Du unter telegram.0.communicate.botSendMessageId
Nachdem ich eine Nachricht verschicke, ändert diese sich immer.
So long,
Fitti
-
Danke dir.
Auf deine Frage: Message über Telegram kam an.
Habe den Fehler gefunden:
SendTo in meinem Beispiel oben versendet zwar die Nachricht, braucht aber für den Callback anscheinend die Instanznummer, um zu funktionieren.
sendTo('telegram.0', 'Test message', ````funktioniert jetzt und ich bekomme eine Antwort. Danke, Tram
-
Ist es damit deine Frage gelöst?
-
Ja. Vielen Dank.
-
Dann bitte dem Threadtitel ein [gelöst] voranstellen. Vielen Dank.