UNPKG

node-nim

Version:

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

872 lines 27.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.V2NIMMessageService = void 0; const loader_1 = __importDefault(require("../loader")); const eventemitter3_1 = require("eventemitter3"); /** @brief 消息服务 */ class V2NIMMessageService extends eventemitter3_1.EventEmitter { constructor() { super(); this.instance = new loader_1.default.V2NIMMessageService({ emit: this.emit.bind(this) }); } /** * @brief 发送消息 * @param message 要发送的消息 * @param conversationId 发送目标会话 * @returns V2NIMSendMessageResult * @example * ```javascript * const message = v2.messageCreator.createTextMessage('Hello NTES IM') * const result = await v2.messageService.sendMessage(message, conversationId, params, progressCallback) * ``` */ sendMessage(message, conversationId, params, progressCallback) { return new Promise((resolve, reject) => { this.instance.sendMessage(message, conversationId, params, (result) => { resolve(result); }, (error) => { reject(error); }, (progress) => { if (progressCallback) { progressCallback(progress); } }); }); } /** * @param message 要发送的消息 * @param replyMessage 被回复的消息 * @param params 发送参数 * @param progressCallback 发送进度回调 * @returns V2NIMSendMessageResult * @example * ```javascript * const replyMessage = v2.messageCreator.createTextMessage('Hello NTES IM') * const result = await v2.messageService.replyMessage(message, replyMessage, params, progressCallback) * ``` */ replyMessage(message, replyMessage, params, progressCallback) { return new Promise((resolve, reject) => { this.instance.replyMessage(message, replyMessage, params, (result) => { resolve(result); }, (error) => { reject(error); }, (progress) => { progressCallback(progress); }); }); } /** * @brief 更新消息 * @param message 要更新的消息 * @param params 发送参数 * @returns V2NIMModifyMessageResult * @example * ```javascript * const result = await v2.messageService.modifyMessage(message, { * text: 'Hello NTES IM' * }) * ``` */ modifyMessage(message, params) { return new Promise((resolve, reject) => { this.instance.modifyMessage(message, params, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 撤回消息 * @param message 要撤回的消息 * @param params 撤回参数 * @returns void * @example * ```javascript * await v2.messageService.revokeMessage(message, {}) * ``` */ revokeMessage(message, params) { return new Promise((resolve, reject) => { this.instance.revokeMessage(message, params, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 查询消息 * @param option 查询消息配置选项 * @returns Array<V2NIMMessage> * @example * ```javascript * const messages = await v2.messageService.getMessageList({ * conversationId: 'conversationId' * }) * ``` */ getMessageList(option) { return new Promise((resolve, reject) => { this.instance.getMessageList(option, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 查询消息 * @param option 查询消息配置选项 * @returns V2NIMMessageListResult * @since v10.9.0 * @example * ```javascript * const result = await v2.messageService.getMessageListEx({ * conversationId: 'conversationId' * }) */ getMessageListEx(option) { return new Promise((resolve, reject) => { this.instance.getMessageListEx(option, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * 查询云端消息,默认不入库 * @param option 查询消息配置选项 * @returns V2NIMMessageListResult * @since v10.9.1 * @example * ```javascript * const result = await v2.messageService.getCloudMessageList({ * conversationId: 'conversationId' * }) * ``` */ getCloudMessageList(option) { return new Promise((resolve, reject) => { this.instance.getCloudMessageList(option, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 根据 ID 列表查询消息 * @param messageClientIds 消息客户端 ID 列表 * @returns Array<V2NIMMessage> * @example * ```javascript * const messages = await v2.messageService.getMessageListByIds(messageClientIds) * ``` */ getMessageListByIds(messageClientIds) { return new Promise((resolve, reject) => { this.instance.getMessageListByIds(messageClientIds, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 根据消息引用列表查询消息 * @param messageRefers 消息引用列表 * @returns Array<V2NIMMessage> * @example * ```javascript * const messages = await v2.messageService.getMessageListByRefers(messageRefers) * ``` */ getMessageListByRefers(messageRefers) { return new Promise((resolve, reject) => { this.instance.getMessageListByRefers(messageRefers, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 查询 thread 聊天云端消息列表 * @param threadMessageListOption threadMessageListOption 消息查询选项 * @returns V2NIMThreadMessageListResult * @example * ```javascript * const result = await v2.messageService.getThreadMessageList(threadMessageListOption) * ``` */ getThreadMessageList(threadMessageListOption) { return new Promise((resolve, reject) => { this.instance.getThreadMessageList(threadMessageListOption, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 查询 thread 聊天本地消息列表 * @param messageRefer 消息查询选项 * @returns V2NIMThreadMessageListResult * @example * ```javascript * const result = await v2.messageService.getLocalThreadMessageList(messageRefer) * ``` */ getLocalThreadMessageList(messageRefer) { return new Promise((resolve, reject) => { this.instance.getLocalThreadMessageList(messageRefer, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 删除消息 * @param message 需要删除的消息 * @param serverExtension 服务器扩展字段 * @param onlyDeleteLocal 是否只删除本地消息 * @returns void * @example * ```javascript * await v2.messageService.deleteMessage(message, 'serverExtension', true) * ``` */ deleteMessage(message, serverExtension, onlyDeleteLocal) { return new Promise((resolve, reject) => { this.instance.deleteMessage(message, serverExtension, onlyDeleteLocal, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 批量删除消息 * @param messages 需要删除的消息列表 * @param serverExtension 服务器扩展字段 * @param onlyDeleteLocal 是否只删除本地消息 * @returns void * @example * ```javascript * await v2.messageService.deleteMessages(messages, 'serverExtension', true) * ``` */ deleteMessages(messages, serverExtension, onlyDeleteLocal) { return new Promise((resolve, reject) => { this.instance.deleteMessages(messages, serverExtension, onlyDeleteLocal, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 清空历史消息 * @param option 清空历史消息配置选项 * @returns void * @example * ```javascript * await v2.messageService.clearHistoryMessage(option) * ``` */ clearHistoryMessage(option) { return new Promise((resolve, reject) => { this.instance.clearHistoryMessage(option, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 更新消息本地扩展 * @param message 要更新的消息 * @param localExtension 本地扩展字段 * @returns V2NIMMessage * @example * ```javascript * const message = await v2.messageService.updateMessageLocalExtension(message, 'localExtension') * ``` */ updateMessageLocalExtension(message, localExtension) { return new Promise((resolve, reject) => { this.instance.updateMessageLocalExtension(message, localExtension, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 插入本地消息 * @param message 要插入的消息 * @param conversationId 会话 ID * @param senderId 发送者 ID, 传空表示当前用户 * @param createTime 消息创建时间, 0 表示使用当前时间 * @returns V2NIMMessage * @example * ```javascript * const message = await v2.messageService.insertMessageToLocal(message, conversationId, senderId, createTime) * ``` */ insertMessageToLocal(message, conversationId, senderId, createTime) { return new Promise((resolve, reject) => { this.instance.insertMessageToLocal(message, conversationId, senderId, createTime, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 更新本地消息 * @param message 要更新的消息 * @param params 更新参数 * @returns V2NIMMessage * @since v10.9.0 * @example * ```javascript * const message = await v2.messageService.updateLocalMessage(message, { * text: 'Hello NTES IM' * }) */ updateLocalMessage(message, params) { return new Promise((resolve, reject) => { this.instance.updateLocalMessage(message, params, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief PIN 消息 * @param message 要 PIN 的消息 * @param serverExtension 扩展字段 * @returns void * @example * ```javascript * await v2.messageService.pinMessage(message, 'serverExtension') * ``` */ pinMessage(message, serverExtension) { return new Promise((resolve, reject) => { this.instance.pinMessage(message, serverExtension, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 取消 PIN 消息 * @param messageRefer 要取消 PIN 的消息引用 * @param serverExtension 扩展字段 * @returns void * @example * ```javascript * await v2.messageService.unpinMessage(messageRefer, 'serverExtension') * ``` */ unpinMessage(messageRefer, serverExtension) { return new Promise((resolve, reject) => { this.instance.unpinMessage(messageRefer, serverExtension, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 更新 PIN 消息 * @param message 要更新的 PIN 消息 * @param serverExtension 扩展字段 * @returns void * @example * ```javascript * await v2.messageService.updatePinMessage(message, 'serverExtension') * ``` */ updatePinMessage(message, serverExtension) { return new Promise((resolve, reject) => { this.instance.updatePinMessage(message, serverExtension, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 获取 PIN 消息列表 * @param conversationId 会话 ID * @returns Array<V2NIMMessagePin> * @example * ```javascript * const result = await v2.messageService.getPinnedMessageList(conversationId) * ``` */ getPinnedMessageList(conversationId) { return new Promise((resolve, reject) => { this.instance.getPinnedMessageList(conversationId, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 添加快捷评论 * @param message 要添加快捷评论的消息 * @param index 快捷评论索引 * @param serverExtension 服务器扩展字段 * @param pushConfig 推送配置 * @returns void * @example * ```javascript * await v2.messageService.addQuickComment(message, index, 'serverExtension', pushConfig) * ``` */ addQuickComment(message, index, serverExtension, pushConfig) { return new Promise((resolve, reject) => { this.instance.addQuickComment(message, index, serverExtension, pushConfig, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 移除快捷评论 * @param messageRefer 要移除快捷评论的消息引用 * @param index 快捷评论索引 * @param serverExtension 服务器扩展字段 * @returns void * @example * ```javascript * await v2.messageService.removeQuickComment(messageRefer, index, 'serverExtension') * ``` */ removeQuickComment(messageRefer, index, serverExtension) { return new Promise((resolve, reject) => { this.instance.removeQuickComment(messageRefer, index, serverExtension, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 获取快捷评论列表 * @param messages 要获取快捷评论的消息列表 * @returns Map<string, Array<V2NIMMessageQuickComment>> * @example * ```javascript * const result = await v2.messageService.getQuickCommentList(messages) * ``` */ getQuickCommentList(messages) { return new Promise((resolve, reject) => { this.instance.getQuickCommentList(messages, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 添加收藏 * @param params 添加收藏相关参数 * @returns V2NIMCollection * @example * ```javascript * const result = await v2.messageService.addCollection(params) * ``` */ addCollection(params) { return new Promise((resolve, reject) => { this.instance.addCollection(params, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 移除收藏 * @param collections 要移除的收藏列表 * @returns number * @example * ```javascript * const count = await v2.messageService.removeCollections(collections) * ``` */ removeCollections(collections) { return new Promise((resolve, reject) => { this.instance.removeCollections(collections, (count) => { resolve(count); }, (error) => { reject(error); }); }); } /** * @brief 更新收藏扩展字段 * @param collection 要更新的收藏 * @param serverExtension 服务器扩展字段, 传空表示删除扩展字段 * @returns V2NIMCollection * @example * ```javascript * const result = await v2.messageService.updateCollectionExtension(collection, 'serverExtension') * ``` */ updateCollectionExtension(collection, serverExtension) { return new Promise((resolve, reject) => { this.instance.updateCollectionExtension(collection, serverExtension, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 分页获取收藏列表 * @param option 获取收藏列表查询参数 * @returns Array<V2NIMCollection> * @example * ```javascript * const result = await v2.messageService.getCollectionListByOption(option) * ``` */ getCollectionListByOption(option) { return new Promise((resolve, reject) => { this.instance.getCollectionListByOption(option, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 分页获取收藏列表 * @param option 获取收藏列表查询参数 * @returns V2NIMCollectionListResult * @example * ```javascript * const result = await v2.messageService.getCollectionListExByOption(option) * ``` */ getCollectionListExByOption(option) { return new Promise((resolve, reject) => { this.instance.getCollectionListExByOption(option, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 发送 P2P 消息已读回执 * @param message 要发送已读回执的消息 * @returns void * @example * ```javascript * await v2.messageService.sendP2PMessageReceipt(message) * ``` */ sendP2PMessageReceipt(message) { return new Promise((resolve, reject) => { this.instance.sendP2PMessageReceipt(message, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 查询 P2P 消息已读回执状态 * @param conversationId 会话 ID * @returns V2NIMP2PMessageReadReceipt * @example * ```javascript * const result = await v2.messageService.getP2PMessageReceipt(conversationId) * ``` */ getP2PMessageReceipt(conversationId) { return new Promise((resolve, reject) => { this.instance.getP2PMessageReceipt(conversationId, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 查询 P2P 消息对方是否已读 * @param message 要查询的消息 * @returns boolean 是否已读 * @example * ```javascript * const result = v2.messageService.isPeerRead(message) * ``` */ isPeerRead(message) { return this.instance.isPeerRead(message); } /** * @brief 发送群消息已读回执 * @param messages 要发送已读回执的消息列表 * @returns void * @example * ```javascript * await v2.messageService.sendTeamMessageReceipts(messages) * ``` */ sendTeamMessageReceipts(messages) { return new Promise((resolve, reject) => { this.instance.sendTeamMessageReceipts(messages, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 获取群消息已读回执状态 * @param messages 要查询的消息列表 * @returns Array<V2NIMTeamMessageReadReceipt> * @example * ```javascript * const result = await v2.messageService.getTeamMessageReceipts(messages) * ``` */ getTeamMessageReceipts(messages) { return new Promise((resolve, reject) => { this.instance.getTeamMessageReceipts(messages, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 获取群消息已读回执详情 * @param message 要查询的消息 * @param memberAccountIds 指定的账号列表, 为空表示查询全部 * @returns V2NIMTeamMessageReadReceiptDetail * @example * ```javascript * const result = await v2.messageService.getTeamMessageReceiptDetail(message, memberAccountIds) * ``` */ getTeamMessageReceiptDetail(message, memberAccountIds) { return new Promise((resolve, reject) => { this.instance.getTeamMessageReceiptDetail(message, memberAccountIds, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 语音转文字 * @param params 语音转文字参数 * @returns string * @example * ```javascript * const result = await v2.messageService.voiceToText(params) * ``` */ voiceToText(params) { return new Promise((resolve, reject) => { this.instance.voiceToText(params, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 取消文件消息附件上传 * @param message 要取消上传的文件消息 * @returns void * @example * ```javascript * await v2.messageService.cancelMessageAttachmentUpload(message) * ``` */ cancelMessageAttachmentUpload(message) { return new Promise((resolve, reject) => { this.instance.cancelMessageAttachmentUpload(message, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 搜索云端消息 * @param params 消息检索参数 * @returns Array<V2NIMMessage> * @example * ```javascript * const result = await v2.messageService.searchCloudMessages(params) * ``` */ searchCloudMessages(params) { return new Promise((resolve, reject) => { this.instance.searchCloudMessages(params, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 搜索云端消息,支持多个关键字、消息子类型查询 * @param params 消息检索参数 * @returns Promise<V2NIMMessageSearchResult> * @since v10.8.30 * @example * ```javascript * const result = await v2.messageService.searchCloudMessagesEx({ * keywordList: ['keyword1', 'keyword2'], * messageTypes: [0, 1, 2], * messageSubtypes: [1, 2], * limit: 10 * }) * ``` */ searchCloudMessagesEx(params) { return new Promise((resolve, reject) => { this.instance.searchCloudMessagesEx(params, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 搜索本地消息 * @param params 消息检索参数 * @returns V2NIMMessageSearchResult * @example * ```javascript * const result = await v2.messageService.searchLocalMessages({ * keywordList: ['keyword1', 'keyword2'], * }) * ``` */ searchLocalMessages(params) { return new Promise((resolve, reject) => { this.instance.searchLocalMessages(params, (result) => { resolve(result); }, (error) => { reject(error); }); }); } /** * @brief 停止 AI 消息流 * @param message 要停止的消息 * @param params 停止参数 * @return void * @since v10.8.30 * @example * ```javascript * await v2.messageService.stopAIStreamMessage(message, { * operationType: 0 * }) * ``` */ stopAIStreamMessage(message, params) { return new Promise((resolve, reject) => { this.instance.stopAIStreamMessage(message, params, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 重新生成 AI 消息 * @param message 要重新生成的消息 * @param params 重新生成参数 * @return void * @since v10.8.30 * @example * ```javascript * await v2.messageService.regenAIMessage(message, { * operationType: 0 * }) * ``` */ regenAIMessage(message, params) { return new Promise((resolve, reject) => { this.instance.regenAIMessage(message, params, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 清除漫游消息 * @param conversationIds 会话 ID 列表 * @returns void * @since v10.9.30 * @example * ```javascript * await v2.messageService.clearRoamingMessage(['conversationId1', 'conversationId2']) * ``` */ clearRoamingMessage(conversationIds) { return new Promise((resolve, reject) => { this.instance.clearRoamingMessage(conversationIds, () => { resolve(); }, (error) => { reject(error); }); }); } /** * @brief 安装消息过滤器,全局唯一,只能注册一个。一旦注册该过滤器,所有消息均经过该过滤器,返回 true 表示将消息过滤,返回 false 表示不过滤消息 * @param filter 消息过滤器 * @returns void * @since v10.8.30 * @example * ```javascript * v2.messageService.setMessageFilter({ * shouldIgnore: (message) => { * // 过滤消息 * } * }) */ setMessageFilter(filter) { if (filter && (filter.__messageClientId || filter.__messageType)) { filter.shouldIgnore = (message) => { if (filter.__messageClientId && message.messageClientId === filter.__messageClientId) { return true; } return !!(filter.__messageType && message.messageType === filter.__messageType); }; this.instance.setMessageFilter(filter); } else { this.instance.setMessageFilter(filter); } } } exports.V2NIMMessageService = V2NIMMessageService; //# sourceMappingURL=v2_nim_message_service.js.map