Autor Thema: msgDialog: Zurück verhält sich nicht wie gewünscht  (Gelesen 1213 mal)

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
msgDialog: Zurück verhält sich nicht wie gewünscht
« am: 05 Dezember 2019, 01:08:15 »
Hallo,

eigentlich bin ich mit meinen msgDialog-Dialogen sehr zufrieden.
Aber eines stört mich doch: der Zurück-Button funktioniert nicht wie gewünscht.

Daher habe ich heute alle meine Dialog deaktiviert und die beiden Dialoge aus dem Wiki 1:1 übernommen (also met_Dialog und Waschmaschine_Dialog).
Wenn ich nun die Dialoge aufrufe, erscheint als erstes Menü:
   Waschmaschine
   abbrechen

Das funktioniert also schon mal.
Wenn ich nun in "Waschmaschine" reingehe, erscheint folgendes Menü:
   programmieren
   einschalten
   Verlaufsdiagramm
   abbrechen

Auch das klappt ohne Problem.
Wenn ich in "programmieren" reingehe, kommt:
   bestätigen|zurück|abbrechen
   und die ganzen Zeiten

Auch das klappt und hier funktioniert das "zurück". Ich komme wieder in die Übersicht des Waschmaschine_Dialog.

Wenn ich aber nun in der Übersicht statt nur "abbrechen" "zurück|abbrechen" definiere, erscheint zwar der richtige Dialog.
   programmieren
   einschalten
   Verlaufsdiagramm
   zurück|abbrechen

Wenn ich den Button "zurück" drücke, dann passiert aber gar nichts.
Eigentlich dachte ich, dass ich dann in den meta_Dialog zurückkomme.

Stimmt die Definition des "zurück" im Wiki nicht?
Der Befehl muss ja nur im meta_Dialog definiert werden. Richtig?
Oder in jedem Dialog?

Danke im Voraus
lg, Gerhard

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1254
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #1 am: 13 Dezember 2019, 08:45:28 »
Zitat
Der Befehl muss ja nur im meta_Dialog definiert werden. Richtig?
Oder in jedem Dialog?

Moin Gerhard,
das kommt ganz drauf an, ob und wie du innerhalb eines Dialogs navigieren möchtest!
Hier mal zwei Beispiel-Dialoge mit Navigation - vielleicht wird's dann deutlicher:
defmod 02.Lampen_Dialog msgDialog {\
"02.💡...Lampen....💡": {\
"message": [\
"(💡 Lampe einschalten) ",\
"(💡 Lampe ausschalten) ",\
    "(abbrechen|zurück:%me%) ",\
"Bitte wählen:"\
],\
"💡 Lampe einschalten": {\
"message": [\
"{return(lightsOn())}"\
],\
"Einschalten": {\
"match": ".*_licht",\
"commands": [\
"set $message on",\
"set $SELF say @$recipient 02.💡...Lampen....💡|Lampe einschalten"\
]\
},\
"Zurück": {\
"commands": [\
"set $SELF say @$recipient 02.💡...Lampen....💡"\
]\
}\
},\
"💡 Lampe ausschalten": {\
"message": [\
"{return(lightsOut())}"\
],\
"Ausschalten": {\
"match": ".*_licht",\
"commands": [\
"set $message off",\
"set $SELF say @$recipient 02.💡...Lampen....💡|Lampe ausschalten"\
]\
},\
"Zurück": {\
"commands": [\
"set $SELF say @$recipient 02.💡...Lampen....💡"\
]\
}\
}\
\
}\
}
attr 02.Lampen_Dialog allowed everyone
attr 02.Lampen_Dialog devStateIcon Initialized:ios-on-blue disabled:ios-off
attr 02.Lampen_Dialog group Dialoge
attr 02.Lampen_Dialog icon dialog
attr 02.Lampen_Dialog room 90_System->96_Dialogsteuerung

