1.0.7-alpha • Published 4 years ago

thunbu-im-sdk v1.0.7-alpha

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

Thunbu IM JSSdk 文档

快速开始

闪布IM JSSDK (Javascript SDK)可以使用在PC/移动网页端应用,也可以使用在Electron、RN、小程序等跨平台应用中,提供全面而完善的即时通讯开发能力,使开发人员通过简单快速的对接集成即时通讯的功能。

1、接入sdk

2、初始化SDK

3、登入

4、消息收发

5、业务相关、历史消息等

6、登出

集成方式

标签引入

<script src="https://flashchart-oss.oss-cn-hangzhou.aliyuncs.com/web-assets/js/shanliao-sdk/0.0.3/thunbuim-web-sdk.js"></script>

这样的话可以使用全局对象 window.SIM 获取sdk的引用。

npm 下载

使用

npm install thunbu-im-sdk --save

yarn add thunbu-im-sdk

从远程仓库上下载SDK

使用从远程仓库下载的SDK将附带有Typescript支持,使用标签引入或者文件引入的,也可以移步闪布开发者平台 下载.d.ts文件以获取Typescript支持

Demo 支持

闪布开发者平台站点上,包含现有SDK的使用实例

实例源代码

浏览器兼容性

PC浏览器ChromeFirefoxSafariEdgeOperaInternet Explorer
最低支持Yes7Yes12Yes10
移动端浏览器WebView AndroidChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung Internet
最低支持YesYes7?YesYes

因为在某些浏览器内单个方法版本另有差异,这样就导致即使在主流浏览器的低版本中,也有可能出现单个websocket不支持从而出错,详情参见MDN Websocket,当浏览器不兼容时

SIM.init(config, onSuccess, onFail);
// 或者
new SIM({});

会返回一个错误SCOKET_ENOTSUP(-1000)

小程序接入

小程序相关接入方式需联系开发人员进行沟通集成

初始化

初始化SDK

在所有事情开始之前,必须要先将SIM对象初始化,告诉SIM相关配置是什么,如果是web端,apiBaseUrl 如果传全路径可能会报跨域的问题,这个时候也可以传代理路径,不需要传全路径也可以正常工作,会将接口请求到当前域下的代理路径

从 npm 下载
import SIM from 'thunbu-im-sdk';

const SIMInstance = new SIM({
    serverip: 'ws://localhost:3000/test', // websocket 地址
    apiBaseUrl: 'http://localhost:9000/', // IM http 业务接口访问地址
    debug: false // 是否打开控制台
});
标签引入模式
const SIMInstance = new window.SIM({
    serverip: 'ws://localhost:3000/test', // websocket 地址
    apiBaseUrl: 'http://localhost:9000/', // IM http 业务接口访问地址
    debug: false // 是否打开控制台
});

在初始化成功后,会执行相应的回调方法,若是失败,则会在失败的回调中告知错误原因。

详见错误码列表

监听SIM方法

在初始化完成之后,可以监听由SIM提供的事件

从 npm 下载
    SIMInstance.addEventListener('msg', function (msg) {
    console.log('notice: ', msg); // 接收到新消息
});
SIMInstance.addEventListener('notice', function (res) {
    console.log('notice: ', res); // 接收到通知消息
});
SIMInstance.addEventListener('msgChange', function (res) {
    console.log('msgChange: ', res); // 消息变化通知
});
SIMInstance.addEventListener('connectChange', function (status) {
    console.log('connectChange: ', status); // 链接状态变更
});
标签引入模式
    window.SIM.addEventListener('msg', function (msg) {
    console.log('notice: ', msg); // 接收到新消息
});
window.SIM.addEventListener('notice', function (res) {
    console.log('notice: ', res); // 接收到通知消息
});
window.SIM.addEventListener('msgChange', function (res) {
    console.log('msgChange: ', res); // 消息变化通知
});
window.SIM.addEventListener('connectChange', function (status) {
    console.log('connectChange: ', status); // 链接状态变更
});

登录

登入

在初始化完成之后,开发人员需要操作SIM来告知SDK需要登录到IM服务器了,在通过相关服务(可能是私有化部署的本地后台服务,也可能是闪布服务,具体服务地址视后台地址决定)鉴权后,就可以开始登录IM服务器了~

SIMInstance.login({
    userId: "userId", // 用户ID
    userSig: "userSig", // 用户凭证
    appId: "appId", // 应用ID
    terminal: "terminal", // 终端类型,0为mobile,1为pc或web端
    appversion: "appversion", // 应用版本号
}).then(() => {
    console.log('login success!');
}).catch((err) => {
    console.log('login error! ', err);
});

登录成功之后,会执行相应的回调方法,若是登录失败,则会在失败的回调中告知原因

详见错误码列表

登出

退出登录功能

SIMInstance.logout().then(() => {
    console.log('logout success!');
}).catch((err) => {
    console.log('logout error! ', err);
});

我们来简单的发个消息

我们使用SIM提供的sendMsg方法来完成给小伙伴发消息~

SIMInstance.sendMsg({
    type: 0, // 这里我们定义的 0 就代表是文本消息
    message: { // 消息体内容
        text: 'hello world!' // 文本消息
    },
    receiver: "9527", // 将消息发送给TA,消息的接收者
    securityType: 0, // 安全类型 默认是0
    cross: 0, // 是否跨域
    sender: "9528", // 发送者的ID,你发送的就是你自己咯
    chatType: 0, // 你和Ta的会话类型,单聊为0, 群聊为1
}).then((msgId) => {
    console.log('sendMsg success!', msgId);
}).catch((err) => {
    console.log('sendMsg error! ', err);
});

发送消息后,如果另一端已经处于登录状态并且已经监听了SIM提供的几个事件的话,则会打印出相应的消息体,就已经完成了最基本的消息收发啦🎇

恭喜您!在经过简单的配置之后,终于可以开始发送/接收消息了~ 下面, 我们就可以开始扩展应用的更多功能了!

注意⚠️

我们在后续版本将基于npm进行版本管理,若是需要标签引入的源代码,则可联系客服或者对接人员提供

因为标签引入的模式不利于长期维护以及类型支持,并且我们的文档也是基于npm发布版本的内容进行讲解,包含JavaScript的新特性,所以推荐工程项目内都使用npm下载


基础方法与事件交互

介绍SIM提供的基础方法,包含登入登出、消息发送、事件监听、工具方法等

基础方法

SIM初始化

初始化SIM,在登录之前

类型定义
type SIMInitParams = {
    apiBaseUrl: boolean,
    serverip: boolean,
    debug?: boolean
}
Demo 例子🌰
const SIMInstance = new SIM({
    apiBaseUrl: '/base-api',
    serverip: 'wss://ws.test.com'
}).then(() => {
    console.log('SIM init Success');
}).catch((err) => {
    console.error('SIM init Error:', err);
})
方法参数
参数类型说明
paramsSIMInitParams初始化SIM的参数
SIMInitParams 对象类型
参数类型说明
apiBaseUrlstringSIM业务接口调用路径
serveripstringwebSocket 连接地址
?debugBoolean可选参数 是否开启调试模式,如果开启,则控制台会打印SIM的日志,反之不会打印

登录SIM: login

使用websocket登录至IM服务器

类型定义
type SIMLoginParams = {
    appId: string,
    userId: string,
    userSig: string,
}

type EmptyFun = (...arg: any) => void;

type login = (parms: SIMLoginParams) => Promise<string>
Demo 例子🌰
SIMInstance.login({
    appId: '1',
    userId: '9527',
    userSig: 'wo-shi-yi-dui-zi-fu-chuan'
}).then(() => {
    console.log('SIM login Success');
}).catch((err) => {
    console.error('SIM login Error:', err);
})
方法参数
参数类型说明
paramsSIMLoginParams登录SIM的参数
SIMLoginParams-对象类型
参数类型说明
appIdstring应用ID
userIdstring登录的用户Id
userSigstring登录的用户userSig

登出: logout

用户登出 SIM

类型定义
type EmptyFun = (...arg: any) => void;

type logout = (onSuccess?: EmptyFun, onFail?: EmptyFun) => Promise<void>;
Demo 例子🌰
SIMInstance.login().then(() => {
    console.log('SIM logout Success');
}).catch((err) => {
    console.error('SIM logout Error:', err);
})
返回值
Promise<void>
方法参数


检查链接情况: testOnLine

检查websocket与服务器链接状态, 该函数并没有返回值,如果检测到连接终端,则会通过事件通知

