50_SSChatBot - Integration des Synology Chat Servers

Begonnen von DS_Starter, 25 November 2019, 07:56:56

Vorheriges Thema - Nächstes Thema

DS_Starter

#15
Hi Denny,

es war recht einfach umzusetzen und funktioniert sehr gut.
Man kann nun ein Slash Kommando direkt mit einer Schaltfläche an den Chat senden, z.B.:


text="Bitte bestätigen !"
attachments="[
              {
              "callback_id": "Bestaetigung", "text": "Drücke um Wetterdaten zu bekommen",
              "actions":[
                         {"type": "button", "name": "response", "value": "/Wetter", "text": "Wetter", "style": "green"}
                        ]
              }
             ]"


Es muss "/Wetter" natürlich vorher als ownCommand definiert sein. Es geht auch sowas:


text="Bitte bestätigen !"
attachments="[
              {
              "callback_id": "Bestaetigung", "text": "Drücke um Lampe eionzschalten",
              "actions":[
                         {"type": "button", "name": "response", "value": "/set Lampe on", "text": "Lampe an", "style": "green"}
                        ]
              }
             ]"


Deine Frage oben ist mir noch nicht klar.
Willst du auf einen Event von recActionsValue und dessen Wert per Notify reagieren und dann wiederum eine Schalterstruktur an den Chat senden ? Oder habe ich es falsch verstanden ...

Denn recActionsValue bringt ja als Reaktion auf den Tastendruck des Chatusers nur einen solchen Event:

2020-03-15 20:10:19.566 SSChatBot SynChatBot recActionsValue: Yes
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Ich habe auch mal ein notify definiert:


defmod N.sendButton notify user:change:.ein set SynChatBot asyncSendItem \
text="Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?" \
attachments="[{\
              "callback_id": "menue", "text": "Wähle ein Menü aus!",\
              "actions":[\
                         {"type": "button", "name": "responseHM", "value": "hm", "text": "Haputmenü", "style": "orange"},\
                         {"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},\
                         {"type": "button", "name": "responseON", "value": "/set SW_TV on", "text": "TV An", "style": "green"},\
                         {"type": "button", "name": "responseOFF", "value": "/set SW_TV off", "text": "TV Aus", "style": "green"}\
                        ]\
             }]"
attr N.sendButton room Chat


Das reagiert auf "user:change:.ein" und sendet an den Chat die diversen Schaltflächen wie im Anhang.
Klappt  :D

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rohlande

Hallo Heiko,

Sau Gut. Das macht den DOIF Code viel einfacher und leichter anwendbar. Spart einiges an Zwischenschritten.
Damit hast DU die globale (set / get) direkt zur Verfügung gestellt. Klasse Arbeit. Bin echt dankbar.
Morgen gehts weiter.
Hier ein kleiner Anfnag.
1.Menü, 2. Schalter betätigen, 3. Sensoren abfragen
DEF

([SynChatBot:"^recText:./start$"]) (set SynChatBot asyncSendItem text="Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?"
attachments="[
              {
              "callback_id": "menue", "text": "Wähle ein Menü aus!",
              "actions":[
                         {"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"},
                         {"type": "button", "name": "responseSW", "value": "SW_MN", "text": "Schalter", "style": "green"},
                         {"type": "button", "name": "responseMS", "value": "SNS", "text": "Sensoren", "style": "green"},
                         {"type": "button", "name": "responseINF", "value": "INF", "text": "Info", "style": "green"}
                         ]
              }
             ]")
DOELSEIF
([SynChatBot:"^recActionsValue:.hm$"]) (set SynChatBot asyncSendItem text="Hallo ich bin Dein ChatBot! Was kann ich für Dich tun?"
attachments="[
              {
              "callback_id": "menue", "text": "Wähle ein Menü aus!",
              "actions":[
                         {"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"},
                         {"type": "button", "name": "responseSW", "value": "SW_MN", "text": "Schalter", "style": "green"},
                         {"type": "button", "name": "responseMS", "value": "SNS", "text": "Sensoren", "style": "green"},
                         {"type": "button", "name": "responseINF", "value": "INF", "text": "Info", "style": "green"}
                         ]
              }
             ]")
DOELSEIF
([SynChatBot:"^recActionsValue:.bck$"]) (set SynChatBot asyncSendItem text="Wie kann ich Dir helfen?"
attachments="[
              {
              "callback_id": "menue", "text": "Wähle ein Menü aus!",
              "actions":[
                         {"type": "button", "name": "responseHM", "value": "hm", "text": "Hauptmenü", "style": "orange"},
                         {"type": "button", "name": "responseSW", "value": "SW_MN", "text": "Schalter", "style": "green"},
                         {"type": "button", "name": "responseMS", "value": "SNS", "text": "Sensoren", "style": "green"},
                         {"type": "button", "name": "responseINF", "value": "INF", "text": "Info", "style": "green"}
                        ]
              }
             ]")
