平台业务
分配商家
本节说明平台业务中如何指定商家或子企业客服。
分配商家
平台商家申请客服时,需要在打开会话界面传入的 ConsultSource 中指定 shopId。shopId 是企业在管理后台创建商家时填写的商家 ID;不指定时默认申请平台企业下的客服。更多设置请参考平台商家配置。
平台商家配置
SDK提供平台商家企业的支持,非平台电商不需要看该内容
| 参数名 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| shopId | String | 商家id,也是子企业的ID | 要咨询的商家 ID,平台电商调用 |
| shopEntrance | ShopEntrance | 商家入口信息 | 如果需要开启商家入口,则需要设置该字段,如果不指定将不显示商家入口在不开启后台配置时生效 |
| sessionListEntrance | SessionListEntrance | 会话列表入口信息 | 如果需要开启会话列表入口,则需要设置该字段 |
ShopEntrance
| 参数名 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| logo | String | 商家logo url | 图片地址 |
| name | String | 商家名称 | 最多显示三个字符超出将显示“xx...” |
SessionListEntrance
| 参数名 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| imageResId | DrawableRes资源id | 入口图片资源id | 建议为半透明图片,如果不设置将显示默认图片 |
| position | Position枚举类型 | 入口位置 | 目前包含TOP_LEFT和TOP_RIGHT,即屏幕左上角和右上角,如果不设置将默认位于右上角 |
代码示例
ConsultSource source = new ConsultSource("shop_detail", "店铺客服", null);
source.shopId = "shopId";
source.shopEntrance = new ShopEntrance.Builder()
.setName(shopName)
.setLogo(shopLogo)
.build();
source.sessionListEntrance = new SessionListEntrance.Builder().build();
Unicorn.openServiceActivity(context, shopName, source);平台版 App 通常在用户进入某个店铺、商品或订单页面时就能确定 shopId,打开客服时把该值写入 ConsultSource.shopId。后续查询会话状态、清除未读、删除会话、获取商家信息时,也使用同一个 shopId。
非平台版 App 不需要设置 shopId,也不需要接入本页的会话列表能力。
平台会话管理
本节说明 POPManager 提供的会话列表、会话状态、未读数和商家信息管理能力。
最近联系商家列表
获取最近联系商家列表,可用于展示会话列表,该接口返回一个Session列表,Session是一个包含会话信息的接口。
public static List<Session> getSessionList()Session接口说明
| 方法名 | 返回类型 | 方法说明 | 返回值说明 |
|---|---|---|---|
| getContactId() | String | 获取商家ID | 平台商家ID |
| getMsgStatus() | MsgStatusEnum | 获取最后一条消息状态 | MsgStatusEnum是枚举值sending:正在发送success:发送成功fail:发送失败read:已读unread:未读recall:消息撤回 |
| getUnreadCount() | int | 获取商家的未读消息条数 | 未读消息数 |
| getContent() | String | 获取最后一条消息的缩略内容 | 最后一条消息的缩略内容 |
| getTime() | long | 获取最后一条消息的时间戳 | 最后一条消息的时间戳 |
| getFromAccount() | String | 获取最近一条消息的发送方账号 | 最近一条消息的发送方账号 |
代码示例
List<Session> sessionList = POPManager.getSessionList();App 自建平台会话列表时,可以用 Session.getContactId() 作为商家会话 ID。用户点击某一行会话后,再用这个 ID 打开对应商家的客服窗口。
String shopId = session.getContactId();
ConsultSource source = new ConsultSource(null, "会话列表", null);
source.shopId = shopId;
Unicorn.openServiceActivity(context, shopId, source);监听会话列表更新
public static void addOnSessionListChangedListener(OnSessionListChangedListener listener, final boolean add)参数说明
| 字段 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| listener | OnSessionListChangedListener | 会话列表有变更时的通知 | 接口回调函数 |
| add | boolean | 添加或注销监听 | true:添加监听false:注销监听 |
OnSessionListChangedListener
| 接口回调函数 | 说明 |
|---|---|
| OnSessionListChangedListener | 需要实现两个方法onSessionUpdate:商家会话发生变化(更新/添加)onSessionDelete:删除商家会话 |
代码示例
OnSessionListChangedListener listener = new OnSessionListChangedListener() {
@Override
public void onSessionUpdate(List<Session> updateSessionList) {
for (Session session : updateSessionList) {
int index = -1;
for (int i = 0; i < sessionList.size(); i++) {
if (session.getContactId().equals(sessionList.get(i).getContactId())) {
index = i;
break;
}
}
if (index >= 0) {
sessionList.remove(index);
}
sessionList.add(session);
}
sortSessionList(sessionList);
adapter.notifyDataSetChanged();
}
@Override
public void onSessionDelete(String shopId) {
for (Session session : sessionList) {
if (session.getContactId().equals(shopId)) {
sessionList.remove(session);
adapter.notifyDataSetChanged();
break;
}
}
}
};
POPManager.addOnSessionListChangedListener(listener, add);获取会话状态
获取会话状态,返回值 SessionStatusEnum为会话状态
public static SessionStatusEnum querySessionStatus(String shopId)参数说明
| 参数名 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| shopId | String | 聊天对象ID | 商户ID |
| 返回值 | SessionStatusEnum | 会话状态 | SessionStatusEnum是枚举值NONE:空状态IN_SESSION:会话中IN_QUEUE:排队中 |
代码示例
SessionStatusEnum statusEnum = POPManager.querySessionStatus(String shopId);删除联系商家记录
public static void deleteSession(String shopId, boolean clearMsgHistory)| 参数名 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| shopId | String | 聊天对象ID | 商户ID |
| clearMsgHistory | boolean | 是否同时清空消息记录 | true:清空false:不清空 |
代码示例
POPManager.deleteSession(String shopId, boolean clearMsgHistory);获取商家信息
根据商家ID获取商家信息
public static ShopInfo getShopInfo(String shopId)参数说明
| 参数名 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| shopId | String | 聊天对象ID | 商户ID |
| 返回值 | ShopInfo | 商家信息 | ShopInfo接口 |
ShopInfo接口说明
| 方法名 | 返回类型 | 方法说明 | 返回值说明 |
|---|---|---|---|
| getAccount() | String | 获取商家ID | 商家ID |
| getName() | String | 获取商家名称 | 商家名称 |
| getAvatar() | String | 获取商家头像 | 商家头像 |
代码示例
ShopInfo shopInfo = POPManager.getShopInfo(shopId);获取商家最后一条消息内容
可用于未读消息变化时,展示最后一条未读消息,或者展示客服的最后一条消息
public static IMMessage queryLastMessage(String shopId)参数说明
| 字段 | 类型 | 参数说明 | 取值说明 |
|---|---|---|---|
| shopId | String | 聊天对象ID | 商户ID |
代码示例
IMMessage message = POPManager.queryLastMessage(shopId)
if (message != null) {
// 获取消息附件
if (message.getAttachment() != null) {
if (message.getAttachment() instanceof YsfAttachment) {
Log.d("queryLastMessage", "message:" + ((YsfAttachment) message.getAttachment()).getContent());
} else {
Log.d("queryLastMessage", "message:" + message.getAttachStr());
}
} else {
// 获取文本消息
Log.d("queryLastMessage", "message:" +message.getContent());
}
}平台业务
本节收纳平台企业或平台电商相关的基础说明和平台补充内容。
SDK加入了平台商家企业的支持,平台商家就是类似京东,天猫一类的企业,下属很多其他的第三方商家,每个第三方商家都能够独立管理自己的客服,平台不直接管理客服的分配,绩效等日常工作。
本节内容仅仅介绍平台电商接入的相关知识,所有内容是在前面内容基础上编写的,有关 SDK 接入,客服分配,UI 定制等基础知识,请先阅读前文。
如果您不是平台商家企业,可以忽略这部分内容。
这篇文档有帮助吗?