小程序客服怎么设置:用微信客服还是对话链接
作者:沈知|更新于 2026-10-15
小程序做好了,客户想问点事,翻遍页面找不到能说话的地方,只好关掉走人。小程序客服设置这件事,我的判断是:手上有企业微信,就先把客服入口接到微信客服,走免开发授权,一行代码都不用改,坐席回过去,客户在微信里会收到提醒;只有必须让客户待在小程序里聊的时候,才去建一个页面用 web-view 嵌对话链接,这条路要你有一个备案过的自有域名,小程序也得是企业主体。
选哪条,看的是客户聊天时人在哪、走开以后答复能不能追上他。至于消息,两条路最后都落到同一个客服工作台,这一点不用纠结。
小程序客服设置,先定客户要不要待在小程序里
走微信客服,客户点了小程序里的客服入口,会被带到微信客服的聊天界面,对话发生在微信里。坐席在工作台答复后,微信会给客户推一条消息提醒,他中途离开也不会错过。
嵌对话链接,则要在小程序里另开一页,靠 web-view 组件把对话页面装进去。客户眼前是整屏的聊天窗口,顶上还是小程序自己的导航栏,从头到尾没离开小程序。
| 微信客服 | 嵌入对话链接 | |
|---|---|---|
| 聊天发生在 | 微信客服的对话界面 | 小程序内部 |
| 客户走开后 | 微信推消息提醒 | 不提醒,他再进这一页才看得到 |
| 开发量 | 能做到零开发 | 新建一页放 web-view |
| 必备条件 | 企业微信 | 自有域名,企业主体小程序 |
| 对话页能力 | 受微信规则约束 | 询前表单、留言表单、商品订单选择器等 |
我的建议按这个次序:
- 已经在用企业微信,目标只是让客户找得到人、答复送得到,接微信客服。
- 业务上要求客户别离开小程序,或者你用得上表单、商品订单选择器,嵌对话链接。
- 企业微信没有,能传文件的备案域名也没有,那先把其中一个办下来,再谈设置。
两条路并不互斥,可以都建,分别挂在不同页面上。微信客服的入口除了小程序还能挂在哪,参见微信客服接入第三方客服系统的整体说明。
有企业微信的,先接微信客服
理由在于答复能追到人。客户提完问题顺手关了小程序,坐席过一阵才回,这条答复照样作为微信消息送到他手里。对话链接没有这个能力,人一离开页面,答复只能搁在那里等他回来。
具体到合从客服,它的渠道类型里没有单列「小程序」,小程序算作微信客服或对话链接的一个投放位置。所以这里先在工作台新建一个微信客服渠道,由企业微信超级管理员授权一次。之后有两种接法,按你要不要改代码来挑。
不打算改代码,用免开发授权
它借用小程序本来就有的客服入口。已认证的小程序可以,个人类型的小程序也可以,小程序和企业微信的主体也不必一致。前提只有一条:这个小程序开通过小程序客服;从没开通过,就只能看下一种接法。
- 进企业微信管理后台,打开「应用管理」>「微信客服」。
- 「接入场景」一栏点「在小程序中接入」,勾上这个渠道绑定的那个客服账号。
- 页面会提示需要小程序管理员授权,请对方照做。
设置生效后,客户从原来的客服入口发来消息,先收到一张客服名片,点开名片就到了微信客服的对话里。小游戏和微信小商店目前还用不了这种接法。
想在商品页放按钮,再考虑开发接入
如果你要的是把「联系客服」按钮摆在商品页、订单页上,得走开发接入。它的门槛高,下面三条缺一不可:企业微信起码做过企业验证;小程序不是个人主体;两者属于同一主体。
去工作台渠道设置打开刚建的微信客服渠道,左边点「小程序」,页面里能找到一条小程序专用的客服链接,再往下是企业 ID。

把企业 ID 复制下来,填进小程序管理后台「功能」>「客服」>「微信客服」。

回到工作台这一页,把客服链接也复制下来。
给按钮写点击事件,调用
wx.openCustomerServiceChat,传入客服链接和企业 ID。
wx.openCustomerServiceChat({
extInfo: { url: '<客服链接>' },
corpId: '<企业 ID>'
})

