msgDialog: Instant Messaging als FHEM Interface

Begonnen von igami, 30 September 2017, 15:09:01

Vorheriges Thema - Nächstes Thema

defdanny

Hallo zusammen,
ich habe folgendes Problem:
Ich habe die Einrichtung des msgDialog Gerätes und Kopplung mit dem TelegramBot Device erfolgreich abgeschlossen.
Ein erster Testdialog funktioniert problemlos. Nun habe ich gemäß Wiki-Artikel von "normalem" auf "Inline-Keyboard" umgestellt.
Dazu habe ich die das notify-Device "sentMsgIdByPeerId notify" und das cmdalias "message2queryEditInline" gemäß Beispiel angelegt.
Soweit, so gut, das Menü des Meta-Dialogs wird nun "inline" angezeigt. Prima!

Aber: Sobald ich einen Menüeintrag auswähle, sehe ich ein fröhlich vor sich hinkringelndes Kringel in der Schaltfläche und es passiert genau: nichts. (siehe Screenshot)
Interessant: Gebe ich das Command direkt ein, funktioniert es.

Was könnte die Ursache für dieses verhalten sein?

Hier die Raw Definition meines Meta-Dialog:

defmod meta_Dialog msgDialog {\
  "%me%": {\
    "match": "\/?(start|%me%)",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "{return('(' . join(') (', sort{lc($a) cmp lc($b)} (split('\n', fhem('get TYPE=msgDialog:FILTER=NAME!=$SELF:FILTER=allowed=.*($recipient|everyone).* trigger', 1)))) . ') (abbrechen) ')}",\
      "Ich kann folgendes für dich tun:"\
    ]\
  },\
  "zurück": {\
    "commands": "set $recipient_history=.+ say @$recipient {(ReadingsVal($DEV, '$recipient_history', '') =~ m/((.+)\\|.+$)/;;;; return($2 || $1);;;;)}"\
  },\
  "abbrechen": {\
    "match": "\/?abbrechen",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Dialog abgebrochen."\
    ]\
  },\
  "beenden": {\
    "match": "\/?beenden",\
    "commands": "deletereading TYPE=msgDialog $recipient_history",\
    "message": [\
      "TelegramBot_MTYPE=queryInline (%me%) ",\
      "Dialog beendet."\
    ]\
  }\
}
attr meta_Dialog allowed everyone
attr meta_Dialog room msg

setstate meta_Dialog Daniel: /start
setstate meta_Dialog 2018-05-20 20:29:03 state Daniel: /start




Raspberry Pi Modell B mit CUL V3 433 Mhz
MAX!Cube als CUN mit alternativer FW

Wuehler

Moin,

Ist das 1:1 der Meta-Dialog aus dem Wiki? Der hat bei mir super funktioniert (und ich meine ohne Anpassung).
Ansonsten wäre der Dialog der nicht funktioniert noch hilfreich als Info.
VG,
Dirk

defdanny

Hallo Dirk,
ja, das ist der metaDialog aus dem Wiki, völlig unverändert.
Er hat auch super funktioniert, solange ich ihn mit dem "normalen" Keyboard verwendet habe.
Erst, als ich die Schritte zur Aktivierung des inline Keyboards aus dem Wiki nachgestellt habe, fingen die geschilderten Probleme an.

Gerne poste ich auch noch den Dialog, "der nicht funktioniert."
Allerdings tritt das Problem auch bei der Schaltfläche "abbrechen" auf, die ja bereits im Meta-Dialog definiert ist und angezeigt wird....
Hier die Raw Def des Dialogs "Kamera_Dialog":

defmod Kamera_Dialog msgDialog {\
"Kameras": {\
"message": [\
  "(Kamera Carport) ",\
  "(Kamera Garten) ",\
  "(zurück) ",\
  "Menü Kameras"\
  ]\
},\
"Kamera Carport": {\
"commands": "set FHEM_Bot sendImage /opt/fhem/www/images/ipcams/ipcam1_snapshot.jpg",\
"message": [\
"So siehts in deinem Carport aus!"\
]\
\
},\
"Kamera Garten": {\
"commands": "set FHEM_Bot sendImage /opt/fhem/www/images/ipcams/ipcam2_snapshot.jpg",\
"message": [\
"So siehts in deinem Garten aus!"\
]\
}\
}
attr Kamera_Dialog allowed everyone
attr Kamera_Dialog room msg

setstate Kamera_Dialog Daniel: Kameras
setstate Kamera_Dialog 2018-05-20 22:52:35 Daniel_history
setstate Kamera_Dialog 2018-05-20 22:52:35 state Daniel: Kameras

Raspberry Pi Modell B mit CUL V3 433 Mhz
MAX!Cube als CUN mit alternativer FW

Wuehler

Mhh, ist nen bissl schwer zu erraten, da ich da auch lange nichts mehr mit gemacht habe. Folgande Ansätze:
1. hast du im device msgConfig den me-Eintrag in evalSpecials richtig gesetzt?
2. der screenshot ist ja schon im Kameras-Dialog. D.h. Du bist aus dem meta schon eine Ebene tiefer gekommen. Ich denke, daher kommt msg auch durcheinander und es kommt keine Antwort.

defdanny

Zu 1.: Ich habe für das msgConfig Device sowohl das Attribut "evalSpecials" als auch "msgDialog_evalSpecials" gesetzt. Ich bin nicht ganz sicher, welches das richtige ist, habe widersprüchliche Angaben hier im Thread gefunden.


defmod myMsgConfig msgConfig
attr myMsgConfig userattr evalSpecials:textField-long msgDialog_evalSpecials:textField-long msgDialog_msgCommand:textField
attr myMsgConfig comment FHEM Global Configuration for command 'msg'
attr myMsgConfig evalSpecials me=Tach TelegramBot=FHEM_Bot
attr myMsgConfig group Global
attr myMsgConfig msgContactPush FHEM_Bot
attr myMsgConfig msgDialog_evalSpecials me=Tach TelegramBot=FHEM_Bot
attr myMsgConfig msgType text
attr myMsgConfig room msg
attr myMsgConfig stateFormat fhemMsgState
attr myMsgConfig verbose 3

setstate myMsgConfig initialized
setstate myMsgConfig 2018-05-10 22:53:11 fhemMsgState initialized


Zu 2.: Nein, der Screenshot zeigt tatsächlich den Meta-Dialog. Mir ist es noch nicht gelungen, die Einträge für die Kameras auszublenden, die eigentlich erst im Kamera-Dialog erscheinen sollen. Habe noch nicht verstanden, wie man das macht. aber das ist erst mal nebensächlich...
Raspberry Pi Modell B mit CUL V3 433 Mhz
MAX!Cube als CUN mit alternativer FW

Wuehler

Ich habe nur msgDialog_evalSpecials.
Genauso im userattr. Da fehlt bei mir dein erster Eintrag.

Dass bei dir gleich die Menüpunkte des Unterdialogs angezeigt werden ist meiner Meinung nach ein Hinweis auf das Problem. Mach mal bei den Dialogen ein set reset und updateAllowed.

Wenn ich dich richtig verstanden habe hat das Ganze ohne inline-Tastatur funktioniert. Welchen Dialog hast du denn auf welche Weise angepasst?

jazzor

Hallo zusammen,

mittlerweile komme ich mit dem msgDialog-Modul relativ gut klar und steigere momentan den Wife-Acceptance-Faktor von Fhem dadurch gewaltig. ;)
Daher schonmal danke an dieser Stelle.

