文章目录

微信公众平台官方wiki是做微信开发必须要看的,所有公开的开发接口、数据结构等都在里边有写。

但是就这么一个重要的wiki,却总是搞点乌龙。今天就说说客服接口。

官方前一段开放了客服接口,公众号可以直接通过接口与微信用户进行客服沟通。公众号通过客服消息接口,以不同客服身份回复用户的信息,使用6.0.2版及以上版本的微信用户可以看到对应的客服头像和昵称。

今天有个微信开发的朋友和我聊天时,说到他要反馈一个客服接口的问题。就是使用这个客服消息接口发送给用户的信息,用户可以收到,但只显示灰色头像,没有客服昵称。我就也去测试了一下,发现也是同样的情况。

测试代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
include "wechat.class.php";
include 'errCode.php';
$options = array(
'appsecret'=>'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',//填写高级调用功能的密钥
'appid'=>'wxe66xxxxxxxxxxxxx', //填写高级调用功能的appid
);
$weObj = new Wechat($options);
$weObj->checkAuth();
$data = array(
"touser"=>'okDMTt9Vny9h9H_9E76tScP-mTNI',
'msgtype'=>"text",
'text'=>array(
"content"=>time()
),
'customservice'=>array(
'kfaccount'=>'001@pdstcgp'
)
);
$s=$weObj->sendCustomMessage($data);
if (!$s) {
echo '错误码:'.$weObj->errCode;
echo ' 错误原因:'.ErrCode::getErrText($weObj->errCode);
die;
}
echo "<br><br>消息发送成功";
?>

官方的客服消息接口内容如下:

客服接口-发消息
接口调用请求说明

http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN

发送文本消息类型 所需的JSON数据包如下:

1
2
3
4
5
6
7
8
9
10
11
12
{
"touser":"OPENID",
"msgtype":"text",
"text":
{
"content":"Hello World"
},
"customservice":
{
"kfaccount": "test1@kftest"
}
}

最后反复测试大半天,又登录多客服PC端测试,多客服的就正常,但接口的就是不行。

如果改掉customservice字段,用户收到消息但是显示公众号的logo,而如果有customservice字段就认为是客服账号的,但不显示头像和昵称,可以判断为未能找到对应的客服账号,所以没能显示。按说官方wiki都是这样标的了,完全和官方标的结构都一致还不行,或许是官方接口还未完善?

本来都要放弃,等几天看看官方或许会维护,之后可能就好用了。

突然想到是不是kfaccount这个字段有问题,就往页面上边翻了翻,这一翻就囧了。。。

添加客服帐号
开发者可以通过本接口为公众号添加客服账号,每个公众号最多添加10个客服账号。该接口调用请求如下:

http请求方式: POST
https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN

POST数据示例如下:

1
2
3
4
5
{
"kf_account" : "test1@test",
"nickname" : "客服1",
"password" : "pswmd5",
}

看出什么没有?

发送客服消息接口里用的字段名是kfaccount 而添加客服接口的字段名是kf_account ,少了一个下划线!

把代码里改成用kf_account作为字段名,进行测试,OK了。。

1
2
3
'customservice'=>array(
'kf_account'=>'001@pdstcgp'
)

是不是满满的想吐槽?官方wiki上这种事情其实很多的,遇到按官方wiki行不通的,结合上下文好好想想、猜猜,或许就是因为一个逗比的符号问题造成的。

文章目录