BOSWatch / BW3-Core

BOSWatch 3 Core Repo - Documentation at http://docs.boswatch.de
http://bwcc.boswatch.de
GNU General Public License v3.0
52 stars 24 forks source link

Error in Wildcards Handler #75

Closed raugbein closed 2 years ago

raugbein commented 3 years ago

Hi,

ich habe gerade versucht das Telegram Plugin einzurichten. Mittels curl kann ich im Chat Nachrichten senden, die kommen auch an.

curl https://api.telegram.org/bot1621634058:AAFzOmGWLIILIwFIYx8u9JJ-z/sendMessage -d chat_id=-552117958 -d text="Testnachricht"

*Token und Chat ID geändert

Nun habe ich das Plugin in die config aufgenommen:

  - type: plugin
    name: Telegram Plugin
    res: telegram
    config:
      message_pocsag: "{RIC}({SRIC})\n{MSG}"
      botToken: "1621634058:AAFzOmGWLIILIwFIYx8u9JJ-z"
      chatIds:
        - "-552117958"    

server yaml gestartet. Bei der nächsten RIC die reinkommt, nun diese Fehlermeldung:

15.02.2021 22:50:07,515 - pluginBase      [ERROR   ] [plugin.telegram] alarm error
Traceback (most recent call last):
  File "/opt/boswatch3/plugin/pluginBase.py", line 90, in _run
    self.pocsag(bwPacket)
  File "/opt/boswatch3/plugin/telegram.py", line 82, in pocsag
    msg = self.parseWildcards(self.config.get("message_pocsag", default="{RIC}({SRIC})\n{MSG}"))
  File "/opt/boswatch3/plugin/pluginBase.py", line 192, in parseWildcards
    return wildcard.replaceWildcards(msg, self._bwPacket)
  File "/opt/boswatch3/boswatch/wildcard.py", line 102, in replaceWildcards
    message = message.replace(wildcard, bwPacket.get(field))
TypeError: replace() argument 2 must be str, not None
15.02.2021 22:50:07,516 - pluginBase      [DEBUG   ] [plugin.telegram] teardown()
15.02.2021 22:50:07,516 - pluginBase      [DEBUG   ] [plugin.telegram] took 0.004 seconds
15.02.2021 22:50:07,517 - router          [DEBUG   ] [Router 1] finished

Habe ich noch etwas vergessen einzurichten?

raugbein commented 3 years ago

Lag daran, dass ich noch keine Filter eingerichtet hatte. Daher kam jede menge Müll rein. telegram.py Zeile 82 ersetzen mit:

        try:
            msg = self.parseWildcards(self.config.get("message_pocsag", default="{RIC}({SRIC})\n{MSG}"))
        except:
            msg = "Alarm ohne Nachricht"
            logging.warning("None msg ")
        self._sendMessage(msg)

Dann kann man auch ohne Filter testen. Wollte deswegen nur kein PR erstellen.

janspeller commented 3 years ago

Das scheint aber wohl ein generelles Problem zu sein, sollte eigentlich garnicht auftretenz dass das message field leer ist, dann sollte das denke ich ein leerer string sein.

Meinung @Schrolli91 ?

Schrolli91 commented 3 years ago

Hier läuft definitiv was falsch - der Fehler passiert ja bei den "extra" wildcards. Je nach genutzten Modulen sollten dort aber gar keine drin sein.

@raugbein Wir bräuchten hier mal einen vollständigen Log, vom Hochlauf bis zum ersten fehlgeschlagenen Alarm - sensible Daten bitte schwärzen.

raugbein commented 3 years ago

Ja, poste ich wenn ich zuhause bin. Wird aber eher spät Abend.

Am 16.02.2021 um 06:57 schrieb Bastian Schroll notifications@github.com:

 Hier läuft definitiv was falsch - der Fehler passiert ja bei den "extra" wildcards. Je nach genutzten Modulen sollten dort aber gar keine drin sein.

@raugbein Wir bräuchten hier mal einen vollständigen Log, vom Hochlauf bis zum ersten fehlgeschlagenen Alarm - sensible Daten bitte schwärzen.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

raugbein commented 3 years ago

Hi, Hier der server.log im Anhang und die Server.yaml

server.log

server.yaml.txt

Zusätzliche Frage, kann man eine RIC über Kommandline an den Server schicken?

janspeller commented 3 years ago

So ohne weiteres geht das nicht, ich habe mot mal irgendwann den TCPClient genommen und damit was zum schicken von den alarm-json's gebastelt, das hat wohl funktioniert, aber war doof gelöst.

Bitte nimm mal sas descriptor-modul raus, da fragst du fms felder ab, obwohl du vorher alles bisauf pocsag raus filters. Scheint dennoch ein Bug zu sein, dass dann Felder (gewiped?!) werden bzw. der mode sich verstellt.

Schrolli91 commented 3 years ago

Ich glaube der Fehler kommt zustande, weil ein Custom Wildcard registiert wird, allerdings für ein Feld, dass in diesem Paket Typ nicht vorhanden ist. Der Fehler tritt ja nur bei dem Custom Wildcards auf. Ist also wohl wirklich ein Bug, denn es kann ja sein das ein anderer Router andere Pakete liefert - wildcards sind ja global.

# only pocsag at this point
# tone is zvei - field not available here

      - scanField: tone 
        descrField: description
        wildcard: "{DESCR}"
        descriptions: