Zulip Smart-Home-Integration, kostenlos und Open Source

Sprich mit Gladys über Zulip, schreib in Kanäle, starte Szenen bei Nachrichten oder Befehlen.
Sprich mit Gladys über Zulip, den freien Team-Chat mit Kanälen und Themen, so wie mit
dem Telegram-Bot von Gladys: Stell eine Frage, starte eine Szene, erhalte die Nachrichten von Gladys als
Direktnachricht. Die Integration schreibt außerdem aus deinen Szenen in Zulip-Kanäle und startet Szenen,
wenn in einem beobachteten Kanal eine Nachricht oder ein Befehl wie !licht aus geschrieben wird. Die Integration
nutzt einen generischen Bot deiner Zulip-Organisation: einen Server, den du im lokalen Netz betreibst, oder
Zulip Cloud.
Ohne die Hardware entwickelt: Rückmeldungen willkommen. Die Integration wurde gegen einen echten Zulip-Server getestet (12.3, in Docker), aber nicht in einem echten Gladys und nicht mit allen Zulip-Apps. Sag uns, was funktioniert und was nicht, in den Issues oder im Gladys-Forum.
Voraussetzungen
- Gladys Assistant 5.1.0 oder neuer.
- Eine Zulip-Organisation, die Gladys erreichen kann: ein selbst betriebener Server (Version 7 oder neuer) oder Zulip Cloud (der kostenlose Tarif genügt).
- Ein generischer Bot dieser Organisation (kein Bot für eingehende oder ausgehende Webhooks). Nimm nicht dein persönliches Konto: Der Bot antwortet in seinem Namen.
- Die E-Mail oder die Benutzer-ID jeder Person, die mit dem Bot sprechen darf.
Einrichtung
- In Zulip Persönliche Einstellungen → Bots → Neuen Bot hinzufügen: Typ Generischer Bot, ein Name
wie
Gladys, eine Bot-E-Mail wiegladys-bot. Zulip gibt ihm eine E-Mail wie[email protected]. - Kopiere auf der Karte des Bots seine E-Mail und seinen API-Schlüssel (das Schlüsselsymbol oder zuliprc herunterladen).
- In Gladys Integrationen → Zulip → Konfiguration:
- Adresse der Organisation: die Adresse deiner Organisation wie im Browser, zum Beispiel
https://example.zulipchat.comoderhttp://192.168.1.20. - E-Mail des Bots und API-Schlüssel: die aus Schritt 2.
- Erlaubte Personen: die Personen, auf die der Bot hört, durch Kommas getrennt, per E-Mail wie in
Zulip angezeigt oder per Benutzer-ID (
[email protected], 12). Leer antwortet der Bot niemandem: Er ignoriert die Nachrichten aller, die nicht in dieser Liste stehen. Viele Organisationen verbergen die E-Mails vor Bots: Nimm dann die Benutzer-ID, die im Profil der Person steht (auf ihren Namen klicken, dann Profil anzeigen). Die Logs der Integration nennen auch die Benutzer-ID einer noch nicht erlaubten Person, wenn sie dem Bot schreibt. - Beobachtete Kanäle: die Kanäle, deren Nachrichten Szenen starten, nach Name (
garage,#Wohnzimmer), durch Kommas getrennt. Der Bot abonniert öffentliche Kanäle selbst; abonniere ihn zuerst für private Kanäle. Ein Name, den es nicht gibt, wird gemeldet, nie angelegt. - Befehlspräfix: standardmäßig
!(/öffnet die Befehle von Zulip). - Sprache des Bots: die Sprache dessen, was der Bot schreibt, bevor eine Person verknüpft ist.
- Adresse der Organisation: die Adresse deiner Organisation wie im Browser, zum Beispiel
- Klicke auf Verbindung testen: Der Bericht nennt die E-Mail des Bots, die gefundenen beobachteten Kanäle und die gefundenen erlaubten Personen. Der Verbindungsstatus der Seite sagt es auch und nennt einen Kanal oder eine Person, die nicht gefunden wurde.
Dein Zulip-Konto verknüpfen, um mit Gladys zu sprechen
Jeder Gladys-Benutzer, der von Zulip aus mit Gladys sprechen will, macht das einmal:
- In Gladys, Integrationen → Zulip → Konfiguration, Block „Mein Konto verknüpfen“: Klicke auf Verknüpfungscode generieren.
- Öffne in Zulip eine Direktnachricht mit dem Bot (das + neben „Direktnachrichten“, dann sein Name) und schick ihm den Code (8 Zeichen). Der Bot bestätigt: Dein Zulip-Konto ist mit deinem Gladys-Benutzer verknüpft. Du kannst die Verknüpfung im selben Block 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 diese Direktnachricht zurück, mit dem Markdown von Zulip dargestellt. Die Nachrichten, die Gladys dir schickt (die Szenenaktion Nachricht senden, die Systemnachrichten), kommen auch dort an, sogar vor jedem Gespräch. Ein Kamerabild einer Szene kommt als Bild an.
- In einem beobachteten Kanal: Jede Nachricht einer erlaubten Person, in jedem Thema, startet den
Auslöser Zulip-Nachricht empfangen, und eine Nachricht, die mit dem Präfix beginnt, startet
zusätzlich Zulip-Befehl empfangen. Eine Erwähnung des Bots am Anfang wird entfernt:
@**Gladys** !licht ausist der Befehllicht. Der Bot antwortet dort nie von selbst: Was passiert, bestimmen deine Szenen. - Überall sonst (eine Gruppen-Direktnachricht, ein nicht beobachteter Kanal): Er schweigt. Gladys antwortet nie dort, wo andere mitlesen.
- Was er ignoriert: alle, die keine erlaubten Personen sind, alle Bots (auch seine eigenen Nachrichten: Eine Szene, die in einen beobachteten Kanal schreibt, startet sich nie selbst wieder), Bearbeitungen und Nachrichten, die beim Lesen älter als 5 Minuten sind (ein „!garage auf“ von vor zwei Stunden läuft jetzt nicht mehr).
- Nach einer Unterbrechung (Neustart des Servers, von Gladys, Netzwerk): Er verbindet sich selbst wieder. Zulip hebt die Nachrichten einer Unterbrechung unter 10 Minuten für den Bot auf; nach einer längeren oder einem Neustart liest der Bot die Nachrichten der letzten 5 Minuten nach.
Dashboard
Das Widget Zulip zeigt, ob der Bot verbunden ist, seine E-Mail, die Zahl der beobachteten Kanäle, die letzten 5 Nachrichten aus den beobachteten Kanälen (Absender, Thema, 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
- Zulip-Nachricht empfangen: Eine erlaubte Person hat in einen beobachteten Kanal geschrieben. Filter
(leer = alle): Kanal (wie in der Konfiguration, zum Beispiel
garage), Thema (tor) und Absender (wie bei den erlaubten Personen:[email protected]oder12). Variablen: Nachricht, Absender, Name des Absenders, Kanal, Thema, Kanal-ID. - Zulip-Befehl empfangen: Eine erlaubte Person hat einen Befehl in einen 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, Thema, Absender. Variablen: Befehl (licht), Argumente (aus kueche), Nachricht, Absender, Name des Absenders, Kanal, Thema, Kanal-ID. Dieselbe Nachricht startet auch Zulip-Nachricht empfangen. - Zulip-Verbindung verloren: Der Bot erreicht den Server nicht mehr, seit einer Minute, oder sein Schlüssel wird abgelehnt. Variable: Fehler. Einmal gestartet, bis die Verbindung zurück ist.
- Zulip-Verbindung wiederhergestellt: Der Bot erreicht den Server wieder nach einem Verbindungsverlust. Variable: Bot-Konto (E-Mail).
Aktionen
- Zulip-Nachricht senden: schreibt eine Nachricht in einen Kanal (sein Name,
garageoder#garage) unter einem Thema (Gladys, wenn leer) oder an eine Person als Direktnachricht (ihre E-Mail, oder@und ihre Benutzer-ID:@12). Die Nachricht akzeptiert Szenenvariablen und das Markdown von Zulip (**fett**,*kursiv*, Listen, Links,@**all**). Der Bot muss einen öffentlichen Kanal nicht abonniert haben. Ergebnisse: Gesendet (ja/nein), Nachrichten-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 Zulip-Konto.
Szenenideen
- Garage per Befehl: Auslöser Zulip-Befehl empfangen, Befehl
garage, Kanalgarage; dann eine Bedingung auf die Variable Argumente gleichzuund die Aktion, die das Garagentor schließt. - Waschmaschine fertig: Wenn die Leistung der Steckdose der Waschmaschine sinkt, Zulip-Nachricht
senden an den Kanal
familie, ThemaWäsche: „Die Waschmaschine ist fertig“. - Warnung, wenn der Bot getrennt ist: Auslöser Zulip-Verbindung verloren, dann eine Benachrichtigung über einen anderen Kanal (Gotify, ntfy, SMS) mit der Variable Fehler.
Fehlerbehebung
- „kein Zulip-Server unter dieser Adresse“: Nimm die Adresse, mit der du Zulip im Browser öffnest, ohne
/loginund ohne das, was nach#kommt.https://<adresse>/api/v1/server_settingsmuss{"result":"success"…}antworten. - „E-Mail oder API-Schlüssel des Bots abgelehnt“: Der Schlüssel wurde neu erzeugt, der Bot deaktiviert,
oder die E-Mail ist nicht die des Bots (
…-bot@…). Kopiere sie erneut aus Persönliche Einstellungen → Bots. - Ein beobachteter Kanal wird nicht gefunden: Der Status der Seite und der Test nennen ihn. Prüfe den Namen; abonniere den Bot zuerst für einen privaten Kanal und speichere dann die Konfiguration erneut.
- Eine Person wird nicht gefunden: Die E-Mails sind in deiner Organisation wohl vor Bots verborgen: Nimm die Benutzer-ID. Bots und deaktivierte Konten sind nie erlaubt.
- Der Bot antwortet mir nicht: Stehst du in Erlaubte Personen? Schreibst du ihm eine Direktnachricht, nur ihr beide (keine Gruppen-Direktnachricht)? Ist dein Konto verknüpft (der Bot gibt dir dann die Anleitung)?
- Ein Befehl startet die Szene nicht: Der Filter Befehl ist das Wort ohne Präfix, kleingeschrieben:
licht, nicht!Licht. - Mehr Details in den Logs der Integration mit
LOG_LEVEL=debug.
Einschränkungen
- Eine mit Gladys verknüpfte Person kann von Zulip aus alles tun, was ihr Gladys-Benutzer darf: Halte die Liste der erlaubten Personen kurz und den API-Schlüssel des Bots geheim.
- Ein Bot pro Gladys. Der Bot liest die Nachrichten über die Ereigniswarteschlange von Zulip (Long Polling): Ein Befehl wirkt nach etwa einer Sekunde. Nachrichten, die während einer Unterbrechung von mehr als 5 Minuten verpasst wurden, werden übersprungen.
- Dateien, Bilder und Sprachnachrichten an den Bot kommen als Markdown-Link an; nur der Text zählt. Die Antworten von Gladys gehen in die Direktnachricht, nie in einen Kanal.
- Zulip begrenzt jedes Konto standardmäßig auf 200 Anfragen pro Minute: Halte die Nachrichten deiner Szenen vernünftig.
- Nicht mit Kandra Labs, Inc. verbunden. Zulip ist eine Marke von Kandra Labs, Inc.
Konfigurationseinstellungen
Diese Einstellungen fragt Zulip in seinem Konfigurationsbildschirm in Gladys ab.
| Einstellung | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
| Erste Schritte | section | Nein | Leg in Zulip einen generischen Bot an (Persönliche Einstellungen → Bots → Neuen Bot hinzufügen) und kopiere seine E-Mail und seinen API-Schlüssel. Schreib ihm dann eine Direktnachricht. |
| Adresse der Organisation | string | Ja | Die Adresse deiner Zulip-Organisation wie im Browser, z. B. https://example.zulipchat.com oder http://192.168.1.20. |
| E-Mail des Bots | string | Ja | Die E-Mail des Bots, angezeigt unter Persönliche Einstellungen → Bots, z. B. [email protected]. |
| API-Schlüssel | secret | Nein | Der API-Schlüssel des Bots (Persönliche Einstellungen → Bots). Ein generischer Bot, kein eingehender Webhook. |
| Erlaubte Personen | string | Nein | E-Mails (wie in Zulip angezeigt) oder Benutzer-IDs der Personen, auf die der Bot hört, durch Kommas getrennt. Leer: Der Bot antwortet niemandem. |
| Beobachtete Kanäle | string | Nein | Kanäle, deren Nachrichten Szenen auslösen, nach Name, durch Kommas getrennt. Der Bot tritt öffentlichen Kanälen bei; abonniere ihn für private. |
| 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 Zulip in Gladys
- Öffne in Gladys Integrationen: Zulip erscheint im Katalog neben den nativen Integrationen, mit einem Community-Badge.
- Klicke auf Installieren. Gladys lädt das Docker-Image (
ghcr.io/guim31/gladys-zulip:1.0.0) 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-zulip.
Zulip 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
Zulip 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