50_SSChatBot - Integration des Synology Chat Servers

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

Vorheriges Thema - Nächstes Thema

Karflyer

Hallo Heiko,

ich bin erst vor kurzem für Nachrichten aus FHEM heraus auf dein Modul umgestiegen. Das funktioniert auch sehr gut. Danke an dich für das Modul.
Beim Neustart von FHEM habe ich allerdings diese beiden Fehlermeldungen im Log:
2020.12.09 13:59:50 2: SynChatBot - ERROR message: read from http://192.168.2.168:20000 timed out
2020.12.09 13:59:50 2: SynChatBot - ERROR - "chatUserlist" SendQueue index "1" not executed. Restart SendQueue in 5 s (retryCount 1).


Wie lässt sich das abstellen?

Grüße
Stefan

DS_Starter

Hallo Stefan,

manchmal reagiert die Synology nicht so schnell auf Anfragen (gerade beim Start von FHEM wenn evtl. noch mehr Anfragen an die Syno gestellt werden) und dadurch kommt es zu dieser Meldung. Prinzipiell nicht schlimm, denn die Anmeldung wird ja wiederholt wie es im Log steht.

Aber es gibt noch das Attribut "httptimeout" welches du im Device setzen kannst, z.B. auf 60.
Damit läufst du dann nicht in den timeout. Musst du mal probieren was ein guter Wert für deine Umgebung wäre.

LG,
Heiko
Proxmox+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

#152
Hallo,
aktuell habe ich ein Problem mit der Einbindung des Chat Bots. Ich habe alles nach Anleitung in der Wiki vorgenommen, bekomme aber nach der EIngabe des Tokens die folgende Fehlermeldung:
Message not found for error code: 105 New error: autoblock
Mit dem Error Code 105

Eine Peer Liste kann ich auch nicht laden, da steht dann "--wait for userlist--

Kann mir evtl. jemand sagen wo der Fehler liegen könnte?

Gruß, Thomas

Edit: Hab das Problem gefunden. Die Autoblockierung der IP Adresse hatte auf der Synology NAS zugeschlagen.
Nach Anpassen der zugelassenen IP Range läuft alles wieder.

DS_Starter

#153
Hallo Thomas,

gerade wollte ich antworten. :)

Interessant dass die Autoblockierung auch mit dem Code 105 zurückkommt, normalerweise wäre es der Code für "The logged in session does not have permission."

Grüße,
Heiko
Proxmox+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 guten Morgen,

am Wochenende habe ich meine FHEM Installation (Docker) auf meine Synology umgezogen. Seit dieser Zeit verbindet sich mein SSChat Device nicht mehr mit dem Synology Chat Server.

Als Fehlermeldung kommt:
connect to https://192.168.178.33:5001 timed out

Hat evtl. jemand eine Idee was die Ursache dafür ist?
Vielen Dank!

DS_Starter

Guten Morgen,

Hast du für fhem im docker ein Portmapping eingerichtet ?
Wenn ja, prüfe mal bitte die integration des bots im syno chatserver. Es sind die ersten Schritte wie im Wiki beschrieben.
Der chatserver muss die angelegte fhemweb instanz erreichen können.

Lg,
Heiko
Proxmox+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

aus meiner Sicht habe ich die richtigen Portweiterleitungen eingerichtet (8082).
Ich versuche mal das Device komplett zu löschen und neu anzulegen, evtl. liegt ja da der Hund begraben. ;-)

Gruß, Thomas


mobiljoe123

Hallo Heiko,

aktuell scheinen die Formatierungen
Formatieren einer Nachricht:

Die folgenden Markdown-Codes werden vom Chat unterstützt:

    Inhalte betonen:
    Stellen Sie Ihren Text zwischen *Sternchen*, um Fettdruck zu erzeugen, oder _Unterstrichen_ für Kursivtext.
    Durchstreichen:
    Stellen Sie Ihren Text zwischen ~Tilden~.
    Eine Liste erstellen:
    Fügen Sie vor jedem Element der Liste ein Sternchen * gefolgt von einem Leerzeichen ein. Fügen Sie der Liste mit der Tastenkombination Umschalttaste + Eingabetaste neue Zeilen bzw. Elemente hinzu.
    Einzug oder Blockzitat hinzufügen:
    Fügen Sie dem Beginn einer Nachricht spitze Klammern hinzu. Beispiel:
        > Fügen Sie eine spitze Klammer hinzu, um die erste Zeile der Nachricht einzurücken.
        >>> Fügen Sie drei spitze Klammern hinzu, um mehrere Zeilen einzurücken und die Nachricht als längeres Zitat anzuzeigen.

nicht zu funktionieren.

gelesen unter: https://kb.synology.com/de-de/DSM/help/Chat/chat_enriching_your_chat?version=6

