七鱼开发文档中心
总览服务端 APIWebiOSAndroid鸿蒙Uniapp微信小程序插件三方接入

会话配置

会话来源

本节说明如何设置会话来源信息,帮助客服识别访客从哪个业务入口发起咨询。

功能配置

在打开客服咨询窗口或者构造 ServiceMessageFragment 时,可以通过 ConsultSource 对咨询来源、客服分配和会话行为进行配置。

构造方法说明

public ConsultSource(String uri, String title, String custom)
字段类型说明
uriString咨询页面的uri,可以是url,也可以任意能标识来源的字符串
titleString咨询页面的title
customString可自定义传入的字符串,可以为null比如商品详细信息,用户操作状态等等, 在分配客服时该字段会传递给客服

人工客服分配

本节说明如何指定客服、客服组或分流模板,以控制访客进入人工客服的分配逻辑。

分配客服&客服组

SDK 在 ConsultSource 增加了指定客服或者客服组的参数,开发者可以在访客进入咨询界面前就指定好要为其服务的客服,例如从订单页面打开咨询界面时为其指定售后客服,在商品页面打开时,为其指定售前客服。在 ConsultSource 中,staffId 为客服 ID,groupId 为客服组 ID,其值可以在管理后台设置页面的「访客分配」页面中找到。如果这两个参数都没有设置,则按照后台配置逻辑分配客服,如果指定了其中一个,则只会分配指定的客服或者在指定的客服分组中分配,如果指定的客服不在线,或者指定的客服分组中没有客服在线,则会提示用户客服不在线。

参数名类型参数说明取值说明
groupIdlong指定客服分组默认为0查询路径:管理端-服务中心-在线系统-设置-会话流程-会话分配-自定义链接分配-ID查询-客服及客服组ID查询
staffIdlong指定客服ID默认为0,如果指定了此参数,则groupId会被忽略查询路径:管理端-服务中心-在线系统-设置-会话流程-会话分配-自定义链接分配-ID查询-客服及客服组ID查询
groupTmpIdlong多入口分流模版默认为0查询路径:管理端-服务中心-在线系统-设置-会话流程-会话分配-自定义链接分配-多入口分配自定义模板

App 侧配置示例

如果 App 不需要指定客服或客服组,只传基础来源信息即可,SDK 会按管理后台的默认分配规则进线。

ConsultSource source = new ConsultSource("product_detail", "商品详情页", null);
Unicorn.openServiceActivity(context, "在线客服", source);

如果 App 已经根据业务场景判断出要进入某个客服组,例如订单售后、商品咨询,可以设置 groupId。此时会优先在该客服组内分配客服。

ConsultSource source = new ConsultSource("order_detail", "订单详情页", null);
source.groupId = 123456L;
Unicorn.openServiceActivity(context, "订单售后", source);

如果 App 已经明确要指定某个客服,可以设置 staffId。同时设置 staffId 和 groupId 时,staffId 优先,groupId 会被忽略。

ConsultSource source = new ConsultSource("vip_service", "专属客服", null);
source.staffId = 10086L;
source.groupId = 123456L;
Unicorn.openServiceActivity(context, "专属客服", source);

如果 App 只想指定一套多入口分流模板,可以设置 groupTmpId,让后台模板继续决定最终分配到哪个客服或客服组。

ConsultSource source = new ConsultSource("campaign_page", "活动页咨询", null);
source.groupTmpId = 123456L;
Unicorn.openServiceActivity(context, "活动咨询", source);

机器人客服

本节说明机器人接待、常见问题、快捷入口和欢迎语等机器人相关配置。

机器人配置

SDK支持机器人配置

参数名类型参数说明取值说明
robotFirstboolean先由机器人接待默认为false,表示是否先机器人接待由后台配置如果指定了 groupId 或者 staffId 时,该参数有效。表示会先进机器人,之后如果用户转人工服务,再分配给上面指定的groupId 或者 staffId
robotIdlong指定机器人ID机器人ID,如果开启了机器人,该参数有效如果不设置,将连接默认机器人查询路径:管理端首页- 在线客服 - 在线接入 - 网站 - 机器人开关
faqGroupIdlong机器人热门问题组 ID如果指定了此参数,且请求客服为机器人客服,则会下发该 ID 对应的热门问题查询路径:管理端首页 - 在线机器人 - 设置 - 导航菜单 - 常见问题 - 常见问题模版
robotWelcomeMsgIdString机器人欢迎语 ID如果指定了此参数,且请求客服为机器人客服,则会下发该 ID 对应的机器人欢迎语

