class RichNotificationContentBuilder extends MessageContentBuilder{
    private String title;
    private String desc;
    private String remark;
    private JSONArray datas;
    private String exName;
    private String exPortrait;
    private String exUrl;
    private String appId;

    public static RichNotificationContentBuilder newBuilder(String title, String desc, String exUrl) {
        RichNotificationContentBuilder builder = new RichNotificationContentBuilder();
        builder.title = title;
        builder.desc = desc;
        builder.exUrl = exUrl;
        return builder;
    }

    public RichNotificationContentBuilder remark(String remark) {
        this.remark = remark;
        return this;
    }
    public RichNotificationContentBuilder exName(String exName) {
        this.exName = exName;
        return this;
    }
    public RichNotificationContentBuilder exPortrait(String exPortrait) {
        this.exPortrait = exPortrait;
        return this;
    }
    public RichNotificationContentBuilder appId(String appId) {
        this.appId = appId;
        return this;
    }
    public RichNotificationContentBuilder addItem(String key, String value) {
        return addItem(key, value, null);
    }
    public RichNotificationContentBuilder addItem(String key, String value, String color) {<FILL_FUNCTION_BODY>}

    @Override
    public MessagePayload build() {
        MessagePayload payload = encodeBase();
        payload.setType(ProtoConstants.ContentType.Rich_Notification);
        payload.setPersistFlag(ProtoConstants.PersistFlag.Persist_And_Count);
        payload.setPushContent(title);
        payload.setContent(desc);
        JSONObject jsonObject = new JSONObject();
        if(!StringUtil.isNullOrEmpty(remark))
            jsonObject.put("remark", remark);
        if(!StringUtil.isNullOrEmpty(exName))
            jsonObject.put("exName", exName);
        if(!StringUtil.isNullOrEmpty(exPortrait))
            jsonObject.put("exPortrait", exPortrait);
        if(!StringUtil.isNullOrEmpty(exUrl))
            jsonObject.put("exUrl", exUrl);
        if(!StringUtil.isNullOrEmpty(appId))
            jsonObject.put("appId", appId);
        if(datas != null && !datas.isEmpty())
            jsonObject.put("datas", datas);

        payload.setBase64edData(Base64.getEncoder().encodeToString(jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8)));

        return payload;
    }
}

        if(this.datas == null) {
            this.datas = new JSONArray();
        }
        JSONObject item = new JSONObject();
        item.put("key", key);
        item.put("value", value == null ? "" : value);
        if(!StringUtil.isNullOrEmpty(color)) {
            item.put("color", color);
        }
        this.datas.add(item);
        return this;
    
<methods>public non-sealed void <init>() ,public abstract cn.wildfirechat.pojos.MessagePayload build() ,public cn.wildfirechat.messagecontentbuilder.MessageContentBuilder extra(java.lang.String) ,public cn.wildfirechat.messagecontentbuilder.MessageContentBuilder mentionedTargets(List<java.lang.String>) ,public cn.wildfirechat.messagecontentbuilder.MessageContentBuilder mentionedType(int) <variables>private java.lang.String extra,private List<java.lang.String> mentionedTargets,private int mentionedType