企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 消息 ## 发送消息 ``` QDResultCallBack 是全局的接口,主要用于用户调用接口是否成功 public interface QDResultCallBack<T> { void onError (String errorMsg); //失败 errorMsg表示失败信息 void onSuccess(T t); //成功 T表示成功后返回的对象 } /** * 发送个人文本消息 * @param user 聊天对象 * @param content 内容 * @param callBack 监听 * @return */ sendPersonMessage(QDUser user, String content, QDResultCallBack callBack) /** * 发送群组文本消息 * @param group 群组对象 * @param content 内容 * @param callBack 监听 * @return QDMessage 返回消息对象 */ QDMessage sendGroupMessage(QDGroup group, String content, QDResultCallBack callBack) /** * 重发个人信息 * @param message 消息对象 * @param callBack 监听 */ resendPersonMessage(QDMessage message, QDResultCallBack callBack) /** * 重发群组信息 * @param message 消息对象 * @param callBack 监听 */ resendGroupMessage(QDMessage message, QDResultCallBack callBack) /** * 发送个人信息 * @param user 聊天对象 * @param message 消息对象 * @param callBack */ sendMessage(QDUser user, QDMessage message, QDResultCallBack callBack) /** * 个人消息转发 * @param user 转发对象 * @param message 转发消息对象 * @param callBack */ forwardMessage(QDUser user, QDMessage message, QDResultCallBack callBack) /** * 群组消息转发 * @param group 转发群组对象 * @param message 转发消息对象 * @param callBack */ public void forwardGMessage(QDGroup group, QDMessage message, QDResultCallBack callBack) /** * 发送位置信息 * @param user 聊天对象 * @param locInfo 定位信息("经度;纬度;详细地址;简要地址") * @param callBack * @return QDMessage 返回消息对象 */ QDMessage sendLocationMessage(QDUser user, String locInfo, QDResultCallBack callBack) /** * 发送群组位置消息 * @param group 群组对象 * @param locInfo 定位信息("经度;纬度;详细地址;简要地址") * @param callBack * @return QDMessage 返回消息对象 */ QDMessage sendGLocationMessage(QDGroup group, String locInfo, QDResultCallBack callBack) ``` ## 接收消息 ``` 群组消息是每个群组接收的消息,所以返回接收消息的会有群组id,个人消息接收是全部通过一个接口,接收的时候需要判断消息的发送者和接收者是否是聊天的双方 消息接收 QDMessageCallBack //个人消息接收 void onReceive(List<QDMessage> message); //群组消息接收 void onReceiveGMsg(String groupId, List<QDMessage> messageList); //消息设置已读 void onMsgReaded(String userId); //撤回消息返回 void onRevokeMessage(String msgId, String errorMsg); 在需要接受消息的页面的onCreate方法中添加消息监听 QDGroupCallBackManager.getInstance().addCallBack(this); ``` ## 消息相关对象 消息对象 QDMessage ``` //消息状态 MSG_STATUS_SENDING // 发送中 MSG_STATUS_SEND_OK // 发成功 MSG_STATUS_SEND_FAILED // 发送失败 MSG_STATUS_READ_ACK // 发送的消息对方已读回执 MSG_STATUS_RECEIVE // 接收的消息 //消息方向(判断是发送的还是接收的) DIRECTION_OUT //发送的消息 DIRECTION_IN //接收的消息 //消息类型 MSG_TYPE_TEXT // 文本消息 MSG_TYPE_RICH_TEXT // 富文本消息 MSG_TYPE_IMAGE // 图片 MSG_TYPE_FILE // 文件 MSG_TYPE_AUDIO // 音频 MSG_TYPE_VIDEO // 视频 MSG_TYPE_LOCATION // 位置 MSG_TYPE_LINK // 链接消息 MSG_TYPE_NOTIFY // 个人通知 MSG_TYPE_CANCEL // 撤回消息 MSG_TYPE_VOICE //语音消息 MSG_TYPE_SHOOT //小视频 MSG_TYPE_CMD = "cmd"; MSG_TYPE_CONFIRM //签收消息 MSG_TYPE_CONFIRMED //确认签收消息 //消息读取状态 MSG_UNREAD //未读 MSG_READED //已读 MSG_IGNORE //已读红点还在 //消息文件状态 MSG_FILE_STATUS_UPLOADING //文件正在上传 MSG_FILE_STATUS_UPLOADED //文件上传成功 MSG_FILE_STATUS_UPLOAD_FAILED //文件上传失败 MSG_FILE_STATUS_UNDOWNLOAD //文件还没有下载 MSG_FILE_STATUS_DOWNLOADED//文件下载成功 MSG_FILE_STATUS_DOWNLOAD_FAILED //文件下载失败 String msgId; //消息ID String cid; //会话id(服务器数据会有关联和本地的会话id无关联) int ctype; //会话类型(0:私聊 1:群聊 2:群发 3:应用 4:通知) String cdata; //会话数据(只有应用消息会用到该属性) int msgNumber; //消息标识(群聊批量接收和读取会用到) int senderMsgNumber; int status; //消息发送状态和接收状态 int direction; //消息是发出去的还是收到的 int isRead; //消息是否已读(多设备同步时用) String groupId; //群组id(只有群聊中会用到该属性) String msgType; //消息类型 int msgFlag; //消息标识 long createDate; //消息创建时间(微秒级) String subject; //消息主题(主要是在会话页面中显示) String content; //消息内容 String contentType; //消息内容类型 String senderId; //发送者id String senderName; //发送者姓名 String senderSsid; //发送者ssid String receiverId; //接收者id String receiverName; //接受者姓名 String attachment; //附件信息 String extData; //扩展数据 String extType; //扩展数据类型 String filePath; //消息文件本地存储地址(记录发送出去的和已下载的文件路径) String extData1; //扩展数据 int fileStatus; //文件状态 String receiverUsers; //群发的所有接受者信息 int count; ``` ## 消息相关数据库操作 ``` /** * 删除表数据 */ QDMessageHelper.deleteTable() /** * 插入一个消息 * * @param message */ QDMessageHelper.insertMessage(QDMessage message) /** * 插入一组消息 * * @param messages */ QDMessageHelper.insertMessageList(List<QDMessage> messages) /** * 获取和某人的聊天消息 * * @param userId 聊天对象id * @return List<QDMessage> */ QDMessageHelper.getMessageWithUserId(String userId) /** * 获取和自己设备的聊天消息 * @param userId 登陆者id * @return List<QDMessage> */ QDMessageHelper.getMessageWithSelfId(String userId) /** * 获取和某人time之前的limit条消息 * @param userId 聊天对象id * @param time 时间(毫秒) * @param limit 条数 * @return List<QDMessage> */ QDMessageHelper.getMessageLimitWithUserIdBeforeTime(String userId, long time, int limit) /** * 获取和默认time之后的limit条消息 * @param userId 聊天对象id * @param time 时间(毫秒) * @param limit 条数 * @return List<QDMessage> */ QDMessageHelper.getMessageLimitWithUserIdAfterTime(String userId, long time, int limit) /** * 删除和某人的聊天消息 * * @param userId 聊天对象id */ QDMessageHelper.deleteMessageWithUserId(String userId) /** * 删除和某个群的聊天 * * @param groupId 群组id */ QDMessageHelper.deleteMessageWithGroupId(String groupId) /** * 删除某个应用的消息 * * @param appId 应用id */ QDMessageHelper.deleteMessageWithAppId(String appId) /** * 获取和某人的图片集合 * * @param userId 用户id * @return List<QDMessage> */ QDMessageHelper.getImageListWithUserId(String userId) /** * 获取某群的图片集合 * * @param groupId * @return List<QDMessage> */ QDMessageHelper.getImageListWithGroupId(String groupId) /** * 获取某个群组的聊天消息 * * @param groupId * @return List<QDMessage> */ QDMessageHelper.getMessageWithGroupId(String groupId) /** * 返回某个群组固定的条数 * @param groupId * @return List<QDMessage> */ QDMessageHelper.getMessageLimitWithGroupId(String groupId) /** * 根据群组id获取time之前的limit条消息 * @param groupId 群组id * @param time 时间(毫秒) * @param limit 条数 * @return List<QDMessage> */ QDMessageHelper.getMessageLimitWithGroupIdBeforeTime(String groupId, long time, int limit) /** * 根据群组id获取time之后的limit条消息 * @param groupId 群组id * @param time 时间(毫秒) * @param limit 条数 * @return List<QDMessage> */ QDMessageHelper.getMessageLimitWithGroupIdAfterTime(String groupId, long time, int limit) /** * 更新消息 * @param message 消息对象 */ QDMessageHelper.updateMessage(QDMessage message) /** * 获取未读消息数量 * * @return int */ QDMessageHelper.getUnreadMessageCount() /** * 获取个人未读消息数量 * @return int */ QDMessageHelper.getPersonUnreadMessageCount() /** * 获取群组未读消息数量 */ QDMessageHelper.getGroupUnreadMessageCount() /** * 获取和某人的未读消息数量 * * @param userId 用户id * @return int */ QDMessageHelper.getUnreadMessageCountWithUserId(String userId) /** * 获取和自己的设备的未读消息数量 * @return int */ QDMessageHelper.getUnreadMessageCountWithMyPc(String userId) /** * 获取某群的未读消息数量 * * @param groupId 群组id * @return int */ QDMessageHelper.getUnreadMessageCountWithGroupId(String groupId) /** * 获取应用的未读消息数量 * * @param appId 应用id * @return int */ QDMessageHelper.getUnreadMessageCountWithAppId(String appId) /** * 根据id获取消息 * * @param msgId 消息id * @return QDMessage */ QDMessageHelper.getMessageById(String msgId) /** * 搜索个人消息 * * @param userId 登陆登陆者id * @param searchText 搜索字符串 * @return List<QDMessage> */ QDMessageHelper.searchPersonalMessage(String userId, String searchText) /** * 搜索群组消息 * * @param searchText 搜索字符串 * @return List<QDMessage> */ QDMessageHelper.searchGroupMessage(String searchText) /** * 搜索和某人的聊天记录 * * @param chatId 用户id * @param searchText 搜索字符串 * @return List<QDMessage> */ QDMessageHelper.searchMessageWithChatId(String chatId, String searchText) /** * 搜索和某群的聊天记录 * * @param groupId 群组id * @param searchText 搜索字符串 * @return List<QDMessage> */ QDMessageHelper.searchMessageWithGroupId(String groupId, String searchText) /** * 获取和某人的最后一条消息 * * @param userId 用户id * @return QDMessage */ QDMessageHelper.getLastMessageWithUserId(String userId) /** * 获取和pc端的最后一条消息 * * @param userId 登陆者id * @return QDMessage */ QDMessageHelper.getLastMessageWithSelfId(String userId) /** * 获取某个群组的最后一条聊天 * * @param groupId 群组id * @return QDMessage */ QDMessageHelper.getLastMessageWithGroupId(String groupId) /** * 删除消息列表 * * @param messageList 消息列表 */ QDMessageHelper.deleteMessageList(List<QDMessage> messageList) /** * 删除消息列表 * * @param idList 删除消息id列表 */ QDMessageHelper.deleteMessageByIdList(List<String> idList) /** * 删除消息 * * @param msgId 消息id */ QDMessageHelper.deleteMessageById(String msgId) /** * 获取文件消息 * @return List<QDMessage> */ QDMessageHelper.getFileMessage() ```