App 侧配置示例

如果希望先由机器人接待,用户转人工后再进入指定客服组或客服,可以同时设置 robotFirst 和 groupId / staffId。

ConsultSource source = new ConsultSource("faq", "智能客服", null);
source.robotFirst = true;
source.groupId = 123456L;
Unicorn.openServiceActivity(context, "智能客服", source);

如果 App 需要指定机器人、热门问题组或机器人欢迎语,可以在打开会话前设置对应字段;不设置时使用后台默认配置。

ConsultSource source = new ConsultSource("help_center", "帮助中心", null);
source.robotFirst = true;
source.robotId = 123L;
source.faqGroupId = 456L;
source.robotWelcomeMsgId = "welcome_msg_id";
Unicorn.openServiceActivity(context, "帮助中心", source);

常见快捷入口模版

常见快捷入口模版ID

参数名类型参数说明取值说明
shortcutTemplateIdString常见快捷入口模版ID查询路径:管理端首页 - 在线机器人 - 设置 - 导航菜单 - 常见快捷入口

App 侧配置示例

ConsultSource source = new ConsultSource("help_center", "帮助中心", null);
source.shortcutTemplateId = 789L;
Unicorn.openServiceActivity(context, "帮助中心", source);

用户 VIP 等级

本节说明如何设置访客等级,以便后台按业务规则区分用户优先级或服务策略。

设置用户VIP等级

SDK增加设置用户 VIP 等级的功能,便于区分用户等级,允许 VIP 用户优先进线或为 VIP 用户指定专线客服,提升用户体验。

参数名类型参数说明取值说明
vipLevelint用户VIP等级​默认为0,表示普通用户0:普通用户1-10:用户 VIP 等级 1-10 级11:通用 VIP 用户,即不显示用户等级

App 侧配置示例

ConsultSource source = new ConsultSource("member_center", "会员中心", null);
source.vipLevel = 3;
Unicorn.openServiceActivity(context, "会员客服", source);

专属客服与客服信息

本节说明如何配置专属客服或自定义客服展示信息。

专属客服设置

SDK提供了专属客服设置,该设置只对本地生效,并且会覆盖后台的设置

参数名类型参数说明取值说明
vipStaffidString专属客服的ID客户自定义设置
promptString连接专属客服成功时候的提示语客户自定义设置
VIPStaffAvatarUrlString专属客服头像的 url客户自定义设置
vipStaffNameString专属客服的名字客户自定义设置
vipStaffWelcomeMsgString专属客服的欢迎语客户自定义设置

App 侧配置示例

ConsultSource source = new ConsultSource("exclusive_service", "专属客服", null);
source.vipStaffid = "staff_account";
source.vipStaffName = "专属客服";
source.VIPStaffAvatarUrl = "https://example.com/avatar.png";
source.vipStaffWelcomeMsg = "您好,我是您的专属客服";
Unicorn.openServiceActivity(context, "专属客服", source);

会话入口参数

本节说明进入客服会话时可配置的扩展参数,用于控制会话入口行为。

设置允许在当前客服界面进入新客服界面

SDK支持是否使用 CLEAR_TOP 的方式启动客服界面,当用户想要在当前客服界面中进入新的客服界面时,需要把该字段设置为 true

参数名类型参数说明取值说明
forbidUseCleanTopStartboolean是否使用 CLEAR_TOP 的方式默认为false

App 侧配置示例

ConsultSource source = new ConsultSource("order_detail", "订单详情页", null);
source.forbidUseCleanTopStart = true;
Unicorn.openServiceActivity(context, "在线客服", source);

设置访客端IP

由于隐私合规,SDK获取IP是采用服务端方式获取,可能会存在获取不准确或获取不到的情况,如果对后台IP地址显示比较在意,请自行获取IP并传给七鱼

参数名类型参数说明取值说明
clientIpAddressString访客端的 IP 地址客户传入的IP地址

App 侧配置示例

