UNPKG

@fork-anyone/node-nim

Version:

NetEase IM nodejs wrapper based on NetEase IM C++ SDK

443 lines (442 loc) 25.4 kB
import { EventEmitter } from 'eventemitter3'; import { NIMSessionType } from '../nim_def/session_def'; import { NIMMsgLogAPI, QuerySingleMsgCallback, QueryMsgCallback, NIMMessageType, ModifyMultipleMsglogCallback, NIMMsgLogStatus, ModifySingleMsglogCallback, NIMMsgLogSubStatus, DBFunctionCallback, ImportDbPrgCallback, MessageStatusChangedCallback, LogsBackupExportInfo, LogsBackupImportInfo, DeleteHistoryOnLineAsyncCallback, DeleteHistoryOnLineAsyncExCallback, DeleteMessageSelfAsyncCallback, QueryMessageIsThreadRootCallback, QueryMsgAsyncParam, QueryMessageOnlineCallback, QueryThreadHistoryMsgAsyncParam, QueryThreadHistoryMsgCallback, FullTextSearchOnlineAsyncParam, FullTextSearchOnlineAsyncCallback, IMMessage, QueryMsgByKeywordOnlineParam, QueryMsgOnlineAsyncParam, DeleteMsglogSelfNotifyItemInfo, DeleteMsglogSelfNotifyParam, MessageStatusChangedResult, QueryMsgByOptionsAsyncParam, QueryMsglogResult, NIMMsglogSearchDirection, GetMessagesDynamicallyCallback, GetMessagesResult, NIMBuildingMsglogIndexesCompleteReason, QueryMsgByKeywordParam, IsMessageIndexEstablishedCallback, BuildMsglogIndexesProgress, BuildMsglogIndexesComplete, HistoryMessageFilter } from '../nim_def/msglog_def'; import { NIMResCode } from '../nim_def/client_def'; export declare interface NIMMsgLogEvents { /** 单向删除消息记录通知 */ localMsgDeleted: [Array<DeleteMsglogSelfNotifyItemInfo>]; /** 删除某一会话的云端的历史记录通知 */ onlineMsgDeleted: [Array<DeleteMsglogSelfNotifyParam>]; /** 消息状态变更 */ msgStatusChanged: [MessageStatusChangedResult]; } export declare class NIMMsgLog extends EventEmitter<NIMMsgLogEvents> { msglog: NIMMsgLogAPI; constructor(sdk: any); /** 注册全局回调 */ initEventHandlers(): void; /** 根据消息ID查询本地(单条)消息 * @param clientMsgId 客户端消息ID * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 查询本地消息的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ queryMsgByIDAysnc(clientMsgId: string, cb?: QuerySingleMsgCallback | null, jsonExtension?: string): Promise<[NIMResCode, string, IMMessage] | null>; /** 查询本地消息 * @param accid 查询id,account_id/uid或者tid * @param to_type 会话类型,双人0,群组1 (见nim_msglog_def.h) * @param limit_count 一次查询数量,建议20 * @param anchor_msg_time * 作为此次查询的定位点的消息历史的消息时间戳(上次查询最后一条消息的时间戳,按指定的时间的顺序起查,默认为逆序,2.4.0之前命名为last_name) * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 查询本地消息的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ queryMsgAsync(accid: string, to_type: NIMSessionType, limit_count: number, anchor_msg_time: number, cb?: QueryMsgCallback | null, jsonExtension?: string): Promise<[NIMResCode, string, NIMSessionType, QueryMsglogResult] | null>; /** 查询历史消息,基于本地可信时间段信息来动态判断获取消息的途径 * @param session_id 会话id * @param to_type 会话类型, 双人0,群组1, 超大群5 * @param from_time 开始时间, 包含 * @param to_time 结束时间, 大于from_time, 0表示当前时间; 只有在direction为kForward且anchor_client_msg_id不为空时才包含 * @param limit_count 查询数量 * @param anchor_client_msg_id 查询起始的客户端消息id, 查询结果不包括这条消息 * @param anchor_server_msg_id 查询起始的服务器消息id, 查询结果不包括这条消息 * @param direction 查询方向 * @param cb 查询消息的回调函数 * @param json_extension json扩展参数(备用,目前不需要) * @return void * @note 错误码 200:成功 */ getMessagesDynamically(session_id: string, to_type: NIMSessionType, from_time: number, to_time: number, limit_count: number, anchor_client_msg_id: string, anchor_server_msg_id: string, direction: NIMMsglogSearchDirection, cb?: GetMessagesDynamicallyCallback | null, jsonExtension?: string): Promise<[GetMessagesResult] | null>; /** 在线查询消息(不包括系统消息) * @param param 查询参数 * @param cb 在线查询消息的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * 403:禁止访问(不在该群,只针对群组会话) * 414:参数错误 * </pre> */ queryMsgOnlineAsync(param: QueryMsgOnlineAsyncParam, cb?: QueryMsgCallback | null): Promise<[NIMResCode, string, NIMSessionType, QueryMsglogResult] | null>; /** 在线查询消息(不包括系统消息) * @param param 查询参数 * @param cb 在线查询消息的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * 403:禁止访问(不在该群,只针对群组会话) * 414:参数错误 * </pre> */ queryMsgByKeywordOnlineAsync(param: QueryMsgByKeywordOnlineParam, cb?: QueryMsgCallback | null): Promise<[NIMResCode, string, NIMSessionType, QueryMsglogResult] | null>; /** 根据指定条件在一个会话中查询指定单个或多个类型的本地消息 * @param to_type 会话类型,双人0,群组1 (nim_msglog_def.h) * @param id 查询id,对方的account id或者群组tid。 * @param limit_count 本次查询的消息条数上限(最多100条) * @param from_time 起始时间点,单位:毫秒,当为 0 时将不作为过滤条件 * @param end_time 结束时间点,单位:毫秒,当为 0 时将不作为过滤条件 * @param end_client_msg_id 作为查询结果的过滤条件,无论正向、反向查询,当遇到此消息 ID 时均跳过后续的消息,且不将该 ID 对应的消息包含在查询结果中 * @param reverse 查询方向,为 true 时对时间段内的消息从新到旧查询,查询结果按消息时间降序排列,为 false 时对时间段内的消息从旧到新查询,查询结果按消息时间升序排列 * @param msg_type 检索的消息类型 * @param json_extension json 扩展参数(备用,目前不需要) * @param cb 在线查询消息的回调函数 * @return bool 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ queryMsgOfSpecifiedTypeInASessionAsync(to_type: NIMSessionType, id: string, limit_count: number, fromTime: number, endTime: number, endClientMsgId: string, reverse: boolean, msgType: Array<NIMMessageType>, cb?: QueryMsgCallback | null, jsonExtension?: string): Promise<[NIMResCode, string, NIMSessionType, QueryMsglogResult] | null>; /** 根据指定条件查询本地消息,使用此接口可以完成全局搜索等功能,具体请参阅开发手册 * @param param 查询参数 * @param cb 在线查询消息的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ queryMsgByOptionsAsync(param: QueryMsgByOptionsAsyncParam, cb?: QueryMsgCallback | null): Promise<[NIMResCode, string, NIMSessionType, QueryMsglogResult] | null>; /** 批量设置已读状态 * @param accid 查询id,account_id/uid或者tid * @param to_type 会话类型,双人0,群组1 (见nim_msglog_def.h) * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ batchStatusReadAsync(accid: string, to_type: NIMSessionType, cb?: ModifyMultipleMsglogCallback | null, jsonExtension?: string): Promise<[NIMResCode, string, NIMSessionType] | null>; /** 删除某个会话的全部聊天记录 * @param accid 要删除会话的id,account_id/uid或者tid * @param to_type 会话类型,双人0,群组1 (见nim_msglog_def.h) * @param revert_by_query_online 是否可以通过服务端查询消息记录(含入库选项)进行恢复,true:是,false:否 * @param cb 操作结果的回调函数 * @param jsonExtension json扩展参数(备用,目前不需要) * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ batchStatusDeleteAsync(accid: string, to_type: NIMSessionType, revert_by_query_online: boolean, cb?: ModifyMultipleMsglogCallback | null, jsonExtension?: string): Promise<[NIMResCode, string, NIMSessionType] | null>; /** 设置消息状态 * @param msg_id 消息id * @param status 消息状态枚举值 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ setStatusAsync(msg_id: string, status: NIMMsgLogStatus, cb?: ModifySingleMsglogCallback | null, jsonExtension?: string): Promise<[NIMResCode, string] | null>; /** 设置消息子状态 * @param msg_id 消息id * @param status 消息子状态枚举值 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ setSubStatusAsync(msg_id: string, status: NIMMsgLogSubStatus, cb?: ModifySingleMsglogCallback | null, jsonExtension?: string): Promise<[NIMResCode, string] | null>; /** 只往本地消息历史数据库里写入一条消息(如果已存在这条消息,则更新。通常是APP的本地自定义消息,并不会发给服务器) * @param talkId 会话id,对方的account id或者群组tid * @param msg 消息内容 * @param needUpdateSession 是否更新会话列表(一般最新一条消息有这个需求) * @param composeLastMsg 如果消息历史中有该会话的消息,是否将该会话最后一条消息随会话变更上报,true 为携带,否则不携带 * @param excludeMsgType 如果 compose_last_msg = true,则可根据需要排除指定最后一条消息的类型 * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ writeMsglogToLocalAsync(talkId: string, msg: IMMessage, needUpdateSession: boolean, composeLastMsg: boolean, excludeMsgType: Array<number>, cb?: ModifySingleMsglogCallback | null): Promise<[NIMResCode, string] | null>; /** 删除指定会话类型的所有消息 * @param delSessions 是否删除会话 * @param to_type 会话类型 * @param revert_by_query_online 是否可以通过服务端查询消息记录(含入库选项)进行恢复,true:是,false:否 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ deleteBySessionTypeAsync(delSessions: boolean, to_type: NIMSessionType, revert_by_query_online: boolean, cb?: ModifyMultipleMsglogCallback | null, jsonExtension?: string): Promise<[NIMResCode, string, NIMSessionType] | null>; /** 删除指定一条消息 * @param session_id 会话id,对方的account id或者群组tid * @param to_type 会话类型 * @param msg_id 消息id * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ deleteAsync(session_id: string, to_type: NIMSessionType, msg_id: string, cb?: ModifySingleMsglogCallback | null, jsonExtension?: string): Promise<[NIMResCode, string] | null>; /** 删除全部消息历史 * @param del_session 是否删除所有会话列表项(即全部最近联系人)。 ture则删除,并通过nim_session_reg_change_cb注册的回调通知上层kNIMSessionCommandRemoveAll事件(不会触发每个会话项的kNIMSessionCommandRemove事件); false则不删除,并将所有会话项的最后一条消息的状态kNIMSessionMsgStatus设置为已删除状态,并通过nim_session_reg_change_cb注册的回调通知上层kNIMSession CommandAllMsgDeleted事件(不会触发每个会话项的kNIMSessionCommandUpdate事件,避免频繁通知上层)。 * @param revert_by_query_online 是否可以通过服务端查询消息记录(含入库选项)进行恢复,true:是,false:否 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ deleteAllAsync(del_session: boolean, revert_by_query_online: boolean, cb?: DBFunctionCallback | null, jsonExtension?: string): Promise<[NIMResCode] | null>; /** 根据时间段删除部分会话的历史消息 * @param session_id 要删除消息的会话ID * @param to_type 要删除消息的会话类型 * @param revert_by_query_online 是否可以通过服务端查询消息记录(含入库选项)进行恢复,true:是,false:否 * @param timestamp1 单位ms timestamp1 与 timestamp2 组成一个时间段,SDK 内部会判断大小调整入参顺序 * @param timestamp2 单位ms timestamp2 与 timestamp1 组成一个时间段,SDK 内部会判断大小调整入参顺序 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ deleteMsgByTimeAsync(session_id: string, to_type: NIMSessionType, revert_by_query_online: boolean, timestamp1: number, timestamp2: number, cb?: DBFunctionCallback | null, jsonExtension?: string): Promise<[NIMResCode] | null>; /** 导出整个消息历史DB文件(不包括系统消息历史) * @param dst_path 导出时保存的目标全路径(UTF-8编码)。 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ exportDbAsync(dst_path: string, cb?: DBFunctionCallback | null, jsonExtension?: string): Promise<[NIMResCode]>; /** 导入消息历史DB文件(不包括系统消息历史)。先验证是否自己的消息历史文件和DB加密密钥(见nim_client_def.h里的kNIMDataBaseEncryptKey),如果验证不通过,则不导入。 * @param src_path 导入源文件的全路径(UTF-8编码)。 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @param prg_cb 导入进度的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * 10600:导入消息历史时验证身份和加密密钥不通过 * 10601:导入消息历史时写记录失败 * </pre> */ importDbAsync(src_path: string, cb?: DBFunctionCallback, prg_cb?: ImportDbPrgCallback | null, jsonExtension?: string): Promise<[NIMResCode]>; /** 发送消息已读回执 * @param msg 已读消息 * @param cb 操作结果的回调函数 * @return void 无返回值 * @note * <pre> * 200:成功 * 403:服务器关闭此功能,或者应用没权限 * 404:请求的目标(用户或对象)不存在 * 10414:本地错误码,参数错误 * </pre> */ sendReceiptAsync(msg: IMMessage, cb?: MessageStatusChangedCallback | null): Promise<[MessageStatusChangedResult]>; /** 查询自己发送的消息是否被对方已读 * @param msg 消息。 * @return boolean 是否被已读 */ querySentMessageBeReaded(msg: IMMessage): boolean; /** 查询收到的消息是否已经发送过已读回执 * @param msg 消息。 * @return boolean 是否已发送过 */ queryReceivedMsgReceiptSent(msg: IMMessage): boolean; /** 更新本地消息扩展字段内容 * @param msg_id 消息id * @param local_ext 本地扩展字段内容 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ updateLocalExtAsync(msg_id: string, local_ext: string, cb?: ModifySingleMsglogCallback | null, jsonExtension?: string): Promise<[NIMResCode, string]>; /** 全部未读消息历史标记为已读 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return boolean 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * </pre> */ readAllAsync(cb?: DBFunctionCallback | null, jsonExtension?: string): Promise<[NIMResCode]>; /** 导出本地消息记录到云端 * @param export_info 导出需要的参数参考LogsBackupExportInfo定义 * @return boolean false : 当前有导入/导出操作正在进行中 */ exportBackupToRemote(export_info: LogsBackupExportInfo): boolean; /** 导入已备份在云端的消息记录 * @param import_info 导入需要的参数参考LogsBackupImportInfo定义 * @return boolean false : 当前有导入/导出操作正在进行中 */ importBackupToRemote(export_info: LogsBackupImportInfo): boolean; /** 取消导入已备份在云端的消息记录 * @return void */ cancelImportBackupFromRemote(): void; /** 取消导出本地消息记录到云端 * @return void */ cancelExportBackupToRemote(): void; /** 删除与某账号的所有云端历史记录与漫游消息(p2p) * @param accid 对方的accid * @param del_remote 是否同时删除所有的漫游消息 true : 是 false : 否 * @param jsonExtension json扩展参数(备用,目前不需要) * @param cb 操作结果的回调函数 * @return void * @note * <pre> * 200:成功 * </pre> */ deleteHistoryOnlineAsync(accid: string, del_remote: boolean, jsonExtension?: string, cb?: DeleteHistoryOnLineAsyncCallback | null): Promise<[NIMResCode, string]>; /** 删除某一会话的云端的历史记录[v8.0.0] * @param accid 对方的accid(p2p:accid team:tid) * @param to_type 会话类型,双人0,群组1 (见nim_msglog_def.h) * @param needs_notify_self 是否通知其它终端 * @param jsonExtension 扩展字段 * @param cb 操作结果的回调函数 * @return void * @note 错误码 200:成功 */ deleteHistoryOnlineAsyncEx(accid: string, to_type: number, needs_notify_self: boolean, jsonExtension?: string, cb?: DeleteHistoryOnLineAsyncExCallback | null): Promise<[NIMResCode, string, number, number, string]>; /** 单向删除某条消息记录(同时删除本地与云端) * @param msg 要删除的消息 * @param exts 用户自定义扩展字段 * @param cb 操作结果的回调函数 * @return void 无返回值 * @note * <pre> * 200:成功 * </pre> */ deleteMessageSelfAsync(msg: IMMessage, ext: string, cb?: DeleteMessageSelfAsyncCallback | null): Promise<[NIMResCode]>; /** 查询某条消息是否为thread聊天的根消息 * @param client_id 要查询的消息的客户端ID * @param cb 操作结果的回调函数 * @return void 无返回值 * @note * <pre> * 200:成功 * </pre> */ queryMessageIsThreadRoot(client_id: string, cb?: QueryMessageIsThreadRootCallback | null): Promise<[NIMResCode, string, boolean, number]>; /** 查询某条消息的具体内容一般用在thread talk 场景中 * @param param 要查询的消息的相关参数,可以在msglog.threadinfo中得到 * @param cb 查询结果的回调函数 * @return void 无返回值 * @note * <pre> * 200:成功 * </pre> */ queryMessageOnline(param: QueryMsgAsyncParam, cb?: QueryMessageOnlineCallback | null): Promise<[NIMResCode, string, IMMessage]>; /** 分页查询thread talk消息历史 * @param msg 要查询的消息 * @param param 要查询的消息的相关参数,可以在msglog.threadinfo中得到 * @param cb 查询结果的回调函数 * @return void 无返回值 * @note * <pre> * 200:成功 * </pre> */ queryThreadHistoryMsg(msg: IMMessage, param: QueryThreadHistoryMsgAsyncParam, cb?: QueryThreadHistoryMsgCallback | null): Promise<[NIMResCode, IMMessage, number, number, Array<IMMessage>]>; /** 查询本地 thread talk 消息历史 * @param msg 根消息消息体 * @param cb 查询结果的回调函数 * @return void 无返回值 * @note * <pre> * 200:成功 * 414:参数错误 * </pre> */ queryLocalThreadHistoryMsg(msg: IMMessage, cb?: QueryMsgCallback | null): Promise<[NIMResCode, string, NIMSessionType, QueryMsglogResult]>; /** 在线全文检索 * @param param 全文检索参数 * @param cb 全文检索结果回调函数 * @return void 无返回值 * @note * <pre> * 200:成功 * </pre> */ fullTextSearchOnlineAsync(param: FullTextSearchOnlineAsyncParam, cb?: FullTextSearchOnlineAsyncCallback | null): Promise<[NIMResCode, QueryMsglogResult]>; /** * @brief 根据关键字在本地查询关联消息的内容,与其他关键字查询接口不同,本接口使用全文检索引擎进行查询 * 如果您有历史数据,请先调用 IsMessageIndexEstablished 判断是否已经同步完成所有旧消息索引 * 如果尚未同步完成,可使用 BuildingMsglogIndexes 来构建历史消息索引,以提供全文检索接口快速查询内容 * @param param 查询参数 @see QueryMsgByKeywordParam * @param cb 查询消息的回调函数 * @return bool 检查参数如果不符合要求则返回失败 * @note * <pre> * 200:成功 * 414:参数错误 * </pre> */ queryMessagesByKeywordAsync(param: QueryMsgByKeywordParam, cb?: QueryMsgCallback | null): Promise<[NIMResCode, string, NIMSessionType, QueryMsglogResult]>; /** * @brief 判断消息索引是否已经建立完成,如果已经建立完成,则可以使用 QueryMessagesByKeywordAsync 接口通过关键字全文检索 * @param cb 是否已经建立完成的回调函数 * @return void */ isMessageIndexEstablished(cb?: IsMessageIndexEstablishedCallback): Promise<boolean>; /** * @brief 对旧的历史消息构建消息索引表 * @param page_size 每页同步多少条消息,建议最小不低于 1000,最大不超过 5000 * @param progress 构建消息索引表进度回调 @see BuildMsglogIndexesProgress * @param completion 构建消息索引表完成回调 @see BuildMsglogIndexesComplete * @return void */ buildMsglogIndexes(page_size: number, progress: BuildMsglogIndexesProgress | null, complete: BuildMsglogIndexesComplete | null): Promise<[NIMBuildingMsglogIndexesCompleteReason, string]>; /** * @brief 取消构建消息索引表 * @return void */ cancelMsglogIndexesBuilding(): void; /** * @brief 注册云端历史消息拉取过滤器(堵塞线程,谨慎使用,避免耗时行为) * @param filter 云端历史消息拉取过滤器 * @return void */ regHistoryMessageFilterCb(filter: HistoryMessageFilter | null): void; }