Skip to content
zheng sen he edited this page Feb 19, 2024 · 8 revisions

所有消息的基类

com.meteor.wechatbc.impl.model.message 包下的具体消息类都继承自 Message

@Data
@ToString
public class Message {
    // 消息id
    @JSONField(name = "MsgId")
    private Long msgId;
    // 消息来源
    @JSONField(name = "FromUserName")
    private String fromUserName;
    // 消息目的地
    @JSONField(name = "ToUserName")
    private String toUserName;

    @JSONField(name = "MsgType")
    private Integer msgType;

    @JSONField(name = "Content")
    private String content;

    @JSONField(name = "Status")
    private Integer status;

    @JSONField(name = "ImgStatus")
    private Integer imgStatus;

    @JSONField(name = "CreateTime")
    private Long createTime;

    @JSONField(name = "VoiceLength")
    private Integer voiceLength;

    @JSONField(name = "PlayLength")
    private Integer playLength;

    @JSONField(name = "FileName")
    private String fileName;

    @JSONField(name = "FileSize")
    private String fileSize;

    @JSONField(name = "MediaId")
    private String mediaId;

    @JSONField(name = "Url")
    private String url;

    @JSONField(name = "AppMsgType")
    private Integer appMsgType;

    @JSONField(name = "StatusNotifyCode")
    private Integer statusNotifyCode;

    @JSONField(name = "StatusNotifyUserName")
    private String statusNotifyUserName;

    @JSONField(name = "RecommendInfo")
    private RecommendInfo recommendInfo;

    @JSONField(name = "ForwardFlag")
    private Integer forwardFlag;

    @JSONField(name = "AppInfo")
    private AppInfo appInfo;

    @JSONField(name = "HasProductId")
    private Integer hasProductId;

    @JSONField(name = "Ticket")
    private String ticket;

    @JSONField(name = "ImgHeight")
    private Integer imgHeight;

    @JSONField(name = "ImgWidth")
    private Integer imgWidth;

    @JSONField(name = "SubMsgType")
    private Integer subMsgType;

    @JSONField(name = "NewMsgId")
    private Long newMsgId;

    @JSONField(name = "OriContent")
    private String oriContent;

    @JSONField(name = "EncryFileName")
    private String encryFileName;
}

取得消息的发送者

注意,这里"发送者"需与"消息来源"区分开,例如用户在群聊里发送了一条消息,那么发送者应该是具体到 这个用户 ,而不是消息来源 (群聊)

/**
取得消息的发送者username
**/
public String getSenderUserName();

消息类型

wechatbc包装了不同类型的消息以供更优雅的调用,你可以先通过 Message#getMsgType() 来取得具体的消息类型

该函数返回一个 MsgType 枚举,如下

public enum MsgType {
    TextMsg("1"), //文本消息
    ImgEmoteMsg("47"), // 图片表情
    ImageMsg("3"),// 图片消息
    VideoMsg("43"); // 视频消息
}

得到MsgType后,你可以将他们转换为更具体的消息对象

文字消息

仅是一个标识,无额外的包装

/**
 * 文字消息
 */
public class TextMessage extends Message {
}

ImageMessage 图片消息

你可以调用以下方法取得图片信息

    /**
     * 图片二进制流转换为BufferedImage
     */
    public BufferedImage convertHexToBufferedImage();

    /**
     * 将图片保存至磁盘
     * @param file
     */
    public void saveImage(File file,String type);
Clone this wiki locally