Seite 1 von 1

Telegram-Binding - Problem mit multipler Antwort über Bot

Verfasst: 14. Mai 2020 11:01
von TheNero
Guten Tag openHABforum,

ich bin neu in der Community und habe bei einem meiner rules ein Problem. Ich versuche über Telegram wie in der Telegram Binding beschreibung erklärt eine aktion über multiple Antworten auszulösen. In meinem Fall das ausschalten der Heizung beim verlassen des Hauses.

Die Beschreibung auf der Telegram Binding Website sieht wie folgt aus:

Bild

Mein Script/Mein Rule und mein Item sehen wie folgt aus (habe ein paar Daten aus Datensicherheit mit XXXXXXXX ausgetauscht):

ITEM:

Code: Alles auswählen

String Heater_Reply
"Heater Reply"
{channel="telegram:telegramBot:XXXXXXXXXX:Heater_Reply"}
RULE

Code: Alles auswählen

rule "Send telegram with question"
when
    Item gWhos_Home changed from ON to OFF
then
    if( gHeater.state == ON ) { 
    val telegramAction = getActions("telegram","telegram:telegramBot:XXXXXXXXXX")
    telegramAction.sendTelegramQuery("Niemand ist daheim, aber die Heizugn ist noch an an! Soll ich diese ausschalten", "Heater_Reply", "ja", "nein")
    }
end


rule "Reply handler for Heater"
when
    Item TelegramReplyId received update Heater_Reply
then
    val telegramAction = getActions("telegram","telegram:telegramBot:XXXXXXXXXX")

    if (telegramMessage.state.toString == "ja")
    {
        gHeater.sendCommand(OFF)
        telegramAction.sendTelegramAnswer(TelegramReplyId.state.toString, "Ok, Heizungen sind nun *aus*.")
    }
    else
    {
        telegramAction.sendTelegramAnswer(TelegramReplyId.state.toString, "Ok, ich lasse sie *an*.")
    }
end

Nun habe ich das Problem, das nach der Auswahl in Telegram gar nichts passiert, unabhängig davon ob ich Ja oder Nein auswähle.

Ich würde mich sehr über eure Hilfe freuen!

Viele Grüße TheNero

Re: Telegram-Binding - Problem mit multipler Antwort über Bot

Verfasst: 14. Mai 2020 11:42
von udo1toni
Hast Du denn dieses Item:

Code: Alles auswählen

String telegramMessage "Telegram Message" { channel = "telegram:telegramBot:2b155b22:lastMessageText" }
auch angelegt? Das ist zwar nicht explizit bei dem Codebeispiel aufgeführt, dafür aber beim vorangehenden Codebeispiel, und noch wichtiger, dieses Item wird im Code verwendet...

Die Idee der ReplyId ist, dass man mehrere Rules anlegen kann, die sich um Antworten auf Telegram Messages kümmern können. Damit die Zuordung eindeutig ist, gibt es die ReplyId

Re: Telegram-Binding - Problem mit multipler Antwort über Bot

Verfasst: 28. Aug 2020 22:46
von poetos
Hallo TheNero,
ist doch fast richtig, du hast in der ersten Rule "Heater_Reply" als ReplayID angegeben.
Dann muss in der zweiten Rule stehen:
Item TelegramBotReplyId received update Heater_Reply
(t- kleingeschrieben?) TelegramBotReplyId kann bei dir auch etwas anders heißen - siehe Item.
Gruß poetos