微信客服 - 触发后自动更新博主的unionid
python后端
golang后端

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"
}

微信官方服务器

微信客服 - 小助手.png

获取客户基础信息 - 文档 - 企业微信开发者中心

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,又发起了请求。

wechat_kf_click表结构.png
小程序 - 我的 - 界面.png
1.1 用户发起客服请求/ APP拉起微信客服1.2 同时上报数据到映兔后端2.1 聊天记录等信息上报3.2 获取博主cpid3.1 根据customerid拉取微信unionid