发送和消息 - IM在线客服
发送消息
客服人员发送消息,有两点与私聊群聊消息有所区别,需要特别注意:
- 私聊群聊创建消息时,是用im对象创建,而客服人员创建的消息使用csteam对象创建消息
- 客服人员创建消息时,to.type是与私聊群聊不同,为GoEasy.IM_SCENE.CS
其他方面与发送私聊和群聊消息的方法是一致的:
示例代码:
let csteam = goEasy.im.csteam('team001');//客服团队或者商家id
csteam.createTextMessage({
text: this.text,
to: {
type: GoEasy.IM_SCENE.CS, //消息场景:客服
id: 'customer001', //客户id
data: {name: '可爱前端', avatar: 'xxx.png'},//客户数据,用于显示在客服的会话列表
},
onSuccess: (message) => {
console.log("消息创建成功:", message);
},
onFailed: (err) => {
console.log("创建消息失败:", err);
}
});
接收消息和监听用户状态
该方法用于客服人员的聊天窗口的两个功能:接收用户消息和监听用户实时状态。
let csteam = goEasy.im.csteam('team001'); //接收哪个客服团队或者商家的用户信息
csteam.listenCustomer({
id: 'customer001', //用户id
onNewMessage: (message) => {
console.log('收到新消息', message);
},
onStatusUpdated: (customerStatus) => {
console.log('用户最新会话状态', customerStatus);
},
onSuccess: () => {
console.log('live successfully');
},
onFailed: (error) => {
console.log('failed to live session:', error);
},
})
监听用户实时状态
只有一个用户的状态为ACCEPTED
,并且接入该用户的agent
就是当前客服人员时,才可以向该用户发送消息。
当客服人员进入一个用户的聊天窗口时,listenCustomer
的onStatusUpdated
会立即返回该用户的最新状态,用于确定客服人员是否可以发送消息、接入会话或结束会话。
当该用户的状态发生变化时,onStatusUpdated
会实时返回用户的最新状态。
用户状态说明和对象格式
用户状态 | 描述 |
---|---|
FREE | 空闲状态,客服人员可以通过调用csteam.accept()方法主动接入该用户,然后和该用户互相发送消息进行沟通 |
PENDING | 等待接入状态,该用户发起了一个咨询,尚未有客服接入会话,客服人员调用csteam.accept()接入该会话后,可以与该用户互相发送消息进行沟通 |
ACCEPTED | 已接入状态,该用户正在与一个客服人员进行沟通,只有已接入该用户的客服人员可以向该用户发送消息,其他客服人员可以接收双方的聊天信息,但不可以向该用户发送消息 |
customerStatus对象:
{
status: 'FREE', //三种状态 FREE:空闲 PENDING:待接入 ACCEPTED:已接入
agent: { //status为ACCEPTED时,已接入的agent信息, FREE和PENDING时为空
id: 'agent001', //agent Id
data: {name: '小婷', avatar: 'xxx.png'} //agent data
}
}
接收用户消息
客服人员可以通过listenCustomer
的onNewMessage
实时接收用户发送的消息,也可以实时监听其他客服人员与他正在服务的用户之间发送的消息,实时观看双方的沟通过程。
标记消息已读
对于收到且已读的消息,请务必将其标记为已读状态,否则未读消息数将始终保持,并且在下次连接GoEasy时,会再次收到之前未标记的消息。
执行本方法后,会触发会话列表更新事件,未读消息数将随之减少。
let csteam = goEasy.im.csteam('team001');//客服团队或者商家id
csteam.markMessageAsRead({
type: GoEasy.IM_SCENE.CS, //客服消息
id: 'customer001',//客户id
onSuccess: function () {
console.log('标记已读成功');
},
onFailed: function (error) {
console.log('标记已读失败', error);
}
});