ConsultSource source = new ConsultSource("webview_page", "活动页", null);
source.clientIpAddress = clientIpAddress;
Unicorn.openServiceActivity(context, "在线客服", source);

会话生命周期配置

本节说明会话退出、排队、结束会话和评价弹出等生命周期相关配置。

控制会话过程

SDK 增加了开发者对于会话过程控制的力度,相关选项由 SessionLifeCycleOptions 提供,包括主动结束会话、退出排队、退出确认、满意度评价和界面退出监听等能力。

参数名类型参数说明取值说明
sessionLifeCycleOptionsSessionLifeCycleOptions对用户咨询会话的一些生命周期控制选项SessionLifeCycleOptions类型

SessionLifeCycleOptions

方法名参数说明取值说明
setCanCloseSession(boolean canCloseSession)是否允许主动结束会话设置是否允许用户主动结束会话,设置该选项后,在会话状态下,右上角会有结束会话的入口
setCanQuitQueue(boolean canQuitQueue)是否允许主动退出排队设置是否允许用户主动退出排队,设置该选项后,在排队状态下,右上角会有退出排队的入口。如果用户通过按返回键退出,会给出弹框提示
setQuitQueuePrompt(String quitQueuePrompt)退出排队提示语设置排队状态下,按返回键时给用户的提示语,该选项只有在setCanQuitQueue(boolean) 设置为 true 时才有效
setCanBackPrompt(boolean canBackPrompt)是否允许弹出返回弹框设置是否允许用户退出聊天界面时弹出结束会话弹框
setCanShowEvaluation(boolean canShowEvaluation)是否允许弹出满意度评价用户返回时弹出结束会话弹框时设置是否弹出满意度评价,该选项只有在setCanBackPrompt(boolean)设置为 true 时才有效
sessionLifeCycleListener会话界面退出监听器仅在使用 Fragment 集成时需要处理,如果使用 Activity 集成则无需处理,需要在用户退出排队时给予挽留提示,则需要在宿主 activity 触发 onBackPressed 时调用 ServiceMessageFragment 的 onBackPressed 方法

SessionLifeCycleListener

接口回调函数说明
SessionLifeCycleListener需要实现onLeaveSession方法

代码示例

SessionLifeCycleOptions lifeCycleOptions = new SessionLifeCycleOptions();
lifeCycleOptions.setCanCloseSession(boolean)
        .setCanQuitQueue(boolean)
        .setQuitQueuePrompt(String)
        .setCanBackPrompt(boolean)
        .setCanShowEvaluation(boolean);
source.sessionLifeCycleOptions = lifeCycleOptions;

App 一般在打开客服前按当前入口诉求设置生命周期选项。例如订单售后入口希望允许用户主动结束会话,同时排队时返回要给出挽留提示,可以这样配置:

ConsultSource source = new ConsultSource("order_after_sale", "订单售后", null);

SessionLifeCycleOptions lifeCycleOptions = new SessionLifeCycleOptions();
lifeCycleOptions.setCanCloseSession(true)
        .setCanQuitQueue(true)
        .setQuitQueuePrompt("正在为您接入售后客服,确定退出排队吗?")
        .setCanBackPrompt(true)
        .setCanShowEvaluation(true);
source.sessionLifeCycleOptions = lifeCycleOptions;

Unicorn.openServiceActivity(context, "订单售后", source);

咨询内容弹层

从 Android SDK 11.9.0 开始,App 可以在访客进入会话时展示商品或订单选择弹层。访客点击其中一项后,SDK 会将所选内容转换为商品或订单消息并发送到当前会话;点击底部按钮则直接关闭弹层。

将 ConsultationContentConfig 设置到 ConsultSource.consultationContentConfig 后,再通过标准 Activity 或 Fragment 接口打开会话。该字段为 null,或者配置中没有有效 Tab 时,SDK 不展示弹层。

弹层配置

ConsultationContentConfig 的 setter 均返回当前对象,可以链式调用;每个 setter 都有对应的 getter。

方法参数类型说明
setTitleString设置弹层标题
setBottomButtonTitleString设置底部关闭按钮文案;为空时使用 SDK 默认文案
setTabsList<ConsultationContentTab>设置订单或商品 Tab 列表
setPriceColorInteger设置价格文字颜色,使用 Android ARGB 整数;为空时使用默认颜色
setHeaderBackgroundColorInteger设置弹层头部背景色,使用 Android ARGB 整数;为空时使用白色
setSelectedIndexint设置默认选中的 Tab 下标,从 0 开始;越界时使用第一个有效 Tab

