Skip to content

传客户资料与退出登录 ​

客户在你的 APP 里已经登录了,客服不该还要问一句「请问怎么称呼」。

这是什么 ​

调一次 identify,把这位客户在你系统里的会员 ID 和资料交给合从。客服接到对话时,右侧的客户资料里直接显示他的昵称、手机号,以及你传的会员等级、订单号这类业务字段。

同一个会员 ID 在不同设备上登录,历史对话跟着人走,换手机也能看到之前问过什么。

什么时候调 ​

登录成功那一刻就可以调,不用等客户点开客服。 SDK 会记住这份身份,客服页面打开时自动带上。

kotlin
// Android
val profile = HecongProfile().apply {
    name = "张三"
    phone = "13800000000"
}
HecongChat.identify("会员ID", profile)
swift
// iOS
let profile = HecongProfile()
profile.name = "张三"
profile.phone = "13800000000"
HecongChat.shared.identify(userId: "会员ID", profile: profile)

HecongProfile 的四个字段都是公开属性,Java 和 Objective-C 里直接赋值即可,不用 setter。

客户在 APP 里改了昵称或手机号,再调一次 identify,传什么覆盖什么,没传的字段保持原样。绑身份和写资料是同一个方法,不需要第二个。

APP 版本号、系统版本、机型这类每次登录都可能变的字段,直接放在登录时那次 identify 里即可,每次登录都会以最新值覆盖。

可以传哪些资料 ​

profile 里有四个字段,都是可选的,不填的不会传:

字段说明
name昵称,客服在对话列表和客户资料里看到的名字
avatar头像地址,必须是 https:// 开头,长度不超过 500 字符
phone手机号
email邮箱

头像用 http:// 会被浏览器的混合内容策略拦掉,传了也显示不出来。

传你自己的业务字段 ​

会员等级、累计消费、最近订单号这类字段,通过第三个参数 data 传:

kotlin
val data = JSONObject().apply {
    put("member_level", "黄金会员")
    put("order_count", 12)
}
HecongChat.identify("会员ID", profile, data)
swift
HecongChat.shared.identify(
    userId: "会员ID",
    profile: profile,
    data: ["member_level": "黄金会员", "order_count": 12]
)

三条约束:

  • 键名必须是工作台里建好的字段标识。在工作台的 设置 > 客户字段 里新建字段,填的 字段标识 就是这里的键名:小写字母开头,只能用小写字母、数字和下划线,最长 64 个字符,建好之后不能改。建法见自定义字段。没建过的键名会被忽略,客服那边看不到。

    被忽略的字段名 SDK 会告诉你:Android 在 logcat 里打一条警告(标签 HecongChat),iOS 在 Xcode 控制台打一行 [HecongChat] 开头的提示,列出是哪几个。要在代码里处理的话,实现 Android HecongChatListener.onCustomFieldsIgnored(List<String>) 或 iOS HecongChatDelegate.hecongChatDidIgnoreCustomFields(_:)。

    这个提示要等客户打开客服页之后才会出现:字段校验发生在聊天页那一侧,登录时调 identify 只是先记下来。所以别在登录那一刻等它,也别因为登录时没看到就以为功能没生效。

  • 字段名不超过 64 个字符。

  • 值只能是字符串、数字或布尔值。传嵌套的对象或数组会被拒绝。

退出登录必须解绑 ​

客户在 APP 里退出登录时,调一次 resetUser:

kotlin
HecongChat.resetUser()
swift
HecongChat.shared.resetUser()

不调会让下一个人看到上一个人的聊天记录

同一台设备上,A 退出、B 登录,如果没有解绑,SDK 仍认为坐在这台设备前的是 A。B 点开客服会看到 A 和客服的全部历史对话,B 发的消息也会记在 A 的客户档案里。

家庭共用设备、门店演示机、二手手机上都会真实发生。把 resetUser 接进退出登录流程,和清理你自己的登录态放在一起。

resetUser 会同时清掉会员 ID 和之前传的全部资料。之后进来的客户按新访客处理。

退出登录时客服页面通常并没有开着,这不影响:解绑会先记下来,客户下次打开客服时生效,未读红点也会同时清零。

没登录的客户怎么算 ​

客户没登录就来咨询,合从会给他一个匿名标识,同一台设备上的对话能接续。他后来登录了,你再调 identify,这次的对话会归到会员名下。

跨渠道认人 ​

同一个人从 APP 和你的网站分别来咨询,默认算两位客户,各自独立。在两边传同一个会员 ID,合从才会认成同一个人:客户列表里一行,档案里能看到他在各渠道的全部对话。

网页那边的做法见网页接入的客户身份。

下一步 ​