setstate 02.Lampen_Dialog rr_Sebastian: 02.💡...Lampen....💡
setstate 02.Lampen_Dialog 2019-12-13 08:40:48 rr_Sebastian_history 02.💡...Lampen....💡
setstate 02.Lampen_Dialog 2019-12-13 08:40:48 state rr_Sebastian: 02.💡...Lampen....💡


defmod 10.Anwesenheit_Dialog_user msgDialog {"10.🙋🏼...Anwesenheit...🙋🏼":{\
  "message": [\
    "(🙋🏻‍♂️Sebastian|🙋🏼Christine) ",\
"(🙋🏼Antonia|🙋🏼Hannah) ",\
"(abbrechen|zurück:%me%) ",\
"Welchen Bewohner soll ich schalten?"\
    ],\
    "🙋🏻‍♂️Sebastian":{\
"message": [\
    "{return('(bin abwesend) ') if(ReadingsVal('rr_Sebastian','presence','absent') eq 'present')}",\
    "{return('(bin anwesend) ') if(ReadingsVal('rr_Sebastian','presence','absent') =~ /gone|absent/)}",\
"(abbrechen|zurück) ",\
    "Bist du anwesend oder abwesend?"\
    ],  \
    "bin anwesend":{\
    "commands": [\
"set Sebastian.dum present",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    },\
"bin abwesend":{\
    "commands": [\
"set Sebastian.dum absent",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    }\
},\
"🙋🏼Antonia":{\
"message": [\
    "{return('(ist abwesend) ') if(ReadingsVal('rr_Antonia','presence','absent') eq 'present')}",\
    "{return('(ist anwesend) ') if(ReadingsVal('rr_Antonia','presence','absent') =~ /gone|absent/)}",\
    "(abbrechen|zurück) ",\
"Ist Toni anwesend oder abwesend?"\
],  \
    "ist anwesend":{\
    "commands": [\
"set Antonia.dum present",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    },\
    "ist abwesend":{\
    "commands": [\
"set Antonia.dum absent",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    }\
},\
"🙋🏼Christine":{\
"message": [\
    "{return('(ist abwesend) ') if(ReadingsVal('rr_Christine','presence','absent') eq 'present')}",\
    "{return('(ist anwesend) ') if(ReadingsVal('rr_Christine','presence','absent') =~ /gone|absent/)}",\
    "(abbrechen|zurück) ",\
"Ist Christine anwesend oder abwesend?"\
    ],  \
    "ist anwesend":{\
    "commands": [\
"set Christine.dum present",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    },\
    "ist abwesend":{\
    "commands": [\
"set Christine.dum absent",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    }\
},\
"🙋🏼Hannah":{\
"message": [\
    "{return('(ist abwesend) ') if(ReadingsVal('rr_Hannah','presence','absent') eq 'present')}",\
    "{return('(ist anwesend) ') if(ReadingsVal('rr_Hannah','presence','absent') =~ /gone|absent/)}",\
    "(abbrechen|zurück) ",\
"Ist Hannah anwesend oder abwesend?"\
    ],  \
    "ist anwesend":{\
    "commands": [\
"set Hannah.dum present",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    },\
    "ist abwesend":{\
    "commands": [\
"set Hannah.dum absent",\
"set $SELF say @$recipient 10.🙋🏼...Anwesenheit...🙋🏼"\
    ]\
    }\
}\
  }\
}\
\

attr 10.Anwesenheit_Dialog_user allowed everyone
attr 10.Anwesenheit_Dialog_user devStateIcon Initialized:ios-on-blue disabled:ios-off
attr 10.Anwesenheit_Dialog_user disable 0
attr 10.Anwesenheit_Dialog_user group Dialoge
attr 10.Anwesenheit_Dialog_user icon dialog
attr 10.Anwesenheit_Dialog_user room 90_System->96_Dialogsteuerung

setstate 10.Anwesenheit_Dialog_user rr_Sebastian: 10.🙋🏼...Anwesenheit...🙋🏼
setstate 10.Anwesenheit_Dialog_user 2019-12-13 08:39:18 state rr_Sebastian: 10.🙋🏼...Anwesenheit...🙋🏼


In beiden fällen ist zurück%me% der Weg zum Metadialog und zurück (mit oder ohne Sprungmarke) der
Rückweg innerhalb eines Dialogs.

VG Sebastian
Proxmox mit: nextcloud, fhem, pihole, docker, bitwarden, deconz, TasmoAdmin
fhem mit: deconz, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Testumgebung: docker pull fhem/fhem

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #2 am: 16 Dezember 2019, 15:39:14 »
Hallo Sebastian,

vielen Dank. Das hilft mir schon mal sehr.

Wenn ich das nun richtig verstehe, dann wird das einfache "zurück" im Dialog selbst behandelt.
Das "zurück:%me%" wird im Meta-Dialog behandelt.
Also die Zeilen hier aus dem Wiki (https://wiki.fhem.de/wiki/MsgDialog#Define)
"zurück": {\
    "commands": "set $recipient_history=.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/((.+)\\|.+$)/;;;; return($2 || $1);;;;)}"\
  },\

Stimmt das so?
Und Dein "lightsOn" ist das hier: https://forum.fhem.de/index.php/topic,77297.msg930299.html#msg930299
Richtig?

Danke, lg, Gerhard

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1254
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #3 am: 16 Dezember 2019, 15:42:24 »
Zitat
Stimmt das so?
Korrekt.
Zitat
Und Dein "lightsOn" ist das hier: https://forum.fhem.de/index.php/topic,77297.msg930299.html#msg930299
Das ist die Funktion aus dem Lampen-Dialog.

VG Sebastian
Proxmox mit: nextcloud, fhem, pihole, docker, bitwarden, deconz, TasmoAdmin
fhem mit: deconz, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Testumgebung: docker pull fhem/fhem

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #4 am: 18 Dezember 2019, 11:26:19 »
Hallo Sebastian,

Danke. Ich kämpfe noch etwas mit meinem zeitlichen Ressourcen.
Eine Frage hätte ich noch:
Wenn Du in Deinem Dialog 02.Lampen_Dialog die Zeile "(abbrechen|zurück:%me%)" angibst, was erscheint dann als Label in Deinem Telegramm?
Bei mir sind es 2 Button: einer mit der Beschriftung "abbrechen" und einer mit "zurück:Marvis" (mein System heißt so).

Sollte dort aber nicht eigentlich "abbrechen" und "zurück" stehen?

Danke im Voraus
lg, Gerhard

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1254
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #5 am: 18 Dezember 2019, 11:44:11 »
Zitat
Wenn Du in Deinem Dialog 02.Lampen_Dialog die Zeile "(abbrechen|zurück:%me%)" angibst, was erscheint dann als Label in Deinem Telegramm?

"(abbrechen|zurück:%me%) ",
sieht bei mir wie im Bild unten aus.
VG Sebastian
Proxmox mit: nextcloud, fhem, pihole, docker, bitwarden, deconz, TasmoAdmin
fhem mit: deconz, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Testumgebung: docker pull fhem/fhem

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #6 am: 18 Dezember 2019, 11:55:26 »
Das dachte ich mir.
Bei mir steht statt "zurück" "zurück:Marivs". Eigenartig.

Das muss ich mir auch mal näher anschauen.
Vielleicht ist auch das das ursächliche Problem.
lg, Gerhard

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1254
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #7 am: 18 Dezember 2019, 12:40:24 »
Das dachte ich mir.
Bei mir steht statt "zurück" "zurück:Marivs". Eigenartig.

Das muss ich mir auch mal näher anschauen.
Vielleicht ist auch das das ursächliche Problem.
lg, Gerhard

Aber du bekommst schon einen Button angezeigt oder?
Proxmox mit: nextcloud, fhem, pihole, docker, bitwarden, deconz, TasmoAdmin
fhem mit: deconz, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Testumgebung: docker pull fhem/fhem

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #8 am: 18 Dezember 2019, 15:11:51 »
Ja, angezeigt wird ein Button.
Aber auf dem Button steht "🔙zurück:Marvis".

lg, Gerhard

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1254
  • 🏠⚙️💡🛠📱
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #9 am: 18 Dezember 2019, 15:15:47 »
Ja, angezeigt wird ein Button.
Aber auf dem Button steht "🔙zurück:Marvis".

lg, Gerhard

Ah OK, das funktioniert anscheinend nur mit der Inline Tastatur. Ohne Inline Tastatur siehts bei mir dann auch so aus  ;)
VG Sebastian
Proxmox mit: nextcloud, fhem, pihole, docker, bitwarden, deconz, TasmoAdmin
fhem mit: deconz, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Testumgebung: docker pull fhem/fhem

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #10 am: 18 Dezember 2019, 15:20:32 »
ok, da war der Denkfehler.
Danke Dir!

lg, Gerhard

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #11 am: 22 Dezember 2019, 00:50:52 »
Hallo,

ich habe mich noch etwas damit beschäftigt und jedesmal wenn ich in einem Dialog den "zurück"-Button drücke, kommt folgender Log-Eintrag:
ERROR evaluating my $DEV='Heizung_Dialog';ReadingsVal($DEV, 'rr_Gerhard_history', '') =~ m/((.+)\|.+$/;; return($2 || $1);;: Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE (.+)\|.+$/ at (eval 46176) line 1.
Woran kann das liegen?

Danke im Voraus
lg, Gerhard

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #12 am: 02 Januar 2020, 18:12:10 »
Hallo,

Ich habe noch einen Klammerfehler bei der Definition des „zurück“ im meta_Dialog gefunden.
Keine Ahnung, wie das entstanden ist.
Jetzt kommt zwar der Fehler nicht mehr, dafür funktioniert das „zurück“ immer noch nicht.

Wo wird eigentlich diese History gespeichert?
Mein receipient heißt: rr_Gerhard

Also müsste ich doch mit dem folgenden Befehl in der fhem-Befehlszeile was sehen. Oder?
{ReadingsVal(meta_Dialog, 'rr_Gerhard_history', '')}
Das ist aber immer leer.
Wo liegt mein Denkfehler?

Lg, Gerhard

Offline igami

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2711
  • RTFM
    • commandref
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #13 am: 02 Januar 2020, 22:04:33 »
Wo wird eigentlich diese History gespeichert?
Wird in jedem Dialog gespeichert.
Siehe commandref abschnitt readings: https://commandref.fhem.de/commandref_DE.html#msgDialog
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Offline gestein

  • Sr. Member
  • ****
  • Beiträge: 648
Antw:msgDialog: Zurück verhält sich nicht wie gewünscht
« Antwort #14 am: 02 Januar 2020, 23:33:28 »
Hallo Igami,

Danke für den Hinweis.
Ganz verstehe ich das aber noch immer nicht.

Sobald ich den entsprechenden Dialog (z.B. "🌡️Heizung") in Telegram aufrufe, gibt es im Dialog das Reading "rr_Gerhard_history" und dort steht dann nur der Name des Dialogs ("🌡️Heizung").
Wenn in dem Dialog "🌡️Heizung" ein Befehl ausgeführt wird, dann wird das Reading "rr_Gerhard_history" auf leer gesetzt.
Leider funktioniert dann kein zweiter Befehl im Dialog mehr (aber das ist wahrscheinlich ein anderes Problem).

Wenn ich den Dialog "🌡️Heizung" aufrufe und dann gleich auf "zurück" drücke, wird auch das Reading "rr_Gerhard_history" auf leer gesetzt.
Es tut sich aber sonst nichts.

In meinem Meta_Dialog steht für "zurück":
  "🔙zurück": {
    "commands": "set $recipient_history=.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/((.+)\\|.+$)/;;;; return($2 || $1);;;;)}"
  },
  "zurück": {
    "commands": "set $recipient_history=.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/((.+)\\|.+$)/;;;; return($2 || $1);;;;)}"
  },


lg, Gerhard