node-nim
Version:
NetEase IM nodejs wrapper based on NetEase IM C++ SDK
872 lines • 27.7 kB
JavaScript
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
;