@22g/netease-im-web-sdk
Version:
typescript netease-im-web-sdk
1,473 lines (1,287 loc) • 63.4 kB
TypeScript
import { NIMAsyncFuncOptions, NIMAsyncFuncOptionsSuccessRes, NIMAsyncFuncPromiseify, NIMAudioFile, NIMError, NIMFile, NIMFileType, NIMImageFile, NIMProcessImageType, NIMVideoFile } from './Basic';
import { AnyIndexObject, ArrayOr, LiteralUnion, NullOr, Param1Type, UnionToTuple } from '@22g/utility-types';
import { NIMTeam } from './Team';
import { NIMCustomMessage, NIMFileMessage, NIMGeoMessage, NIMLocalMessageWrapper, NIMMessage, NIMMessageType, NIMSceneType, NIMSendMsgCommon, NIMTextMessage, NIMTipMessage } from './Message';
import { NIMSystemMessage } from './SystemMessage';
import { NIMUser } from './User';
import { NIMFriend } from './Friend';
import { NIMServerSession, NIMSession } from './Session';
import { NIMTeamMember } from './TeamMember';
import { NIMMarkInfo, NIMRelation } from './Relation';
import { NIMSuperTeam } from './SuperTeam';
import { NIMSuperTeamMember } from './SuperTeamMember';
import { NIMLoginPort } from './LoginPort';
import { NIMChatroomInfo } from './ChatroomInfo';
/**
* [🔗 接受入群邀请](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#acceptTeamInvite__anchor)
* - [[NIM.acceptTeamInvite|`NIM.acceptTeamInvite`]]
*/
export interface NIMAcceptTeamInviteOpts extends NIMAsyncFuncOptions {
/** 对应的系统通知的 */
idServer: NIMSystemMessage['idServer'];
/** 群id */
teamId: NIMTeam['teamId'];
/** 邀请方的帐号 */
from: NIMSystemMessage['from'];
}
/**
* [🔗 直接加为好友](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#addFriend__anchor)
* - [[NIM.addFriend|`NIM.addFriend`]]
*/
export interface NIMAddFriendOpts<T extends NIMFriend = NIMFriend> extends NIMAsyncFuncOptions<{}, { friend: T }> {
/** 要直接加为好友的账号 */
account: T['account'];
/** 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容 */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 拉人入超大群,无需对方同意](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#addSuperTeamMembers__anchor)
* - [[NIM.addSuperTeamMembers|`NIM.addSuperTeamMembers`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMAddSuperTeamMembersOpts<T extends NIMSuperTeamMember = NIMSuperTeamMember> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 要拉入的账号 */
accounts: Array<T['account']>;
}
/**
* [🔗 添加群管理员](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#addTeamManagers__anchor)
* - [[NIM.addTeamManagers|`NIM.addTeamManagers`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMAddTeamManagersOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 要添加的管理员帐号列表 */
accounts: Array<T['account']>;
}
/**
* [🔗 拉人入群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#addTeamMembers__anchor)
* - [[NIM.addTeamMembers|`NIM.addTeamMembers`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMAddTeamMembersOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 要拉进群的成员的帐号列表 */
accounts: Array<T['account']>;
/** 自定义扩展字段,选填,最长512字符,开发者也可以使用JSON格式的字符串来扩展此内容 */
custom?: T['custom'];
/** 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容 */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 加入黑名单](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#addToBlacklist__anchor)
* - [[NIM.addToBlacklist|`NIM.addToBlacklist`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMAddToBlacklistOpts extends NIMAsyncFuncOptions<{}, NIMMarkInfo<true>> {
/** 要加入黑名单的账号 */
account: NIMMarkInfo['account'];
}
/**
* [🔗 加入静音列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#addToMutelist__anchor)
* - [[NIM.addToMutelist|`NIM.addToMutelist`]]
*/
export interface NIMAddToMutelistOpts extends NIMAsyncFuncOptions<{}, NIMMarkInfo<true>> {
/** 要加入静音列表的账号 */
account: NIMMarkInfo['account'];
}
/**
* [🔗 申请加好友](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#applyFriend__anchor)
* - [[NIM.applyFriend|`NIM.applyFriend`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMApplyFriendOpts<T extends NIMFriend = NIMFriend> extends NIMAsyncFuncOptions<{}> {
account: T['account'];
/** 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容 */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 申请入群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#applyTeam__anchor)
* - [[NIM.applyTeam|`NIM.applyTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMApplyTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容 */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 语音转文字](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#audioToText__anchor)
* - [[NIM.audioToText|`NIM.audioToText`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMAudioToTextOpts<T extends NIMAudioFile = NIMAudioFile> extends NIMAsyncFuncOptions<{}> {
/** 音频 url */
url: T['url'];
}
/**
* [🔗 高斯模糊](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#blurImage__anchor)
* - [[NIM.blurImage|`NIM.blurImage`]]
*/
export interface NIMBlurImageOpts extends NIMAsyncFuncOptions<{}> {
url: string;
/** 高斯模糊半径, 不包含中心点的像素, 取值范围 [1,50] */
radius?: number;
/** 高斯模糊标准差, 不能小于 0 */
sigma?: number;
}
/**
* [🔗 删除单人会话服务器聊天记录](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#clearServerHistoryMsgs__anchor)
* - [[NIM.clearServerHistoryMsgs|`NIM.clearServerHistoryMsgs`]]
*/
export interface NIMClearServerHistoryMsgsOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}> {
/** 对方账号 */
account: T['to'];
/**
* 是否同时删除漫游
* @default true
*/
delRoam?: boolean;
}
/**
* [🔗 创建群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#createTeam__anchor)
* - [[NIM.createTeam|`NIM.createTeam`]]
*/
export interface NIMCreateTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<
Pick<T, 'type' | 'name' | 'avatar'> & Partial<Pick<T, 'intro' | 'announcement' | 'joinMode' | 'beInviteMode' | 'inviteMode' | 'updateTeamMode' | 'updateCustomMode' | 'custom'>>,
{ team: T }
> {
accounts: Array<NIMUser['account']>;
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 裁剪图片](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#cropImage__anchor)
* - [[NIM.cropImage|`NIM.cropImage`]]
*/
export interface NIMCropImageOpts extends NIMAsyncFuncOptions<{}, { url: string }> {
/** 起点坐标 x, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height */
x: number;
/** 起点坐标 y, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height */
y: number;
/** 宽度, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height */
width: number;
/** 高度, 必须需为整数, 此方法内部使用 Math.round 来格式化 x/y/width/height */
height: number;
}
/**
* [🔗 删除本地所有消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteAllLocalMsgs__anchor)
* - [[NIM.deleteAllLocalMsgs|`NIM.deleteAllLocalMsgs`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteAllLocalMsgsOpts extends NIMAsyncFuncOptions<{}> {
}
/**
* [🔗 删除本地所有系统通知](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteAllLocalSysMsgs__anchor)
* - [[NIM.deleteAllLocalSysMsgs|`NIM.deleteAllLocalSysMsgs`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteAllLocalSysMsgsOpts extends NIMAsyncFuncOptions<{}> {
}
/**
* [🔗 删除好友](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteFriend__anchor)
* - [[NIM.deleteFriend|`NIM.deleteFriend`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteFriendOpts<T extends NIMFriend = NIMFriend> extends NIMAsyncFuncOptions<{}> {
account: T['account'];
/**
* 是否删除好友备注
* @default false
*/
delAlias?: boolean;
}
/**
* [🔗 删除本地消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteLocalMsg__anchor)
* - [[NIM.deleteLocalMsg|`NIM.deleteLocalMsg`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteLocalMsgOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}> {
/** 待删除的消息 */
msg: T;
}
/**
* [🔗 根据会话ID、起始时间等条件删除本地消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteLocalMsgs__anchor)
* - [[NIM.deleteLocalMsgs|`NIM.deleteLocalMsgs`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteLocalMsgsOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}> {
sessionId: T['sessionId'];
/**
* 开始时间,毫秒时间戳,默认为负无穷大
* @default -Infinity
*/
start?: number;
/**
* 结束时间,毫秒时间戳,默认为无穷大
* @default Infinity
*/
end?: number;
}
/**
* [🔗 删除某个会话的本地消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteLocalMsgsBySession__anchor)
* - [[NIM.deleteLocalMsgsBySession|`NIM.deleteLocalMsgsBySession`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteLocalMsgsBySessionOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}> {
scene: T['scene'];
to: T['to'];
/**
* 是否同时删除本地会话对象中的的lastMsg
* @default false
*/
delLastMsg?: boolean;
/**
* 是否为标记删除,若为true,则SDK会记录本地清空会话的时间戳,再调用获取历史消息或获取包含关键词的历史消息接口时,便不能再获取到该时间戳之前的消息了
* @default false
*/
isTag?: boolean;
}
/**
* [🔗 删除本地会话](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteLocalSession__anchor)
* - [[NIM.deleteLocalSession|`NIM.deleteLocalSession`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteLocalSessionOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}> {
id: ArrayOr<T['id']>;
}
/**
* [🔗 删除本地系统通知](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteLocalSysMsg__anchor)
* - [[NIM.deleteLocalSysMsg|`NIM.deleteLocalSysMsg`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteLocalSysMsgOpts<T extends NIMSystemMessage = NIMSystemMessage> extends NIMAsyncFuncOptions<{}> {
idServer: ArrayOr<T['idServer']>;
}
/**
* [🔗 删除teamId对应的本地群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteLocalTeam__anchor)
* - [[NIM.deleteLocalTeam|`NIM.deleteLocalTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteLocalTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}> {
teamId: ArrayOr<T['teamId']>;
}
/**
* [🔗 撤回消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteMsg__anchor)
* - [[NIM.deleteMsg|`NIM.deleteMsg`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteMsgOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}> {
/** 待撤回的消息 */
msg: T;
/** 自定义推送文案 */
apnsText?: string;
/** 第三方自定义的推送属性,限制json字符串,长度最大2048 */
pushPayload?: string;
/** 附言 */
ps?: string;
}
/**
* [🔗 删除服务器上的会话](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteSession__anchor)
* - [[NIM.deleteSession|`NIM.deleteSession`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteSessionOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}> {
scene: T['scene'];
to: T['to'];
}
/**
* [🔗 批量删除服务器上的会话](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteSessions__anchor)
* - [[NIM.deleteSessions|`NIM.deleteSessions`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDeleteSessionsOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}> {
sessions: T[];
}
/**
* [🔗 解散群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#dismissTeam__anchor)
* - [[NIM.dismissTeam|`NIM.dismissTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMDismissTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
}
/**
* [🔗 转发消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#forwardMsg__anchor)
* - [[NIM.forwardMsg|`NIM.forwardMsg`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMForwardMsgOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}> {
msg: T;
/** 新的场景 */
scene: T['scene'];
/** 新的接收方, 对方帐号或者群id */
to: T['to'];
}
/**
* [🔗 获取超大群成员](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getAllSuperTeamMembers__anchor)
* - [[NIM.getAllSuperTeamMembers|`NIM.getAllSuperTeamMembers`]]
*/
export interface NIMGetAllSuperTeamMembersOpts<T extends NIMSuperTeamMember = NIMSuperTeamMember> extends NIMAsyncFuncOptions<
{}, {
/** 是已全部返回 */
isAll: boolean;
/** 群成员 */
members: T[];
}
> {
teamId: T['teamId'];
}
/**
* [🔗 获取聊天室服务器地址](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getChatroomAddress__anchor)
* - [[NIM.getChatroomAddress|`NIM.getChatroomAddress`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMGetChatroomAddressOpts<T extends NIMChatroomInfo = NIMChatroomInfo> extends NIMAsyncFuncOptions<{}> {
chatroomId: T['id'];
}
/**
* [🔗 获取好友列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getFriends__anchor)
* - [[NIM.getFriends|`NIM.getFriends`]]
*/
export interface NIMGetFriendsOpts<T extends NIMFriend = NIMFriend> extends NIMAsyncFuncOptions<{}, T[]> {
}
/**
* [🔗 搜索历史记录](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#searchHistoryMsgs__anchor)
* - [[NIM.searchHistoryMsgs]]
*/
export interface NIMSearchHistoryMsgsOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}, { msgs: T }> {
/** 搜索关键词 */
keyword: string;
scene: T[];
to: T['to'];
}
/**
* [🔗 获取云端历史记录](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getHistoryMsgs__anchor)
* - [[NIM.getHistoryMsgs|`NIM.getHistoryMsgs`]]
*/
export interface NIMGetHistoryMsgsOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}, { msgs: T[] }> {
scene: T['scene'];
to: T['to'];
/**
* 开始时间时间戳(ms)
* @default 0
*/
beginTime?: number;
/**
* 结束时间时间戳(ms)
* @default [服务器的当前时间]
*/
endTime?: number;
/** 上次查询的最后一条消息的 [[NIMMessage.idServer|`NIMMessage.idServer`]],第一次不填 */
lastMsgId?: T['idServer'];
/**
* 本次查询的消息数量,最多100条
* @default 100
*/
limit?: number;
/**
* - `false`表示从 [[NIMGetHistoryMsgsOpts.endTime|`NIMGetHistoryMsgsOpts.endTime`]] 开始往前查找历史消息;
* - `true`表示从 [[NIMGetHistoryMsgsOpts.beginTime|`NIMGetHistoryMsgsOpts.beginTime`]] 开始往后查找历史消息
* @default false
*/
reverse?: boolean;
/**
* - `false`表示返回的消息按时间逆序排序;
* - `true`表示按时间正序排序
* @default false
*/
asc?: boolean;
/** 消息类型列表,默认全部消息类型 */
msgType?: Array<T['type']>;
}
/**
* [🔗 获取 idClient对应的本地消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalMsgByIdClient__anchor)
* - [[NIM.getLocalMsgByIdClient|`NIM.getLocalMsgByIdClient`]]
*/
export interface NIMGetLocalMsgByIdClientOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}, { msg: NIMLocalMessageWrapper<T> }> {
/** [[NIMMessage.idClient|`NIMMessage.idClient`]] */
idClient: T['idClient'];
}
/**
* [🔗 获取本地历史记录](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalMsgs__anchor)
* - [[NIM.getLocalMsgs|`NIM.getLocalMsgs`]]
*/
export interface NIMGetLocalMsgsOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}, { msgs: Array<NIMLocalMessageWrapper<T>> }> {
/** 如果提供该参数, 那么查询该会话的消息 */
sessionId?: T['sessionId'];
/**
* 开始时间
* @default 0
*/
start?: number;
/**
* 结束时间
* @default Infinity
*/
end?: number;
/**
* true 表示从 end 开始查, false 表示从 begin 开始查
* @default true
*/
desc?: boolean;
/**
* 数量限制
* @default 100
*/
limit?: number;
/** 消息类型, [indexedDB专用]如果提供该参数, 那么查询该类型的消息 */
type?: T['type'];
/** [indexedDB专用]如果提供该参数, 那么查询这几种类型的消息 */
types?: Array<T['type']>;
/** [indexedDB专用]如果提供参数, 那么查询匹配该关键词的消息 */
keyword?: string;
/** [indexedDB专用]可选参数, 过滤函数, 接收消息对象, 返回 true 表示结果保留该消息 */
filterFunc?(msg: T): boolean;
}
/**
* [🔗 获取 idClients 对应的本地消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalMsgsByIdClients__anchor)
* - [[NIM.getLocalMsgsByIdClients|`NIM.getLocalMsgsByIdClients`]]
*/
export interface NIMGetLocalMsgsByIdClientsOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}, { msgs: Array<NIMLocalMessageWrapper<T>> }> {
/** [[NIMMessage.idClient|`NIMMessage.idClient`]] */
idClients: Array<T['idClient']>;
}
/**
* 通过 sessionId [🔗 获取本地会话](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalSession__anchor)
* - [[NIM.getLocalSession|`NIM.getLocalSession`]]
*/
export interface NIMGetLocalSessionOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}, T> {
sessionId?: T['id'];
}
/**
* [🔗 获取本地会话列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalSessions__anchor)
* - [[NIM.getLocalSessions|`NIM.getLocalSessions`]]
*/
export interface NIMGetLocalSessionsOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}, { sessions: T[] }> {
/** 上次查询的最后一条会话的id, 第一次不填 */
lastSessionId?: T['id'];
/**
* 数量
* @default 100
*/
limit?: number;
/**
* - `false` 表示从最近的会话开始往前查找本地会话;
* - `true` 表示从第一条会话开始往后查找本地会话
* @default false
*/
reverse?: boolean;
}
/**
* [🔗 获取本地会话列表,](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalSessionsByMsgType__anchor)
* - [[NIM.getLocalSessionsByMsgType|`NIM.getLocalSessionsByMsgType`]]
* - 开发者可以指定排除lastMsg的类型,比如获取每个会话中非通知类型的消息
*/
export interface NIMGetLocalSessionsByMsgTypeOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}, { sessions: T[] }> {
/**
* - lastMsg 要排除的类型,具体参见 [[NIMMessageType|`消息类型`]],如不填,表示lastMsg不排除任何类型
*/
exclude?: ArrayOr<NIMMessageType>;
}
/**
* [🔗 获取本地系统通知](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalSysMsgs__anchor)
* - [[NIM.getLocalSysMsgs|`NIM.getLocalSysMsgs`]]
*/
export interface NIMGetLocalSysMsgsOpts<T extends NIMSystemMessage = NIMSystemMessage> extends NIMAsyncFuncOptions<{}, { sysMsgs: T[] }> {
category?: T['category'];
type?: T['type'];
/**
* - 如果不传, 默认获取所有已读和未读的系统通知
* - 如果传 `true`, 那么只获取已读的系统通知
* - 如果传 `false`, 那么只获取未读的系统通知
*/
read?: boolean;
/** 上次查询的最后一条系统通知的 [[NIMSystemMessage.idServer|`NIMSystemMessage.idServer`]], 第一次不填 */
lastIdServer?: T['idServer'];
/**
* 数量
* @default 100
*/
limit?: number;
/**
* - `false` 表示从最近的系统通知开始往前查找本地系统通知
* - `true` 表示从第一条系统通知开始往后查找本地系统通知
* @default false
*/
reverse?: boolean;
}
/**
* [🔗 获取本地群组](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getLocalTeams__anchor)
* - [[NIM.getLocalTeams|`NIM.getLocalTeams`]]
*/
export interface NIMGetLocalTeamsOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}, { teams: T }> {
teamIds: Array<T['teamId']>;
}
/**
* [🔗 获取群禁言成员列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getMutedTeamMembers__anchor)
* - [[NIM.getMutedTeamMembers|`NIM.getMutedTeamMembers`]]
*/
export interface NIMGetMutedTeamMembersOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}, T[]> {
teamId: T['teamId'];
}
/**
* [🔗 获取黑名单和静音列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getRelations__anchor)
* - [[NIM.getRelations|`NIM.getRelations`]]
*/
export interface NIMGetRelationsOpts<T extends NIMRelation = NIMRelation> extends NIMAsyncFuncOptions<{}, { blacklist: T[], mutelist: T[] }> {
}
/**
* [🔗 获取超大群信息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getSuperTeam__anchor)
* - [[NIM.getSuperTeam|`NIM.getSuperTeam`]]
*/
export interface NIMGetSuperTeamOpts<T extends NIMSuperTeam = NIMSuperTeam> extends NIMAsyncFuncOptions<{}, T> {
teamId: T['teamId'];
}
/**
* [🔗 根据进群时间,分页获取超大群成员](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getSuperTeamMembersByJoinTime__anchor)
* - [[NIM.getSuperTeamMembersByJoinTime|`NIM.getSuperTeamMembersByJoinTime`]]
*/
export interface NIMGetSuperTeamMembersByJoinTimeOpts<T extends NIMSuperTeamMember = NIMSuperTeamMember> extends NIMAsyncFuncOptions<{}, T[]> {
teamId: T['teamId'];
/**
* 获取在该时间以后进群的群成员
* @default 0
*/
joinTime?: number;
/**
* 数量
* @default 100
*/
limit?: number;
/**
* - `false` 获取joinTime之后进群的群成员,按时间正序排列
* - `true` 获取joinTime之前进群的群成员,按时间逆序排列
* @default false
*/
reverse?: boolean;
}
/**
* [🔗 获取所在的超大群列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getSuperTeams__anchor)
* - [[NIM.getSuperTeams|`NIM.getSuperTeams`]]
*/
export interface NIMGetSuperTeamsOpts<T extends NIMSuperTeam = NIMSuperTeam> extends NIMAsyncFuncOptions<{}, T[]> {
}
/**
* [🔗 获取群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getTeam__anchor)
* - [[NIM.getTeam|`NIM.getTeam`]]
*/
export interface NIMGetTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}, T> {
teamId: T['teamId'];
}
/**
* [🔗 通过群ID及成员账号获取群成员信息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#通过群ID及成员账号获取群成员信息__anchor)
* - [[NIM.getTeamMemberByTeamIdAndAccount|`NIM.getTeamMemberByTeamIdAndAccount`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMGetTeamMemberByTeamIdAndAccountOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}, { members: T }> {
teamId: T['teamId'];
/** 群成员账号 */
account: T['account'];
}
/**
* [🔗 获取群成员的邀请者accid](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#获取群成员的邀请者accid__anchor)
* - [[NIM.getTeamMemberInvitorAccid|`NIM.getTeamMemberInvitorAccid`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMGetTeamMemberInvitorAccidOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}, AnyIndexObject> {
teamId: T['teamId'];
/** 表示需要查询邀请者accid的群成员账号列表,一次最多查200个。当群成员数量小于等于200时为可选参数,不填默认查全部成员;群成员数量大于200时,需要将成员列表分批多次调用此接口查询。 */
accounts: Array<T['account']>;
}
/**
* [🔗 获取群成员](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getTeamMembers__anchor)
* - [[NIM.getTeamMembers|`NIM.getTeamMembers`]]
*/
export interface NIMGetTeamMembersOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}, { members: T }> {
teamId: T['teamId'];
}
/**
* [🔗 查询群组已读、未读账号列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getTeamMsgReadAccounts__anchor)
* - [[NIM.getTeamMsgReadAccounts|`NIM.getTeamMsgReadAccounts`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMGetTeamMsgReadAccountsOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}, { members: T }> {
teamMsgReceipt: {
teamId: T['teamId'];
idServer: NIMMessage['idServer'];
};
}
/**
* [🔗 查询群组消息已读、未读数量](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getTeamMsgReads__anchor)
* - [[NIM.getTeamMsgReads|`NIM.getTeamMsgReads`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMGetTeamMsgReadsOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}, AnyIndexObject> {
teamMsgReceipts: Array<{
teamId: T['teamId'];
idServer: NIMMessage['idServer'];
}>;
}
/**
* [🔗 获取群列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getTeams__anchor)
* - [[NIM.getTeams|`NIM.getTeams`]]
*/
export interface NIMGetTeamsOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}, T[]> {
}
/**
* [🔗 获取用户信息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getUser__anchor)
* - [[NIM.getUser|`NIM.getUser`]]
*/
export interface NIMGetUserOpts<T extends NIMUser = NIMUser> extends NIMAsyncFuncOptions<{}, T> {
account: T['account'];
}
/**
* [🔗 获取用户信息数组](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getUsers__anchor)
* - [[NIM.getUsers|`NIM.getUsers`]]
*/
export interface NIMGetUsersOpts<T extends NIMUser = NIMUser> extends NIMAsyncFuncOptions<{}, T[]> {
accounts: Array<T['account']>;
}
/**
* [🔗 插入一条本地会话记录](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#insertLocalSession__anchor)
* - [[NIM.insertLocalSession|`NIM.insertLocalSession`]]
*/
export interface NIMInsertLocalSessionOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}, { session: T }> {
/** 会话场景 */
scene: T['scene'];
/** 账号或群ID */
to: T['to'];
/** 可选, 会话更新的时间, 如果不填, SDK 会设置一个比当前所有会话更新时间大的一个时间 */
updateTime?: T['updateTime'];
}
/**
* interlace [🔗 图片](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#interlaceImage__anchor)
* - [[NIM.interlaceImage|`NIM.interlaceImage`]]
*/
export interface NIMInterlaceImageOpts extends NIMAsyncFuncOptions<{}, { url: string }> {
/** 原图 url */
url: string;
}
/**
* [🔗 踢当前用户登录的其它端](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#kick__anchor)
* - [[NIM.kick|`NIM.kick`]]
*/
export interface NIMKickOpts<T extends NIMLoginPort = NIMLoginPort> extends NIMAsyncFuncOptions<{}, { deviceIds: Array<T['deviceId']> }> {
/** 要踢出的设备id */
deviceIds: Array<T['deviceId']>;
}
/**
* [🔗 主动退超级群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#leaveSuperTeam__anchor)
* - [[NIM.leaveSuperTeam|`NIM.leaveSuperTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMLeaveSuperTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}, unknown> {
teamId: T['teamId'];
}
/**
* [🔗 主动退群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#leaveTeam__anchor)
* - [[NIM.leaveTeam|`NIM.leaveTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMLeaveTeamOpts<T extends NIMSuperTeam = NIMSuperTeam> extends NIMAsyncFuncOptions<{}, unknown> {
teamId: T['teamId'];
}
/**
* [🔗 加入黑名单/从黑名单移除](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#markInBlacklist__anchor)
* - [[NIM.markInBlacklist|`NIM.markInBlacklist`]]
*/
export interface NIMMarkInBlacklistOpts extends NIMAsyncFuncOptions<NIMMarkInfo, NIMMarkInfo> {
}
/**
* [🔗 加入静音列表/从静音列表移除](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#markInMutelist__anchor)
* - [[NIM.markInMutelist|`NIM.markInMutelist`]]
*/
export interface NIMMarkInMutelistOpts extends NIMAsyncFuncOptions<NIMMarkInfo, NIMMarkInfo> {
}
/**
* [🔗 标记系统通知为已收到](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#markSysMsgRead__anchor)
* - [[NIM.markSysMsgRead|`NIM.markSysMsgRead`]]
*/
export interface NIMMarkSysMsgReadOpts<T extends NIMSystemMessage = NIMSystemMessage> extends NIMAsyncFuncOptions<{}, unknown> {
sysMsgs: ArrayOr<T>;
}
/**
* [🔗 群组禁言](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#muteTeamAll__anchor)
* - [[NIM.muteTeamAll|`NIM.muteTeamAll`]]
*/
export interface NIMMuteTeamAllOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 禁言类型 none: 不禁言 normal: 普通成员禁言 all: 全部禁言(包括群主) */
type: T['muteType'];
}
/**
* [🔗 是否需要群消息通知](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#notifyForNewTeamMsg__anchor)
* - [[NIM.notifyForNewTeamMsg|`NIM.notifyForNewTeamMsg`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMNotifyForNewTeamMsgOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}> {
teamIds: Array<T['teamId']>;
}
/**
* [🔗 通过好友申请](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#passFriendApply__anchor)
* - [[NIM.passFriendApply|`NIM.passFriendApply`]]
*/
export interface NIMPassFriendApplyOpts<T extends NIMFriend = NIMFriend> extends NIMAsyncFuncOptions<{}, { friend: NIMFriend }> {
/** 对应的系统通知的 idServer */
idServer: NIMSystemMessage['idServer'];
/** 要通过好友申请的账号 */
account: NIMFriend['account'];
/** 附言, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容 */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 通过入群申请](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#passTeamApply__anchor)
* - [[NIM.passTeamApply|`NIM.passTeamApply`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMPassTeamApplyOpts extends NIMAsyncFuncOptions<{}> {
/** 对应的系统通知的 idServer */
idServer: NIMSystemMessage['idServer'];
/** 要通过好友申请的账号 */
teamId: NIMTeam['teamId'];
/** 申请方的帐号 */
from: NIMSystemMessage['from'];
}
/**
* [🔗 预览文件](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#previewFile__anchor)
* - [[NIM.previewFile|`NIM.previewFile`]]
*/
export interface NIMPreviewFileOpts extends NIMAsyncFuncOptions<{}, NIMImageFile | NIMVideoFile | NIMAudioFile | NIMFile> {
/** 文件过滤器 */
type?: NIMFileType;
fileInput?: Param1Type<Document['getElementById']> | HTMLElement;
/** 限制文件的大小 */
maxSize?: number;
/** 使用普通上传 */
commonUpload?: boolean;
/** Blob对象 */
blob?: Blob;
/** 包含 MIME type 和 base64 数据的 data URL */
dataURL?: string;
uploadprogress?: XMLHttpRequest['onprogress'];
/**
* 存储场景,不传默认实例化配置
* @default 'im'
*/
nosScenes?: string;
/** 存储有效时间,不传默认实例化配置 不得小于一天,单位`秒` */
nosSurvivalTime?: number;
}
/**
* [🔗 处理图片](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#processImage__anchor)
* - [[NIM.processImage|`NIM.processImage`]]
* - TODO: 未完成
*/
export interface NIMProcessImageOpts extends NIMAsyncFuncOptions<AnyIndexObject, { url: string }> {
/** 原图URL */
url: string;
/** 操作序列 */
opts: Array<
NIMProcessImageProcessItem<NIMQualityImageOpts, NIMProcessImageType.quality>
| NIMProcessImageProcessItem<NIMRotateImageOpts, NIMProcessImageType.rotate>
| NIMProcessImageProcessItem<NIMInterlaceImageOpts, NIMProcessImageType.interlace>
| NIMProcessImageProcessItem<NIMBlurImageOpts, NIMProcessImageType.blur>
| NIMProcessImageProcessItem<NIMCropImageOpts, NIMProcessImageType.crop>
| NIMProcessImageProcessItem<NIMThumbnailImageOpts, NIMProcessImageType.thumbnail>
>;
}
type NIMProcessImageProcessItem<O extends NIMAsyncFuncOptions<{}>, T extends NIMProcessImageType> = Omit<O, keyof NIMProcessImageOpts> & {
type: T;
};
/**
* [🔗 修改图片质量](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#qualityImage__anchor)
* - [[NIM.qualityImage|`NIM.qualityImage`]]
*/
export interface NIMQualityImageOpts extends NIMAsyncFuncOptions<{}, { url: string }> {
/** 原图URL */
url: string;
/** 图片质量, 必须为整数, 取值范围为 0-100, 此方法内部使用 Math.round 来格式化 quality */
quality: number;
}
/**
* [🔗 拒绝好友申请](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#rejectFriendApply__anchor)
* - [[NIM.rejectFriendApply|`NIM.rejectFriendApply`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMRejectFriendApplyOpts extends NIMAsyncFuncOptions<{}> {
/** 对应的系统通知的 idServer */
idServer: NIMSystemMessage['idServer'];
/** 要拒绝好友申请的账号 */
account: NIMFriend['account'];
/** 附言, */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 拒绝入群申请](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#rejectTeamApply__anchor)
* - [[NIM.rejectTeamApply|`NIM.rejectTeamApply`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMRejectTeamApplyOpts extends NIMAsyncFuncOptions<{}> {
/** 对应的系统通知的 idServer */
idServer: NIMSystemMessage['idServer'];
teamId: NIMTeam['teamId'];
/** 申请方的帐号 */
from: NIMTeamMember['account'];
/** 附言 */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 拒绝入群邀请](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#rejectTeamInvite__anchor)
* - [[NIM.rejectTeamInvite|`NIM.rejectTeamInvite`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMRejectTeamInviteOpts extends NIMAsyncFuncOptions<{}> {
/** 对应的系统通知的 idServer */
idServer: NIMSystemMessage['idServer'];
teamId: NIMTeam['teamId'];
/** 邀请方的帐号 */
from: NIMTeamMember['account'];
/** 附言 */
ps?: NIMSystemMessage['ps'];
}
/**
* [🔗 从黑名单移除](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#removeFromBlacklist__anchor)
* - [[NIM.removeFromBlacklist|`NIM.removeFromBlacklist`]]
*/
export interface NIMRemoveFromBlacklistOpts extends NIMAsyncFuncOptions<{}, NIMMarkInfo<false>> {
account: NIMMarkInfo['account'];
}
/**
* [🔗 从静音列表移除](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#removeFromMutelist__anchor)
* - [[NIM.removeFromMutelist|`NIM.removeFromMutelist`]]
*/
export interface NIMRemoveFromMutelistOpts extends NIMAsyncFuncOptions<{}, NIMMarkInfo<false>> {
account: NIMMarkInfo['account'];
}
/**
* [🔗 踢人出超级群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#removeSuperTeamMembers__anchor)
* - [[NIM.removeSuperTeamMembers|`NIM.removeSuperTeamMembers`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMRemoveSuperTeamMembersOpts extends NIMAsyncFuncOptions<{}> {
teamId: NIMSuperTeamMember['teamId'];
/** 要移除的成员帐号列表 */
account: Array<NIMSuperTeamMember['account']>;
}
/**
* [🔗 移除群管理员](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#removeTeamManagers__anchor)
* - [[NIM.removeTeamManagers|`NIM.removeTeamManagers`]]
*/
export interface NIMRemoveTeamManagersOpts extends NIMAsyncFuncOptions<{}> {
teamId: NIMTeamMember['teamId'];
/** 要移除的管理员帐号列表 */
account: Array<NIMTeamMember['account']>;
}
/**
* [🔗 踢人出群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#removeTeamMembers__anchor)
* - [[NIM.removeTeamMembers|`NIM.removeTeamMembers`]]
*/
export interface NIMRemoveTeamMembersOpts extends NIMAsyncFuncOptions<{}> {
teamId: NIMTeamMember['teamId'];
/** 要移除的成员帐号列表 */
account: Array<NIMTeamMember['account']>;
}
/**
* [🔗 旋转图片](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#rotateImage__anchor)
* - [[NIM.rotateImage|`NIM.rotateImage`]]
*/
export interface NIMRotateImageOpts extends NIMAsyncFuncOptions<{}, { url: string }> {
/** 原图Url */
url: string;
/** 旋转的角度, 正整数表示顺时针, 负整数表示逆时针, 必须为整数, 此方法内部会先将 angle 格式化为 [0, 360] 范围内的数字, 然后使用 Math.round 来格式化 angle */
angle: number;
}
/**
* [🔗 发送自定义消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendCustomMsg__anchor)
* - [[NIM.sendCustomMsg|`NIM.sendCustomMsg`]]
*/
export interface NIMSendCustomMsgOpts<T extends NIMCustomMessage = NIMCustomMessage> extends NIMAsyncFuncOptions<NIMSendMsgCommon, T> {
/** 自定义消息的消息内容, 推荐使用JSON格式构建 */
content: NIMCustomMessage['content'];
}
/**
* [🔗 发送自定义系统通知](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendCustomSysMsg__anchor)
* - [[NIM.sendCustomSysMsg|`NIM.sendCustomSysMsg`]]
*/
export interface NIMSendCustomSysMsgOpts<T extends NIMSystemMessage = NIMSystemMessage> extends NIMAsyncFuncOptions<
Pick<T, 'scene' | 'to'> & Partial<Pick<T, 'apnsText' | 'pushPayload' | 'cc'>>
> {
/** 自定义系统通知的内容, 推荐使用JSON格式构建 */
content: string;
/**
* 是否只发送给在线用户。
* - `true` 时只发送给在线用户, 如果接收方不在线, 这条通知将被丢弃。适合发送即时通知, 比如正在输入。
* - `false` 时假如接收方在线, 那么会立即收到该通知,假如接收方不在线, 会在其上线后推送过去。
* @default true
*/
sendToOnlineUsersOnly: T['sendToOnlineUsersOnly'];
/**
* 是否需要推送
* @default true
*/
isPushable: T['isPushable'];
/**
* 是否需要推送昵称
* @default false
*/
needPushNick: T['needPushNick'];
}
/**
* [🔗 发送文件消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendFile__anchor)
* - [[NIM.sendFile|`NIM.sendFile`]]
*/
export interface NIMSendFileOpts<T extends NIMFileMessage = NIMFileMessage> extends NIMAsyncFuncOptions<
Omit<NIMPreviewFileOpts, keyof NIMAsyncFuncOptions<{}>> & NIMSendMsgCommon,
T
> {
/** 文件对象, 开发者可以通过 预览文件[[NIM.previewFile|`NIM.previewFile`]] 拿到文件对象 */
file?: NIMAsyncFuncOptionsSuccessRes<NIMPreviewFileOpts>;
/** 仅供微信小程序使用, 通过 wx.chooseImage 或者 wx.startRecord 拿到的临时文件路径 */
wxFilePath?: string;
/**
* 开始上传图片的回调
* - 如果开发者传入 fileInput, 在此回调之前不能修改 fileInput
* - 在此回调之后可以取消图片上传, 此回调会接收一个参数 upload, 调用 upload.abort(); 来取消文件上传
*/
beginupload?(xhrInst: XMLHttpRequest): void;
/**
* 上传完成回调
* - 此回调接收两个参数, error 和 obj
* - 如果出错, error 包含详细的错误信息
* - 如果上传成功, obj 包含详细的文件信息
*/
uploaddone?(error: NullOr<NIMError>, file: NullOr<NIMAsyncFuncOptionsSuccessRes<NIMPreviewFileOpts>>): void;
/** 发送文件消息之前的回调函数 */
beforesend?(msg: NIMMessage): void;
}
/**
* [🔗 发送地理位置](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendGeo__anchor)
* - [[NIM.sendGeo|`NIM.sendGeo`]]
*/
export interface NIMSendGeoOpts<T extends NIMGeoMessage = NIMGeoMessage> extends NIMAsyncFuncOptions<NIMSendMsgCommon, T> {
geo: T['geo'];
}
/**
* [🔗 发送消息已读回执](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendMsgReceipt__anchor)
* - [[NIM.sendMsgReceipt|`NIM.sendMsgReceipt`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMSendMsgReceiptOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}> {
msg: T;
}
/**
* [🔗 发送机器人消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendRobotMsg__anchor)
* - [[NIM.sendRobotMsg|`NIM.sendRobotMsg`]]
* - TODO: 未知用途,暂不定义
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMSendRobotMsgOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<NIMSendMsgCommon> {
}
/**
* [🔗 标记群组消息已读](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendTeamMsgReceipt__anchor)
* - [[NIM.sendTeamMsgReceipt|`NIM.sendTeamMsgReceipt`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMSendTeamMsgReceiptOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}> {
teamMsgReceipts: Array<{
teamId: NIMTeam['teamId'];
idServer: T['idServer'];
}>;
}
/**
* [🔗 发送文本消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendText__anchor)
* - [[NIM.sendText|`NIM.sendText`]]
*/
export interface NIMSendTextOpts<T extends NIMTextMessage = NIMTextMessage> extends NIMAsyncFuncOptions<NIMSendMsgCommon, T> {
/** 文本消息内容 */
text: T['text'];
}
/**
* [🔗 发送提醒消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#sendTipMsg__anchor)
* - [[NIM.sendTipMsg|`NIM.sendTipMsg`]]
*/
export interface NIMSendTipMsgOpts<T extends NIMTipMessage = NIMTipMessage> extends NIMAsyncFuncOptions<NIMSendMsgCommon, T> {
/** 提醒内容 */
tip: T['tip'];
}
/**
* [🔗 去除图片元信息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#stripImageMeta__anchor)
* - [[NIM.stripImageMeta|`NIM.stripImageMeta`]]
*/
export interface NIMStripImageMetaOpts extends NIMAsyncFuncOptions<{}, { url: string }> {
/** 原图URL */
url: string;
}
/**
* [🔗 生成缩略图](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#thumbnailImage__anchor)
* - [[NIM.thumbnailImage|`NIM.thumbnailImage`]]
*/
export interface NIMThumbnailImageOpts extends NIMAsyncFuncOptions<{}, { url: string }> {
/** 原图URL */
url: string;
width?: number;
height?: number;
/** 缩略模式, 目前支持以下三种模式, 请参考上面的描述 */
mode: 'cover' | 'cover' | 'crop';
axis?: {
/** 'crop' 模式下控制最后一步裁剪的位置, 请参考上面的描述 */
x?: number;
/** 'crop' 模式下控制最后一步裁剪的位置, 请参考上面的描述 */
y?: number;
};
/**
* 当图片尺寸小于要缩略的尺寸时, 是否放大图片, 默认false不放大
* @default false
*/
enlarge?: boolean;
}
/**
* [🔗 转让群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#transferTeam__anchor)
* - [[NIM.transferTeam|`NIM.transferTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMTransferTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 新群主的帐号 */
account: NIMUser['account'];
/** 转让群的同时是否离开群 */
leave: boolean;
}
/**
* [🔗 更新好友](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateFriend__anchor)
* - [[NIM.updateFriend|`NIM.updateFriend`]]
*/
export interface NIMUpdateFriendOpts<T extends NIMFriend = NIMFriend> extends NIMAsyncFuncOptions<{}, T> {
account: T['account'];
/** 备注 */
alias: T['alias'];
/** 扩展字段, 选填, 开发者也可以使用JSON格式的字符串来扩展此内容 */
custom: T['alias'];
}
/**
* [🔗 修改自己的超级群属性](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateInfoInSuperTeam__anchor)
* - [[NIM.updateInfoInSuperTeam|`NIM.updateInfoInSuperTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMUpdateInfoInSuperTeamOpts<T extends NIMSuperTeamMember = NIMSuperTeamMember> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 在群里面的昵称 */
nickInTeam?: T['nickInTeam'];
/** 是否关闭此群的消息提醒, true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定 */
muteTeam?: T['muteTeam'];
/** 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串 */
custom?: T['custom'];
}
/**
* [🔗 修改自己的群属性](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateInfoInTeam__anchor)
* - [[NIM.updateInfoInTeam|`NIM.updateInfoInTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMUpdateInfoInTeamOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 在群里面的昵称 */
nickInTeam?: T['nickInTeam'];
/** 是否关闭此群的消息提醒, true表示关闭提醒, 但是SDK仍然会收到这个群的消息, SDK只是记录这个设置, 具体根据这个设置要执行的操作由第三方APP决定 */
muteTeam: T['muteTeam'];
/** 第三方扩展字段, 开发者可以自行扩展, 建议封装成JSON格式字符串 */
custom?: T['custom'];
}
/**
* [🔗 更新本地消息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateLocalMsg__anchor)
* - [[NIM.updateLocalMsg|`NIM.updateLocalMsg`]]
*/
export interface NIMUpdateLocalMsgOpts<T extends NIMMessage = NIMMessage> extends NIMAsyncFuncOptions<{}, { msg?: T }> {
idClient: T['idClient'];
localCustom?: T['localCustom'];
}
/**
* [🔗 更新本地会话](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateLocalSession__anchor)
* - [[NIM.updateLocalSession|`NIM.updateLocalSession`]]
*/
export interface NIMUpdateLocalSessionOpts<T extends NIMSession = NIMSession> extends NIMAsyncFuncOptions<{}, { session?: T }> {
id: T['id'];
localCustom?: T['localCustom'];
}
/**
* [🔗 更新本地系统通知](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateLocalSysMsg__anchor)
* - [[NIM.updateLocalSysMsg|`NIM.updateLocalSysMsg`]]
*/
export interface NIMUpdateLocalSysMsgOpts<T extends NIMSystemMessage = NIMSystemMessage> extends NIMAsyncFuncOptions<{}, { sysMsg?: T }> {
idServer: NIMSystemMessage['idServer'];
/**
* 状态
* - TODO: 不清楚是`state`还是`status`,还有文档上面的`'bingo'`是代表什么
*/
status?: T['state'];
localCustom?: T['localCustom'];
}
/**
* [🔗 更新群成员禁言状态](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateMuteStateInTeam__anchor)
* - [[NIM.updateMuteStateInTeam|`NIM.updateMuteStateInTeam`]]
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMUpdateMuteStateInTeamOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
/** 群成员的帐号 */
account: T['account'];
/** 是否要禁言 */
mute: T['mute'];
}
/**
* [🔗更新我的名片](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateMyInfo__anchor)
* - [[NIM.updateMyInfo|`NIM.updateMyInfo`]]
*/
export interface NIMUpdateMyInfoOpts<T extends NIMUser = NIMUser> extends NIMAsyncFuncOptions<Partial<Pick<T, Exclude<keyof NIMUser, 'account' | 'createTime' | 'updateTime'>>>, T> {
}
/**
* [🔗 修改别人的群昵称](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateNickInTeam__anchor)
* - [[NIM.updateNickInTeam|`NIM.updateNickInTeam`]]
*/
export interface NIMUpdateNickInTeamOpts<T extends NIMTeamMember = NIMTeamMember> extends NIMAsyncFuncOptions<{}> {
teamId: T['teamId'];
account: T['account'];
nickInTeam: T['nickInTeam'];
}
/**
* [🔗更新超级群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateSuperTeam__anchor)
* - [[NIM.updateSuperTeam|`NIM.updateSuperTeam`]]
*/
export interface NIMUpdateSuperTeamOpts<T extends NIMSuperTeam = NIMSuperTeam> extends NIMAsyncFuncOptions<Partial<Pick<T, 'name' | 'avatar' | 'intro' | 'announcement' | 'custom'>>, T> {
teamId: T['teamId'];
}
/**
* [🔗 更新群](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateTeam__anchor)
* - [[NIM.updateTeam|`NIM.updateTeam`]]
*/
export interface NIMUpdateTeamOpts<T extends NIMTeam = NIMTeam> extends NIMAsyncFuncOptions<Partial<Pick<T, 'name' | 'avatar' | 'intro' | 'announcement' | 'joinMode' | 'beInviteMode' | 'inviteMode' | 'updateTeamMode' | 'updateCustomMode' | 'custom'>>, T> {
teamId: T['teamId'];
}
/**
* [🔗 预览去除图片元信息](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#viewImageStripMeta__anchor)
* - [[NIM.viewImageStripMeta|`NIM.viewImageStripMeta`]]
*/
export interface NIMViewImageStripMetaOpts extends NIMStripImageMetaOpts {
}
/**
* [🔗 发布事件](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#publishEvent__anchor)
* - [[NIM.publishEvent|`NIM.publishEvent`]]
* - TODO: 未知用途
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMPublishEventOpts extends NIMAsyncFuncOptions<{}> {
type: number;
value: number;
custom?: string;
vaildTime: number;
sync: boolean;
}
/**
* [🔗 按账号获取指定事件的订阅关系](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#querySubscribeEventsByAccounts__anchor)
* - [[NIM.querySubscribeEventsByAccounts|`NIM.querySubscribeEventsByAccounts`]]
* - TODO: 未知用途
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMQuerySubscribeEventsByAccountsOpts extends NIMAsyncFuncOptions<{}> {
type: NIMPublishEventOpts['type'];
accounts: string[];
}
/**
* [🔗 查询指定事件的全部订阅关系](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#querySubscribeEventsByType__anchor)
* - [[NIM.querySubscribeEventsByType|`NIM.querySubscribeEventsByType`]]
* - TODO: 未知用途
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMQuerySubscribeEventsByTypeOpts extends NIMAsyncFuncOptions<{}> {
type: NIMPublishEventOpts['type'];
}
/**
* [🔗 订阅事件](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#subscribeEvent__anchor)
* - [[NIM.subscribeEvent|`NIM.subscribeEvent`]]
* - TODO: 未知用途
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMSubscribeEventOpts extends NIMAsyncFuncOptions<{}> {
type: NIMPublishEventOpts['type'];
accounts: string[];
subscribeTime: number;
sync: boolean;
}
/**
* [🔗 按账号取消指定事件的订阅关系](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#unSubscribeEventsByAccounts__anchor)
* - [[NIM.unSubscribeEventsByAccounts|`NIM.unSubscribeEventsByAccounts`]]
* - TODO: 未知用途
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMUnSubscribeEventsByAccountsOpts extends NIMAsyncFuncOptions<{}> {
type: NIMPublishEventOpts['type'];
accounts: string[];
}
/**
* [🔗 取消指定事件的全部订阅关系](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#unSubscribeEventsByType__anchor)
* - [[NIM.unSubscribeEventsByType|`NIM.unSubscribeEventsByType`]]
* - TODO: 未知用途
* - TODO: 文档模糊,未知实际返回结构
*/
export interface NIMUnSubscribeEventsByTypeOpts extends NIMAsyncFuncOptions<{}> {
type: NIMPublishEventOpts['type'];
}
/**
* [🔗 获取反垃圾词库(收费API)](https://dev.yunxin.163.com/docs/product/IM即时通讯/SDK开发集成/Web开发集成/客户端反垃圾)
* - [[NIM.getClientAntispamLexicon]]
*/
export interface NIMGetClientAntispamLexiconOpts extends NIMAsyncFuncOptions<{}> {
}
/**
* [🔗 获取服务器上的会话](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getServerSession__anchor)
* - [[NIM.getServerSession]]
*/
export interface NIMGetServerSessionOpts<T extends NIMServerSession = NIMServerSession> extends NIMAsyncFuncOptions<{}, NIMServerSession> {
/** 会话场景 */
scene: NIMSceneType;
/** 对方账号或群ID */
to: string;
}
/**
* [🔗 获取服务器会话列表](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#getServerSessions__anchor)
* - [[NIM.getServerSessions]]
* - 与漫游消息构成的会话列表不同,该列表记录的会话数量更多,超过了漫游列表100条的限制,但列表中的会话没有未读数
*/
export interface NIMGetServerSessionsOpts<T extends NIMServerSession = NIMServerSession> extends NIMAsyncFuncOptions<{}, { sessions: T[] }> {
/**
* 最小的时间戳。0表示之前从未请求过。如果之前拉取过会话,可以填写上次的时间戳,拉取自上次之后更新的会话
* @default 0
*/
minTimestamp?: number;
/**
* 最大的时间戳。默认是当前时间,表示拉取最新的会话。拉取第一页之后的会话时,填写上一页最后一条会话的更新时间
*/
maxTimestamp?: number;
/**
* 是否需要lastMsg
* @default true
*/
needLastMsg?: boolean;
/**
* 返回的最大条数,最大100,剩余的可分页获取
* @default 100
*/
limit?: number;
}
/**
* [🔗 更新服务器上某个会话的扩展字段](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#updateServerSession__anchor)
* - [[NIM.updateServerSession]]
*/
export interface NIMUpdateServerSessionOpts extends NIMAsyncFuncOptions<{}> {
/** 会话场景 */
scene: NIMSceneType;
/** 对方账号或群ID */
to: string;
/** 要更新的扩展字段 */
extra: string;
}
/**
* [🔗 删除服务器上会话列表中的一些会话](https://dev.yunxin.163.com/docs/interface/即时通讯Web端/NIMSDK-Web/NIM.html#deleteServerSessions__anchor)
* - [[NIM.deleteServerSessions]]
* - 删除后不可恢复,其他端也不能再拉取到,直至会话重新被产生
* - 删除漫游消息产生的会话请使用删除会话或批量删除会话
*/