Mattermost Smart-Home-Integration, kostenlos und Open Source

Sprich mit Gladys über Mattermost, schreib in Kanäle, starte Szenen bei Nachrichten oder Befehlen.
Sprich mit Gladys über Mattermost, den freien Team-Chat, den du selbst hosten
kannst, so wie mit dem Telegram-Bot von Gladys: Stell eine Frage, starte eine Szene, empfange die
Nachrichten von Gladys als Direktnachricht. Die Integration schreibt außerdem aus deinen Szenen in
Mattermost-Kanäle und startet Szenen, wenn eine Nachricht oder ein Befehl wie !licht aus in einem
beobachteten Kanal geschrieben wird. Dafür dient ein Bot-Konto deines Mattermost-Servers, im lokalen Netz
oder im Internet.
Ohne die Hardware entwickelt: Rückmeldungen willkommen. Die Integration wurde gegen einen echten Mattermost-Server (Team Edition, in Docker) getestet, aber nicht in einem echten Gladys und nicht mit allen Mattermost-Clients. Melde, was funktioniert und was nicht, in den Issues oder im Gladys-Forum.
Voraussetzungen
- Gladys Assistant 5.1.0 oder neuer.
- Ein Mattermost-Server, den Gladys erreicht (Version 7 oder neuer), und ein Administratorkonto, um den Bot anzulegen.
- Ein Bot-Konto (oder ein eigener Benutzer mit einem persönlichen Zugriffstoken). Nimm nicht dein persönliches Konto: Der Bot antwortet in seinem Namen.
- Der Benutzername jeder Person, die mit dem Bot sprechen darf, zum Beispiel
alice.
Einrichtung
- In Mattermost, Systemkonsole → Integrationen → Bot-Konten: Schalte Erstellen von Bot-Konten aktivieren ein.
- Hauptmenü Integrationen → Bot-Konten → Bot-Konto hinzufügen: ein Benutzername wie
gladys, die Rolle Mitglied. Kopiere das Token, das am Ende nur einmal angezeigt wird. - Füge den Bot deinem Team hinzu (Teammenü Mitglieder hinzufügen, oder Systemkonsole → Benutzer).
- In Gladys, Integrationen → Mattermost → Konfiguration:
- Serveradresse: die Adresse von Mattermost wie im Browser, zum Beispiel
https://chat.example.orgoderhttp://192.168.1.20:8065. - Token des Bots: das Token aus Schritt 2.
- Erlaubte Personen: die Benutzernamen, auf die der Bot hört, durch Kommas getrennt
(
alice, bob). Leer antwortet der Bot niemandem: Er ignoriert die Nachrichten aller, die nicht in dieser Liste stehen. - Beobachtete Kanäle: die Kanäle, deren Nachrichten Szenen starten, geschrieben als
Team/Kanalwie in ihrer Adresse (https://chat.example.org/zuhause/channels/garageergibtzuhause/garage; die ganze Adresse geht auch), oder per Kanal-ID, durch Kommas getrennt. Der Bot tritt öffentlichen Kanälen selbst bei; füge ihn vorher privaten Kanälen hinzu. - Befehlspräfix: standardmäßig
!(/gehört den Slash-Befehlen von Mattermost). - Sprache des Bots: die Sprache dessen, was der Bot schreibt, bevor eine Person verknüpft ist.
- Serveradresse: die Adresse von Mattermost wie im Browser, zum Beispiel
- Klicke auf Verbindung testen: Der Bericht nennt das Konto des Bots, die beobachteten Kanäle, denen er beigetreten ist, und die gefundenen erlaubten Personen. Der Verbindungsstatus der Seite sagt es auch und nennt einen Kanal oder eine Person, die nicht gefunden wurde.
Dein Mattermost-Konto verknüpfen, um mit Gladys zu sprechen
Jeder Gladys-Benutzer, der aus Mattermost mit Gladys sprechen will, macht das einmal:
- In Gladys, Integrationen → Mattermost → Konfiguration, Block „Mein Konto verknüpfen“: Klicke auf Verknüpfungscode generieren.
- Öffne in Mattermost eine Direktnachricht mit dem Bot (das + neben „Direktnachrichten“, dann sein Benutzername) und schick ihm den Code (8 Zeichen). Der Bot bestätigt: Dein Mattermost-Konto ist mit deinem Gladys-Benutzer verknüpft. Im selben Block kannst du die Verknüpfung wieder lösen.
Was der Bot macht
- In einer Direktnachricht mit einer erlaubten Person: Er gibt die Nachrichten an Gladys weiter, mit den Rechten des verknüpften Gladys-Benutzers, genau wie der Telegram-Bot: „Wie warm ist es im Wohnzimmer?“, „Mach das Licht aus“. Die Antworten von Gladys kommen in dieser Direktnachricht zurück, Markdown von Mattermost dargestellt. Die Nachrichten, die Gladys dir schickt (die Szenenaktion Nachricht senden, die Systemnachrichten), kommen auch dort an, sogar vor jedem Gespräch. Ein Kamerabild aus einer Szene kommt als Bild an.
- In einem beobachteten Kanal: Jede Nachricht einer erlaubten Person startet den Auslöser Mattermost-Nachricht empfangen, und eine Nachricht, die mit dem Präfix beginnt, startet auch Mattermost-Befehl empfangen. Der Bot antwortet dort nie von selbst: Was passiert, entscheiden deine Szenen.
- In jedem anderen Kanal (eine Gruppennachricht, ein nicht beobachteter Kanal): Er schweigt. Gladys antwortet nie dort, wo andere mitlesen.
- Was er ignoriert: alle, die keine erlaubte Person sind, seine eigenen Nachrichten (eine Szene, die in einen beobachteten Kanal schreibt, startet sich nie selbst neu), Systemnachrichten („ist dem Kanal beigetreten“), Bearbeitungen und Nachrichten, die beim Lesen älter als 5 Minuten sind (ein „!garage auf“ von vor zwei Stunden läuft jetzt nicht).
- Nach einer Unterbrechung (Neustart des Servers, von Gladys, kurzer Netzausfall): Er verbindet sich selbst neu und liest die Nachrichten der beobachteten Kanäle und der Direktnachrichten der letzten 5 Minuten nach.
Dashboard
Das Widget Mattermost zeigt, ob der Bot verbunden ist, sein Konto, die beobachteten Kanäle, in denen er ist, die letzten 5 Nachrichten aus den beobachteten Kanälen (Autor, Text, Datum) und eine Schaltfläche Verbindung testen. Die Direktnachrichten mit Gladys erscheinen nie: Alle, die das Dashboard sehen, sehen das Widget.
Szenen
Auslöser
- Mattermost-Nachricht empfangen: Eine erlaubte Person hat in einem beobachteten Kanal geschrieben.
Filter (leer = alle): Kanal (wie in der Konfiguration geschrieben, zum Beispiel
zuhause/garage) und Absender (der Benutzername ohne@:alice). Variablen: Nachricht, Absender, Kanal, Kanal-ID. - Mattermost-Befehl empfangen: Eine erlaubte Person hat einen Befehl in einem beobachteten Kanal
geschrieben: das Präfix, dann ein Wort, dann optionale Argumente, zum Beispiel
!licht aus kueche. Filter Befehl: das Wort ohne Präfix, kleingeschrieben (licht); dazu Kanal, Absender. Variablen: Befehl (licht), Argumente (aus kueche), Nachricht, Absender, Kanal, Kanal-ID. Dieselbe Nachricht startet auch Mattermost-Nachricht empfangen. - Mattermost-Verbindung verloren: Der Bot erreicht den Server nicht mehr, seit einer Minute, oder sein Token wird abgelehnt. Variable: Fehler. Einmal gestartet, bis die Verbindung zurück ist.
- Mattermost-Verbindung wiederhergestellt: Der Bot erreicht den Server nach einem Verbindungsverlust wieder. Variable: Bot-Konto (Benutzername).
Aktionen
- Mattermost-Nachricht senden: schreibt eine Nachricht in einen Kanal (
Team/Kanal, seine Adresse oder seine ID) oder als Direktnachricht an eine Person (@alice). Die Nachricht akzeptiert Szenenvariablen und das Markdown von Mattermost (**fett**,_kursiv_, Listen, Links,@here). Der Bot muss im Kanal sein oder ihm beitreten können (ein öffentlicher Kanal seines Teams). Ergebnisse: Gesendet (ja/nein), Beitrags-ID, Fehler. Eine fehlgeschlagene Nachricht hält die Szene nicht an: Prüfe Gesendet bei Bedarf mit einer Bedingung.
Um einem Gladys-Benutzer zu schreiben, geht auch die Aktion Nachricht senden von Gladys: Damit erreichst du sein verknüpftes Mattermost-Konto.
Szenenideen
- Garage per Befehl: Auslöser Mattermost-Befehl empfangen, Befehl
garage, Kanalzuhause/garage; dann eine Bedingung auf die Variable Argumente gleichzuund die Aktion, die die Garage schließt. - Waschmaschine fertig: Wenn die Leistung der Steckdose der Waschmaschine sinkt, Mattermost-Nachricht
senden an
zuhause/familie: „Die Waschmaschine ist fertig @here“. - Warnung, wenn der Bot getrennt ist: Auslöser Mattermost-Verbindung verloren, dann eine Benachrichtigung über einen anderen Kanal (Gotify, ntfy, SMS) mit der Variable Fehler.
Fehlerbehebung
- „kein Mattermost-Server unter dieser Adresse“: Nimm die Adresse, mit der du Mattermost im Browser
öffnest, ohne
/loginund ohne Team.https://<adresse>/api/v4/system/pingmuss{"status":"OK"…}antworten. - „Zugriffstoken abgelehnt“: Das Token wurde widerrufen oder das Bot-Konto deaktiviert. Erstelle ein neues Token unter Integrationen → Bot-Konten.
- Einem beobachteten Kanal wurde nicht beigetreten: Der Status der Seite und der Test nennen ihn. Prüfe die Namen von Team und Kanal in der Adresse des Kanals, füge den Bot dem Team hinzu und dem Kanal, wenn er privat ist, und speichere die Konfiguration erneut.
- Der Bot antwortet mir nicht: Steht dein Benutzername genau so in Erlaubte Personen? Schreibst du ihm eine Direktnachricht (keine Gruppennachricht)? Ist dein Konto verknüpft (sonst erklärt dir der Bot, wie es geht)?
- Ein Befehl startet die Szene nicht: Der Filter Befehl ist das Wort ohne Präfix, kleingeschrieben:
licht, nicht!Licht. - Hinter einem Reverse-Proxy muss auch der WebSocket (
/api/v4/websocket) weitergeleitet werden, wie für die Mattermost-Apps. - Mehr Details in den Protokollen der Integration mit
LOG_LEVEL=debug.
Einschränkungen
- Eine mit Gladys verknüpfte Person kann aus Mattermost alles tun, was ihr Gladys-Benutzer darf: Halte die Liste der erlaubten Personen kurz und das Token des Bots geheim.
- Ein Bot-Konto pro Gladys. Der Bot liest die Nachrichten über den WebSocket von Mattermost: Ein Befehl wirkt in etwa einer Sekunde. Nachrichten, die während einer Unterbrechung von mehr als 5 Minuten geschrieben wurden, werden übersprungen.
- Dateien, Bilder und Sprachnachrichten an den Bot werden ignoriert; nur Text zählt. Threads werden wie normale Nachrichten gelesen, und die Antworten von Gladys landen nicht im Thread.
- Der Bot unterliegt den API-Ratenlimits des Servers (standardmäßig 10 Anfragen pro Sekunde und Konto): Halte die Nachrichten deiner Szenen in vernünftigem Rahmen.
- Nicht mit Mattermost, Inc. verbunden. Mattermost ist eine Marke von Mattermost, Inc.
Konfigurationseinstellungen
Diese Einstellungen fragt Mattermost in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Erste Schritte | section | Nein | Leg in Mattermost ein Bot-Konto an (Systemkonsole → Integrationen → Bot-Konten), füge es deinem Team hinzu und kopiere sein Token. Schreib ihm dann eine Direktnachricht. |
| Serveradresse | string | Ja | Die Adresse deines Mattermost, wie im Browser, z. B. https://chat.example.org oder http://192.168.1.20:8065. |
| Token des Bots | secret | Nein | Das Zugriffstoken des Bot-Kontos (oder ein persönliches Zugriffstoken eines eigenen Kontos). |
| Erlaubte Personen | string | Nein | Benutzernamen, auf die der Bot hört, durch Kommas getrennt, z. B. alice, bob. Leer: Der Bot antwortet niemandem. |
| Beobachtete Kanäle | string | Nein | Kanäle, deren Nachrichten Szenen auslösen, als Team/Kanal (wie in ihrer Adresse) oder per ID, durch Kommas getrennt. Der Bot tritt öffentlichen Kanälen bei; füge ihn privaten Kanälen hinzu. |
| Befehlspräfix | string | Nein | Eine Nachricht, die damit beginnt, ist ein Befehl, z. B. !licht aus. Ein bis drei Zeichen. |
| Sprache des Bots | select | Nein | Sprache dessen, was der Bot schreibt, bevor eine Person verknüpft ist, und der Berichte. |
So installierst du Mattermost in Gladys
- Öffne in Gladys Integrationen: Mattermost erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/guim31/gladys-mattermost:1.0.1) herunter, startet es in einer vom Kern isolierten Sandbox und erzeugt die Oberfläche der Integration (Geräte, Erkennung und Konfiguration). - Öffne den Bildschirm Konfiguration der Integration, fülle die Einstellungen aus und speichere.
- Du kannst sie auch direkt über die URL ihres Repositorys installieren: https://github.com/guim31/gladys-mattermost.
Mattermost benötigt Gladys >=5.1.0. Der Katalog in Gladys wird stündlich aktualisiert, eine neue Version ist also spätestens eine Stunde nach ihrer Veröffentlichung verfügbar.
Du nutzt Gladys noch nicht? Es ist kostenlos und Open Source: folge der Installationsanleitung, um loszulegen.
Über externe Integrationen
Mattermost ist eine externe Integration: eine Community-Integration, die als Docker-Container verpackt und auf GitHub veröffentlicht wird. Gladys installiert sie mit einem Klick und führt sie in einer vom Kern isolierten Sandbox aus. Sie wird von guim31 veröffentlicht und gepflegt, nicht vom Gladys-Kernteam.
- Alle Integrationen durchsuchen, native und aus der Community
- Deine eigene externe Integration bauen und veröffentlichen
- Quellcode auf GitHub — Quelle dieser Dokumentation