映兔小程序
映兔APP
app
上报映兔博主id、微信customer_id
微信客服
记录微信customer_id及其unionid
映兔后端
根据customer_id,将映兔博主id和其unionid做唯一匹配。
APP
微信客服聊天窗口
博主id,设备,操作系统。微信customer_id
{
"CpID": 1589153583062851600,
"Device": "iPhone 13 Pro Max",
"Source": "iOS",
"OSVersion": "16.000000",
"AppVersion": "6.19.0"
}
微信官方服务器

external_userid 就是 customerid unionid就是unionid
![[Pasted image 20240724135745.png]]
{
"errcode": 0,
"errmsg": "ok",
"customer_list": [
{
"external_userid": "wmxxxxxxxxxxxxxxxxxxxxxx",
"nickname": "张三",
"avatar": "http://xxxxx",
"gender": 1,
"unionid": "oxasdaosaosdasdasdasd",
"enter_session_context": {
"scene": "123",
"scene_param": "abc",
"wechat_channels": {
"nickname": "进入会话的视频号名称",
"scene": 1
}
}
}
],
"invalid_external_userid": [
"zhangsan"
]
}
后端 map匹配 customer_id 或者 unionid和博主id
根据customerid,拿到clickid和unionid
默认首页,小二点开就触发。
取用户信息(包含自定义的enter_session_context里面的EnterSessionContext.SceneParam中获取clickid信息)
根据clickid,将其customerid写入wechat_kf_click表
小二在企微点开客服微信
在企微中打开h5,因此h5页面中加载js sdk,可以获取当前接待客户的customerid或者说userid
根据customerid,查到其对应的cp_id,再结合unionid写入cp_user_profile表
问题:若customerid查到了多个cpid?
至此,完成了触发微信客服后,自动进行cp_id和unionid的关联。
客户/博主在app/小程序端点击『联系客服』
调用后端/app/tools/v1/wechat_kf_link接口,后端记录cpid、设备信息、clickid。
同时往EnterSessionContext.SceneParam里面,塞入clickid信息。
具体代码搜
Url: fmt.Sprintf("%s%d", config.GetOtherString(kf_link), id),
获取客服账号链接 - 文档 - 企业微信开发者中心 通过以上,一次性获取后,就写死了。
wechat_kf_link: "https://work.weixin.qq.com/kfid/kfcb49332e0a38f486b?enc_scene=ENCUVjkPnju5h2hkWSBpV49xR&scene_param="
生成clickid,获取博主cpid 写入wechat_kf_click表
映兔小二
博主
边界场景处理
假设博主有2个微信号a和b。 a绑定了映兔账号cp_id = aaa,a的unionid为uuu,发起微信客服请求,我们将aaa绑定至uuu
此时博主用微信号b,又发起了请求。


微信APP
app调用接口: /app/tools/v1/wechat_kf_link
接口里面,存储customid,手机系统等信息