Appearance
传客户资料与退出登录
客户在你的 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]开头的提示,列出是哪几个。要在代码里处理的话,实现 AndroidHecongChatListener.onCustomFieldsIgnored(List<String>)或 iOSHecongChatDelegate.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,合从才会认成同一个人:客户列表里一行,档案里能看到他在各渠道的全部对话。
网页那边的做法见网页接入的客户身份。
下一步
- 未读消息与红点 —— 客户不在客服页面时提醒他
- 客户不在 APP 时的消息推送 —— 客户已经切走了怎么通知