v1.1.0: per-room services, send_to_user, mautrix bridge support, searchable room picker

- Add per-room convenience actions (matrix_messenger.send_to_<roomname>)
- Add send_to_user action: finds existing portal/DM room or creates one;
  supports mautrix-whatsapp, -signal, -telegram puppet IDs
- Inject service descriptions dynamically so room dropdowns show friendly
  names instead of room IDs (full-state sync + direct state API fallback)
- Switch all room selectors to searchable dropdown mode
- Fix _find_or_create_dm to match bridge portal rooms (3+ members)
- Fix async_get_joined_rooms to use full_state sync
- Bump version to 1.1.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marc
2026-04-25 15:46:28 +02:00
parent bddb07431d
commit 7196e334a2
6 changed files with 459 additions and 123 deletions
@@ -1,12 +1,17 @@
send_message:
name: Matrix-Nachricht senden
description: Sendet eine Textnachricht an einen konfigurierten Matrix-Raum.
# send_message, ask_question und send_to_<raum> werden beim Start dynamisch
# injiziert, damit Räume als lesbares Dropdown erscheinen (siehe __init__.py).
send_to_user:
name: Matrix-Direktnachricht senden
description: >
Sendet eine Direktnachricht an einen einzelnen Matrix-Benutzer.
Sucht einen vorhandenen DM-Raum oder erstellt automatisch einen neuen.
fields:
room_id:
name: Raum
description: "Matrix-Raum-ID (z. B. !abc123:matrix.org). Wird beim Einrichten der Integration ausgewählt."
user_id:
name: Benutzer-ID
description: "Matrix-Benutzer-ID (z. B. @max:matrix.org)."
required: true
example: "!abc123:matrix.org"
example: "@max:matrix.org"
selector:
text:
message:
@@ -16,51 +21,3 @@ send_message:
selector:
text:
multiline: true
ask_question:
name: Frage in Matrix-Raum stellen
description: >
Sendet eine Frage an einen Matrix-Raum und wartet auf eine Antwort.
Sobald jemand antwortet (Text oder Emoji-Reaktion), wird das Event
'matrix_messenger_response' ausgelöst, das in Automationen verwendet
werden kann. Nach Ablauf des Timeouts (Standard 30 min) wird nicht
mehr auf eine Antwort gewartet.
fields:
room_id:
name: Raum
description: "Matrix-Raum-ID (z. B. !abc123:matrix.org)."
required: true
example: "!abc123:matrix.org"
selector:
text:
question:
name: Frage
description: Der Fragetext, der in den Raum gesendet wird.
required: true
selector:
text:
multiline: true
options:
name: Antwortoptionen
description: >
Optionale Liste gültiger Antworten. Nur Nachrichten oder Emoji-Reaktionen,
die einer dieser Optionen entsprechen, werden akzeptiert.
Wenn leer, wird jede Antwort akzeptiert.
required: false
example:
- "Ja"
- "Nein"
selector:
object:
timeout:
name: Timeout (Sekunden)
description: Wartezeit in Sekunden. Standard ist 1800 (30 Minuten).
required: false
default: 1800
selector:
number:
min: 60
max: 7200
step: 60
unit_of_measurement: s
mode: box