diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java index 37799d13a..6233e6768 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java @@ -24,7 +24,7 @@ public interface WxMpKefuService { /** *
* 获取客服基本信息
- * 详情请见:客服管理
+ * 详情请见:客服管理
* 接口url格式:https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=ACCESS_TOKEN
*
*/
@@ -33,7 +33,7 @@ public interface WxMpKefuService {
/**
*
* 获取在线客服接待信息
- * 详情请见:客服管理
+ * 详情请见:客服管理
* 接口url格式:https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token=ACCESS_TOKEN
*
*/
@@ -42,7 +42,7 @@ public interface WxMpKefuService {
/**
*
* 添加客服账号
- * 详情请见:客服管理
+ * 详情请见:客服管理
* 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN
*
*/
@@ -50,17 +50,26 @@ public interface WxMpKefuService {
/**
*
- * 设置客服信息(更新)
- * 详情请见:客服管理
+ * 设置客服信息(即更新客服信息)
+ * 详情请见:客服管理
* 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/update?access_token=ACCESS_TOKEN
*
*/
boolean kfAccountUpdate(WxMpKfAccountRequest request) throws WxErrorException;
+ /**
+ * + * 设置客服信息(即更新客服信息) + * 详情请见:客服管理 + * 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/inviteworker?access_token=ACCESS_TOKEN + *+ */ + boolean kfAccountInviteWorker(WxMpKfAccountRequest request) throws WxErrorException; + /** *
* 上传客服头像
- * 详情请见:客服管理
+ * 详情请见:客服管理
* 接口url格式:http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
*
*/
@@ -70,7 +79,7 @@ public interface WxMpKefuService {
/**
*
* 删除客服账号
- * 详情请见:客服管理
+ * 详情请见:客服管理
* 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/del?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
*
*/
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java
index 19fdd5088..12eec6c0e 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java
@@ -62,6 +62,14 @@ public class WxMpKefuServiceImpl implements WxMpKefuService {
return true;
}
+ @Override
+ public boolean kfAccountInviteWorker(WxMpKfAccountRequest request) throws WxErrorException {
+ String url = "https://api.weixin.qq.com/customservice/kfaccount/inviteworker";
+ this.wxMpService.execute(new SimplePostRequestExecutor(), url,
+ request.toJson());
+ return true;
+ }
+
@Override
public boolean kfAccountUploadHeadImg(String kfAccount, File imgFile)
throws WxErrorException {
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java
index fb5ac41b1..dabdcb76d 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java
@@ -23,18 +23,12 @@ public class WxMpKfAccountRequest implements Serializable {
*/
@SerializedName("nickname")
private String nickName;
-
+
/**
- * password 客服账号登录密码,格式为密码明文的32位加密MD5值
+ * invite_wx 接收绑定邀请的客服微信号
*/
- @SerializedName("password")
- private String password;
-
- /**
- * rawPassword 客服账号登录密码,明文密码,仅用于辅助操作
- */
- @SerializedName("rawPassword")
- private String rawPassword;
+ @SerializedName("invite_wx")
+ private String inviteWx;
@Override
public String toString() {
@@ -61,31 +55,22 @@ public class WxMpKfAccountRequest implements Serializable {
this.nickName = nickName;
}
- public String getPassword() {
- return this.password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public String getRawPassword() {
- return this.rawPassword;
- }
-
- public void setRawPassword(String rawPassword) {
- this.rawPassword = rawPassword;
- }
-
public static Builder builder() {
return new Builder();
}
+ public String getInviteWx() {
+ return this.inviteWx;
+ }
+
+ public void setInviteWx(String inviteWx) {
+ this.inviteWx = inviteWx;
+ }
+
public static class Builder {
private String kfAccount;
private String nickName;
- private String password;
- private String rawPassword;
+ private String inviteWx;
@SuppressWarnings("hiding")
public Builder kfAccount(String kfAccount) {
@@ -100,23 +85,15 @@ public class WxMpKfAccountRequest implements Serializable {
}
@SuppressWarnings("hiding")
- public Builder password(String password) {
- this.password = password;
- return this;
- }
-
- @SuppressWarnings("hiding")
- public Builder rawPassword(String rawPassword) {
- this.rawPassword = rawPassword;
- this.password(Md5Crypt.md5Crypt(rawPassword.getBytes()));
- return this;
+ public Builder inviteWx(String inviteWx) {
+ this.inviteWx = inviteWx;
+ return this;
}
public Builder from(WxMpKfAccountRequest origin) {
this.kfAccount(origin.kfAccount);
this.nickName(origin.nickName);
- this.password(origin.password);
- this.rawPassword(origin.rawPassword);
+ this.inviteWx(origin.inviteWx);
return this;
}
@@ -124,8 +101,7 @@ public class WxMpKfAccountRequest implements Serializable {
WxMpKfAccountRequest m = new WxMpKfAccountRequest();
m.kfAccount = this.kfAccount;
m.nickName = this.nickName;
- m.password = this.password;
- m.rawPassword = this.rawPassword;
+ m.inviteWx = this.inviteWx;
return m;
}
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java
index 7e9b54251..37154aa4b 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java
@@ -41,18 +41,35 @@ public class WxMpKfInfo implements Serializable {
private String nick;
/**
- * status 客服在线状态 1:pc在线,2:手机在线。若pc和手机同时在线则为 1+2=3
+ * kf_wx 如果客服帐号已绑定了客服人员微信号,则此处显示微信号
+ */
+ @SerializedName("kf_wx")
+ private String wxAccount;
+
+ /**
+ * invite_wx 如果客服帐号尚未绑定微信号,但是已经发起了一个绑定邀请,则此处显示绑定邀请的微信号
+ */
+ @SerializedName("invite_wx")
+ private String inviteWx;
+
+ /**
+ * invite_expire_time 如果客服帐号尚未绑定微信号,但是已经发起过一个绑定邀请,则此处显示为邀请的过期时间,为unix 时间戳
+ */
+ @SerializedName("invite_expire_time")
+ private Long inviteExpireTime;
+
+ /**
+ * invite_status 邀请的状态,有等待确认“waiting”,被拒绝“rejected”,过期“expired”
+ */
+ @SerializedName("invite_status")
+ private String inviteStatus;
+
+ /**
+ * status 客服在线状态,目前为:1、web 在线
*/
@SerializedName("status")
private Integer status;
- /**
- * auto_accept 客服设置的最大自动接入数
- */
- @Expose
- @SerializedName("auto_accept")
- private Integer autoAccept;
-
/**
* accepted_case 客服当前正在接待的会话数
*/
@@ -68,14 +85,6 @@ public class WxMpKfInfo implements Serializable {
this.status = status;
}
- public Integer getAutoAccept() {
- return this.autoAccept;
- }
-
- public void setAutoAccept(Integer autoAccept) {
- this.autoAccept = autoAccept;
- }
-
public Integer getAcceptedCase() {
return this.acceptedCase;
}
@@ -120,4 +129,36 @@ public class WxMpKfInfo implements Serializable {
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
+
+ public String getWxAccount() {
+ return this.wxAccount;
+ }
+
+ public void setWxAccount(String wxAccount) {
+ this.wxAccount = wxAccount;
+ }
+
+ public String getInviteWx() {
+ return this.inviteWx;
+ }
+
+ public void setInviteWx(String inviteWx) {
+ this.inviteWx = inviteWx;
+ }
+
+ public Long getInviteExpireTime() {
+ return this.inviteExpireTime;
+ }
+
+ public void setInviteExpireTime(Long inviteExpireTime) {
+ this.inviteExpireTime = inviteExpireTime;
+ }
+
+ public String getInviteStatus() {
+ return this.inviteStatus;
+ }
+
+ public void setInviteStatus(String inviteStatus) {
+ this.inviteStatus = inviteStatus;
+ }
}
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java
index bc44e9aa5..8007b8759 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java
@@ -60,7 +60,7 @@ public class WxMpKefuServiceImplTest {
@Test(dataProvider = "getKfAccount")
public void testKfAccountAdd(String kfAccount) throws WxErrorException {
WxMpKfAccountRequest request = WxMpKfAccountRequest.builder()
- .kfAccount(kfAccount).nickName("我晕").rawPassword("123").build();
+ .kfAccount(kfAccount).nickName("我晕").build();
Assert.assertTrue(this.wxService.getKefuService().kfAccountAdd(request));
}
@@ -68,10 +68,18 @@ public class WxMpKefuServiceImplTest {
"testKfAccountAdd" }, dataProvider = "getKfAccount")
public void testKfAccountUpdate(String kfAccount) throws WxErrorException {
WxMpKfAccountRequest request = WxMpKfAccountRequest.builder()
- .kfAccount(kfAccount).nickName("我晕").rawPassword("123").build();
+ .kfAccount(kfAccount).nickName("我晕").build();
Assert.assertTrue(this.wxService.getKefuService().kfAccountUpdate(request));
}
+ @Test(dependsOnMethods = {
+ "testKfAccountAdd" }, dataProvider = "getKfAccount")
+ public void testKfAccountInviteWorker(String kfAccount) throws WxErrorException {
+ WxMpKfAccountRequest request = WxMpKfAccountRequest.builder()
+ .kfAccount(kfAccount).inviteWx("www_ucredit_com").build();
+ Assert.assertTrue(this.wxService.getKefuService().kfAccountInviteWorker(request));
+ }
+
@Test(dependsOnMethods = {
"testKfAccountUpdate" }, dataProvider = "getKfAccount")
public void testKfAccountUploadHeadImg(String kfAccount)