---
read_when:
    - Настройка тихой потоковой передачи Matrix для самостоятельно размещённого Synapse или Tuwunel
    - Пользователи хотят получать уведомления только о завершённых блоках, а не о каждом изменении предварительного просмотра
summary: Правила push-уведомлений Matrix для отдельных получателей при незаметных изменениях завершённого предпросмотра
title: Правила push-уведомлений Matrix для ненавязчивых предпросмотров
x-i18n:
    generated_at: "2026-07-13T19:31:24Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 24
    provider: openai
    source_hash: 1c58e7e796c3ae6d1ee25de229e4592ab8b4fb4d0d50a9cf868ab5ef35b1dab5
    source_path: channels/matrix-push-rules.md
    workflow: 16
---

Когда `channels.matrix.streaming.mode` имеет значение `"quiet"`, OpenClaw передаёт ответ потоково, редактируя одно событие предварительного просмотра на месте. Предварительные версии отправляются как события `m.notice` без уведомлений, а итоговое редактирование помечается маркером `content["com.openclaw.finalized_preview"] = true`. Клиенты Matrix уведомляют только об этом итоговом редактировании и только в том случае, если пользовательское правило push-уведомлений соответствует маркеру. Эта страница предназначена для операторов, самостоятельно размещающих Matrix и желающих установить такое правило для каждой учётной записи получателя.

`streaming.mode: "progress"` завершает свои черновики тем же способом, поэтому это же правило срабатывает и для итоговых редактирований в режиме отображения прогресса.

Если вам достаточно стандартного поведения уведомлений Matrix, используйте `streaming.mode: "partial"` или отключите потоковую передачу. См. раздел [Настройка канала Matrix](/ru/channels/matrix#streaming-previews).

## Предварительные требования

- пользователь-получатель = человек, который должен получить уведомление
- пользователь-бот = учётная запись OpenClaw в Matrix, отправляющая ответ
- для приведённых ниже вызовов API используйте токен доступа пользователя-получателя
- в правиле push-уведомлений сопоставляйте `sender` с полным MXID пользователя-бота
- для учётной записи получателя уже должны работать механизмы доставки push-уведомлений; правила тихого предварительного просмотра работают только при исправной обычной доставке push-уведомлений Matrix

## Шаги

<Steps>
  <Step title="Настройте тихий предварительный просмотр">

```json5
{
  channels: {
    matrix: {
      streaming: { mode: "quiet" },
    },
  },
}
```

  </Step>

  <Step title="Получите токен доступа получателя">
    По возможности повторно используйте токен существующего клиентского сеанса. Чтобы выпустить новый:

```bash
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"
  }'
```

  </Step>

  <Step title="Убедитесь в наличии механизмов доставки push-уведомлений">

```bash
curl -sS \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  "https://matrix.example.org/_matrix/client/v3/pushers"
```

Если механизмы доставки push-уведомлений отсутствуют в ответе, прежде чем продолжить, исправьте обычную доставку push-уведомлений Matrix для этой учётной записи.

  </Step>

  <Step title="Установите переопределяющее правило push-уведомлений">
    Установите правило, сопоставляющее маркер завершённого предварительного просмотра и MXID бота в качестве отправителя:

```bash
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 }
    ]
  }'
```

    Перед запуском замените:

    - `https://matrix.example.org`: базовый URL вашего домашнего сервера
    - `$USER_ACCESS_TOKEN`: токен доступа пользователя-получателя
    - `openclaw-finalized-preview-botname`: уникальный идентификатор правила для каждой пары «бот — получатель» (шаблон: `openclaw-finalized-preview-<botname>`)
    - `@bot:example.org`: MXID вашего бота OpenClaw, а не получателя

  </Step>

  <Step title="Проверьте">

```bash
curl -sS \
  -H "Authorization: Bearer $USER_ACCESS_TOKEN" \
  "https://matrix.example.org/_matrix/client/v3/pushrules/global/override/openclaw-finalized-preview-botname"
```

Затем протестируйте потоковый ответ. В тихом режиме в комнате отображается тихая предварительная версия черновика, а уведомление отправляется один раз после завершения блока или хода.

  </Step>
</Steps>

Чтобы позднее удалить правило, выполните `DELETE` для того же URL правила с токеном получателя.

## Примечания о нескольких ботах

Правила push-уведомлений индексируются по `ruleId`: повторное выполнение `PUT` с тем же идентификатором обновляет одно правило. Если несколько ботов OpenClaw уведомляют одного получателя, создайте отдельное правило для каждого бота с отдельным условием сопоставления отправителя.

Новые пользовательские правила `override` вставляются перед стандартными серверными правилами подавления, поэтому дополнительный параметр порядка не требуется. Правило влияет только на текстовые редактирования предварительного просмотра, которые можно завершить на месте; ответы с медиафайлами, резервные варианты для устаревших предварительных версий и итоговые тексты, которые активировали бы упоминания Matrix, вместо этого доставляются как обычные сообщения с уведомлениями.

## Примечания о домашнем сервере

<AccordionGroup>
  <Accordion title="Synapse">
    Специально изменять `homeserver.yaml` не требуется. Если обычные уведомления Matrix уже доходят до этого пользователя, основной шаг настройки — токен получателя и приведённый выше вызов `pushrules`.

    Если Synapse работает за обратным прокси-сервером или с рабочими процессами, убедитесь, что `/_matrix/client/.../pushrules/` корректно достигает Synapse. Доставка push-уведомлений выполняется основным процессом либо `synapse.app.pusher` / настроенными рабочими процессами доставки push-уведомлений — убедитесь в их исправности.

    В правиле используется условие правила push-уведомлений `event_property_is` (MSC3758, правило push-уведомлений версии 1.10), добавленное в Synapse в 2023 году. Более старые выпуски Synapse принимают вызов `PUT pushrules/...`, но условие никогда не срабатывает без каких-либо сообщений — обновите Synapse, если уведомление не приходит при итоговом редактировании предварительного просмотра.

  </Accordion>

  <Accordion title="Tuwunel">
    Используется тот же процесс, что и для Synapse; для маркера завершённого предварительного просмотра отдельная настройка Tuwunel не требуется.

    Если уведомления исчезают, пока пользователь активен на другом устройстве, проверьте, включён ли параметр `suppress_push_when_active`. Tuwunel добавил этот параметр в версии 1.4.2 (сентябрь 2025 года), и он может намеренно подавлять push-уведомления на других устройствах, пока одно из устройств активно.

  </Accordion>
</AccordionGroup>

## Связанные материалы

- [Настройка канала Matrix](/ru/channels/matrix)
- [Основные понятия потоковой передачи](/ru/concepts/streaming)
