查询和监听已接入会话 - IM在线客服
帮助开发者在自己的项目里展示客服最近已接入的会话列表, 显示每个会话的最后一条消息和未读消息数量。
开发者需要通过两个接口协同,才能让会话列表总是保持最新状态:
- 获取最新会话列表
- 监听会话列表变化
获取最新已接入会话列表
可以获取最新的100条会话。
var im = goeasy.im;
im.latestConversations({
onSuccess: function (result) {
//会话列表结果
//{
// "code": 200,
// "content": {
// "unreadTotal": 4, //未读消息总数
// "conversations": [
// {
// "id": "413985eb-c120-41ab-baea-93c3e751a14a",
// "teamId": "shop03", //客服团队或者商家id
// "type": "cs",
// "lastMessage": { //最后一条消息
// "accepted": true, "to": "shop03", "teamId": "shop03",
// //发送方的Data信息,来源于发送方调用connect时传入的data
// "senderData": {"name": "Wallace", "avatar": "/static/images/Avatar-2.png"},
// "senderId": "413985eb-c120-41ab-baea-93c3e751a14a",
// "sessionId": 2998304133634449,
// "messageId": "2998304280418705",
// "timestamp": 1721620578262,
// "type": "text",
// "payload": {"text": "Hello, GoEasyIM"},
// "status": "success"
// },
// "unread": 4, //单个会话未读消息数量
// "top": false,
// //会话的data来源:agent端返回的是customer的data;customer端返回的是team的data
// "data": {"name": "Wallace", "avatar": "/static/images/Avatar-2.png"},
// "ended": false
// },
// {
// "id": "3f99d89d-99c0-44f7-96c9-e4c6ff5ac4d2",
// "teamId": "shop03",
// "type": "cs",
// "lastMessage": {
// "accepted": true, "to": "3f99d89d-99c0-44f7-96c9-e4c6ff5ac4d2", "teamId": "shop03",
// "senderData": {"name": "Leo", "avatar": "/static/images/Avatar-9.png"},
// "sessionId": 2998303923902866,
// "senderId": "f51f6655-be49-4813-87ad-353b9eee971f",
// "messageId": "2998303988910481",
// "timestamp": 1721620550778,
// "type": "CS_END",
// "status": "success"
// },
// "unread": 0,
// "top": false,
// //会话的data来源:agent端返回的是customer的data;customer端返回的是team的data
// "data": {"name": "Mattie", "avatar": "/static/images/Avatar-1.png"},
// "ended": true
// }
// ]
// }
//}
},
onFailed: function (error) { //获取失败
console.log("Failed to get the latest conversations, code:" + error.code + " content:" + error.content);
},
});
监听已接入会话列表变化
每当会话列表发生变化,该监听器都会被触发,并返回最新的会话列表。
var onConversationsUpdated = function (conversations) {
//更新后的最新会话列表
//{
// "unreadTotal": 4, //未读消息总数
// "conversations": [
// {
// "id": "413985eb-c120-41ab-baea-93c3e751a14a",
// "teamId": "shop03", //客服团队或者商家id
// "type": "cs",
// "lastMessage": { //最后一条消息
// "accepted": true, "to": "shop03", "teamId": "shop03",
// //发送方的Data信息,来源于发送方调用connect时传入的data
// "senderData": {"name": "Wallace", "avatar": "/static/images/Avatar-2.png"},
// "senderId": "413985eb-c120-41ab-baea-93c3e751a14a",
// "sessionId": 2998304133634449,
// "messageId": "2998304280418705",
// "timestamp": 1721620578262,
// "type": "text",
// "payload": {"text": "Hello, GoEasyIM"},
// "status": "success"
// },
// "unread": 4, //单个会话未读消息数量
// "top": false,
// "data": {"name": "Wallace", "avatar": "/static/images/Avatar-2.png"},
// "ended": false
// },
// {
// "id": "3f99d89d-99c0-44f7-96c9-e4c6ff5ac4d2",
// "teamId": "shop03",
// "type": "cs",
// "lastMessage": {
// "accepted": true, "to": "3f99d89d-99c0-44f7-96c9-e4c6ff5ac4d2", "teamId": "shop03",
// "senderData": {"name": "Leo", "avatar": "/static/images/Avatar-9.png"},
// "sessionId": 2998303923902866,
// "senderId": "f51f6655-be49-4813-87ad-353b9eee971f",
// "messageId": "2998303988910481",
// "timestamp": 1721620550778,
// "type": "CS_END",
// "status": "success"
// },
// "unread": 0,
// "top": false,
// "data": {"name": "Mattie", "avatar": "/static/images/Avatar-1.png"},
// "ended": true
// }
// ]
//}
};
//监听会话列表更新
im.on(GoEasy.IM_EVENT.CONVERSATIONS_UPDATED, onConversationsUpdated);
取消监听会话列表变化
自GoEasy SDK版本2.4.9开始,支持监听器在多个地方执行不同的回调函数来满足不同功能需求的实现,通过im.off来指定需要取消的监听器类型和指定的回调函数。
// GoEasy SDK 2.4.9及以上版本, 取消监听会话列表更新
im.off(GoEasy.IM_EVENT.CONVERSATIONS_UPDATED, onConversationsUpdated);
GoEasy版本2.4.9之前,不支持off的方式来取消监听器,可以通过清空回调方法的方式来取消监听。
//GoEasy SDK 2.4.9之前的版本,取消监听会话列表更新
im.on(GoEasy.IM_EVENT.CONVERSATIONS_UPDATED, ()=>{});