类型定义
type testOnLine = (delay: number = 300) => void;
Demo 例子🌰
SIMInstance.testOnLine();
方法参数
参数类型说明
?delaynumber可选参数 退出登录成功的回调

事件交互

SIM 的变更事件都会通过事件机制反馈给开发者

绑定事件: addEventListener

事件名参数描述
"msg"NormalMessageItem (不同的消息类型的消息包体会有所不同)接收到新消息时触发的事件
"repetitionMsg"any消息重复时触发的事件
"notice"NoticeMessageItem接收到新通知消息时触发的事件
"msgChange"NormalMessageItem消息变更时触发的事件,比如:已读、撤回、删除、标记、取消标记等
"connectChange"anyIM连接状态变更时触发的事件
Demo 例子🌰
SIMInstance.addEventListener('msg', () => {
    console.log('on message:', msg);
});

SIMInstance.addEventListener('notice', (notice) => {
    console.log('on notice:', notice);
});

解绑事件: removeEventListener

可以解绑的事件和可以绑定的事件名称可取值是一样的

类型定义
type removeEventListener = (eventName?: string, callback?: AnyFuncion) => void;
Demo 例子🌰
SIMInstance.removeEventListener('msg', () => {
    console.log('on message:', msg);
});

注意⚠️,如果不传 eventName 或者 eventName为空字符串,SIM将会认为程序需要将所有的监听事件都清除掉,所以务必保证知晓参数完整的必要性


utils - 工具集

SIM中,我们提供了一些简易的工具集以供开发人员使用

获取uuid: getGuid

通过获取n位随机字符串生成的唯一ID

类型定义
getGuid: (length?: number) => string;
Demo
SIMInstance.utils.getGuid(4);
返回参数
参数类型说明
uuidstring唯一ID

获取图片类型: getImgFormat

通过获取到的文件路径来确定图片类型(主要是根据文件名的后缀)

返回0|1|255 对应不同的图片类型

类型定义
getImgFormat: (filePath: string) => 0 | 1 | 255;
Demo 例子🌰
SIMInstance.utils.getImgFormat("C:\test.png"); // return: 1
返回参数
参数类型说明
fileType012550-jpg 1-png 255-unknow

获取文件类型: getFileFormat

通过获取到的问年间路径来确定文件类型(主要根据文件类型)

返回对应的文件类型

类型定义
getFileFormat: (filePath: string) => 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 255;
Demo 例子🌰
SIMInstance.utils.getImgFormat("C:\test.png"); // return: 3
参数类型说明
filePathstring文件路径,包含文件名的路径
返回值
类型说明
0|1|2|3|4|5|6|7|8|9|10|11|12|2550: txt 文本文件,匹配txt 1: word文件,匹配doc&#124;docx&#124;docm&#124;dot&#124;dotx&#124;wps 2: Excel文件,匹配xls&#124;xlsx&#124;xlsm&#124;xlt&#124;csv 3: 图片文件,匹配jpg&#124;jpeg&#124;jp2&#124;png&#124;svg&#124;bmp&#124;gif&#124;iff&#124;pcx&#124;pixar&#124;pxr&#124;tiff&#124;cal 4: pdf 文件,匹配pdf 5: ppt 文件,匹配ppt&#124;pptx&#124;pps&#124;ppsm 6: 压缩文件,匹配rar&#124;ace&#124;ari&#124;arc&#124;ar&#124;arj&#124;bz&#124;bza&#124;bz2&#124;car&#124;dar&#124;gca&#124;gz&#124;jar&#124;taz&#124;tar&#124;exe&#124;zip&#124;7z&#124;zz 7: html文件,匹配html&#124;htm 8: mp4文件,匹配mp4 9: mp3文件,匹配mp3 10: 思维导图文件,匹配mmap&#124;xmind&#124;mm 11: Ai文件,匹配ai&#124;eps 12: psd 文件,匹配psd 255: 未知文件

IM 统一类型定义

Socket状态码

enum IM_Status {
    /** 成功:200 */
    SUCCEED = 200,
    /** 参数正确:0 */
    ARGS_CORRECT = 0,
    /** 参数错误:-1 */
    ARGS_ERROR = -1,
    /** 未知错误:-99 */
    ERROR_UNKNOWN = -99,
    /** 网络连接中断:-100 */
    NETWORK_OFFLINE = -100,
    /** 请求超时:-101 */
    REQUEST_TIMEOUT = -101,
    /** 不支持h5:-1000 */
    SCOKET_ENOTSUP = -1000,
    /** 连接超时:-1001 */
    SCOKET_TIMEOUT = -1001,
    /** 已连接:-1002 */
    SCOKET_CONNECT = -1002,
    /** 连接中:-1003 */
    SCOKET_CONNECTING = -1003,
    /** 未连接:-1004 */
    SCOKET_UNCONNECT = -1004,
    /** 连接失败:-1005 */
    SCOKET_CONNECT_ERROR = -1005,
    /** 并发太高:-1006 */
    SCOKET_COUNT_ERROR = -1006,
    /** 登陆中:-1100 */
    LOGIN_LOGINING = -1100,
    /** 重复登陆:-1101 */
    LOGIN_REPEAT = -1101,
    /** 未登陆:-1102 */
    LOGIN_NOTLOGIN = -1102
}

IM command 枚举

enum IMCommandEnum {
    CMD_HB = 0,
    /** 命令-登陆:1 */
    CMD_LOGIN = 1,
    /** 命令-登出:2 */
    CMD_LOGOUT = 2,
    /** 命令-上线通知:3 */
    CMD_CONNECT_ONLINE_NOTICE = 3,
    /** 命令-上传终端设备信息:7 */
    CMD_UPLOAD_TERMINAL = 7,
    /** 命令-下线通知:8 */
    CMD_CONNECT_OFFLINE_NOTICE = 8,
    /** 命令-消息:20 */
    CMD_MSG = 20,
    /** 命令-消息-服务端回执:21 */
    CMD_MSG_S_RES = 21,
    /** 命令-消息-客户端回执:22 */
    CMD_MSG_C_RES = 22,
    /** 命令-消息-已读:23 */
    CMD_MSG_READ = 23,
    /** 命令-消息-撤回:24 */
    CMD_MSG_REVOCATION = 24,
    /** 命令-消息-用户删除:25 */
    CMD_MSG_DELETE = 25,
    /** 命令-消息-管理员删除:26 */
    CMD_MSG_ADMIN_DELETE = 26,
    /** 命令-消息-标记-增加:27 */
    CMD_MSG_ADD_TAG = 27,
    /** 命令-消息-标记-删除:28 */
    CMD_MSG_DEL_TAG = 28,
    /** 命令-消息-音视频:29 */
    CMD_MSG_AV = 29,
    /** 命令-离线消息-查询:30 */
    CMD_OFFLINE_MSG_INQUIRE = 30,
    /** 命令-离线消息-回执:31 */
    CMD_OFFLINE_MSG_RECEIPT = 31,
    /** 命令-消息-回复数量变更:33 */
    CMD_MSG_REPLYCOUNT_CHANGE = 33,
    /** 已读通知(服务端发送给消息发送者)= 34 **/
    CMD_MSG_READ_NOTICE = 34,
    /** 主动拉取已读通知(客户端主动拉取已读通知)= 35 **/
    CMD_MSG_GETREAD_NOTICE = 35,
    /** 命令-聊天室-获取列表:50 */
    CMD_CHAT_LIST_GIT = 50,
    /** 命令-聊天室-创建通知:51 */
    CMD_CHAT_CREATE_NOTICE = 51,
    /** 命令-聊天室-免打扰设置:52 */
    CMD_CHAT_DISTURB_CHANGE_SET = 52,
    /** 命令-聊天室-免打扰变更通知:53 */
    CMD_CHAT_DISTURB_CHANGE_NOTICE = 53,
    /** 命令-聊天室-会话消息计数重置:54 */
    CMD_CHAT_MSG_COUNT_SET = 54,
    /** 命令-聊天室-会话消息计数重置通知:55 */
    CMD_CHAT_MSG_COUNT_NOTICE = 55,
    /** 命令-聊天室-获取置顶列表:56 */
    CMD_CHAT_TOP_LIST_GIT = 56,
    /** 命令-聊天室-会话置顶设置:57 */
    CMD_CHAT_TOP_SET = 57,
    /** 命令-聊天室-置顶变更通知:58 */
    CMD_CHAT_TOP_CHANGE_NOTICE = 58,
    /** 命令-聊天室-设置会话不可见通知:59 */
    CMD_CHAT_DELETE_NOTICE = 59,
    /** 命令-聊天室-名称变更:60 */
    CMD_CHAT_NAME_SET = 60,
    /** 命令-聊天室-名称变更通知:61 */
    CMD_CHAT_NAME_CHANGE_NOTICE = 61,
    /** 命令-聊天室-彻底删除通知:62 */
    CMD_CHAT_THOROUGH_DELETE_NOTICE = 62,
    /** 命令-自定义通知:99 */
    CMD_CUSTOOM_NOTICE = 99,
    /** 命令-用户相关-账户信息修改:100 */
    CMD_USER_DETAILS_SET = 100,
    /** 命令-用户相关-账户信息修改通知:101 */
    CMD_USER_DETAILS_CHANGE_NOTICE = 101,
    /** 命令-好友相关-好友申请通知:108 */
    CMD_FRIEND_APPLY_NOTICE = 108,
    /** 命令-好友相关-好友添加成功通知:109 */
    CMD_FRIEND_APPLY_ADD_NOTICE = 109,
    /** 命令-好友相关-好友申请答复通知:110 */
    CMD_FRIEND_APPLY_RESULT_NOTICE = 110,
    /** 命令-好友相关-删除好友:111 */
    CMD_FRIEND_DELETE = 111,
    /** 命令-好友相关-删除好友通知:112 */
    CMD_FRIEND_DELETE_NOTICE = 112,
    /** 命令-好友相关-好友备注修改通知:113 */
    CMD_FRIEND_REMARK_CHANGE_NOTICE = 113,
    /** 命令-好友相关-删除所有好友通知:116 */
    CMD_FRIEND_DELETE_ALL_NOTICE = 116
}

