-
Notifications
You must be signed in to change notification settings - Fork 20
zsh edited this page Feb 27, 2024
·
8 revisions
在 com.meteor.wechatbc.impl.model.message
包中,所有具体的消息类均继承自 Message
类。
该基类定义了消息的基本结构和共有属性,包括消息 ID、发送者、接收者、消息类型等关键信息,如下所示:
@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();
本项目封装了不同类型的消息,以便于优雅地进行调用和处理。
您可以通过 Message#getMsgType()
方法获取消息的具体类型,该方法返回一个 MsgType 枚举值,定义如下:
public enum MsgType {
TextMsg("1"), //文本消息
ImgEmoteMsg("47"), // 图片表情
ImageMsg("3"),// 图片消息
VideoMsg("43"); // 视频消息
}
得到MsgType后,你可以将他们转换为更具体的消息对象
文本消息是最基本的消息类型,没有额外的封装
/**
* 文字消息
*/
public class TextMessage extends Message {
}
你可以调用以下方法取得图片信息
/**
* 图片二进制流转换为BufferedImage
*/
public BufferedImage convertHexToBufferedImage();
/**
* 将图片保存至磁盘
* @param file
*/
public File saveImage(File file,String type);
// 获取视频二进制响应
public byte[] getBytes();
/**
* 将视频保存至磁盘
* @param file
*/
public File saveFile(File file);
/**
* 获取撤回的原始消息
*/
public Message getOldMessage() {
return oldMessage;
}