You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用自身Matrix账号发消息无法触发推送通知的解决方案咨询

问题解答

你的两个猜测完全正确:

  • Matrix服务器默认不会对用户自身发送的消息触发推送通知,这是平台内置的防打扰设计;
  • Element客户端同样会过滤掉当前登录账号发送的消息通知,避免用户被自己的操作打扰。

如果你不想使用机器人账号,可以通过以下两种方式规避这个问题:

方法1:修改用户的推送规则

Matrix允许用户自定义推送规则,你可以为用户添加一条高优先级规则,让特定条件的自发送消息触发推送。比如:

  • 匹配消息内容中的特定标识(比如你的应用通知前缀[APP通知]);
  • 匹配自定义的事件类型(比如com.yourapp.notification)。

通过Cosium客户端可以调用Matrix的推送规则API完成修改,核心思路是添加一条优先级高于默认"忽略自身消息"的规则,强制触发推送。

方法2:发送消息时指定推送属性

在发送消息时,通过设置消息的push字段,明确要求Matrix服务器触发推送。你可以改用更底层的sendEvent方法,手动构造包含推送指令的消息内容,修改示例代码如下:

import java.util.HashMap;
import java.util.Map;

public class Example {
  public static void main(String[] args) {
    MatrixResources matrix =
        MatrixResources.factory()
            .builder()
            .https()
            .hostname("matrix.example.org")
            .defaultPort()
            .usernamePassword("jdoe", "secret")
            .build();

    RoomResource room = matrix
        .rooms()
        .create(
            CreateRoomInput.builder()
                .name("Science")
                .roomAliasName("science")
                .topic("Anything about science")
                .build());
    
    // 构造带推送指令的消息内容
    Map<String, Object> messageContent = new HashMap<>();
    messageContent.put("body", "[APP通知] Hello!");
    messageContent.put("formatted_body", "<b>[APP通知] Hello!</b>");
    messageContent.put("msgtype", "m.text");
    
    // 添加强制推送的配置
    Map<String, Object> pushConfig = new HashMap<>();
    pushConfig.put("force", true);
    messageContent.put("m.push", pushConfig);
    
    room.sendEvent("m.room.message", messageContent);
  }
}

注意:部分Matrix服务器或客户端可能对m.push字段的支持有差异,建议先在测试环境验证效果。


内容的提问来源于stack exchange,提问作者Pixelcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:22:24