50_SSChatBot - Integration des Synology Chat Servers

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

Vorheriges Thema - Nächstes Thema

ThomasMagnum

Hallo Heiko, das ging aber schnell. Vielen Dank!

Ich habe das eben mal aucf die Schnelle getestet, geht aber leider nicht. Hier die Ausgabe:

2023.01.15 14:52:26 5 : SynChatBot - Add Item to queue - Index 12: 
$VAR1 = {
          'fileUrl' => 'http://192.168.178.33:8082/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=60e82061',
          'channel' => '',
          'attachment' => '',
          'userid' => 3,
          'method' => 'chatbot',
          'opmode' => 'sendItem',
          'text' => 'aktuelles Plotfile',
          'retryCount' => 0
        };
2023.01.15 14:52:26 4 : SynChatBot - ####################################################
2023.01.15 14:52:26 4 : SynChatBot - ###         start Chat operation sendItem    
2023.01.15 14:52:26 4 : SynChatBot - ####################################################
2023.01.15 14:52:26 4 : SynChatBot - API hashvalues already set - ignore get apisites
2023.01.15 14:52:26 4 : SynChatBot - botToken read from RAM: ********
2023.01.15 14:52:26 4 : SynChatBot - start SendQueue entry index "12" (sendItem) for operation.
2023.01.15 14:52:26 5 : SynChatBot - HTTP-Call will be done with httptimeout: 20 s
2023.01.15 14:52:26 4 : SynChatBot - Call-Out: https://192.168.178.33:443/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "aktuelles Plotfile","file_url": "http://192.168.178.33:8082/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=60e82061","user_ids": [3]}
2023.01.15 14:52:31 5 : SynChatBot - JSON returned: $VAR1 = {
          'error' => {
                       'code' => 117
                     },
          'success' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' )
        };
2023-01-15 14:52:31 SSChatBot SynChatBot Error: illegal file name or path
2023-01-15 14:52:31 SSChatBot SynChatBot Errorcode: 117
2023-01-15 14:52:31 SSChatBot SynChatBot Error
2023.01.15 14:52:31 2 : SynChatBot - ERROR - Operation sendItem was not successful. Errorcode: 117 - illegal file name or path
2023.01.15 14:52:31 2 : SynChatBot - ERROR - "sendItem" SendQueue index "12" not executed. It seems to be a permanent error. Exclude it from new send attempt !
2023.01.15 14:52:31 4 : SynChatBot - ####################################################
2023.01.15 14:52:31 4 : SynChatBot - ###         start Chat operation     
2023.01.15 14:52:31 4 : SynChatBot - ####################################################
2023.01.15 14:52:31 4 : SynChatBot - Only entries with "forbidSend" are in Sendqueue. Escaping ...


Das Bild wird wie angegeben im Verzeichnis "fhem/www/images" erzeugt. Wenn ich die genrierte Link-Adresse im Browser aufrufe wird das *.png auch angezeigt.

Ich teste das in den kommenden Tagen noch mal ein wenig ausführlicher, evtl. habe ich ja noch irgendwo einen Fehler.

Viele Grüße und noch einen schönen Sonntag.
Thomas

DS_Starter

Was passiert denn wenn du manuell das File im Browser ausfrufst ?


Steht ja da  :o
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

ThomasMagnum

Das wird angezeigt. Hatte ein Bild vom Aufruf in meinem anderen Post angehängt.

DS_Starter

Mach mal bitte ein List deine SSChatBot Devices.
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

ThomasMagnum

Bitteschön:
Internals:
   DEF        chat.domainname.de 443 https
   FUUID      63bbe490-f33f-4183-7194-3797b5c158d20aba
   FVERSION   50_SSChatBot.pm:v1.13.0-s23250/2020-11-28
   FW         WEBSSChatBot
   INADDR     chat.domainname.de
   INPORT     443
   INPROT     https
   MODEL      ChatBot
   NAME       SynChatBot
   NR         961
   OPMODE     
   OUTDEF     http://192.168.178.33:8082/sschat/outchat?botname=SynChatBot&fwcsrf=60e82061
   RESEND     next planned SendQueue start: immediately by next entry
   STATE      Error
   TOKEN      Set
   TYPE       SSChatBot
   eventCount 29
   HELPER:
     INFIX      outchat
     PACKAGE    main::FHEM::SSChatBot
     TOKEN      WJW}Y5J:c4NH[4LOWoP7X^oLcQOyg5\dPIymTruwZnCuXn=pZpLy^moRT^XyP`l4fZrme2[4Q6}^
QYy4]\_Iei>F
     USERFETCHED 1
     VERSION    1.13.0
     VERSION_API 1.3.0
     VERSION_CTZ unused
     VERSION_ErrCodes 1.3.6
     VERSION_SMUtils 1.24.3
     API:
       PARSET     1
       EXTERNAL:
         MOD        no
         NAME       SYNO.Chat.External
         PATH       entry.cgi
         VER        2
         mk         1
       INFO:
         MOD        no
         NAME       SYNO.API.Info
         PATH       query.cgi
         VER        1
         mk         1
     USERS:
       Adventskalender:
         email      vorname.nachname@web.de
         id         31
         nickname   nickname
         status     offline
       Annika:
         email      vorname.nachname@web.de
         id         4
         nickname   
         status     offline
       ChatHans:
         email      vorname.nachname@web.de
         id         21
         nickname   
         status     offline
       Dominik:
         email      vorname.nachname@web.de
         id         9
         nickname   
         status     offline
       Eva:
         email      vorname.nachname@web.de
         id         8
         nickname   
         status     offline
       G�nter:
         email      vorname.nachname@web.de
         id         27
         nickname   
         status     offline
       Monika:
         email      vorname.nachname@web.de
         id         26
         nickname   
         status     offline
       Stefan:
         email      vorname.nachname@web.de
         id         3
         nickname   nickname
         status     offline
       admin:
         email     
         id         2
         nickname   
         status     offline
       fhem:
         email     
         id         7
         nickname   
         status     offline
   OLDREADINGS:
   READINGS:
     2023-01-15 14:52:31   Error           illegal file name or path
     2023-01-15 14:52:31   Errorcode       117
     2023-01-15 14:52:26   QueueLength     6
     2023-01-15 14:49:57   sendPostId      81604380753
     2023-01-15 14:49:57   sendUserId      3
     2023-01-15 14:52:31   state           Error
Attributes:
   allowedUserForCode Name
   allowedUserForGet Name
   allowedUserForOwn Name
   allowedUserForSet Name
   defaultPeer Name
   room       Chat
   spareHost  192.168.178.33
   sparePort  8082
   verbose    5


Den Domainnamen und die Username habe ich anonymisiert.

DS_Starter

Passt alles.
Habe es gerade bei mir probiert. File wird gesendet.

Hier zum Vergleich:


2023.01.15 15:48:04.678 5: SynChatBot - Add Item to queue - Index 6:
{
  'channel' => '',
  'fileUrl' => 'http://192.168.2.45:8086/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=xxxxxx',
  'method' => 'chatbot',
  'userid' => 4,
  'retryCount' => 0,
  'text' => 'aktuelles Plotfile',
  'opmode' => 'sendItem',
  'attachment' => ''
}

2023.01.15 15:48:04.679 4: SynChatBot - ####################################################
2023.01.15 15:48:04.679 4: SynChatBot - ###         start Chat operation sendItem   
2023.01.15 15:48:04.680 4: SynChatBot - ####################################################
2023.01.15 15:48:04.680 4: SynChatBot - API hashvalues already set - ignore get apisites
2023.01.15 15:48:04.681 4: SynChatBot - botToken read from RAM: ********
2023.01.15 15:48:04.681 4: SynChatBot - start SendQueue entry index "6" (sendItem) for operation.
2023.01.15 15:48:04.681 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2023.01.15 15:48:04.682 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "aktuelles Plotfile","file_url": "http://192.168.2.45:8086/sschat/www/images/SynChatBot_SendPlot.png?%26fwcsrf=xxxxxxx","user_ids": [4]}
2023.01.15 15:48:08.905 5: SynChatBot - JSON returned: {
  'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
  'data' => {
              'succ' => {
                          'user_id_post_map' => {
                                                  '4' => '34359741427'
                                                }
                        },
              'fail' => undef
            }
}

2023.01.15 15:48:08.923 4: SynChatBot - Opmode "sendItem" finished successfully, Sendqueue index "6" deleted.


Hmmm, hast du irgendwelche Zugriffsbeschränkungen auf IP-Adressebene ?
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

ThomasMagnum

Hallo Heiko,

ich konnte es lösen.
Ich hab mich erinnert das ich schonmal das Prolem hatte aus einem Container die lokale IP der Synology zu erreichen. Ich habe dann mal testweise "localhost" eingetragen und schon gings.
Nochmals vielen Dank für die Erweiterung des Moduls.

Einziges Manko was ich nun noch habe, hat aber nix mit dem Modul zu tun, ist die Anzeige der Grafik.
Ist der Hintergrund hell ist die Grafik komplett lesbar, ist der Hintergrund der Chat App dunkel, kann man die Ränder (Beschriftung) nicht mehr erkennen, da der Bereich dann ebenfalls abgedunkelt ist.
Hast du da evtl. einen Tipp für mich?

Gruß, Thomas

DS_Starter

Hallo Thomas,

danke für das Feedback, dann checke ich die V heute Abend ein.
Wegen dem Hintergrund frag doch mal im SVG Forum nach.
Ich schau auch heute Abend mal ob ich dazu etwas im Chat finde.

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

ThomasMagnum

Ist für mich gelöst, siehe hier:
https://forum.fhem.de/index.php/topic,131640.msg1258118.html#msg1258118

Kann wohl nur in der "plotAsPng" Funktion gelöst werden.
Rudolf Vorschlag ist aber für mich ein gangbarer Weg.

marvin78

Zitat von: marvin78 am 20 Dezember 2021, 10:54:49Eine andere Frage.

Der TelegramBot gibt einem die Möglichkeit, Nachrichten zu ändern bzw. zu löschen, wenn sie schon versendet sind.

Beispielanwendungen:

  • Versenden von Wifi-QR-Code - man möchte nicht, dass der länger als x Sekunden angezeigt wird
  • Tür öffnen ja/nein: Auch hier sollten die Schaltflächen nicht länger als x Sekunden sichtbar sein um zu verhindern, dass sie versehentlich zu einem falschen Zeitpunkt betätigt werden

Gibt das die API her?


Ich komme nochmal auf das Thema hier zurück. Ich halte das Löschen von gewissen Nachrichten nach einer gewissen Zeit für extrem wichtig. Wenn ich Nachrichten über die Webanwendung im Chat lösche, wird an entry.cgi folgender Payload übergeben:

post_id: XXXXXXXXXXXX
real_delete: false
api: SYNO.Chat.Post
method: delete
version: 8


@DS_Starter: Meinst du, es wäre möglich, das mal im Modul auszuprobieren und zu übernehmen?

DS_Starter

Das schaue ich mir mal an.

Komisch ... ich bekomme keine Mails mehr von meinen abonnierten Threads. ....

LG
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

Guten Morgen,

@marvin78, ich denke das ist hinzubekommen.
Momentan habe ich allerdings noch keine Idee wo/wie man am Besten die post_id herbekommt die man löschen will.
Wird eine Mitteilung empfangen / versendet, wird die Post ID im Reading recPostId / sendPostId dargestellt.

Ich kann aber keine Liste der noch vorhandenen Post IDs erstellen um daraus eine zum Löschen auswählen zu können.
Ich könnte mir z.Zt. nur vorstellen, dass man als User diese Post ID in einem Freifeld angeben muß, d.h. man muß sie sich nach einem geeigneten Verfahren vorher irgendwie abrufbar speichern um sie später für das Löschen verfügbar zu haben.

Wie siehst du das ?

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

marvin78

Zitat von: DS_Starter am 08 April 2023, 09:35:16Guten Morgen,

@marvin78, ich denke das ist hinzubekommen.
Momentan habe ich allerdings noch keine Idee wo/wie man am Besten die post_id herbekommt die man löschen will.
Wird eine Mitteilung empfangen / versendet, wird die Post ID im Reading recPostId / sendPostId dargestellt.

Ich kann aber keine Liste der noch vorhandenen Post IDs erstellen um daraus eine zum Löschen auswählen zu können.
Ich könnte mir z.Zt. nur vorstellen, dass man als User diese Post ID in einem Freifeld angeben muß, d.h. man muß sie sich nach einem geeigneten Verfahren vorher irgendwie abrufbar speichern um sie später für das Löschen verfügbar zu haben.

Wie siehst du das ?

Grüße,
Heiko

Die letzte Post-ID müsste ich mir in meiner Automation ohnehin selbst merken. Man müsste sie eben beim Löschen in einem Parameter angeben können. Das Merken würde ich dem User bzw. dessen Skript überlassen. Das passt schon.

DS_Starter

Kurzer Zwischenstand ...
Im Prinzip kann ich eine Message nun über das Modul löschen.
Aber es funktioniert momentan nur temporär.
Es ist ein POST Request. In diesem Request müssen unter Anderem ein X-SYNO-TOKEN und ein gültiger Cookie angegeben werden. Beide Parameter sind in der Brower Session verfügbar. Wenn ich diese Daten aus dem Browser "mause" klappt es mit der Löschanforderung.
Mal sehen ob/wie ich da weiterkomme.

LG
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

marvin78

Zitat von: DS_Starter am 08 April 2023, 16:19:25Kurzer Zwischenstand ...
Im Prinzip kann ich eine Message nun über das Modul löschen.
Aber es funktioniert momentan nur temporär.
Es ist ein POST Request. In diesem Request müssen unter Anderem ein X-SYNO-TOKEN und ein gültiger Cookie angegeben werden. Beide Parameter sind in der Brower Session verfügbar. Wenn ich diese Daten aus dem Browser "mause" klappt es mit der Löschanforderung.
Mal sehen ob/wie ich da weiterkomme.

LG

Danke für deine Mühe. Würde es per curl funktionieren (ich nehme an, der Token ist dann das größere Problem)? Ich kann aktuell leider nicht selbst testen, da nicht in der Nähe eines brauchbaren Rechners.

OT: Schade ist, dass Synology für sowas so halbgare APIs anbietet. Da gibt es keine echte Konsistenz.