Skip to content

在客服链接里带客户资料 ​

你的客户在小程序里点「联系客服」,进来的却只有一个微信昵称——他是不是会员、什么等级、在哪个门店买的,客服一概不知道,只能张嘴问。

在客服链接后面挂一小段业务参数,客户进来时这些信息就一起带过来了,写进他的客户名片:

客服工作台的对话页面,消息流里显示客户带入了资料,右栏对话动态里列出录入了哪些字段

开始之前 ​

  • 已经建好微信客服渠道,见微信客服概述
  • 你能改客服入口所在的代码或后台配置
  • 要传的字段已经在工作台建好了,见下一节

先在工作台建字段 ​

没建过的字段传过来会被直接丢掉,一个字都不留。 所以顺序必然是先建字段、再传,反过来就是白传。

在工作台的 设置 > 客户字段 里把要传的字段建好,完整做法见自定义字段。

建字段时有个 字段标识,就是参数里用的那个英文名,它要和你系统里的叫法对得上。这里差一个字母,资料就录不进去,而且这条路没有任何报错,你只能靠自己验证发现。字段标识建好之后不能再改,动手前先和技术同事对一遍。

有四个字段不用建,直接传就行:name(姓名)、phone(手机号)、email(邮箱)、avatar(头像)。

参数怎么拼 ​

形态是 字段标识=值,多个之间用 & 连接,整串做一次 encodeURIComponent:

member_id=A1234&vip_level=gold

字段标识的格式要求:小写字母开头,只能用小写字母、数字和下划线,最长 64 个字符。member_id、vip_level、store_no 都可以,VipLevel、vip-level 不行。

值里有中文或空格不用额外处理,照上面编码一次即可,合从这边会自动解开。

小程序里这样调 ​

js
wx.openCustomerServiceChat({
  extInfo: {
    url: `${客服链接}&scene_param=${encodeURIComponent('member_id=A1234&vip_level=gold')}`
  },
  corpId: '<企业 ID>',
  success() {}
})

客服链接和企业 ID 从工作台的 小程序 页复制,完整接入步骤见在小程序中接入。

其他入口 ​

公众号菜单、支付凭证、搜一搜这些是把客服链接填进对方后台,同样在链接末尾追加 &scene_param=... 即可。

不过那些后台是否允许链接带额外参数、会不会把它截断,由对方决定。填进去之后先按自己验证扫一次码确认。

客服链接本身一个字都不能改

只能在链接末尾追加 &scene_param=。改动链接里原有的任何字符,或者把参数复制到另一条客服链接上使用,微信都不会回调——客服直接收不到这位客户的消息。这是微信平台的规定,不是合从能放宽的。

128 字节怎么花 ​

scene_param 的内容编码前不能超过 128 字节,这是微信平台定的。

超了是整段丢失,而且没有任何提示

超过上限时,客户照常进入对话,但参数一个字都不会传过来。微信不报错,合从这边也收不到任何痕迹,工作台里因此也不会有「资料没录进来」的提示。

长度要在你自己的代码里先算好。

算的是字节不是字数,一个汉字算 3 个:

参数字节数
member_id=A123415
member_id=A1234&vip_level=gold30
member_id=A1234&vip_level=钻石会员38
{"member_id":"A1234","vip_level":"gold"}41

几条用得上的经验:

  • 实际装得下 3 到 4 个字段,挑客服最需要的传,不要把整个用户档案搬过来
  • 值用英文代号比中文省:gold 是 4 字节,「钻石会员」是 12 字节
  • 不要用 JSON,同样的内容比 键=值 多花三分之一以上,在 128 字节的额度下不划算
  • 头像网址一般 60 到 150 字节,单独一个就可能把额度吃光。要传头像就别传别的,或者先换成短链

什么时候会带进来 ​

客户的微信聊天列表里还没有这个客服会话时,他点链接、扫码或在小程序里点按钮进来,参数才会带过来。

已经和这个客服账号聊过的老客户再进来,参数不会更新。这对正常使用影响不大:他第一次进来时资料就写进名片了,会一直保留。

对话进行中也改不了——参数在客户进入会话的那一刻就定死了。

客服那边看到什么 ​

资料写进客户名片,同时在对话里留下一条记录:消息流里一条灰字,右栏 对话动态 里能看到这次录了哪些字段、来源是入口链接参数。

有两条规矩值得先知道:

  • 以你传来的值为准。客服手动填过的姓名、手机号,客户再带着新值进来会被覆盖,因为你自己的系统才是这些信息的源头。不希望被覆盖的字段就别传。
  • 这次没带不等于清空。某个字段这次没传,名片上原来的值原样保留,不会被抹掉。

同样的资料再带一次不会重复提示,客户来回点几次客服,对话里也不会刷屏。

自己验证有没有生效 ​

这条路是单向的:客户点进来,你那边收不到任何回执。字段标识拼错一个字母,你不会收到报错,只会觉得功能没生效。对话动态就是你唯一的调试渠道。

测试前先在微信里删掉这个客服会话

微信聊天列表里已经有这个客服会话时,再点链接进去不会传参数,也不会有任何报错。每次改完参数重新测,都要先长按会话 → 删除该聊天,再重新扫码或点链接。

步骤:

  1. 改完代码后,扫码或点链接进入客服对话。
  2. 发一句话。 不说话不会建立对话,也就没有地方显示结果,参数会先存着。扫码之后隔太久才开口的,那次带的参数就不再使用,自测时扫完码当场发一句话即可。
  3. 在工作台打开这通对话,右栏切到 对话动态,看 流转轨迹 里的最后一条。

三种结果:

全部录入成功,就是本页开头那张图的样子:消息流里一条灰字,右栏列出录进去的字段。

有字段没录进去,右栏逐条列出是哪个字段、什么原因。

对话动态里显示已写入一项、另有一项未录入,并列出未录入的字段与原因

一个都没录进去,消息流里显示「客户资料未能录入(配置有误)」。

消息流显示客户资料未能录入,对话动态里逐条列出两个字段各自的失败原因

失败原因只有两种,对照着改即可:

  • 未在「客户字段」中创建或未启用:这个字段标识工作台里没有,多半是拼错了,也可能是字段被停用了
  • 格式不正确:这一段不符合 字段标识=值 的写法,或者字段标识用了大写字母、连字符这类不允许的字符。界面上会把你拼的那一段原样显示出来

有错误时每次都会提示,方便你反复改、反复测。

建议从一个短字段开始(比如 member_id=test),确认收得到,再逐个往上加。这样撞到 128 字节上限时,你能一眼看出是加哪个字段之后没的。

入口参数不做身份识别 ​

同一个人在你的网站和微信客服里各咨询一次,就算两边传的是同一个会员号,在工作台里也是两位客户,聊天记录不会合并。

这是出于账号安全的考虑:入口参数是明文挂在链接上的,客户自己看得见、也改得动。如果拿它去反查「这个会员在别处的记录」,任何人改一下别人的会员号点进来,就能看到别人的聊天内容。所以这串参数只用于展示资料,不作为客户身份识别的依据。

出于同样的原因,不要传身份证号、银行卡号、密码这类信息。

下一步 ​