ich habe es in zwei Schritten gemacht:
1. die Telegram Meldung im iobroker zerlegen in User und "Befehl"
var input;
var field;
var user;
on({id: 'telegram.0.communicate.request'}, function (obj) {
input = getState('telegram.0.communicate.request').val;
fields = input.split(']');
user = fields[0];
setState('variablen.0.telegram.befehl', fields[1]);
fields = user.split('[');
user = fields[1];
setState('variablen.0.telegram.user', user);
});
variablen.0.telegram.befehl
variablen.0.telegram.user
Sind zwei variablen wo ich unter Objekte erstellt habe, dass sie von jedem Program aus zugänglich sind.
2. auf Befehle reagieren
var Datensetzen = 0; // Punkt für 2 Antwort / 1 Abwesenheit / 2 Programm an aus / 3 Weihnachstbeleuchtung / 4 Storen
on({id: 'variablen.0.telegram.user'}, function (obj) {
switch (getState('variablen.0.telegram.befehl').val) {
//Abwesenheit
case 'Abwesenheit':
sendTo('telegram', {user: getState('variablen.0.telegram.user').val, text: 'Tage?'});
setTimeout(function (obj){Datensetzen=0;}, 20000);
setTimeout(function (obj){Datensetzen=1;}, 500);
break;
// ander case Brak einfügen
default:
//Abwesenheit Eingabe Zeit
if (Datensetzen==1){ //1 steht bei mir für abwesenheit !! musst bei jedem anpassen
setState('variablen.0.Abwesenheit', Number(getState('variablen.0.telegram.befehl').val));
sendTo('telegram', {user: getState('variablen.0.telegram.user').val, text: 'Die Abwesenheit ist ' + getState('variablen.0.telegram.befehl').val + ' Tage'});
Datensetzen = 0;}
}});
var Datensetzen -> dort mit der Zahl, definierst du welche "if" abfrage du aktivierst als 2 Meldung für 20 Sekunden. Am ende der Abfrage wird es wieder auf 0 gesetzt.
Dort kannst mit:
case… ..... break;
noch x Grundabfragen einstellen
if
dort gibst du dann z.Bsp. die Zeit ein, hast 20 Sekunden zeit, danach wird Datensetzen wieder auf 0 gesetzt
also, Beispiel läuft so
du gibst ein -> Abwesenheit
er antwortet -> Tage?
danach gibst du innert 20 Sekunden die gewünschten Tage ein -> z. Bsp. 2
er bestätigt das er die Variable Tag in Objekte auf "z. Bsp" 2 tage eingestellt hat.
Es gibt wahrscheinlich eleganter Versionen, bin jedoch kein Programmierer.