IM 消息体类型

enum MsgTypeEnum {
    Msg_Text = 0,
    Msg_Pic = 1,
    Msg_Audio = 2,
    Msg_Video = 3,
    Msg_File = 4,
    Msg_Read = 5,
    Msg_Withdraw = 6,
    Msg_Delete = 7,
    Msg_MergeForward = 8,
    Msg_GroupVVC = 9,
    Msg_SingleVVC = 10,
    Msg_CustomEmoji = 11,
    Msg_Extra = 10000,
    Msg_Announcement = 20007
}

IM 消息处理

与IM交互,收发、处理IM消息

发送消息:sendMsg

发送即时消息的方法,基本类型以及自定义类型都已经有定义好消息格式

格式详见全局类型定义(#IM 消息体类型)

类型定义

type sendMsg = <T extends SendNormalMsgTypeEnum>(params: SendMsgItem<T>) => Promise<string>

Demo 例子🌰

SIMInstance.sendMsg({
    message: {
        text: 'hello world~',
    },
    receiver: '110',
    securityType: 0,
    chatType: 0,
    cross: 0,
    type: 0,
}).then((messageId) => {
    console.log('send message success! message id is: ', messageId);
}).catch((err) => {
    console.error('send message Error! err:', err);
})

方法参数

参数类型说明
paramsSendMsgItem登录SIM的参数

SendMsgItem-对象类型

该对象有泛型参数

interface SendMsgItem<T extends SendNormalMsgTypeEnum> {
		receiver: string,
		message: SendMsgContentType<T>,
		securityType: 0|1,
		chatType: ChatTypeEnum,
		cross: 0|1,
		type: T,
		domain?: SendMsgDomainType,
		time?: number,
		groupType?: 0|1|2,
		offlinePush?: boolean,
		offlinePushInfo?: string,
	}
对象成员
参数类型说明
receiverstring接收者
messageSendMsgContentType是根据消息类型来的,不同的消息类型message字段的值会不一样
securityType0|1安全类型,0-普通,1-密聊
chatTypeChatTypeEnum会话类型
cross0|1是否跨域
typeSendNormalMsgTypeEnum消息类型
?domainSendMsgDomainType消息扩展字段
?timenumber发送时间
?groupType0|1|2群类型,可选值0:私密群,1:公开群,2:讨论组
?offlinePushboolean是否有离线推送
?offlinePushInfostring离线推送内容

SendMsgContentType-对象类型

通过传入的泛型来确认返回的类型,泛型的取值范围是:SendNormalMsgTypeEnum

export type SendMsgContentTypes = {
    [SendNormalMsgTypeEnum.Msg_Text]: SendTextMsgContentType,
    [SendNormalMsgTypeEnum.Msg_Pic]: SendPicMsgContentType,
    [SendNormalMsgTypeEnum.Msg_Audio]: SendAudioMsgContentType,
    [SendNormalMsgTypeEnum.Msg_Video]: SendVideoMsgContentType,
    [SendNormalMsgTypeEnum.Msg_File]: SendFileMsgContentType,
    [SendNormalMsgTypeEnum.Msg_MergeForward]: SendMergeForwardContentType,
    [SendNormalMsgTypeEnum.Msg_CustomEmoji]: SendCustomEmojiContentType,
    [SendNormalMsgTypeEnum.Msg_Extra]: SendExtraMsgContentType,
}
type SendMsgContentType<T extends SendNormalMsgTypeEnum> = SendMsgContentTypes[T];
对象成员
参数类型说明
Msg_TextSendTextMsgContentType文本消息包体内容
Msg_PicSendPicMsgContentType图片消息包体内容
Msg_AudioSendAudioMsgContentType语音消息包体内容
Msg_VideoSendVideoMsgContentType视频消息包体内容
Msg_FileSendFileMsgContentType文件消息包体内容
Msg_MergeForwardSendMergeForwardContentType合并转发消息包体内容
Msg_CustomEmojiSendCustomEmojiContentType自定义表情消息包体内容
Msg_ExtraSendExtraMsgContentType扩展消息包体内容

SendNormalMsgTypeEnum-对象类型

/** 发送消息时声明的类型 - 以下类型可以发送 */
export enum SendNormalMsgTypeEnum {
    Msg_Text = 0, //: '文本',
    Msg_Pic = 1, //: '图片',
    Msg_Audio = 2, //: '语音',
    Msg_Video = 3, //: '视频',
    Msg_File = 4, //: '文件',
    Msg_MergeForward = 8, //: '合并转发',
    Msg_CustomEmoji = 11, //: '自定义表情类型',
    Msg_Extra = 10000, //: '扩展类消息',
}
对象成员
参数类型说明
Msg_Text0文本消息包体内容
Msg_Pic1图片消息包体内容
Msg_Audio2语音消息包体内容
Msg_Video3视频消息包体内容
Msg_File4文件消息包体内容
Msg_Withdraw6撤回消息包体内容
Msg_MergeForward8合并转发消息包体内容
Msg_CustomEmoji11自定义表情消息包体内容
Msg_Extra10000扩展消息包体内容

ChatTypeEnum-枚举类型

enum ChatTypeEnum {
    SingleChat,
    GroupChat,
    SubscribeChat,
    SubscribeBoxChat = 10,
}
对象成员
参数类型说明
SingleChat0单聊
GroupChat1群聊
SubscribeChat2订阅号
SubscribeBoxChat10订阅号盒子

SendTextMsgContentType-对象类型

发送文本消息体的内容

export interface SendTextMsgContentType {
    text: string,
    /** @ 的人员列表 */
    members?: string[]
}
对象成员
参数类型说明
textstring文本内容
?membersstring[]@的人

SendPicMsgContentType-对象类型

发送图片消息体的内容

export interface SendPicMsgContentType {
    /** 0-JPG,1-PNG,225-未知类型 */
    format: 0 | 1 | 255,
    imageList: {
        /** 0-原图  1-缩略大图  2-缩略小图 */
        type: 0 | 1 | 2,
        url: string,
        size: number,
        width: number,
        height: number
    }[]
}
对象成员
参数类型说明
format0|1|2550-JPG,1-PNG,225-未知类型
imageListobject[]图片信息
imageList0.type0|1|20-原图 1-缩略大图 2-缩略小图
imageList0.urlstring图片地址
imageList0.sizenumber图片大小
imageList0.widthnumber图片宽度
imageList0.heightnumber图片高度

SendAudioMsgContentType-对象类型

发送音频文件消息体的内容

export interface SendAudioMsgContentType {
    size: number,
    /** 类型 */
    format: number,
    /** 时长 - 秒 */
    duration: number,
    /** 下载地址 */
    downUrl: string
}
对象成员
参数类型说明
format0|1|2550-JPG,1-PNG,225-未知类型
imageListobject[]图片信息
imageList0.type0|1|20-原图 1-缩略大图 2-缩略小图
imageList0.urlstring图片地址
imageList0.sizenumber图片大小
imageList0.widthnumber图片宽度
imageList0.heightnumber图片高度

SendVideoMsgContentType-对象类型

发送视频文件消息体的内容

    export interface SendVideoMsgContentType {
    /** 视频地址 */
    videoUrl: string,
    /** 视频大小 - b */
    videoSize: number,
    /** 视频时长 - 毫秒 */
    duration: number,
    /** 0-AVI,1-RM,2-RMVB,3-WMV,4-MP4,225-未知类型 */
    videoFormat: 0 | 1 | 2 | 3 | 4 | 255,
    /** 封面地址 */
    coverUrl: string,
    /** 封面宽度 - px */
    coverWidth: number,
    /** 封面高度 - px */
    coverHeight: number,
    /** 封面大小 - kb */
    coverSize: number,
    /** 封面类型,0-JPG,1-PNG,225-未知类型 */
    coverFormat: 0 | 1 | 255,
}
对象成员
参数类型说明
videoUrlstring视频地址
videoSizenumber视频大小 - b
durationnumber视频时长 - 毫秒
videoFormat0|1|2|3|4|2550-AVI,1-RM,2-RMVB,3-WMV,4-MP4,225-未知类型
coverUrlstring封面地址
coverWidthnumber封面宽度
coverHeightnumber封面高度
coverSizenumber封面大小
coverFormatnumber封面类型

SendFileMsgContentType-对象类型

发送文件消息体的内容

export interface SendFileMsgContentType {
    /** 文件类型 */
    format: FileFormatEnum,
    /** 文件大小 - b */
    size: number,
    /** 下载地址 */
    downUrl: string,
    /** 文件名称 */
    filename: string,
}
对象成员
参数类型说明
formatFileFormatEnum文件类型 - 参考 utils.getFileFormat 的返回值
sizenumber文件大小 - b
downUrlstring下载地址
filenamestring文件名称

SendMergeForwardContentType-对象类型

发送合并转发消息体的内容

export interface SendMergeForwardContentType {
    title: string,
    content: string,
    ids: string[],
    chatType: ChatTypeEnum,
}
对象成员
参数类型说明
titleFileFormatEnum文件类型 - 参考 utils.getFileFormat 的返回值
contentnumber文件大小 - b
idsstring下载地址
chatTypestring文件名称

SendCustomEmojiContentType-对象类型

发送自定义表情消息体的内容

export interface SendCustomEmojiContentType {
    imgMd: string,
    imgUrl: string,
    size: number,
    width: number,
    height: number
}
对象成员
参数类型说明
imgMdstring图片md5值
imgUrlstring图片地址
sizenumber表情大小
widthnumber宽度
heightnumber高度

SendExtraMsgContentType-对象类型

发送自定义消息体的内容

export interface SendExtraMsgContentType {
    data: string // 自行解析,各端约定好
}

已读消息:readMsg

将消息设为已读

类型定义

type readMsg = (params: ReadMsgParamsType) => Promise<string>

Demo 例子🌰

SIMInstance.readMsg({
    id: 'messageID~~~~~~',
    receiver: '110',
    securityType: 0,
    chatType: 0,
    cross: 0,
}).then((messageId) => {
    console.log('readMsg message success! message id is: ', messageId);
}).catch((err) => {
    console.error('readMsg message Error! err:', err);
})

方法参数

参数类型说明
paramsReadMsgParamsType已读消息的参数

ReadMsgParamsType-对象类型

发送已读消息的参数

export interface ReadMsgParamsType {
    id: string,
    chatType: ChatTypeEnum,
    securityType: 0 | 1,
    cross: 0 | 1,
    receiver: string,
    time?: number
}
对象成员
参数类型说明
idstring操作的消息ID
chatTypeChatTypeEnum会话类型
securityType0|1密聊类型
cross0|1是否跨域
receiverstring接收者
?timenumber时间

撤回消息: revocationMsg

将消息撤回

类型定义

type revocationMsg = (params: RevocationMsgParamsType)
:
Promise<string>

Demo 例子🌰

SIMInstance.revocationMsg({
    id: 'messageID~~~~~~'
    receiver: '110',
    securityType: 0,
    chatType: 0,
    cross: 0,
}).then((messageId) => {
    console.log('revocationMsg message success! message id is: ', messageId);
}).catch((err) => {
    console.error('revocationMsg message Error! err:', err);
})

方法参数

参数类型说明
paramsRevocationMsgParamsType撤回消息的参数

RevocationMsgParamsType-对象类型

发送撤回消息的参数

export interface RevocationMsgParamsType {
    id: string,
    chatType: ChatTypeEnum,
    securityType: 0 | 1,
    cross: 0 | 1,
    receiver: string,
    time?: number
}
对象成员
参数类型说明
idstring撤回的消息ID
chatTypeChatTypeEnum会话类型
securityType0|1密聊类型
cross0|1是否跨域
receiverstring接收者
?timenumber时间

获取消息已读状态:fetchMsgReadState

获取消息的已读状态

类型定义

type fetchMsgReadState = (params: FetchMsgReadParamsType)
:
Promise<string>

Demo 例子🌰

SIMInstance.fetchMsgReadState({
    id: 'messageID~~~~~~'
    receiver: '110',
    securityType: 0,
    chatType: 0,
    cross: 0,
    msgType: 0,
}).then((messageId) => {
    console.log('fetchMsgReadState message success! message id is: ', messageId);
}).catch((err) => {
    console.error('fetchMsgReadState message Error! err:', err);
})

方法参数

参数类型说明
paramsFetchMsgReadParamsType获取已读状态的参数

FetchMsgReadParamsType-对象类型

获取消息的已读状态的参数

    export interface FetchMsgReadParamsType {
    id: string,
    chatType: ChatTypeEnum,
    securityType: 0 | 1,
    cross: 0 | 1,
    receiver: string,
    msgType: MsgTypeEnum,
    time?: number
}
对象成员
参数类型说明
idstring撤回的消息ID
chatTypeChatTypeEnum会话类型
securityType0|1密聊类型
cross0|1是否跨域
receiverstring接收者
msgTypeMsgTypeEnum消息类型
?timenumber时间

删除消息:deleteMsg

删除消息

类型定义

type deleteMsg = (params: DeleteMsgParamsType)
:
Promise<string>

Demo 例子🌰

SIMInstance.deleteMsg({
    id: 'messageID~~~~~~'
    receiver: '110',
    securityType: 0,
    chatType: 0,
    cross: 0,
    msgType: 0,
    delType: 1,
}).then((messageId) => {
    console.log('deleteMsg message success! message id is: ', messageId);
}).catch((err) => {
    console.error('deleteMsg message Error! err:', err);
})

deleteMsg-方法参数

参数类型说明
paramsDeleteMsgParamsType删除消息的参数
DeleteMsgParamsType-对象类型

删除消息参数

    export interface FetchMsgReadParamsType {
    id: string,
    chatType: ChatTypeEnum,
    securityType: 0 | 1,
    cross: 0 | 1,
    receiver: string,
    msgType: MsgTypeEnum,
    time?: number,
    delType?: 0 | 1,
}
对象成员
参数类型说明
idstring删除的消息ID
chatTypeChatTypeEnum会话类型
securityType0|1密聊类型
cross0|1是否跨域
receiverstring接收者
msgTypeMsgTypeEnum消息类型
?timenumber时间
?delType0\1删除类型 0-删除自己的(只影响自己),1-删除所有人(影响所有人) 默认 0

获取离线消息:getOfflineMsg

获取离线消息-得到历史消息后会触发msg事件

类型定义

type getOfflineMsg = (params: GetOffLineMsgParamsType)
:
Promise<string>

Demo 例子🌰

SIMInstance.getOfflineMsg({
    queryType: 0
}).then((messageId) => {
    console.log('getOfflineMsg message success! message id is: ', messageId);
}).catch((err) => {
    console.error('getOfflineMsg message Error! err:', err);
})

getOfflineMsg-方法参数

参数类型说明
paramsGetOffLineMsgParamsType获取离线消息方法的参数
GetOffLineMsgParamsType-对象类型

获取离线消息方法参数

    export interface FetchMsgReadParamsType {
    lastMsgTime?: number,
    loginTime?: number,
    tId?: string,
    queryType: 0 | 1 | 2,
}
对象成员
参数类型说明
?lastMsgTimenumber上次同步时间
?loginTimenumber登陆时间
?tIdstring后台消息id,最开始一条id
queryType0|1|2查询类型,0单聊,1群聊,2指令

初始化会话消息统计数量:initMessageCount

初始化会话消息统计数量

类型定义

type initMessageCount = (params: SendInitMessageCountParams)
:
Promise<string>

Demo 例子🌰

SIMInstance.initMessageCount({
    chatId: '123123',
    chatType: 0,
    securityType: 0,
}).then((messageId) => {
    console.log('initMessageCount success! message id is: ', messageId);
}).catch((err) => {
    console.error('initMessageCount Error! err:', err);
})

方法参数

参数类型说明
paramsSendInitMessageCountParams初始化会话消息统计数量方法的参数
SendInitMessageCountParams-对象类型

初始化会话消息统计数量方法参数

    export interface SendInitMessageCountParams {
    chatId: string,
    chatType: ChatTypeEnum,
    securityType: 0 | 1,
    time?: number
}
对象成员
参数类型说明
chatIdstring会话ID
chatTypeChatTypeEnum会话类型
securityType0|1密聊类型
?timenumber发送时间

HTTP 业务相关接口

业务相关接口主要分为以下几个部分

分组说明
群组相关接口处理群聊相关业务
人员相关接口处理人员相关业务
会话相关接口处理会话相关业务
消息相关接口处理消息相关业务

群组相关接口

通过http接口来操作IM中的群组相关功能

获取所有群聊: getAllUserGroup

获取当前用户的所有群组

类型定义

getAllUserGroup: (params: GetAllUserGroupParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.getAllUserGroup().then(() => {
    console.log('getAllUserGroup success!');
}).catch((err) => {
    console.error('getAllUserGroup Error! err:', err);
})

方法参数

参数类型说明
paramsGetAllUserGroupParams获取当前用户的所有群组的参数
GetAllUserGroupParams-对象类型

获取当前用户的所有群组的参数

interface GetAllUserGroupParams {
    typeArr?: (1|3|4)[];
}
对象成员
参数类型说明
?typeArr(1|3|4)[]群组类型数组, 1内部群,3事件群(默认查询所有),4外部群)

返回值

Promise<DefaultResponse<GetAllUserGroupResItem[]>>
GetAllUserGroupResItem-对象类型
interface AllUserGroupItemTypes {
    "id": string,
    "name": string,
    "avatar": string,
    "ownerId": string,
    "maxCount": number,
    "isReview": 0|1,
    "groupType": GroupTypeEnum,
    "appId": string,
    "createTime": number,
    "defaultType": 0|1|2|3,
    "defaultAccounts": string,
    "num": number,
    "invitedToggle": 0|1,
    "atallToggle": 0|1
}
对象成员
参数类型说明
idstring群组Id
namestring群组名称
avatarstring群组头像
ownerIdstring群主ID
maxCountnumber人数上限
isReview0|1用户状态: 1需要审核,0不需要审核
groupTypeGroupTypeEnum群组类型 1内部群,3事件群,4外部群
appIdstring应用ID
createTimenumber建群时间
defaultType0|1|2|3群组的默认类型:0名字头像都是自定义, 1名字默认头像自定义, 2名字是自定义头像是默认, 3都是默认
defaultAccountsstring组成默认信息的人员id
numnumber群人数
invitedToggle0|1邀请开关
atallToggle0|1@all开关

修改群信息: modifyGroup

修改群信息

类型定义

modifyGroup: (params: ModifyGroupParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.modifyGroup({
    groupType: 1,
    groupId: '123123',
}).then(() => {
    console.log('getAllUserGroup success!');
}).catch((err) => {
    console.error('getAllUserGroup Error! err:', err);
})

方法参数

参数类型说明
paramsModifyGroupParams修改群信息的参数

ModifyGroupParams-对象类型

修改群信息的参数

interface ModifyGroupParams {
    groupType: GroupTypeEnum,
    groupId: string,
    groupName?: string,
    avatar?: string,
    isReview?: 0|1,
    notice?: string
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群组类型枚举
groupIdstring群组ID
?groupNamestring群组名称
?avatarstring群组头像
?isReview0|1是否需要审批 1需要审核,0不需要审核
?noticestring群通知

返回值

Promise<DefaultResponse>

@All功能设置: setGroupAtAllToggle

切换@All的设置

类型定义

setGroupAtAllToggle: (params: SetGroupAtAllToggleParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.setGroupAtAllToggle({
    groupType: 1,
    groupId: '123123',
    toggle: 1
}).then(() => {
    console.log('setGroupAtAllToggle success!');
}).catch((err) => {
    console.error('setGroupAtAllToggle Error! err:', err);
})

方法参数

参数类型说明
paramsSetGroupAtAllToggleParams切换@All的设置的参数
SetGroupAtAllToggleParams-对象类型

切换@All的设置的参数

interface SetGroupAtAllToggleParams {
		groupType: GroupTypeEnum,
		groupId: string,
		toggle: 0|1
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群组类型枚举
groupIdstring群组ID
toggle0|1@All的设置 是否开启@All

返回值

Promise<DefaultResponse>

邀请群成员权限设置: setGroupInvitedToggle

更改邀请群成员的设置

类型定义

setGroupInvitedToggle: (params: SetGroupInvitedToggleParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.setGroupInvitedToggle({
    groupType: 1,
    groupId: '123123',
    toggle: 1
}).then(() => {
    console.log('setGroupInvitedToggle success!');
}).catch((err) => {
    console.error('setGroupInvitedToggle Error! err:', err);
})

方法参数

参数类型说明
paramsSetGroupInvitedToggleParams更改邀请群成员的参数
SetGroupInvitedToggleParams-对象类型

更改邀请群成员的参数

interface SetGroupInvitedToggleParams {
		groupType: GroupTypeEnum,
		groupId: string,
		toggle: 0|1
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群组类型枚举
groupIdstring群组ID
toggle0|1是否允许邀请

返回值

Promise<DefaultResponse>

获取群的简要信息: getGroupIntro

获取群的简要信息

类型定义

getGroupIntro: (params: GetGroupIntroParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.getGroupIntro({
    groupType: 1,
    groupId: '123123'
}).then(() => {
    console.log('getGroupIntro success!');
}).catch((err) => {
    console.error('getGroupIntro Error! err:', err);
})

方法参数

参数类型说明
paramsGetGroupIntroParams获取群的简要信息的参数
GetGroupIntroParams-对象类型

获取群的简要信息的参数

interface GetGroupIntroParams {
    groupType: GroupTypeEnum,
    groupId: string,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群组类型枚举
groupIdstring群组ID

返回值

Promise<DefaultResponse<GetAllUserGroupResItem>>
参数类型说明
GetAllUserGroupResItemGetAllUserGroupResItem群组信息对象

获取群组的详细信息: getGroupDetail

获取群组的详细信息

类型定义

getGroupDetail: (params: GetGroupDetailParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.getGroupDetail({
    groupType: 1,
    groupId: '123123'
}).then(() => {
    console.log('getGroupDetail success!');
}).catch((err) => {
    console.error('getGroupDetail Error! err:', err);
})

方法参数

参数类型说明
paramsGetGroupDetailParams获取群组的详细信息的参数
GetGroupDetailParams-对象类型

获取群组的详细信息的参数

interface GetGroupDetailParams {
    groupType: GroupTypeEnum,
    groupId: string,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群组类型枚举
groupIdstring群组ID

返回值

Promise<DefaultResponse<GetGroupDetailRes>>
GetGroupDetailRes-对象类型
interface GetGroupDetailRes extends GetAllUserGroupResItem {
    groupMembers: GroupMemberItemType[],
    groupEventExplain?: GroupEventExplainType
}
对象成员

该对象继承了GroupMemberItemType对象,继承过来的属性将不再描述

参数类型说明
groupMembersGroupMemberItemType[]群组成员列表
?groupEventExplainGroupEventExplainType群公告信息

获取群组的详细信息 - 列表获取: getGroupDetailList

获取群组的详细信息 - 列表获取

类型定义

getGroupDetailList: (params: GetGroupListDetailParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.getGroupDetailList({
    groupType: 1,
    groupIds: ['123123', '22342342121']
}).then(() => {
    console.log('getGroupDetail success!');
}).catch((err) => {
    console.error('getGroupDetail Error! err:', err);
})

方法参数

参数类型说明
paramsGetGroupListDetailParams获取群组的详细信息 - 列表获取的参数
GetGroupDetailParams-对象类型

获取群组的详细信息 - 列表获取的参数

interface GetGroupDetailParams {
		groupType: GroupTypeEnum,
		groupIds: string[],
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群组类型枚举
groupIdsstring[]群组ID数组

搜索群组: searchGroups

通过群组名称和群组类型来搜索当前用户拥有的群组

类型定义

searchGroups: (params: SearchGroupsParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.searchGroups({
    groupName: 'hello'
}).then(() => {
    console.log('searchGroups success!');
}).catch((err) => {
    console.error('searchGroups Error! err:', err);
})

方法参数

参数类型说明
paramsSearchGroupsParams查询匹配条件的群组的参数
SearchGroupsParams-对象类型

查询匹配条件的群组的参数

interface SearchGroupsParams {
		groupName: string,
		typeJsonArray: (0|1|2|3)[],
}
对象成员
参数类型说明
groupNamestring查询条件-群组名称
?typeJsonArray(0|1|2|3)[]群组类型数组,0私密群,1公开群,2讨论组,3事件群(默认查询所有

邀请加入: inviteJoinGroup

邀请加入群聊

类型定义

inviteJoinGroup: (params: InviteGroupParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.inviteJoinGroup({
    groupType: '1',
    groupId: '123123123',
    userIds: ['9572', '9528'],
}).then(() => {
    console.log('inviteJoinGroup success!');
}).catch((err) => {
    console.error('inviteJoinGroup Error! err:', err);
})

方法参数

参数类型说明
paramsInviteGroupParams加入群组的参数
JoinGroupParams-对象类型

加入群组的参数

interface JoinGroupParams {
    groupType: GroupTypeEnum,
    groupId: string,
    userIds: string[]
}
对象成员
参数类型说明
groupIdstring要加入的群组ID
groupTypeGroupTypeEnum群聊类型
membersstring[]邀请人员

返回值

Promise<DefaultResponse>

转让群主: changeGroupOwner

转让群主

类型定义

changeGroupOwner: (params: ChangeOwnerParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.changeGroupOwner({
    groupType: 1,
    groupId: '123123',
    newOwnerId: '9528'
}).then(() => {
    console.log('changeGroupOwner success!');
}).catch((err) => {
    console.error('changeGroupOwner Error! err:', err);
});

方法参数

参数类型说明
paramsChangeOwnerParams加入群组的参数
ChangeOwnerParams-对象类型

加入群组的参数

interface ChangeOwnerParams {
		groupType: GroupTypeEnum,
		groupId: string,
		newOwnerId: string,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群聊类型
groupIdstring要加入的群组ID
newOwnerIdstring要变更为群主的人员ID

返回值

Promise<DefaultResponse>

获取群组管理员: getGroupManagers

获取群组管理员

类型定义

getGroupManagers: (params: GetGroupManagerParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.getGroupManagers({
    groupType: 1,
    groupId: '123123',
}).then(() => {
    console.log('getGroupManagers success!');
}).catch((err) => {
    console.error('getGroupManagers Error! err:', err);
});

方法参数

参数类型说明
paramsGetGroupManagerParams获取群组管理员的参数
GetGroupManagerParams-对象类型

获取群组管理员的参数

interface GetGroupManagerParams {
		groupType: GroupTypeEnum,
		groupId: string,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群聊类型
groupIdstring获取群组管理员的群组ID

返回值

Promise<DefaultResponse<GroupMemberItemType>>
参数类型说明
groupTypeGroupMemberItemType群聊类型

获取群组成员Id集合: getGroupMemberIds

获取群组成员Id集合

类型定义

getGroupMemberIds: (params: GetGroupMemberIdsParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.getGroupMemberIds({
    groupType: 1,
    groupId: '123123',
}).then(() => {
    console.log('getGroupMemberIds success!');
}).catch((err) => {
    console.error('getGroupMemberIds Error! err:', err);
});

方法参数

参数类型说明
paramsGetGroupMemberIdsParams获取群组成员Id集合的参数

GetGroupMemberIdsParams-对象类型

获取群组成员Id集合的参数

interface GetGroupMemberIdsParams {
		groupType: GroupTypeEnum,
		groupId: string,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群聊类型
groupIdstring获取群组成员Id集合的群组ID

返回值

Promise<DefaultResponse<string[]>>

获取群组成员集合: getGroupMemberList

获取群组成员集合

类型定义

getGroupMemberList: (params: GetGroupMemberListParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.getGroupMemberList({
    groupType: 1,
    groupId: '123123',
}).then(() => {
    console.log('getGroupMemberList success!');
}).catch((err) => {
    console.error('getGroupMemberList Error! err:', err);
});

方法参数

参数类型说明
paramsGetGroupMemberListParams获取群组成员集合的参数

GetGroupMemberListParams-对象类型

获取群组成员集合的参数

interface GetGroupMemberListParams {
		groupType: GroupTypeEnum,
		groupId: string,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群聊类型
groupIdstring获取群组成员集合的群组ID

返回值

Promise<DefaultResponse<GroupMemberItemType[]>>
参数类型说明
groupTypeGroupMemberItemType群聊类型

将人员移出群聊: deleteGroupMember

将人员移出群聊

类型定义

deleteGroupMember: (params: DeleteGroupMemberParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.deleteGroupMember({
    groupType: 1,
    groupId: '123123',
    userIds: ['9527', '9528']
}).then(() => {
    console.log('deleteGroupMember success!');
}).catch((err) => {
    console.error('deleteGroupMember Error! err:', err);
});

方法参数

参数类型说明
paramsDeleteGroupMemberParams将人员移出群聊的参数

DeleteGroupMemberParams-对象类型

将人员移出群聊的参数

interface DeleteGroupMemberParams {
		groupType: GroupTypes.GroupTypeEnum,
		groupId: string,
		userIds: string[]
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群聊类型
groupIdstring将人员移出群聊群组ID
userIdsstring[]需要移出的人员Id列表

返回值

Promise<DefaultResponse>

退出群组: quitGroup

当前用户操作 - 退出群组

类型定义

quitGroup: (params: QuitGroupParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.quitGroup({
    groupType: 1,
    groupId: '123123',
}).then(() => {
    console.log('quitGroup success!');
}).catch((err) => {
    console.error('quitGroup Error! err:', err);
});

方法参数

参数类型说明
paramsQuitGroupParams退出群组的参数

QuitGroupParams-对象类型

退出群组的参数

interface QuitGroupParams {
		groupType: GroupTypes.GroupTypeEnum,
		groupId: string,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群聊类型
groupIdstring退出群组的群组ID

返回值

Promise<DefaultResponse>

修改群成员角色: setGroupMemberRole

修改群成员角色

类型定义

setGroupMemberRole: (params: SetGroupMemberRoleParams) => Promise<any>

Demo 例子🌰

SIMInstance.Group.setGroupMemberRole({
    groupType: 1,
    groupId: '123123',
    managerIds: ['9527', '9528'],
    type: 1
}).then(() => {
    console.log('setGroupMemberRole success!');
}).catch((err) => {
    console.error('setGroupMemberRole Error! err:', err);
});

方法参数

参数类型说明
paramsSetGroupMemberRoleParams设置群成员角色的参数

SetGroupMemberRoleParams-对象类型

修改群成员角色的参数

interface SetGroupMemberRoleParams {
		groupType: GroupTypes.GroupTypeEnum,
		groupId: string,
		managerIds: string[],
		type: 1|2,
}
对象成员
参数类型说明
groupTypeGroupTypeEnum群聊类型
groupIdstring退出群组的群组ID
managerIdsstring[]需要操作的人员ID
type1|21设置管理员,2取消管理员

返回值

Promise<DefaultResponse>

群组模块通用接口类型定义

GroupTypeEnum-对象类型

群组类型枚举

export enum GroupTypeEnum {
    InnerGroup= 1,
    EventGroup = 3,
    OuterGroup = 4,
    OrgGroup = 5,
    MeetingGroup = 6
}
对象成员
参数类型说明
GroupTypeEnum1|3|4|5|6群组类型数组, 1内部群,3事件群,4外部群,5组织群,6会议群聊

GroupMemberItemType-对象类型

群成员信息

interface GroupMemberItemType {
		"appId": string,
		"groupId": string,
		"userId": string,
		"role": GroupUserRoleEnum,
		"nickname": string,
		"petName": string,
		"nicknamePy": string,
		"disturb": 0,
		"delFlag": 0,
		"createTime": number,
		"updateTime": number,
		"beInviteId"?: string,
		beOwnerTime?: string,
}
GroupMemberItemType-对象成员
参数类型说明
appIdnumber租户ID
groupIdstring群ID
userIdstring用户ID
roleGroupUserRoleEnum用户角色(0群主,1管理员,2普通用户)
userIdstring用户ID
nicknamestring群成员昵称
petNamestring用户昵称
nicknamePystring用户昵称拼音
disturb0|1免打扰(1表示消息免打扰)
delFlag0|1删除标识,0代表为删除,1代表已删除
createTimenumber创建时间(加入时间)
updateTimenumber修改时间
?beInviteIdstring本人被谁邀请进群的(非邀请的情况,本字段则可为空)
?beOwnerTimestring如是群的被转让人,本字段填的就是最近一次被转让时的时间

GroupEventExplainType-对象类型

群公告消息

interface GroupEventExplainType {
/** 建群人-account */
    "createBy": string,
    /** 建群人-name */
    "createName": string,
    /** 建群时间 */
    "createTime": number,
    /** 是否解散:0正常,1解散 */
    "delFlag": boolean,
    /** 附件地址JSON数组格式 */
    "fileInfo": string,
    /** 群组ID  */
    "groupId": string,
    /** 事件ID */
    "id": string,
    /** 图片地址JSON数组格式  */
    "imageInfo": string,
    /** 文字内容 */
    "text": string
}
GroupEventExplainType-对象成员
参数类型说明
createBystring建群人-account
createNamestring建群人-name
createTimestring建群时间
delFlag0|1用户角色是否解散:0正常,1解散
fileInfostring附件地址JSON数组格式
groupIdstring群组ID
idstring事件ID
imageInfostring图片地址JSON数组格式
textstring文字内容

DefaultResponse-对象类型

群组类型枚举

interface DefaultResponse<T = {}> {
    code: number,
    message: string,
    success: boolean,
    data: T
}
对象成员
参数类型说明
codenumber后端返回的状态码
messagestring后端返回的状态值
successboolean后端返回是否成功
dataT后端返回的内容,默认是空对象

人员相关接口

通过http接口来操作IM中的人员用户相关功能

批量获取用户账号信息: fetchMultiPersonalData

批量获取用户账号信息

类型定义

fetchMultiPersonalData: (params: FetchMultiPersonalDataParams) => Promise<any>

Demo 例子🌰

SIMInstance.User.fetchMultiPersonalData({
    accounts: ['9527', '9528'],
}).then(() => {
    console.log('fetchMultiPersonalData success!');
}).catch((err) => {
    console.error('fetchMultiPersonalData Error! err:', err);
});

方法参数

参数类型说明
paramsFetchMultiPersonalDataParams批量获取用户账号信息的参数
FetchMultiPersonalDataParams-对象类型

批量获取用户账号信息的参数

interface FetchMultiPersonalDataParams {
		accounts: string[]
}
对象成员
参数类型说明
accountsstring[]要获取人员的userId集合

返回值

export interface FetchMultiPersonalDataResItem {
    account: string
    avatar: string
    createTime: string
    definition: string
    disablePush: number
    nicknamePy: string
    petName: string
    userNickname: string
    userStatus: number
    userId: number
}
Promise<DefaultResponse<FetchMultiPersonalDataResItem>>
FetchMultiPersonalDataResItem-对象成员
参数类型说明
accountstring账号
avatarstring用户头像url地址
createTimestring账号创建时间
definitionstring自定义字段内容
disablePushnumber0正常,1禁用手机离线推送
nicknamePystring用户昵称拼音
petNamestring用户昵称
userNicknamestring用户姓名
userStatusnumber用户状态0正常,1禁用
userIdnumber用户id

会话相关接口

通过http接口来操作IM中的会话相关功能

设置会话: setChatSession

设置会话

类型定义

setChatSession: (params: SetChatSessionParams) => Promise<any>

Demo 例子🌰

SIMInstance.Chat.setChatSession({
    sessionId: '1234',
    securityType: 0,
    sessionType: 0,
    isTop: 1,
}).then((res) => {
    console.log('setChatSession success!', res);
}).catch((err) => {
    console.error('setChatSession Error! err:', err);
});

方法参数

参数类型说明
paramsSetChatSessionParams设置会话的参数
SetChatSessionParams-对象类型

设置会话的参数

interface SetChatSessionParams {
		sessionId: string,
		securityType: 0|1,
		sessionType: ChatTypeEnum,
		isTop?: 0|1,
		notDisturb?: 0|1
}
对象成员
参数类型说明
sessionIdstring会话ID
securityType0|1安全类型 0普通,1私聊
sessionTypeChatTypeEnum会话ID
?isTop0|1是否置顶 0否,1是
?notDisturb0|1是否免打扰 0否,1是

返回值

Promise<DefaultResponse>

获取会话详情信息: getChatInfo

获取会话详情信息

类型定义

getChatInfo: (params: SetChatSessionParams) => Promise<any>

Demo 例子🌰

SIMInstance.Chat.getChatInfo({
    sessionId: '123123',
    securityType: 0,
    sessionType: 0,
}).then((res) => {
    console.log('getChatInfo success!', res);
}).catch((err) => {
    console.error('getChatInfo Error! err:', err);
});

方法参数

参数类型说明
paramsGetChatInfoParams获取会话详情信息的参数
GetChatInfoParams-对象类型

获取会话详情信息的参数

interface GetChatInfoParams {
		sessionId: string,
		securityType: 0|1,
		sessionType: SIMTypes.ChatTypeEnum,
}
对象成员
参数类型说明
sessionIdstring会话ID
securityType0|1安全类型 0普通,1私聊
sessionTypeChatTypeEnum会话ID

返回值

	export interface GetChatInfoTypes {
    "id": string,
    "appId": string,
    "account": string,
    "sessionId": string,
    "sessionName": string,
    "avatar": string,
    "sessionType": SIMTypes.ChatTypeEnum,
    "groupType": GroupTypes.GroupTypeEnum,
    "toppingTime": string,
    "toppingTimeLong": string,
    "isTop": 0|1,
    "securityType": 0|1,
    "notDisturb": 0|1,
    "isShow": 0|1,
    "createTime": string,
    "updateTime": string,
    "lastMsg": IMReceiveTypes.DefaultMsg,
    "isAt": 0|1,
    "invalid": 0|1|2|3|10,
    "cross": 0|1,
    "sessionLevel": 0|1
}
Promise<DefaultResponse<GetChatInfoTypes>>
GetChatInfoTypes-对象成员
参数类型说明
idstringid
appIdstring应用id
accountstring账号
sessionIdstring聊天会话id(单聊为聊天对象用户id,群聊为群组id)
sessionNamestring聊天会话名称
avatarstring聊天会话头像路径
sessionTypeChatTypeEnum会话类型,0单聊,1群聊,2订阅号,10订阅号盒子
groupTypeGroupTypeEnum群组类型 0私密群,1公开群,2讨论组,3事件群
toppingTimestring置顶时间
toppingTimeLongstring置顶时间Long型
isTop0|1是否置顶
securityType0|1安全类型0普通,1私聊
notDisturb0|1是否免打扰:0否,1是
isShow0|1是否显示:0否,1是
createTimestring创建时间
updateTimestring修改时间
lastMsgDefaultMsg最后消息包
isAt0|1是否@标记:0否,1是
invalid0|1|2|3|10会话状态: 0正常,1解散群,2被踢出群,3单聊对方账号禁用, 10彻底删除,不可恢复
cross0|1域状态 0内域,1外域
sessionLevel0|1会话级别:0外层,1内层

获取所有会话: getAllChat

获取所有会话 - 有增量选项

类型定义

getAllChat: (params: GetAllChatParams) => Promise<any>

Demo 例子🌰

SIMInstance.Chat.getAllChat().then((res) => {
    console.log('getAllChat success!', res);
}).catch((err) => {
    console.error('getAllChat Error! err:', err);
});

方法参数

参数类型说明
paramsGetAllChatParams获取所有会话的参数
GetAllChatParams-对象类型

获取所有会话的参数

interface GetAllChatParams {
    sessionLevel?: 0|1,
    lastPullTime?: number
}
对象成员
参数类型说明
?sessionLevel0|1会话层级 0-外层 1-内层
?lastPullTimenumber增量选项-最后一次更新时间,如果有该字段,将获取该字段以后更新的会话

返回值

Promise<DefaultResponse<GetChatInfoTypes[]>>
参数类型说明
GetChatInfoTypesGetChatInfoTypes[]会话列表

删除会话: deleteChat

删除会话(设置为不可见)

类型定义

deleteChat: (params: DeleteChatParams) => Promise<any>

Demo 例子🌰

SIMInstance.Chat.deleteChat({
    sessionId: '123123',
    securityType: 0,
    sessionType: 0,
}).then((res) => {
    console.log('deleteChat success!', res);
}).catch((err) => {
    console.error('deleteChat Error! err:', err);
});

方法参数

参数类型说明
paramsDeleteChatParams删除会话的参数
DeleteChatParams-对象类型

删除会话的参数

interface DeleteChatParams {
    sessionId: string,
    sessionType: ChatTypeEnum,
    securityType: 0|1,
}
对象成员
参数类型说明
sessionIdstring会话ID
securityType01安全类型 0普通,1私聊
sessionTypeChatTypeEnum会话类型

返回值

Promise<DefaultResponse>

删除会话: destroyChat

删除会话(彻底删除)

类型定义

destroyChat: (params: DeleteChatParams) => Promise<any>

Demo 例子🌰

SIMInstance.Chat.destroyChat({
    sessionId: '123123',
    securityType: 0,
    sessionType: 0,
}).then((res) => {
    console.log('destroyChat success!', res);
}).catch((err) => {
    console.error('destroyChat Error! err:', err);
});

方法参数

参数类型说明
paramsDeleteChatParams删除会话的参数

返回值

Promise<DefaultResponse>

消息相关接口

通过http接口来操作IM中的消息相关功能

获取消息: getMsgListAndCdMsgById

获取指定区间内消息和被指令修改的消息

类型定义

getMsgListAndCdMsgById: (params: GetMsgListAndCdMsgByIdParams) => Promise<any>

Demo 例子🌰

SIMInstance.Message.getMsgListAndCdMsgById({
    sessionId: '1239',
    sessionType: 0,
    securityType: 0,
}).then((res) => {
    console.log('getMsgListAndCdMsgById success!', res);
}).catch((err) => {
    console.error('getMsgListAndCdMsgById Error! err:', err);
});

方法参数

参数类型说明
paramsGetMsgListAndCdMsgByIdParams获取指定区间内消息和被指令修改的消息的参数
GetMsgListAndCdMsgByIdParams-对象类型

获取指定区间内消息和被指令修改的消息的参数

interface GetMsgListAndCdMsgByIdParams {
		sessionId: string,
		sessionType: ChatTypeEnum,
		securityType: 0|1,
		msgId?: string,
		rows?: number,
		type?: 0|1|2
}
对象成员
参数类型说明
sessionIdstring会话ID
sessionTypeChatTypeEnum会话类型
securityType0|1密聊类型 0-普通聊天 1-秘密聊天
?msgIdstring消息id
?rowsnumber获取数量
?type0|1|20向下拉,1向上拉,2定位前后 默认-0

返回值

interface GetMsgListAndCdMsgRes {
    msg: DefaultMsg[],
    cdMsg: CdMsgBody[]
}
Promise<DefaultResponse<GetMsgListAndCdMsgRes>>

历史记录搜索: searchMsg

历史记录搜索

类型定义

searchMsg: (params: SearchMsgParams) => Promise<any>

Demo 例子🌰

SIMInstance.Message.searchMsg({
    sessionId: '9527',
    sessionType: 0,
    securityType: 0,
    type: 0
}).then((res) => {
    console.log('searchMsg success!', res);
}).catch((err) => {
    console.error('searchMsg Error! err:', err);
});

方法参数

参数类型说明
paramsSearchMsgParams历史记录搜索的参数
SearchMsgParams-对象类型

历史记录搜索的参数

interface SearchMsgParams {
		sessionId: string,
		sessionType: SIMTypes.ChatTypeEnum,
		securityType: 0|1,
		msgId?: string,
		searchName?: string,
		rows?: number,
		type: 0|1|2
}
对象成员
参数类型说明
sessionIdstring会话ID
sessionTypeChatTypeEnum会话类型
securityType0|1密聊类型 0-普通聊天 1-秘密聊天
?msgIdstring消息id
?searchNamestring搜索文字
?rowsnumber获取数量
?type0|1|2搜索类型 0全部,1文件,2图片及视频 默认-0

返回值

Promise<DefaultResponse<DefaultMsg[]>>

获取已读状态: getMsgReadData

获取已读状态

类型定义

getMsgReadData: (params: GetMsgReadDataParams) => Promise<any>

Demo 例子🌰

SIMInstance.Message.getMsgReadData({
    msgId: '123123123'
}).then((res) => {
    console.log('getMsgReadData success!', res);
}).catch((err) => {
    console.error('getMsgReadData Error! err:', err);
});

方法参数

参数类型说明
paramsGetMsgReadDataParams获取已读状态的参数
GetMsgReadDataParams-对象类型

获取已读状态的参数

interface GetMsgReadDataParams {
    msgId: string,
}
对象成员
参数类型说明
msgIdstring消息id

返回值

interface GetMsgReadDataRes {
    "appId": number,
    "avatar": string,
    "createBy": string,
    "createDate": string,
    "delFlag": 0|1,
    "groupId": string,
    "id": string,
    "isRead": string,
    "msgId": string,
    "owner": string,
    "petName": string,
    "readDate": string,
    "remarks": string,
    "securityType": 0|1,
    "tId": string,
    "updateBy": string,
    "updateDate": string,
    "userName": string
}
Promise<DefaultResponse<GetMsgReadDataRes[]>>
GetMsgReadDataRes-对象成员
参数类型说明
avatarstring头像
createBystring创建者
createDatestring创建时间
delFlag0|1删除标志
groupIdstring群聊ID
idstringid
isRead0|1已读未读状态 0.未读 1.已读
msgIdstring消息ID
ownerstring拥有者的用户UID
petNamestring昵称
readDatestring已读时间
remarksstringremarks
securityType0|1密聊类型
updateBystring更新者
updateDatestring更新时间
userNamestring用户名称

获取回复数据: getReplyList

获取回复数据

类型定义

getReplyList: (params: GetReplyListParams) => Promise<any>

Demo 例子🌰

SIMInstance.Message.getReplyList({
    msgId: '123123123',
    sessionType: 0
}).then((res) => {
    console.log('getReplyList success!', res);
}).catch((err) => {
    console.error('getReplyList Error! err:', err);
});

方法参数

参数类型说明
paramsGetReplyListParams获取回复数据的参数

GetReplyListParams-对象类型

获取回复数据的参数

interface GetReplyListParams {
		msgId: string,
		sessionType: ChatTypeEnum
}
对象成员
参数类型说明
msgIdstring消息id
sessionTypeChatTypeEnum会话类型

返回值

Promise<DefaultResponse<DefaultMsg[]>>

获取消息详情: getMessageDetails

获取消息详情-列表获取

类型定义

getMessageDetails: (params: GetMessageDetailsParams) => Promise<any>

Demo 例子🌰

SIMInstance.Message.getMessageDetails({
    msgIds: ['123123123', '123433412'],
    sessionType: 0
}).then((res) => {
    console.log('getMessageDetails success!', res);
}).catch((err) => {
    console.error('getMessageDetails Error! err:', err);
});

方法参数

参数类型说明
paramsGetMessageDetailsParams获取消息详情的参数

GetMessageDetailsParams-对象类型

获取消息详情的参数

interface GetMessageDetailsParams {
    msgIds: string[],
    sessionType: SIMTypes.ChatTypeEnum,
}
对象成员
参数类型说明
msgIdsstring[]消息id列表
sessionTypeChatTypeEnum会话类型

返回值

Promise<DefaultResponse<DefaultMsg[]>>

标记消息: signMessage

标记消息

类型定义

signMessage: (params: SignMessageParams) => Promise<any>

Demo 例子🌰

SIMInstance.Message.signMessage({
    sessionId: '123123',
    sessionType: 0,
    securityType: 0,
    msgId: '123123123',
    cross: 0
}).then((res) => {
    console.log('signMessage success!', res);
}).catch((err) => {
    console.error('signMessage Error! err:', err);
});

方法参数

参数类型说明
paramsSignMessageParams标记消
1.0.7-alpha

4 years ago

1.0.5-rc

4 years ago

1.0.6-rc

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago