Mainstream messaging
Reguły push dla Matrix dotyczące cichych podglądów
Gdy channels.matrix.streaming ma wartość "quiet", OpenClaw przesyła odpowiedź strumieniowo, edytując w miejscu pojedyncze zdarzenie podglądu. Podglądy są wysyłane jako niegenerujące powiadomień zdarzenia m.notice, a końcowa edycja jest oznaczana za pomocą content["com.openclaw.finalized_preview"] = true. Klienci Matrix powiadamiają o tej końcowej edycji tylko wtedy, gdy znacznik pasuje do reguły powiadomień danego użytkownika. Ta strona jest przeznaczona dla operatorów samodzielnie hostujących Matrix, którzy chcą zainstalować tę regułę dla każdego konta odbiorcy.
streaming: "progress" finalizuje wersje robocze tą samą ścieżką, dlatego ta sama reguła jest również wyzwalana dla sfinalizowanych edycji w trybie postępu.
Jeśli chcesz korzystać wyłącznie ze standardowego mechanizmu powiadomień Matrix, użyj streaming: "partial" albo wyłącz przesyłanie strumieniowe. Zobacz Konfiguracja kanału Matrix.
Wymagania wstępne
- użytkownik będący odbiorcą = osoba, która powinna otrzymać powiadomienie
- użytkownik będący botem = konto OpenClaw w Matrix, które wysyła odpowiedź
- w poniższych wywołaniach API użyj tokenu dostępu użytkownika będącego odbiorcą
- w regule powiadomień dopasuj
senderdo pełnego identyfikatora MXID użytkownika będącego botem - konto odbiorcy musi już mieć działające elementy pusher; reguły cichych podglądów działają tylko wtedy, gdy standardowe dostarczanie powiadomień push przez Matrix działa prawidłowo
Kroki
Skonfiguruj ciche podglądy
{channels: {matrix: { streaming: "quiet",},},}Uzyskaj token dostępu odbiorcy
Jeśli to możliwe, użyj ponownie tokenu istniejącej sesji klienta. Aby wygenerować nowy:
curl -sS -X POST \"https://matrix.example.org/_matrix/client/v3/login" \-H "Content-Type: application/json" \--data '{"type": "m.login.password","identifier": { "type": "m.id.user", "user": "@alice:example.org" },"password": "REDACTED"}'Sprawdź, czy istnieją elementy pusher
curl -sS \-H "Authorization: Bearer $USER_ACCESS_TOKEN" \"https://matrix.example.org/_matrix/client/v3/pushers"Jeśli odpowiedź nie zawiera żadnych elementów pusher, przed kontynuowaniem napraw standardowe dostarczanie powiadomień push przez Matrix dla tego konta.
Zainstaluj nadrzędną regułę powiadomień
Zainstaluj regułę dopasowującą znacznik sfinalizowanego podglądu oraz MXID bota jako nadawcę:
curl -sS -X PUT \"https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname" \-H "Authorization: Bearer $USER_ACCESS_TOKEN" \-H "Content-Type: application/json" \--data '{"conditions": [ { "kind": "event_match", "key": "type", "pattern": "m.room.message" }, { "kind": "event_property_is", "key": "content.m\\.relates_to.rel_type", "value": "m.replace" }, { "kind": "event_property_is", "key": "content.com\\.openclaw\\.finalized_preview", "value": true }, { "kind": "event_match", "key": "sender", "pattern": "@bot:example.org" }],"actions": [ "notify", { "set_tweak": "sound", "value": "default" }, { "set_tweak": "highlight", "value": false }]}'Przed uruchomieniem zastąp:
https://matrix.example.org: podstawowy adres URL Twojego serwera macierzystego$USER_ACCESS_TOKEN: token dostępu użytkownika będącego odbiorcąopenclaw-finalized-preview-botname: identyfikator reguły unikatowy dla każdego bota i odbiorcy (wzorzec:openclaw-finalized-preview-<botname>)@bot:example.org: MXID Twojego bota OpenClaw, a nie odbiorcy
Zweryfikuj
curl -sS \-H "Authorization: Bearer $USER_ACCESS_TOKEN" \"https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname"Następnie przetestuj odpowiedź przesyłaną strumieniowo. W trybie cichym w pokoju jest wyświetlany cichy podgląd wersji roboczej, a powiadomienie pojawia się po zakończeniu bloku lub tury.
Aby później usunąć regułę, wyślij żądanie DELETE pod ten sam adres URL reguły, używając tokenu odbiorcy.
Uwagi dotyczące wielu botów
Reguły powiadomień są identyfikowane przez ruleId: ponowne wysłanie żądania PUT dla tego samego identyfikatora aktualizuje pojedynczą regułę. Jeśli wiele botów OpenClaw ma powiadamiać tego samego odbiorcę, utwórz osobną regułę dla każdego bota, z odrębnym dopasowaniem nadawcy.
Nowe, zdefiniowane przez użytkownika reguły override są wstawiane przed domyślnymi regułami serwera wyłączającymi powiadomienia, dlatego dodatkowy parametr kolejności nie jest potrzebny. Reguła wpływa wyłącznie na edycje podglądu zawierające sam tekst, które można sfinalizować w miejscu; odpowiedzi z multimediami, mechanizmy awaryjne dla nieaktualnych podglądów oraz końcowe teksty, które aktywowałyby wzmianki Matrix, są zamiast tego dostarczane jako zwykłe wiadomości generujące powiadomienia.
Uwagi dotyczące serwera macierzystego
Synapse
Nie jest wymagana żadna specjalna zmiana w homeserver.yaml. Jeśli standardowe powiadomienia Matrix już docierają do tego użytkownika, głównym krokiem konfiguracji jest użycie tokenu odbiorcy i wykonanie powyższego wywołania pushrules.
Jeśli Synapse działa za odwrotnym serwerem proxy lub korzysta z procesów roboczych, upewnij się, że żądania /_matrix/client/.../pushrules/ prawidłowo docierają do Synapse. Dostarczaniem powiadomień push zajmuje się proces główny albo synapse.app.pusher lub skonfigurowane procesy robocze pusher — upewnij się, że działają prawidłowo.
Reguła używa warunku event_property_is reguły powiadomień (MSC3758, reguła powiadomień w wersji 1.10), który dodano do Synapse w 2023 roku. Starsze wersje Synapse akceptują wywołanie PUT pushrules/..., ale warunek nigdy nie zostaje dopasowany i nie pojawia się żaden komunikat o błędzie — zaktualizuj Synapse, jeśli po sfinalizowanej edycji podglądu nie pojawia się powiadomienie.
Tuwunel
Przebieg jest taki sam jak w przypadku Synapse; znacznik sfinalizowanego podglądu nie wymaga konfiguracji specyficznej dla Tuwunel.
Jeśli powiadomienia znikają, gdy użytkownik jest aktywny na innym urządzeniu, sprawdź, czy opcja suppress_push_when_active jest włączona. Tuwunel dodał tę opcję w wersji 1.4.2 (we wrześniu 2025 roku) i może ona celowo wyłączać powiadomienia push na innych urządzeniach, gdy jedno urządzenie jest aktywne.