DOELSEIF
([SynChatBot:"^recActionsValue:.SW_MN$"]) (set SynChatBot asyncSendItem text="Schalter Auswahl!"
attachments="[
              {
              "callback_id": "menue", "text": "Was möchtest Du schalten",
              "actions":[
                         {"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},
                         {"type": "button", "name": "responseON", "value": "/set SW_Test on", "text": "TV An", "style": "green"},
                         {"type": "button", "name": "responseOFF", "value": "/set SW_Test off", "text": "TV Aus", "style": "green"}
                         ]
              }
             ]")
DOELSEIF
([SynChatBot:"^recActionsValue:.SNS$"]) (set SynChatBot asyncSendItem text="Sensor Werte lesen!"
attachments="[
              {
              "callback_id": "menue", "text": "Welchen Sensor möchtest Du abfragen?",
              "actions":[
                         {"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},
                         {"type": "button", "name": "responseMS_SNS", "value": "/SNS", "text": "Sensor1", "style": "green"},
                         {"type": "button", "name": "responseMS_SNS1", "value": "/SNS1", "text": "Sensor2", "style": "green"}
                         ]
              }
             ]")


Schönen Abend noch und vielen Dank!

VG Denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rohlande

#19
Hallo Heiko,

Wie gehts? Alle noch gesund? Die aktuelle Lage ist ja gnz schön angespannt. Passt auf Euch auf!

so bin gerade wieder am basteln und stoße gerade auf das Problem mit dem Versand von Bildern, Videos.
Im Wiki des Moduls und auch bei Synology ist nur folgendes angegeben:
set <Name> asyncSendItem text="letzte Aufnahme von Kamera" fileUrl="http://sdcam.myds.me:8081/surveillance/Hauseingang/20191124AM/Hauseingang-20191124-103741-1574588261.mp4"
Dabei wird immer die URL verwendet, also http.
Kann man das auch direkt von einem angegeben Ordner heraus versenden?
Ich möchte ungern extra einen Webserver Bereich nach außen aufmachen um die Daten an den Bot zu übergeben.
Dann wäre der Sinn diese Moduls nicht mehr der gleiche. Die Daten gehören ja mir.

Was mich allerdings wundert ist folgendes:
text="a fun image" fileUrl="https://user:passwd@192.168.178.44/web_images/HOFCAM_get_PIC_snapshot.jpg"
funktioniert auch nicht.
Da kommt eine Fehlermeldung:
illegal file name or path
   
2020-04-08 18:16:37
Errorcode
   
117

Vg Denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

DS_Starter

Hallo Denny,

gesundheitlich ist alles ok., aber die Instabilität meiner Internetverbindungen bei Konferenzen macht mir echt schwer zu schaffen.  :(

Zitat
Kann man das auch direkt von einem angegeben Ordner heraus versenden?
Ich möchte ungern extra einen Webserver Bereich nach außen aufmachen um die Daten an den Bot zu übergeben.
Meines Wissens und lt. Doku geht nur eine Web-Adresse. Aber einen Zugang musst du von außen deswegen nicht aufmachen. Du musst deine zu versendenen Bilder/Dateien nur für die Synology ! (den Chat-Server) zugreifbar machen.

Zum Beispiel zu den Schnappschüssen der Surveillance Station -> https://wiki.fhem.de/wiki/SSCAM_-_Steuerung_von_Kameras_in_Synology_Surveillance_Station#Vorbereitung_-_Erstellung_eines_virtuellen_Hosts_auf_Synology

Bezüglich deiner Fehlermeldung ... stimmt denn die Adresse ?

Wenn du das testest, wird ein Buchtitel (Bild) vom Chatserver geholt, eingebunden und an den Empfänger versendet:


text="a fun image" fileUrl="https://images-na.ssl-images-amazon.com/images/I/51hwjVziNJL._SX382_BO1,204,203,200_.jpg"


Klappt das bei dir ?
Unbekannt ist allerdings auch, ob der Chatserver die Mitgabe von User:Passwort in dieser Form unterstützt. Ist nirgends dokumentiert.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rohlande

Hallo Heiko,

oh blöd. Ich habe das Glück hier mit vollem Power am Netz zu hängen.
1Gbit von Vodafone. Bin sehr zufrieden und habe täglich ca. 10-15 Meetings.
Dazu arbeite ich 100% Remote an HIL Systemen für Software Tests.
Das klappt seither sehr gut sogar GLOBAL.

So der Link funktioniert. Ebenso mein LINK wenn ich die vorgelagerten Benutzerdaten am Webserver der Synology wieder raus nehme.
Nun muss ich mir überlegen wie ich einen reinen internen Webserver betreiben kann. Denn den der Synology benötige ich ja für alle Dienste die darauf laufen.
Ich möchte den ungern ohne password Schutz am laufen halten.

Danke Dir Heiko.

Vg Denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

DS_Starter

Du kannst dir doch in der Webstation beliebige virtuelle Hosts einrichten. Das klappt für den Zweck ...
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rohlande

Danke Heiko.
Habe es so gelöst. VH angelegt der nach außen nicht erreichbar ist. URL wird sauber ausgelesen und Bilder kommen via BOT zu mir nachdem diese im DOIF angetriggert wurden.
Jetzt gehts an die Integration Deines SSCam Modul.

VG Denny
HostSystem: Synology DS918 | FHEM im Docker Version: 6.0-s22528_v2.2.4 (dedizierte IP Adresse) | MQTT_Broker auf DS918 NAS | MQTT_FHEM | TASMOTA_DEVICE | SSChatBot | SSCam | LaMetric | FBAHAHTTP | CUL | SONOS | HUEBridge (deCONZ) Zigbee | FB_CALLMONITOR | InfluxDBLogger

coolcat

Hi,

super Modul, gefällt mir und habe auch direkt rumgespielt und auch direkt ne Frage.
in einem DOIF habe ich folgenden Zweig:
DOELSEIF
([Chat:"^recActionsValue:.SW_LI$"]) (set Chat asyncSendItem text="Schalter Auswahl!"
attachments="[
              {
              "callback_id": "menue", "text": "Was möchtest Du schalten",
              "actions":[
                         {"type": "button", "name": "responseBCK", "value": "bck", "text": "Zurück", "style": "orange"},
                         {"type": "button", "name": "responseON", "value": "/set Licht on", "text": "Licht An", "style": "green"},
                         {"type": "button", "name": "responseOFF", "value": "/set Licht off", "text": "Licht Aus", "style": "green"}
                        ]
              }
             ]")

das Device Licht ist nur zum Test eingesetzt, ich wollte damit eigentlich mein Licht im Zimmer steuern, das den Namen HUEDevice1 hat.
setzte ich diesen Name ein, reagiert das Menü nicht mehr, also so:
{"type": "button", "name": "responseON", "value": "/set HUEDevice1 on", "text": "Licht An", "style": "green"},

bisher hat alles super geklappt, aber sobald ich ein Hue Device einsetze, klappt es nicht.

Natürlich könnte ich ein dummy und ein notify oder ähnlich benutzen, aber es ist schon komisch, das bisher alle anderen Devices (z.B. eine Ikea Lampe/Birne mit der Huebridge gekoppelt) funktionieren, das mit einem Huedevice aber nicht klappt.

ist das ein Bug?
Was braucht Ihr?
Freue mich auf jede Hilfe

Gruß
Ralf

DS_Starter

Hallo Ralf,

ja, das ist ein Bug der mit dem Leerzeichen vor einem großen "H" zu tun hat.
Das ist eine mysteriöse Sache die ich mit Rudi noch klären wollte.
Bislang habe ich einen Workaround für normalen Text (mit "H") eingebaut. Für attchements habe ich es vergessen, sorry.

Du kannst mal versuchen den String so aufzubauen:
{"type": "button", "name": "responseON", "value": "/set%20HUEDevice1 on", "text": "Licht An", "style": "green"},

oder du benennst HUEDevice1 um in z.B. WoZiHUEDevice1. Hauptsache kein führendes "H".  ;)

Morgen nach dem Feiertag baue ich noch den Bugfix für attachements ein.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

coolcat

#26
  :D :D
ja wie cool ist denn der Bug? hahaha, ich probiers mit %20 mal

Daaaaanke :)

Gruß Ralf


--- getestet und für funktionsfähig befunden :) ---

DS_Starter

#27
Ja der ist nicht schlecht, oder ? Was meinst du wie lange ich gebraucht habe diesen Zusammenhang rauszufinden ?  :D  :D
Edit: und vor allem ein kleines "h" ist kein Problem  8) :o

Schönen Feiertag !
Morgen stelle ich eine gefixte Version bereit. Kannst dann ja mal Tester sein.  :)

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Hallo Ralf,

ich habe die neue Version des SSChatBot in mein contrib geladen.
Bitte restarten wenn du das File heruntergeladen hast.

Und auch nicht vergessen das %20 wieder herauszunehmen.
Das macht jetzt das Modul (sollte es  :) )

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

coolcat

Hallo Heiko,

habe es direkt getestet sieht gut aus, siehe Dateianhang.
Kann irgendwie das Bild nicht anders einfügen

Auf jeden Fall klappt es jetzt

Gruß
Ralf