@fork-anyone/node-nim
Version:
NetEase IM nodejs wrapper based on NetEase IM C++ SDK
443 lines (442 loc) • 25.4 kB
TypeScript
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;
}