链接请用小程序专用的那条。客户经由它进来,工作台会标出来源是「小程序」,你还能给它单配一个接待组。默认客服链接同样能打开对话,代价是看不出客户从哪个入口来。参数说明和兼容写法,文档站的微信客服:在小程序中接入列得更全。
要客户留在小程序里,对话页得放在你自己的域名上
先提醒一句:工作台里现成的默认链接,别直接塞进 web-view,到了真机上是打不开的。微信规定 web-view 只能加载业务域名列表里的地址,而登记业务域名时,要把微信给的校验文件放到该域名根目录;默认链接用的不是你的域名,校验文件无处可放。因此顺序是先让对话页面在你的域名下跑起来,再到小程序后台登记域名。
打开对话链接渠道的「链接与二维码」,在「使用自己的域名」处下载页面文件
chat.html,让负责网站的同事传到你的域名下。上传后先用浏览器访问https://你的域名/chat.html,确认能聊起来再做下一步。
在小程序管理后台的开发设置里,把这个域名添加到「业务域名」,照提示上传校验文件。域名须支持 HTTPS 且已经备案;每个小程序的业务域名上限是 20 个。
新增一个页面,wxml 里写一行
<web-view src="https://你的域名/chat.html"></web-view>,别的都不用放。再从首页或个人中心加个入口跳到这页。地址后面附上客户身份,例如
?u=会员ID&n=称呼。u的值一致,这个人不管在小程序里还是在浏览器里打开,工作台都把他当作同一位客户,以前的对话也续得上。
第 1 步和第 2 步都要往你的域名上放文件,可以一并交给网站运维处理。每一步的细节在文档站对话链接:微信小程序;对话链接适合放在哪些场景,参见对话链接的使用场景。
遇到下面三种情况,我不建议嵌对话链接
- 个人主体的小程序。它没法配业务域名,嵌不进去;开发接入也把个人主体挡在门外。留给你的只有微信客服的免开发授权,而且要求小程序开通过小程序客服。
- 你希望客户离开后答复还能送到。嵌入的对话页做不到,客户关了页面就收不到任何提醒,只能等他下回进来。
- 你想要 App 那种半屏弹起的客服窗口。两条路都给不了:
web-view占满整页,一页只许放一个,还会压住页面上别的组件,返回按钮和悬浮图标只能挪到跳转之前那一页;微信客服则是直接进微信的对话界面。能接受整页聊天,再选对话链接。
设好了收不到消息,先查授权和调用方式
- 用了免开发授权,工作台却一条消息都没有:去小程序后台看「在客服工作台收发消息」这个开关,它开着,消息就被小程序客服截留了,请管理员关闭。
- 客户发一句,自动回复回来好几条:说明小程序客服还授权给了其他服务商,到「帐号详情」>「授权管理」里撤掉不用的那家。
- 开发接入的按钮按下去没动静:
wx.openCustomerServiceChat必须由用户点击触发,写在页面加载里自动执行会失败。它还要求基础库 2.19.0 及以上,不支持 Promise 写法,也不能在小程序插件里调用。 - 接待到一定人数就接不进来:企业微信未认证时,累计只能接待 100 位客户;已验证且未过期,每天 100 位;已认证没有上限。这条限制来自企业微信,跟你在合从买了多少坐席没关系。上线前到「我的企业」确认一下认证状态。
- 答复发不出去:微信客服只允许在客户发来消息起 48 小时内回复,最多 5 条。超过了,工作台会在那条消息上注明原因。
常见问题
支付宝、抖音的小程序也能这么接吗?
可以,但只能走对话链接。做法和微信相同:把自有域名报到平台白名单,再用 web-view 打开对话页。区别在配置的地方:支付宝在「H5 域名配置」,改完要重新打包提审;抖音在「webview 域名」。微信客服只能用在微信小程序上。
开发者工具里好好的,真机一打开就白屏?
多半是业务域名没配对。依次排查:
- 你写进
web-view的域名,在小程序后台业务域名列表里有没有。 - 在浏览器里访问校验文件的地址,看它是否还在。网站改版时被删掉,或者被重写规则转到别处,校验都会失效。
- 浏览器直接访问
https://你的域名/chat.html,看对话页本身能不能聊。
同一位客户在小程序和网站上都来过,会算成两个人吗?
用对话链接、并且两边地址带的是同一个客户 ID(参数 u)时,算一个人。微信客服不做这种跨渠道的识别。
合从客服有 7 天免费体验,到 https://aihecong.com 注册后就能建渠道。我的建议是先只接微信客服,拿自己的微信打开小程序、点客服发一句话,工作台收到就说明通了;等真有客户必须留在小程序里、或要用上表单的时候,再补对话链接。