280 lines
6.8 KiB
Markdown
280 lines
6.8 KiB
Markdown
# OpenClaw Signal-Integration und täglicher Morgen-Digest
|
|
|
|
Diese Anleitung beschreibt den funktionierenden Installationsweg auf dem OpenClaw-System `2026.5.6` auf ARM64/aarch64. Sie berücksichtigt die konkret aufgetretenen Stolperstellen: Java-Version, fehlende native `libsignal-client`, QR-Code-Ausgabe im Terminal, unterschiedliche CLI-Optionen bei `message send` und `cron add`, sowie den korrekten Paperless-Skillnamen.
|
|
|
|
## Ziel
|
|
|
|
OpenClaw soll täglich um 08:00 Uhr Europe/Vienna eine Signal-Nachricht senden. Der Inhalt soll ein kurzer deutschsprachiger Digest sein mit:
|
|
|
|
- Terminen und Aufgaben aus `caldav-kalender` für heute und morgen
|
|
- neuen Dokumenten aus dem Paperless-Posteingang über den Skill `paperless`
|
|
- Versand per Signal an `+436643941018`
|
|
|
|
## Voraussetzungen
|
|
|
|
- OpenClaw ist installiert und läuft.
|
|
- OpenClaw-Version: `2026.5.6`
|
|
- Systemarchitektur: ARM64/aarch64
|
|
- `signal-cli` soll als verknüpftes Signal-Gerät verwendet werden.
|
|
- Der Signal-Channel wird in OpenClaw über das Dashboard aktiviert.
|
|
|
|
## Java 25 installieren
|
|
|
|
Der zuerst installierte Java-21-Stand war zu alt. Die Fehlermeldung lautete sinngemäß:
|
|
|
|
```text
|
|
UnsupportedClassVersionError ... class file version 69.0 ... only recognizes ... 65.0
|
|
```
|
|
|
|
Das bedeutet: das verwendete `signal-cli` wurde für Java 25 gebaut.
|
|
|
|
Funktionierender Befehl:
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install -y openjdk-25-jre-headless
|
|
java -version
|
|
```
|
|
|
|
Falls mehrere Java-Versionen installiert sind:
|
|
|
|
```bash
|
|
sudo update-alternatives --config java
|
|
```
|
|
|
|
Dort Java 25 auswählen.
|
|
|
|
## signal-cli korrekt installieren
|
|
|
|
Der manuelle `/opt`-Installationsweg führte auf ARM64 zu folgendem Fehler:
|
|
|
|
```text
|
|
Missing required native library dependency: libsignal-client
|
|
no signal_jni in java.library.path
|
|
```
|
|
|
|
Der funktionierende Weg war daher die Paketquelle für `signal-cli` und die native Variante.
|
|
|
|
Zuerst alten manuellen Symlink sichern oder entfernen:
|
|
|
|
```bash
|
|
sudo mv /usr/local/bin/signal-cli /usr/local/bin/signal-cli.manual.bak 2>/dev/null || true
|
|
hash -r
|
|
```
|
|
|
|
Paketquelle hinzufügen:
|
|
|
|
```bash
|
|
sudo curl -sL -o /etc/apt/trusted.gpg.d/morph027-signal-cli.asc \
|
|
https://packaging.gitlab.io/signal-cli/gpg.key
|
|
|
|
echo "deb [arch=arm64] https://packaging.gitlab.io/signal-cli signalcli main" \
|
|
| sudo tee /etc/apt/sources.list.d/morph027-signal-cli.list
|
|
|
|
sudo apt update
|
|
```
|
|
|
|
Wichtig: Die Architektur wurde explizit auf `arm64` eingeschränkt, weil sonst eine Warnung zu `armhf` erschien:
|
|
|
|
```text
|
|
Das Laden der konfigurierten Datei »main/binary-armhf/Packages« wird übersprungen ...
|
|
```
|
|
|
|
Dann `signal-cli-native` installieren:
|
|
|
|
```bash
|
|
sudo apt install -y signal-cli-native
|
|
```
|
|
|
|
Das Paket `morph027-keyring` war nicht verfügbar und wurde daher nicht installiert. Der manuell abgelegte GPG-Key reichte aus.
|
|
|
|
Prüfen:
|
|
|
|
```bash
|
|
which signal-cli
|
|
signal-cli --version
|
|
```
|
|
|
|
## signal-cli mit Signal koppeln
|
|
|
|
Der einfache Befehl:
|
|
|
|
```bash
|
|
signal-cli link -n "OpenClaw"
|
|
```
|
|
|
|
führte im Terminal nur zu Fragezeichen. Das war ein Darstellungsproblem des QR-Codes.
|
|
|
|
Funktionierender Weg:
|
|
|
|
```bash
|
|
sudo apt install -y qrencode
|
|
|
|
signal-cli link -n "OpenClaw" | tee >(xargs -L 1 qrencode -t utf8)
|
|
```
|
|
|
|
Wichtig: Den Prozess laufen lassen, bis das Handy die Verknüpfung bestätigt hat. Nicht vorher mit `Ctrl+C` abbrechen.
|
|
|
|
Auf dem Handy:
|
|
|
|
```text
|
|
Signal → Profilbild → Verknüpfte Geräte → Neues Gerät verknüpfen
|
|
```
|
|
|
|
Dann den QR-Code scannen.
|
|
|
|
## Signal-Channel in OpenClaw aktivieren
|
|
|
|
Im Dashboard:
|
|
|
|
```text
|
|
Kommunikation → Channels → Signal
|
|
```
|
|
|
|
Dort Signal aktivieren und die passenden Felder setzen.
|
|
|
|
Empfohlene Werte:
|
|
|
|
```json5
|
|
{
|
|
enabled: true,
|
|
cliPath: "signal-cli",
|
|
dmPolicy: "pairing",
|
|
allowFrom: [],
|
|
configWrites: true,
|
|
historyLimit: 50
|
|
}
|
|
```
|
|
|
|
Falls ein Feld **Signal Account** vorhanden ist, dort die Signal-Nummer im internationalen Format eintragen:
|
|
|
|
```text
|
|
+43...
|
|
```
|
|
|
|
Danach den Gateway neu starten:
|
|
|
|
```bash
|
|
openclaw gateway restart
|
|
openclaw channels status
|
|
```
|
|
|
|
## Signal-Versand testen
|
|
|
|
In OpenClaw `2026.5.6` verwendet `message send` nicht `--to`, sondern `--target`.
|
|
|
|
Funktionierender Test:
|
|
|
|
```bash
|
|
openclaw message send \
|
|
--channel signal \
|
|
--target "+436643941018" \
|
|
--message "OpenClaw Signal-Test"
|
|
```
|
|
|
|
Wenn diese Nachricht ankommt, ist der Signal-Channel korrekt eingerichtet.
|
|
|
|
## Täglichen Morgen-Digest anlegen
|
|
|
|
Wichtig: Bei `cron add` heißt die Zieloption in dieser OpenClaw-Version **nicht** `--target`, sondern `--to`.
|
|
|
|
Korrektes Kommando:
|
|
|
|
```bash
|
|
openclaw cron add \
|
|
--name "Signal Morgen-Digest" \
|
|
--cron "0 8 * * *" \
|
|
--tz "Europe/Vienna" \
|
|
--session isolated \
|
|
--message "Erstelle täglich auf Deutsch einen kompakten Morgen-Digest. Nutze caldav-kalender für Termine und Aufgaben für heute und morgen. Nutze paperless für neue Dokumente im Paperless-Posteingang. Melde neue Paperless-Dokumente nur einmal und verwende dafür persistentes Tracking. Abschnitte: Termine heute, Termine morgen, Aufgaben, Neue Paperless-Dokumente. Wenn leer: Keine." \
|
|
--announce \
|
|
--channel signal \
|
|
--to "+436643941018"
|
|
```
|
|
|
|
Der korrekte Paperless-Skillname ist:
|
|
|
|
```text
|
|
paperless
|
|
```
|
|
|
|
nicht:
|
|
|
|
```text
|
|
papaerless
|
|
```
|
|
|
|
## Gateway-Scope-Freigabe
|
|
|
|
Beim Anlegen des Zeitplans kann eine Gateway-Freigabe notwendig sein. Die Fehlermeldung sieht etwa so aus:
|
|
|
|
```text
|
|
scope upgrade pending approval
|
|
pairing required: device is asking for more scopes than currently approved
|
|
```
|
|
|
|
Dann im Dashboard unter Geräte oder Approvals die Scope-Erweiterung genehmigen. Alternativ per CLI prüfen:
|
|
|
|
```bash
|
|
openclaw devices list
|
|
openclaw approvals get
|
|
```
|
|
|
|
Danach den `openclaw cron add ...` Befehl erneut ausführen.
|
|
|
|
## Zeitplan prüfen und manuell starten
|
|
|
|
Zeitpläne anzeigen:
|
|
|
|
```bash
|
|
openclaw cron list
|
|
```
|
|
|
|
Beispiel für den angelegten Job:
|
|
|
|
```text
|
|
ID Name Schedule
|
|
257ad34d-5e96-47a2-a06d-1b9a792e6687 Signal Morgen-Digest cron 0 8 * * * @ Europe/Vienna
|
|
```
|
|
|
|
In dieser Version erwartet `openclaw cron run` die Job-ID, nicht den Namen.
|
|
|
|
Funktionierender manueller Start:
|
|
|
|
```bash
|
|
openclaw cron run 257ad34d-5e96-47a2-a06d-1b9a792e6687
|
|
```
|
|
|
|
Erfolgreiche Ausgabe:
|
|
|
|
```json
|
|
{
|
|
"ok": true,
|
|
"enqueued": true,
|
|
"runId": "manual:257ad34d-5e96-47a2-a06d-1b9a792e6687:..."
|
|
}
|
|
```
|
|
|
|
Läufe prüfen:
|
|
|
|
```bash
|
|
openclaw cron runs
|
|
```
|
|
|
|
## Merksätze für diese OpenClaw-Version
|
|
|
|
```text
|
|
openclaw message send → --target
|
|
openclaw cron add → --to
|
|
openclaw cron run → Job-ID verwenden, nicht den Namen
|
|
Paperless-Skill → paperless
|
|
```
|
|
|
|
## Quellen
|
|
|
|
- OpenClaw Channel-Konfiguration: https://docs.openclaw.ai/gateway/config-channels
|
|
- OpenClaw CLI-Referenz: https://docs.openclaw.ai/cli
|
|
- signal-cli Projekt: https://github.com/AsamK/signal-cli
|
|
- signal-cli Debian/Ubuntu-Pakete: https://packaging.gitlab.io/signal-cli/
|
|
- signal-cli Provisioning/Linking: https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)
|