// HEISE ONLINE — MOBILE & WEB
Der Universalbote für Admins: Apprise 2.0
SMS nur, wenn die E-Mail nicht ankommt: Apprise 2.0 lernt Eskalationsstufen, Zeitlimits und gezielte Wiederholungen. Nicht alles bleibt kompatibel.
This article is also available in
English.
It was translated with technical assistance and editorially reviewed before publication.
Apprise 2.0.0 ist da. Mit der neuen Hauptversion lassen sich Zugangsdaten per Platzhalter aus Konfigurationsdateien heraushalten. Außerdem kann Apprise Empfänger gestaffelt eskalieren, Zustellungen gezielt wiederholen und nach einer festgelegten Zeit abbrechen. Wer die Python-Bibliothek in eigene Software einbindet, muss aber nacharbeiten: Die Methode notify() gibt jetzt ein Ergebnisobjekt zurück statt eines einfachen Wahrheitswerts.
Apprise ist ein Python-Paket und Kommandozeilenwerkzeug, das Benachrichtigungen mit einheitlicher Syntax an nahezu alle verbreiteten Dienste verschickt. Die Projektdokumentation spricht von 160 Diensten, darunter E-Mail, Chat-Plattformen und SMS-Anbieter. Jedes Ziel hat eine eigene URL. Für Signal sieht das etwa so aus: signal://localhost:8080/ABSENDERNUMMER/EMPFÄNGERNUMMER. Apprise schickt die Nachricht dabei nicht direkt an Signal, sondern an eine selbst gehostete signal-cli-rest-api, die als verknüpftes Gerät am Signal-Konto hängt. Entwickler müssen also nicht mehr jede Dienst-API einzeln anbinden, und Admins schicken Warnungen direkt aus Skripten oder Cron-Jobs. Apprise steht als Open-Source-Software unter der BSD-2-Clause-Lizenz.
Neben Bibliothek und CLI gibt es mit Apprise API ein schlankes REST-Framework, das die Apprise-Bibliothek kapselt. Hinzu kommt eine Android-App. Auch Home Assistant nutzt Apprise: Die dortige Integration verbindet die Hausautomation mit mehr als 140 Benachrichtigungsdiensten.
Laut den Release Notes auf GitHub hat Maintainer Chris Caron große Teile von Apprise neu geschrieben. Die folgenreichste Änderung betrifft notify(). Die Methode gibt nun ein AppriseResult-Objekt zurück. Übliche Prüfungen wie if apobj.notify(...): funktionieren weiter, weil bool(result) nach wie vor True oder False ergibt. Das frühere None für „kein Treffer“ liefert jetzt allerdings False.
Das Objekt enthält für jeden angesprochenen Dienst ein eigenes Log und einen eigenen Status. Die Statuswerte entsprechen den Exit-Codes der CLI: SUCCESS (0), FAILURE (1), NOMATCH (3), PARTIAL (4) und TIMEOUT (5). Neu sind PARTIAL und TIMEOUT. PARTIAL steht für Fälle, in denen einige Dienste erreicht wurden, mindestens einer aber nicht. Version 1 meldete dafür einfach False.
Alle Fehler, die Apprise auslöst, stammen jetzt aus der Klassenfamilie AppriseException. Man kann sie also an einer Stelle abfangen. Bestehende try/except-Blöcke laufen trotzdem weiter: Eine ungültige Einstellung ist nach wie vor ein ValueError, ein Festplattenproblem ein OSError.
Veraltete Optionen hat das Projekt entfernt. Die Umgebungsvariable APPRISE_CONFIG heißt jetzt APPRISE_CONFIG_PATH. Der alte Name funktioniert vorerst noch, erzeugt aber eine Warnung. Bei E-Mail fallen use_pgp= und ?pgpkey= weg, an ihre Stelle treten pgp_mode= und ?pgppub=. Ungültige URL-Parameter wie ein unbekanntes ?format= brechen jetzt mit einer klaren Fehlermeldung ab, statt stillschweigend etwas Unerwartetes zu tun.
Ein Dienst kann außerdem mehrere Textformate unterstützen, sofern der Anbieter das zulässt. Telegram etwa nimmt Markdown und HTML an. Apprise wählt automatisch das passende Format und konvertiert Inhalte nicht mehr unnötig. Wer das Format selbst festlegen will, gibt ?format= in der URL an.