Hatte mir überlegt, dass es gut wäre, fertige Dialoge - welche auch für andere interessant sein könnten - in einem Thread zu sammeln.
Wie ist denn da so die Meinung zu? Lohnt das? Oder sollte sowas eher im Wiki stattfinden?
Ich hab bspw. einen Dialog für verpasste Anrufe zuhause, über den ich direkt auch neue Namen im Fritzbox-Telefonbuch anlegen kann.

Viele Grüße!

Fixel2012

Zitat von: jazzor am 22 Mai 2018, 23:02:19
Hallo zusammen,

mittlerweile komme ich mit dem msgDialog-Modul relativ gut klar und steigere momentan den Wife-Acceptance-Faktor von Fhem dadurch gewaltig. ;)
Daher schonmal danke an dieser Stelle.

Hatte mir überlegt, dass es gut wäre, fertige Dialoge - welche auch für andere interessant sein könnten - in einem Thread zu sammeln.
Wie ist denn da so die Meinung zu? Lohnt das? Oder sollte sowas eher im Wiki stattfinden?
Ich hab bspw. einen Dialog für verpasste Anrufe zuhause, über den ich direkt auch neue Namen im Fritzbox-Telefonbuch anlegen kann.

Viele Grüße!

Ich würde einer Sammlung von Dialogen zusprechen. Ich tue mich da nämlich noch etwas schwer^^
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Wuehler

Ich finde die Idee auch gut. Eigentlich ist das Wiki meiner Meinung nach besser dazu geeignet, zum Start sollte aber ein eigener Thread hier reichen. Mal schauen wie viel zusammen kommt. Wenn es im Thread zu unübersichtlich wird kann man immer noch die Dialoge ins Wiki bringen.

jazzor

Zitat von: Wuehler am 23 Mai 2018, 08:38:26
Ich finde die Idee auch gut. Eigentlich ist das Wiki meiner Meinung nach besser dazu geeignet, zum Start sollte aber ein eigener Thread hier reichen. Mal schauen wie viel zusammen kommt. Wenn es im Thread zu unübersichtlich wird kann man immer noch die Dialoge ins Wiki bringen.
Ich hab den Thread jetzt mal spontan hier ins Leben gerufen.
Bei Wünschen oder Anregungen bitte gerne per PM anstubsen.

Fixel2012

Zitat von: igami am 20 Januar 2018, 06:29:04
Also eine Art Wörterbuch? Falls ja würde ich das glaube ich über die myUtils lösen

sub babel_en2de($) {
  my ($text) = @_;
  my %babel = (
    "present" => "anwesend",
    "absent" => "abwesend"
  );
  my $babelkeys = join("|", keys(%babel));
  $text =~ s/($babelkeys)/$babel{$1}/g;
 
  return($text);
}


Dann noch alle ausgehenden Nachrichten durch den übersetzer jagen:

attr myMsgConfig msgDialog_msgCommand msg push \@$recipients {(babel_en2de($message))}


Mein Vorhaben habe ich vor 4 Monaten erstmal liegen gelassen.

Kriege es 4 Monate später allerdings immer noch nicht hin.

Mein Vorhaben ist es ein Reading eines Presence Devices auszulesen und direkt mit zu schicken.

Siehe hier:

{
   "Anwesenheit":{
      "message":[
"Anwesenheit der Familienmitglieder:"
         "Name1:" <> #auslesen und darstellen des status vom Gtag
         "Name2:" <> #auslesen und darstellen des status vom Gtag
         "Name3:" <present> #Beispielsweise present ausgelesen
         "Name4:" <Zuhause> #aus present wird dann mit Hilfe der Sub von igamai "Zuhause"

      ]

   }


Ich habe bereits schon ein wenig mit ReadingsVal rum gespielt allerdings nur Syntax Fehler bekommen...

Kann mir jemand einen Tipp geben?
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Wuehler

Hi,

Bei mir gehts zB in folgendem Mini-Dialog:
{
  "Voucher": {
    "commands": [
      "{fhem('set voucherComment comment '.ReadingsVal('Unifi','-VC_2h','').' (2h): $recipient')}"
    ],
    "message": "{return('Code: '.fhem('get Unifi voucher 2h'))}"
  }
}


VG,
Dirk

defdanny

Zitat von: Keule_09 am 30 Januar 2018, 12:36:25
Hallo,

hab mal eine Frage zum Meta_Dialog.
Dort sind ja bestimmte Befehle schon vorgegeben, die bis auf "zurück" bei mir auch funktionieren.
Der zurück-Button müsste ja nur eine Ebene höher springen oder ?
Muss für den zurück-Befehl noch was angegeben werden ?

Hab mir den Berechtigungsdialog von Igami importiert,
da ich dachte es liegt an meinem Dialog aber beim betätigen des zurück-Buttons dreht sich auch dort nur der Kreis aber es passiert nichts.

Gruß Marco

Hallo Marco,
ich stehe gerade vor genau dem gleichen Rätsel. Wie hast du es gelöst?

Grüße
Daniel
Raspberry Pi Modell B mit CUL V3 433 Mhz
MAX!Cube als CUN mit alternativer FW

Fixel2012

Zitat von: Wuehler am 23 Mai 2018, 15:36:12
Hi,

Bei mir gehts zB in folgendem Mini-Dialog:
{
  "Voucher": {
    "commands": [
      "{fhem('set voucherComment comment '.ReadingsVal('Unifi','-VC_2h','').' (2h): $recipient')}"
    ],
    "message": "{return('Code: '.fhem('get Unifi voucher 2h'))}"
  }
}


VG,
Dirk

Danke, aber irgendwie kann ich damit nicht viel anfangen.

Ich bin nun so weit gekommen, dass das Reading ausgelesen wird. Allerdings kriege ich es anschließend nicht dargestellt. Ich kriege immer innerhalb Telegram "unknown command absent, try help" Es wird wohl versucht das ausgelesene Reading als command zu interpretieren...

Was mache ich falsch? Habe lange nicht mehr mit Perl gearbeitet. :(

Hier mein Code:


{
   "Anwesenheit":{
      "message":[
"Anwesenheit der Familienmitglieder:",
     "Felix:", "{my $bla = fhem(ReadingsVal('FelixGtag','presence','')); return $bla;}",
         "Katharina:", "{my $bla = fhem(ReadingsVal('KatharinaGtag','presence','')); return $bla;}",
         "Martina:", "{my $bla = fhem(ReadingsVal('MartinaGtag','presence','')); return $bla;}",
         "Rolf:", "{my $bla = fhem(ReadingsVal('RolfGtag','presence','')); return $bla;}"
      ]

   }
}
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Wuehler

Hi,

Sieht bei dir nach message ja auch iwie anders aus.