msgDialog: Instant Messaging als FHEM Interface

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

Vorheriges Thema - Nächstes Thema

nanocosmos

Hallo nochmal,

ich versuche mich in die Synthax für MsgDialog einzuarbeiten. Da bin ich eher schlecht als recht aufgestellt.  ::)
Nun ja: Habe den msgConfig und den meta_Dialog angelegt.
Nun wollte ich mit einem ersten kleinen Dialog testen, leider passiert gar nichts, wenn ich meinem Bot "test" schreibe.

Hier mal die Raw Def vom Dialog:
defmod test msgDialog { "test": {\
    "message": [\
      "Das ist die Antwort"\
    ]\
}\
}
attr test allowed everyone

schnitzelbrain

Zitat von: nanocosmos am 24 September 2018, 18:16:45
Hallo nochmal,

ich versuche mich in die Synthax für MsgDialog einzuarbeiten. Da bin ich eher schlecht als recht aufgestellt.  ::)
Nun ja: Habe den msgConfig und den meta_Dialog angelegt.
Nun wollte ich mit einem ersten kleinen Dialog testen, leider passiert gar nichts, wenn ich meinem Bot "test" schreibe.

Hier mal die Raw Def vom Dialog:
defmod test msgDialog { "test": {\
    "message": [\
      "Das ist die Antwort"\
    ]\
}\
}
attr test allowed everyone

Ein Leerzeichen am Ende der message Antwort fehlt.
"Dies ist die Antwort. "



Grüße
Schnitzelbrain

nanocosmos


Wuehler

Siehst du denn den Test-Dialog im Meta-Dialog? Und was kommt im Log, wenn du meta und test dialog auf verbose 5 stellst?

nanocosmos

Ich muss gestehen, dass ich msgDialog noch nicht komplett verstanden habe.
Ich habe es so verstanden, dass eigentlich auf den trigger (Name des Bots) zumindest der metaDialog starten müsste, also "ich kann...".
Passiert aber leider nicht, d.h. ich muss schon bei der config eine Fehler haben..
Habe mich aber eigentlich an den Wiki Eintrag gehalten.

Danke für die Hilfe!

Grüße
Daniel.

igami

Werden Events für eingehende Nachrichten im ROOMMATE device erzeugt? Das ist Voraussetzung für das funktionieren von 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

nanocosmos

Äääh.. ROMMATE Device... da war ja was.
Zu­ge­ge­be­ner­ma­ßen habe ich die Anleitung da nicht wirklich durchblickt.
Ich brauche also ein Residents Device?

Vielen Dank für eure (Anfänger-)Hilfe!

binford6000

Zitat von: nanocosmos am 25 September 2018, 18:55:14
Äääh.. ROMMATE Device... da war ja was.
Zu­ge­ge­be­ner­ma­ßen habe ich die Anleitung da nicht wirklich durchblickt.
Ich brauche also ein Residents Device?

Vielen Dank für eure (Anfänger-)Hilfe!

Steht so alles im Wiki. Einfach mal von oben bis unten durchlesen und schritt für schritt durcharbeiten.

VG Sebastian


Gesendet von iPhone mit Tapatalk

nanocosmos

Danke für den Hinweis!
Leider bringt mich der Text im Wiki nicht weiter. Ich weiß ehrlich gesagt nicht, was ich machen soll.
ZitatFür jeden Dialog kann festgelegt werden welche Person dazu berechtigt ist. Dazu sind Geräte vom Typ ROOMMATE oder GUEST mit definiertem msgContactPush Attribut erforderlich. Es ist darauf zu achten, dass das Reading fhemMsgRcvPush ein Event erzeugt. Siehe auch Attribut "allowed" in msgDialog.

Bräucht als Anfänger ein wenig Starthilfe. :-)

Marlen

Hallo,

du musst erst ein ROOMMATE anlegen, z.B. für deine Person. Im Roommate hinterlegst du deine Telegram ID.

In jeden msgDialog kannst du dann im Reading allowed auswählen wer berechtigt ist.

LG
  Marlen

nanocosmos

Hallo,
vielen Dank für den Tipp!!!
Jetzt läuft es.  :)

Viele Grüße
Daniel

Marlen

Wie kann man denn den meta-Dialog umbauen, dass er die Dialoge auf 2 Spalten anzeigt?

LG
  Marlen

binford6000

Hallo Marlen,
ich glaube das wird schwierig... Wenn es dir um größere Übersicht geht dann vielleicht so:

Mein Meta-Dialog zeigt mir nur diejenigen Dialoge, welche nicht auf .*_fav, .*_sys oder .*_user enden:
    "{return('(' . join(') (', sort(split('\n', fhem('get TYPE=msgDialog:FILTER=NAME!=$SELF:FILTER=NAME!=.*_fav:FILTER=NAME!=.*_sys:FILTER=NAME!=.*_user:FILTER=allowed=.*($recipient|everyone).* trigger')))) . ') ')}",

Diese Dialoge werden dann (als Dialog) so aufgelistet (z.B. Favoriten):
    "{return('(' . join(') (', sort(split('\n', fhem('get TYPE=msgDialog:FILTER=NAME=.*_fav:FILTER=allowed=.*($recipient|everyone).* trigger')))) . ') ')}",

Somit kann ich bereits bei der Benamung neuer Dialoge einer gewissen Struktur folgen.
Im Bild unten zeigen Favoriten, Bewohner und System weitere Dialoge an. Alle anderen sind "normale" Dialoge ohne Namenszusatz.

VG Sebastian

binford6000

Zitat von: Marlen am 17 Oktober 2018, 21:24:04
Hallo,

gefällt mir!!  :)

Wie geht das:

    "{return('(' . join(') (', sort(split('\n', fhem('get TYPE=msgDialog:FILTER=NAME=.*_fav:FILTER=allowed=.*($recipient|everyone).* trigger')))) . ') ')}",


2 oder 3- spaltig?

LG
  Marlen

Danke  :)

Das würde ich auch gerne nutzen. Schafft mehr Platz.

Theoretisch betrachtet müsste das Ergebnis von join() in
(dialog_1|dialog_2)
...
(dialog_n-1|dialog_n)

landen. Aber leider übersteigt das meine bis Dato erlangten PERL-Kenntnisse  :o

VG Sebastian

igami

Würde ich auch gerne, aber so auf die Schnelle fällt mir da auch nichts ein :(
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