洛塔服务号回复011获取代码。
功能说明腾讯客服管理这部分接口文档比较恶心,分成了两个,分别是客服消息和PC客服能力,写的接口名称是一样的,但请求参数不同,同时字段限制有的也不写。经过详细对比,客服消息这个感觉就是旧版本的,现在管理后台已经看不到了,不明白为什么无效接口还不删掉或者标注无效。 所以,客服管理部分可以直接查看PC客服能力中的客服管理。
要使用客服管理,需要登录公众号后台,先进行开通。
- 公众号后台设置ip白名单 位置:设置与开发–>基本配置,右侧IP白名单
- 给公众号设置微信号 基本信息中设置。
除了使用接口,也可以手动进行添加。 第一次进入客服管理的时候,显示的可添加客服数量会显示0,实际上是100,算是一个bug,这时候可以使用中间区域的“添加客服”文字进行添加,完成后就会变成可继续添加99个了。 这个页面也可以验证接口执行情况。比如调用添加客服账号以后,刷新下这个页面,就会发现多出来一个账号了。
添加客服账号需要两个参数。
- 昵称:不超过16个字即可
- 账号:这个比较特殊,格式必须是前缀@公众号微信号 准备工作中写了必须给公众号设置微信号,比如公众号的微信号是lootaayun,账号使用lootaa,那么参数就要传递lootaa@lootaayun
// 先获取access_token,这部分正式环境需要配置定时获取,每天2000次调用限制
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APPID + "&secret=" + SECRET;
String result = Jsoup.connect(url).ignoreContentType(true).method(Method.GET).execute().body();
System.out.println(result);
String accessToken = JSON.parseObject(result).getString("access_token");
// 添加客服账号
url = "https://api.weixin.qq.com/customservice/kfaccount/add?access_token=" + accessToken;
JSONObject param = new JSONObject();
param.put("kf_account", "lootaa@lootaayun"); //完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符
param.put("nickname", "洛塔"); //客服昵称,最长16个字
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.requestBody(param.toString()).execute().body();
System.out.println(result);
邀请绑定客服帐号
接口逻辑和直接使用后台还是有点区别的。 直接使用后台,不上传头像就不让进行下一步,不能邀请微信绑定。而这个接口可以在没有头像的情况下进行要求,还能正常邀请成功。
// 邀请绑定客服帐号
url = "https://api.weixin.qq.com/customservice/kfaccount/inviteworker?access_token=" + accessToken;
param = new JSONObject();
param.put("kf_account", "lootaa@lootaayun"); //完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符
param.put("invite_wx", "fymod1988"); //接收绑定邀请的客服微信号
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.requestBody(param.toString()).execute().body();
System.out.println(result);
设置客服信息
相当于变更客服昵称(不管是否绑定了微信,都可以变更) 这部分执行完成后,刷新下管理后台客服网页,会发现昵称变成了代码设置的。
// 设置客服信息:相当于变更客服昵称(不管是否绑定了微信,都可以变更)
url = "https://api.weixin.qq.com/customservice/kfaccount/update?access_token=" + accessToken;
param = new JSONObject();
param.put("kf_account", "lootaa@lootaayun"); //完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符
param.put("nickname", "洛塔2022"); //客服昵称,最长16个字
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.requestBody(param.toString()).execute().body();
System.out.println(result);
上传客服头像
只要是图片格式就行,使用Jsoup的话,转化为输入流直接请求。 请求参数需要将kf_account拼接到url中,而不是requestBody。
// 上传客服头像
url = "https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?&kf_account=lootaa@lootaayun&access_token=" + accessToken;
File file = new File("/Users/lootaa/Desktop/64.jpeg");
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.data("media", file.getName(), new FileInputStream(file))
.execute().body();
System.out.println(result);
获取客服基本信息
这里获取到的客服基本信息除了包括头像、昵称等,也包括邀请状态,即绑定的微信是否同意。
// 获取客服基本信息
url = "https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=" + accessToken;
result = Jsoup.connect(url).ignoreContentType(true).method(Method.GET).execute().body();
System.out.println(result);
删除客服账号
请求参数需要将kf_account拼接到url中,而不是requestBody。
// 删除客服帐号
url = "https://api.weixin.qq.com/customservice/kfaccount/del?kf_account=lootaa@lootaayun&access_token=" + accessToken;
result = Jsoup.connect(url).ignoreContentType(true).method(Method.GET).execute().body();
System.out.println(result);
完整代码
package com.lootaa.wechat;
import java.io.File;
import java.io.FileInputStream;
import org.jsoup.Connection.Method;
import org.jsoup.Jsoup;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
/**
* 公众号客服账号管理
* 前置条件:公众号后台设置ip白名单
*/
public class Test011 {
public static final String APPID = "wx276049d6a7551dca";
public static final String SECRET = "cbe109fdf6f399bd72ed3a4afafa21b1";
/**
* 完整项目源码可关注公众号"lootaayun"(洛塔),回复010获取
*/
public static void main(String[] args) throws Exception {
// 先获取access_token,这部分正式环境需要配置定时获取,每天2000次调用限制
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APPID + "&secret=" + SECRET;
String result = Jsoup.connect(url).ignoreContentType(true).method(Method.GET).execute().body();
System.out.println(result);
String accessToken = JSON.parseObject(result).getString("access_token");
// 添加客服账号
url = "https://api.weixin.qq.com/customservice/kfaccount/add?access_token=" + accessToken;
JSONObject param = new JSONObject();
param.put("kf_account", "lootaa@lootaayun"); //完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符
param.put("nickname", "洛塔"); //客服昵称,最长16个字
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.requestBody(param.toString()).execute().body();
System.out.println(result);
// 邀请绑定客服帐号
url = "https://api.weixin.qq.com/customservice/kfaccount/inviteworker?access_token=" + accessToken;
param = new JSONObject();
param.put("kf_account", "lootaa@lootaayun"); //完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符
param.put("invite_wx", "fymod1988"); //接收绑定邀请的客服微信号
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.requestBody(param.toString()).execute().body();
System.out.println(result);
// 设置客服信息:相当于变更客服昵称(不管是否绑定了微信,都可以变更)
url = "https://api.weixin.qq.com/customservice/kfaccount/update?access_token=" + accessToken;
param = new JSONObject();
param.put("kf_account", "lootaa@lootaayun"); //完整客服帐号,格式为:帐号前缀@公众号微信号,帐号前缀最多10个字符,必须是英文、数字字符或者下划线,后缀为公众号微信号,长度不超过30个字符
param.put("nickname", "洛塔2022"); //客服昵称,最长16个字
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.requestBody(param.toString()).execute().body();
System.out.println(result);
// 上传客服头像
url = "https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?&kf_account=lootaa@lootaayun&access_token=" + accessToken;
File file = new File("/Users/lootaa/Desktop/64.jpeg");
result = Jsoup.connect(url).ignoreContentType(true).method(Method.POST)
.data("media", file.getName(), new FileInputStream(file))
.execute().body();
System.out.println(result);
// 获取客服基本信息
url = "https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=" + accessToken;
result = Jsoup.connect(url).ignoreContentType(true).method(Method.GET).execute().body();
System.out.println(result);
// 删除客服帐号
url = "https://api.weixin.qq.com/customservice/kfaccount/del?kf_account=lootaa@lootaayun&access_token=" + accessToken;
result = Jsoup.connect(url).ignoreContentType(true).method(Method.GET).execute().body();
System.out.println(result);
}
}