0.1.29 • Published 3 months ago
kfjssdk v0.1.29
客服IM系统jssdk
客服系统的jssdk,适配微信小程序和web
特征
- 适配微信小程序和web
- 支持文本消息、图片消息、文件消息
- 心跳保活、自动重连、超时断开功能
- 简单的事件监听api和消息发送api
- 无业务入侵,只提供消息传递层
- 群组聊天(未实现)
使用方法
web使用
- 安装
npm i kfjssdk
微信小程序使用
- 在发布页下载
微信小程序sdk
到项目中,然后使用
jssdk API
Im方法
封装了ws连接的门面方法,返回Ws类的实例 提供了以下方法
- login 登录到im后台服务
- on 注册事件监听
- send 发送消息
- disconnected 断开连接
获取到Im并初始化示例代码
import {Im} from "jssdk";
// Im门面方法使用了单例设计模式,全局只需要初始化一次
const im = Im("ws://客服系统ws地址" || {
url: "ws://客服系统ws地址",
timeout: 30, //单位秒,默认30秒
retryTimes: 10, // 重连次数 默认10次
},"web");
// 当ws连接成功后,第二次调用,可以直接获取实例
const instance = Im();
Im(params).login(appId, signature, userId) 方法返回一个 promise
- 参数
appId
当前ws所属的应用的id根据后台来 - 参数
signature
一个连接的签名,一般是配合后台调接口获得 - 参数
userId
当前要连接到ws的用户
import {Im} from "kfjssdk";
const instance = Im("ws://客服系统ws地址");
instance.login("appId", "signature", "userId")
.then(res => {
/*处理登录成功后的逻辑*/
})
.catch((err) => {
/*处理失败后的逻辑*/
console.error(err);
});
Im(params).on(事件名称,(数据) => {},"event name") 返回事件id 注册事件回调
事件有以下几种事件类型
Events.text
当发送的消息是文本消息时触发该事件Events.face
当发送的消息是表情消息时触发该事件Events.file
当发送的消息是文件消息时触发该事件Events.image
当发送的消息是图片消息时触发该事件Events.system
当有系统消息时触发该事件Events.error
当连接有错误时触发该事件Events.kickout
当有被系统剔除登录时触发该事件Events.bot
当有机器人消息时触发该事件Events.unknown
当有未知的会话类型时触发该事件Events.close
当有ws关闭时触发该事件Events.status
当消息发送成功或失败时系统通知该消息状态时触发该事件
绑定方法如下所示
import {Events} from "kfjssdk/lib/events";
import {Im} from "kfjssdk";
// 此时假设已经login过了。由于是单例模式,所以直接返回实例
// event name 相同时只会绑定一次,如果不传入event name默认
const im = Im();
im.on(Events.text, data => {
});
// 这里同时注册text事件,会同时生效
im.on(Events.text, data => {
},"event name");
im.on(Events.image, data => {
},"event name");
im.on(Events.file, data => {
},"event name");
im.on(Events.status, data => {
},"event name");
// ....
Im().off(事件id) 取消事件的绑定
import {Im} from "./index";
import {Events} from "./events";
const im = Im()
const evtId = im.on(Events.Text,(data:any) => {})
// 取消事件监听
im.off(evtId)
Im().send(消息体) 返回值是 promise
参数消息体
是由Message类生成的。
class: Message 有以下方法
- constructor: new Message({to:"发送给谁(必须)",{from: "发送人(必须)"}})
- new Message({}).Text({text:"文本消息"})
- new Message({}).Image({uuid:"uuid",imageInfoArray:"图片信息")
- new Message({}).File({uuid, fileName, fileUrl, fileSize})
- new Message({}).Face({ index: "表情索引,用户自定义", data: "额外数据非必须"})
- new Message({}).Custom({ data: "自定义消息的 data 字段", description: "自定义消息的 description 字段", extension: " 自定义消息的 extension 字段"})
- new Message({}).setCustomData(data: NonNullable) 设置自定义消息 更多方法定义如下
generate(): string;
message(): import("./types").MessageBody;
flow(flow: MessageFlow): this;
status(status: MessageStatus): this;
conversationType(t: ConversationType): this;
conversationID(id?: string): this;
Text(payload: import("./types").MessageText): this;
Image(payload: import("./types").MessageImage): this;
File(payload: import("./types").MessageFile): this;
Custom(payload: import("./types").MessageFile): this;
Face(payload: import("./types").MessageFace): this;
Bot(payload: import("./types").MessageBot): this;
使用方法如下
import {Im, Message} from "kfjssdk";
import {ConversationType} from "kfjssdk/lib/types";
const im = Im();
const msg = new Message({to: "demo", from: "fuyoo",platform:"web"})
.conversationType(ConversationType.C2C) // 这里必须把会话类型设置为C2C
.Text({text: "this is a text message"});
im.send(msg)
.then((msg) => {
/*做发送成功的逻辑*/
})
.catch(error => {
console.trace(error);
});
关于服务器API,请查看 api文档 如果打不开请联系管理员
0.1.28
3 months ago
0.1.29
3 months ago
0.1.27
3 months ago
0.1.26
4 months ago
0.1.25
10 months ago
0.1.24
1 year ago
0.1.23
1 year ago
0.1.22
1 year ago
0.1.21
1 year ago
0.1.19
1 year ago
0.1.18
1 year ago
0.1.17
1 year ago
0.1.16
1 year ago
0.1.15
1 year ago
0.1.14
1 year ago
0.1.13
1 year ago
0.1.12
1 year ago
0.1.11
1 year ago
0.1.10
1 year ago
0.1.9
1 year ago
0.1.8
1 year ago
0.1.7
1 year ago
0.1.6
1 year ago
0.1.5
1 year ago
0.1.4
1 year ago
0.1.3
1 year ago
0.1.2
1 year ago
0.1.1
1 year ago
0.1.0
1 year ago