Muss ich da noch etwas beachten oder einstellen?

LG
Raspi 2; HM; MAX!; RFXtrx

DS_Starter

ZitatMuss ich da noch etwas beachten oder einstellen?
Ich habe das mal getestet. Die Formatierung von Durchstreichung und Kursivtext sowie Einrückung funktioniert einwandfrei wie in der Hilfe angegeben. Auch die Liste klappt wenn man im Modul es so angibt:


set ... asyncSendItem
* Element1 \n
* Element2 \n
* Element3 \n


Ebenso die Fettschrift mit:


set ... asyncSendItem Text mit *sternchen*


Gesendet habe ich mit dem SSChatbot Device. Der Screenshot sind vom Client auf meinem PC.
Auf dem Chat Client auf meinem Handy wird die Formatierung aber nicht realisiert. Ich denke Synology muß ein Update des Mobilclients herausbringen. Denke ich schreibe mal an Syno. Kannst du natürlich auch machen.

LG,
Heiko
Proxmox+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

mobiljoe123

Danke für die Rückmeldung.

Gesendet habe ich mit dem SSChatbot Device.
... hab ich auch gemacht.

Auf dem Chat Client auf ... Handy wird die Formatierung aber nicht realisiert.
... und nur da hab ich geschaut. ::)

Client auf ... PC
Habs gerade getestet. Funktioniert. Da schau ich aber nie.  :)

Denke ich schreibe mal an Syno. Kannst du natürlich auch machen.
Das versuch ich mal. Werde den Support anschreiben.
Raspi 2; HM; MAX!; RFXtrx

DS_Starter

Habe gerade auch mal in die Online-Hilfe direkt auf dem Chat Client auf dem Handy geschaut (Einstellungen -> Hilfe). Dort wird nicht beschrieben dass man die besagten Formatierungen benutzen könnte. Das zeigt für mich in die gleiche Richtung -> Update Chat App
Proxmox+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

Der Syno Support hat mir schon auf meine Anfrage geantwortet:

Zitat
...
Leider wurden die Formatierungen in der Mobilen App noch nicht implementiert. Ich habe dies als Funktionswunsch an unsere Entwicklung weitergeleitet.
...

VG
Proxmox+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

Zitat von: ThomasMagnum am 17 November 2021, 09:18:36
aus meiner Sicht habe ich die richtigen Portweiterleitungen eingerichtet (8082).
Ich versuche mal das Device komplett zu löschen und neu anzulegen, evtl. liegt ja da der Hund begraben. ;-)

Leider komme ich hier nicht weiter.
Egal ob die DSM Firewall an ist oder nicht, das Chat Device funktioniert nicht.
Der angelegte FHEMWEB Port wird auch durchgeleitet.

Hat noch einer eine Idee?

DS_Starter

Hallo Thomas,

stelle mal bitte verbose 5 im Device ein und restarte dann FHEM.
Wenn alles klappt, würde eine solche Ausgabe kommen:


2021.11.22 17:51:51.629 5: SynChatBot - Add Item to queue - Index 1:
{
  'fileUrl' => '',
  'userid' => '',
  'text' => '',
  'opmode' => 'chatUserlist',
  'retryCount' => 0,
  'method' => 'user_list',
  'channel' => '',
  'attachment' => ''
}

2021.11.22 17:51:51.630 4: SynChatBot - ####################################################
2021.11.22 17:51:51.631 4: SynChatBot - ###         start Chat operation chatUserlist   
2021.11.22 17:51:51.631 4: SynChatBot - ####################################################
2021.11.22 17:51:51.632 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2021.11.22 17:51:51.632 4: SynChatBot - API imported:
{
  'EXTERNAL' => {
                  'NAME' => 'SYNO.Chat.External'
                },
  'INFO' => {
              'PATH' => 'query.cgi',
              'NAME' => 'SYNO.API.Info',
              'VER' => 1
            }
}

2021.11.22 17:51:51.633 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/query.cgi?api=SYNO.API.Info&method=Query&version=1&query=SYNO.Chat.External,SYNO.API.Info
2021.11.22 17:51:51.634 3: SynChatBot - SSChatBot "SynChatBot" for URL /outchat registered
2021.11.22 17:52:01.465 5: SynChatBot - JSON returned: {
  'data' => {
              'SYNO.Chat.External' => {
                                        'maxVersion' => 2,
                                        'path' => 'entry.cgi',
                                        'minVersion' => 1,
                                        'requestFormat' => 'JSON'
                                      },
              'SYNO.API.Info' => {
                                   'path' => 'query.cgi',
                                   'minVersion' => 1,
                                   'maxVersion' => 1
                                 }
            },
  'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' )
}

