欢迎浏览乐竟·(中国)体育

乐竟·(中国)体育智能科技股份有限公司官网

11年专注提供磷化工原料批发

华南地区销量领前的三聚磷酸钠专业代理商

全国免费咨询热线:

400-123-4657

当前位置: 首页 > 新闻资讯

PHP实现微信公众号多客服功能,含获取凭证与添加账号代码

文章作者:小编 人气:发表时间:2026-03-21 01:50:43

做公众号的企业,最头疼的便是没法及时回复用户消息,微信官方所提供的多客服功能,恰好能够解决这个问题,使得企业能够如同淘宝客服那般与粉丝进行一对一聊天,以PHP接入此功能,实际上并没有想象的那般复杂,其核心在于搞定接口凭证、客服账号以及消息发送这三个环节。

准备阶段需要哪些东西

若要接入多客服功能,公众号一定要率先经由微信认证,服务号才会拥有此权限。你得登录微信公众平台,于开发设置当中找寻开发者ID,即AppID与AppSecret,这两个参数等同于调用接口的账号以及密码。此外还需配置服务器地址,将公众号的消息推送至你自身的PHP程序里,如此方可接收用户发来的内容。

获取接口调用凭证

首先,调用所有微信接口所必须的接口凭证access_token,每隔7200秒就得重新去获取一回。其次,你能够借助PHP的curl扩展朝着微信接口发送请求,将AppID以及AppSecret传入其中,之后接口会返回一串JSON数据,而这串数据里就涵盖了access_token。然后,在实际进行开发时得把这个token存放到缓存里,比如说使用Redis或者数据库来存放,当快要临近有效期的时候再去刷新,以此来避免因频繁请求微信服务器而致使被限制。

添加客服账号的操作

客服账号并非自动生成,而是需手动予以添加。微信接口具备两种方式,其一为借助网页版的客服管理后台径直添加,其二则是运用PHP代码调用接口予以添加。调用接口之际,要将客服账号的微信号、昵称该等信息打包成JSON格式往后POST过去。留意每个客服账号的格式是“公众号原始ID@微信号”,编写代码之时很容易遗漏此格式要求。

发送客服消息的流程

在用户向公众号发送消息之后,微信服务器会将该消息推送至你所配置的地址之上。你的PHP代码接收到此消息,从中解析出用户的openid,继之便能够调用客服消息接口进行回复。客服消息支持文本、图片、图文链接等多种格式,发送之时需把内容与openid组装妥当,携带access_token请求接口即可。需留意发送频率限制,同一用户在一分钟内所能收到的客服消息数量最多为20条。

消息转发与分配逻辑

多客服的关键要点在于,将用户所发送的消息,自动分配至处于空闲状态的客服那里。要达成这样的一种逻辑,你必须在本地维持一张涵盖客服在线状态的表格。当有新消息抵达的时候,首先得判定这个用户先前是否存在已绑定的客服,要是有那么就直接转接给他;要是没有那就去寻觅当前接待量最少或者在线时长最长的客服,接着借助接口将会话转接过去。而转接这一动作,需要调用微信的客户消息转发接口,再把客服账号当作参数传递进去。

实际开发中的注意事项

 $kfAccount,
    "nickname" => $nickname,
    "password" => md5($password)
];
$options = [
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/json',
        'content' => json_encode($data)
    ]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);
if ($result['errcode'] == 0) {
    echo "添加客服账号成功";
} else {
    echo "添加客服账号失败,错误码:" . $result['errcode'] . ",错误信息:" . $result['errmsg'];
}
?>

于实际项目里,得妥善处理好些细节,其一为消息的加密解密,设若启用了安全模式那么接收到的消息便是密文,此需借助官方所供应的加解密库来处理;其二是接口调用失败之际要有重试机制,毕竟网络波动实属常见;其三是客服上下线状态同步,要是客服在PC端退出了,那你的系统理应及时更新状态,以防将消息分配给不在线的客服。

接入多客服功能并非难事,然而,要构建良好稳定的客服分配机制,尚需依据自身业务场景进行多次测试。于开发进程中,你是否遭遇过客服消息发送失败,或者会话转接未成功的状况呢?欢迎于评论区分享你的经验。

 $openId,
    "msgtype" => $messageType,
    $messageType => [
        "content" => $content
    ]
];
$options = [
    'http' => [
        'method' => 'POST',
        'header' => 'Content-Type: application/json',
        'content' => json_encode($data)
    ]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);
if ($result['errcode'] == 0) {
    echo "发送客服消息成功";
} else {
    echo "发送客服消息失败,错误码:" . $result['errcode'] . ",错误信息:" . $result['errmsg'];
}
?>