ConsultationContentTab 用于区分订单和商品列表。

方法或常量说明
TYPE_ORDER订单 Tab,值为 1
TYPE_PRODUCT商品 Tab,值为 2
setTitle(String)设置 Tab 标题
setType(int)设置 Tab 类型,只接受 TYPE_ORDER 或 TYPE_PRODUCT
setOrders(List<ConsultationContentOrder>)设置订单列表,仅用于订单 Tab
setProducts(List<ConsultationContentItem>)设置商品列表,仅用于商品 Tab

ConsultationContentOrder 描述订单卡片,ConsultationContentItem 描述订单中的商品或商品 Tab 中的单个商品。

对象方法说明
ConsultationContentOrdersetOrderText(String)设置订单编号等标题文案
ConsultationContentOrdersetTimeText(String)设置订单时间文案
ConsultationContentOrdersetItems(List<ConsultationContentItem>)设置订单中的商品列表
ConsultationContentOrdersetAmountTitle(String)、setAmount(String)设置金额标题和金额
ConsultationContentOrdersetStatusText(String)、setStatusColor(Integer)设置订单状态文案和 ARGB 颜色
ConsultationContentItemsetPictureUrl(String)设置商品图片地址
ConsultationContentItemsetTitle(String)、setSubtitle(String)、setDetail(String)设置商品标题、副标题和详情
ConsultationContentItemsetPrice(String)、setCount(String)设置价格和数量文案
ConsultationContentItemsetUrl(String)设置商品或订单卡片的跳转地址

代码示例

ConsultationContentItem item = new ConsultationContentItem()
        .setPictureUrl("https://example.com/product.png")
        .setTitle("降噪耳机")
        .setSubtitle("云雾白")
        .setDetail("蓝牙 5.4 / 40 小时续航")
        .setPrice("¥459.00")
        .setCount("x1")
        .setUrl("https://example.com/products/1001");

ConsultationContentOrder order = new ConsultationContentOrder()
        .setOrderText("订单编号:202607310001")
        .setTimeText("2026-07-31 10:30")
        .setItems(Collections.singletonList(item))
        .setAmountTitle("应付金额")
        .setAmount("¥459.00")
        .setStatusText("待收货")
        .setStatusColor(Color.parseColor("#FF911F"));

ConsultationContentTab orderTab = new ConsultationContentTab()
        .setTitle("我的订单")
        .setType(ConsultationContentTab.TYPE_ORDER)
        .setOrders(Collections.singletonList(order));

ConsultationContentTab productTab = new ConsultationContentTab()
        .setTitle("商品信息")
        .setType(ConsultationContentTab.TYPE_PRODUCT)
        .setProducts(Collections.singletonList(item));

ConsultationContentConfig config = new ConsultationContentConfig()
        .setTitle("请选择咨询内容")
        .setBottomButtonTitle("其他问题")
        .setTabs(Arrays.asList(orderTab, productTab))
        .setSelectedIndex(0)
        .setPriceColor(Color.parseColor("#FF4D5A"))
        .setHeaderBackgroundColor(Color.WHITE);

ConsultSource source = new ConsultSource("order_list", "订单列表", null);
source.consultationContentConfig = config;
Unicorn.openServiceActivity(context, "在线客服", source);

Fragment 运行期间展示或更新

使用 Fragment 接入时,保留 Unicorn.newServiceFragment() 返回的 ServiceMessageFragment 实例,即可在会话页运行期间调用 showConsultationContent() 展示或更新弹层。会话页尚未显示时,SDK 会保留最近一次有效配置,并在页面恢复后展示;弹层已显示时,重复调用会刷新当前内容。

ConsultSource source = new ConsultSource("order_list", "订单列表", null);
ServiceMessageFragment serviceFragment =
        Unicorn.newServiceFragment("在线客服", source, null);

getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.customer_service_container, serviceFragment)
        .commit();

// 获取到新的订单或商品数据后,展示或更新咨询内容弹层
serviceFragment.showConsultationContent(config);

这篇文档有帮助吗?

目录