Mainstream messaging

Regras de push do Matrix para prévias discretas

Quando channels.matrix.streaming é "quiet", o OpenClaw transmite a resposta editando um único evento de pré-visualização no próprio local. As pré-visualizações são enviadas como eventos m.notice que não geram notificações, e a edição finalizada é marcada com content["com.openclaw.finalized_preview"] = true. Os clientes Matrix notificam sobre essa edição final somente se uma regra de push por usuário corresponder ao marcador. Esta página destina-se a operadores que hospedam o Matrix por conta própria e desejam instalar essa regra para cada conta destinatária.

streaming: "progress" finaliza seus rascunhos pelo mesmo caminho, portanto a mesma regra também é acionada para edições finalizadas no modo de progresso.

Se você deseja apenas o comportamento padrão de notificações do Matrix, use streaming: "partial" ou mantenha a transmissão desativada. Consulte Configuração do canal Matrix.

Pré-requisitos

  • usuário destinatário = a pessoa que deve receber a notificação
  • usuário do bot = a conta Matrix do OpenClaw que envia a resposta
  • use o token de acesso do usuário destinatário nas chamadas de API abaixo
  • faça o sender da regra de push corresponder ao MXID completo do usuário do bot
  • a conta destinatária já deve ter pushers funcionando; as regras de pré-visualização silenciosa só funcionam quando a entrega normal de push do Matrix está operando corretamente

Etapas

  • Configurar pré-visualizações silenciosas

    json5
    {channels: {matrix: {  streaming: "quiet",},},}
  • Obter o token de acesso do destinatário

    Reutilize um token de sessão de cliente existente quando possível. Para emitir um novo:

    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"}'
  • Verificar se existem pushers

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

    Se nenhum pusher for retornado, corrija a entrega normal de push do Matrix para esta conta antes de continuar.

  • Instalar a regra de push de substituição

    Instale uma regra que corresponda ao marcador de pré-visualização finalizada e ao MXID do bot como remetente:

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

    Substitua antes de executar:

    • https://matrix.example.org: a URL base do seu homeserver
    • $USER_ACCESS_TOKEN: o token de acesso do usuário destinatário
    • openclaw-finalized-preview-botname: um ID de regra exclusivo por bot e por destinatário (padrão: openclaw-finalized-preview-<botname>)
    • @bot:example.org: o MXID do seu bot OpenClaw, não o do destinatário
  • Verificar

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

    Em seguida, teste uma resposta transmitida. No modo silencioso, a sala mostra uma pré-visualização silenciosa do rascunho e emite uma notificação quando o bloco ou turno termina.

  • Para remover a regra posteriormente, envie uma solicitação DELETE para a mesma URL da regra usando o token do destinatário.

    Observações sobre múltiplos bots

    As regras de push são identificadas por ruleId: executar novamente um PUT com o mesmo ID atualiza uma única regra. Para que vários bots OpenClaw notifiquem o mesmo destinatário, crie uma regra por bot com uma correspondência de remetente distinta.

    Novas regras override definidas pelo usuário são inseridas antes das regras de supressão padrão do servidor, portanto nenhum parâmetro adicional de ordenação é necessário. A regra afeta somente edições de pré-visualização contendo apenas texto que possam ser finalizadas no próprio local; respostas com mídia, alternativas para pré-visualizações obsoletas e textos finais que ativariam menções do Matrix são entregues como mensagens normais com notificação.

    Observações sobre o homeserver

    Synapse

    Nenhuma alteração especial no homeserver.yaml é necessária. Se as notificações normais do Matrix já chegam a esse usuário, o token do destinatário e a chamada a pushrules acima constituem a principal etapa de configuração.

    Se você executar o Synapse atrás de um proxy reverso ou com workers, certifique-se de que /_matrix/client/.../pushrules/ chegue corretamente ao Synapse. A entrega de push é processada pelo processo principal ou por synapse.app.pusher / workers de pusher configurados — certifique-se de que estejam operando corretamente.

    A regra usa a condição de regra de push event_property_is (MSC3758, regra de push v1.10), que foi adicionada ao Synapse em 2023. Versões mais antigas do Synapse aceitam a chamada PUT pushrules/..., mas silenciosamente nunca correspondem à condição — atualize o Synapse se nenhuma notificação chegar após uma edição de pré-visualização finalizada.

    Tuwunel

    O fluxo é o mesmo do Synapse; nenhuma configuração específica do Tuwunel é necessária para o marcador de pré-visualização finalizada.

    Se as notificações desaparecerem enquanto o usuário estiver ativo em outro dispositivo, verifique se suppress_push_when_active está ativado. O Tuwunel adicionou essa opção na versão 1.4.2 (setembro de 2025), e ela pode suprimir intencionalmente os pushes para outros dispositivos enquanto um dispositivo estiver ativo.

    Relacionado

    Was this useful?
    On this page

    On this page