2021.11.22 17:52:01.483 4: SynChatBot - API completed:
{
  'EXTERNAL' => {
                  'VER' => 2,
                  'MOD' => 'no',
                  'NAME' => 'SYNO.Chat.External',
                  'PATH' => 'entry.cgi'
                },
  'INFO' => {
              'NAME' => 'SYNO.API.Info',
              'MOD' => 'no',
              'VER' => 1,
              'PATH' => 'query.cgi'
            },
  'PARSET' => 1
}

2021.11.22 17:52:01.484 4: SynChatBot - botToken read from RAM: ********
2021.11.22 17:52:01.485 4: SynChatBot - start SendQueue entry index "1" (chatUserlist) for operation.
2021.11.22 17:52:01.485 5: SynChatBot - HTTP-Call will be done with httptimeout: 10 s
2021.11.22 17:52:01.485 4: SynChatBot - Call-Out: https://192.168.2.10:5001/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=user_list&token="<secret>"
2021.11.22 17:52:02.445 5: SynChatBot - JSON returned: {
  'data' => {
              'users' => [
                           {
                             'is_disabled' => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
                             'user_props' => {
....


Bei dir wird es wahrscheinlich an einer Stelle den Fehler geben.
Bitte poste dann den komplette Logausschnitt bis zu dem Fehler.

Grüße,
Heiko
Proxmox+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

Wiesel

Hallo,

ich weiß ich bin nicht zu 100% richtig hier aber vielleicht hat ja der ein oder andere eine Idee wie ich weiterkomme.
Mir ist aufgefallen, dass vor ein paar Tagen der Chatbot immer wieder mal auf Error ging und Nachrichten die von FHEM heraus an den Chatbot gingen gefühlt länger brauchen las vorher.


Nachdem ich in diesem Thread gelesen habe, dass die Synology manchmal etwas länger braucht um die Anfragen zu verarbeiten habe ich httptimeout auf 45 sekunden gestellt habe. Damit konnte ich erstmal das "Error" Problem beheben.
Jetzt ist dauern die anfragen an Synology immer noch ca 30-45 sekunden. Vorher war das innerhalb 5 sekunden da.
Ich habe, außer FHEM upzudaten, nichts an meiner Netzwerk/Synology Konfiguration geändert.

Antwort von Synology dauert ebenfalls solange wenn ich den request über einen Internet Browser sende, sowie über "wget ..." direkt von der Synology ausführe.

Nach einem Neustart funktioniert es "schneller" und irgendwann dann wieder die 30-40 Sekunden.

Habt ihr für mich ein paar Tipps wie ich dem Übeltäter auf die spur kommen kann ?
Kann ich auf der Synology den Request irgendwie verfolgen ?

Ich habe erfolglos probiert:
Home Assisant und Ubuntu Server auf der Synology als VM auf Synology deaktiviert.
Alle Portfreigaben zur Synology deaktiviert
FHEM neustart


Hier mal der Log nach dem absenden einer Nachricht:
Log nach absenden der Nachricht "test":
2021.11.26 13:39:47 5: OctoPrintChatBot - Add Item to queue - Index 7:
$VAR1 = {
          'attachment' => '',
          'channel' => '',
          'opmode' => 'sendItem',
          'userid' => 4,
          'retryCount' => 0,
          'method' => 'chatbot',
          'text' => 'test',
          'fileUrl' => ''
        };

2021.11.26 13:39:47 4: OctoPrintChatBot - ####################################################
2021.11.26 13:39:47 4: OctoPrintChatBot - ###         start Chat operation sendItem   
2021.11.26 13:39:47 4: OctoPrintChatBot - ####################################################
2021.11.26 13:39:47 4: OctoPrintChatBot - API hashvalues already set - ignore get apisites
2021.11.26 13:39:47 4: OctoPrintChatBot - botToken read from RAM: ********
2021.11.26 13:39:47 4: OctoPrintChatBot - start SendQueue entry index "7" (sendItem) for operation.
2021.11.26 13:39:47 5: OctoPrintChatBot - HTTP-Call will be done with httptimeout: 45 s
2021.11.26 13:39:47 4: OctoPrintChatBot - Call-Out: http://192.168.186.51:5000/webapi/entry.cgi?api=SYNO.Chat.External&version=2&method=chatbot&token="<secret>"&payload={"text": "test","user_ids": [4]}
2021.11.26 13:40:17 5: OctoPrintChatBot - JSON returned: $VAR1 = {
          'success' => bless( do{\(my $o = 1)}, 'JSON::PP::Boolean' ),
          'data' => {
                      'succ' => {
                                  'user_id_post_map' => {
                                                          '4' => '42949673192'
                                                        }
                                },
                      'fail' => undef
                    }
        };

2021.11.26 13:40:17 4: OctoPrintChatBot - Opmode "sendItem" finished successfully, Sendqueue index "7" deleted.


Raspi 4 mit FHEM und CUL / Conbee2