Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -291,4 +291,81 @@ WxCpBaseResp upgradeGroupchatService(String openKfid, String externalUserId,
*/
WxCpBaseResp cancelUpgradeService(String openKfid, String externalUserId)
throws WxErrorException;

/**
* 添加知识库分组。
*
* @param group 分组信息
* @return 新增结果,包含分组 ID
* @throws WxErrorException 异常
*/
WxCpKfKnowledgeGroupAddResp addKnowledgeGroup(WxCpKfKnowledgeGroup group) throws WxErrorException;

/**
* 删除知识库分组。
*
* @param groupId 分组 ID
* @return 接口返回结果
* @throws WxErrorException 异常
*/
WxCpBaseResp delKnowledgeGroup(String groupId) throws WxErrorException;

/**
* 修改知识库分组。
*
* @param group 分组信息,必须包含分组 ID 和名称
* @return 接口返回结果
* @throws WxErrorException 异常
*/
WxCpBaseResp modKnowledgeGroup(WxCpKfKnowledgeGroup group) throws WxErrorException;

/**
* 分页获取知识库分组。
*
* @param cursor 分页游标,可为空
* @param limit 每页数量,可为空
* @param groupId 指定分组 ID,可为空
* @return 分组列表
* @throws WxErrorException 异常
*/
WxCpKfKnowledgeGroupListResp listKnowledgeGroup(String cursor, Integer limit, String groupId) throws WxErrorException;

/**
* 添加知识库问答。
*
* @param intent 问答信息
* @return 新增结果,包含问答 ID
* @throws WxErrorException 异常
*/
WxCpKfKnowledgeIntentAddResp addKnowledgeIntent(WxCpKfKnowledgeIntent intent) throws WxErrorException;

/**
* 删除知识库问答。
*
* @param intentId 问答 ID
* @return 接口返回结果
* @throws WxErrorException 异常
*/
WxCpBaseResp delKnowledgeIntent(String intentId) throws WxErrorException;

/**
* 修改知识库问答。
*
* @param intent 问答信息,必须包含问答 ID
* @return 接口返回结果
* @throws WxErrorException 异常
*/
WxCpBaseResp modKnowledgeIntent(WxCpKfKnowledgeIntent intent) throws WxErrorException;

/**
* 分页获取知识库问答。
*
* @param cursor 分页游标,可为空
* @param limit 每页数量,可为空
* @param groupId 指定分组 ID,可为空
* @param intentId 指定问答 ID,可为空
* @return 问答列表
* @throws WxErrorException 异常
*/
WxCpKfKnowledgeIntentListResp listKnowledgeIntent(String cursor, Integer limit, String groupId, String intentId) throws WxErrorException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -317,4 +317,81 @@ public WxCpKfGetServicerStatisticResp getServicerStatistic(WxCpKfGetServicerStat
return WxCpKfGetServicerStatisticResp.fromJson(responseContent);
}

@Override
public WxCpKfKnowledgeGroupAddResp addKnowledgeGroup(WxCpKfKnowledgeGroup group) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(KNOWLEDGE_ADD_GROUP);
String responseContent = cpService.post(url, GSON.toJson(group));
return WxCpKfKnowledgeGroupAddResp.fromJson(responseContent);
}

@Override
public WxCpBaseResp delKnowledgeGroup(String groupId) throws WxErrorException {
return knowledgeBaseResp(KNOWLEDGE_DEL_GROUP, "group_id", groupId);
}

@Override
public WxCpBaseResp modKnowledgeGroup(WxCpKfKnowledgeGroup group) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(KNOWLEDGE_MOD_GROUP);
String responseContent = cpService.post(url, GSON.toJson(group));
return WxCpBaseResp.fromJson(responseContent);
}

@Override
public WxCpKfKnowledgeGroupListResp listKnowledgeGroup(String cursor, Integer limit, String groupId) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(KNOWLEDGE_LIST_GROUP);
String responseContent = cpService.post(url, GSON.toJson(listKnowledgeJson(cursor, limit, groupId, null)));
return WxCpKfKnowledgeGroupListResp.fromJson(responseContent);
}

@Override
public WxCpKfKnowledgeIntentAddResp addKnowledgeIntent(WxCpKfKnowledgeIntent intent) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(KNOWLEDGE_ADD_INTENT);
String responseContent = cpService.post(url, GSON.toJson(intent));
return WxCpKfKnowledgeIntentAddResp.fromJson(responseContent);
}

@Override
public WxCpBaseResp delKnowledgeIntent(String intentId) throws WxErrorException {
return knowledgeBaseResp(KNOWLEDGE_DEL_INTENT, "intent_id", intentId);
}

@Override
public WxCpBaseResp modKnowledgeIntent(WxCpKfKnowledgeIntent intent) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(KNOWLEDGE_MOD_INTENT);
String responseContent = cpService.post(url, GSON.toJson(intent));
return WxCpBaseResp.fromJson(responseContent);
}

@Override
public WxCpKfKnowledgeIntentListResp listKnowledgeIntent(String cursor, Integer limit, String groupId, String intentId) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(KNOWLEDGE_LIST_INTENT);
String responseContent = cpService.post(url, GSON.toJson(listKnowledgeJson(cursor, limit, groupId, intentId)));
return WxCpKfKnowledgeIntentListResp.fromJson(responseContent);
}

private WxCpBaseResp knowledgeBaseResp(String apiPath, String key, String value) throws WxErrorException {
String url = cpService.getWxCpConfigStorage().getApiUrl(apiPath);
JsonObject json = new JsonObject();
json.addProperty(key, value);
String responseContent = cpService.post(url, GSON.toJson(json));
return WxCpBaseResp.fromJson(responseContent);
}

private JsonObject listKnowledgeJson(String cursor, Integer limit, String groupId, String intentId) {
JsonObject json = new JsonObject();
if (cursor != null) {
json.addProperty("cursor", cursor);
}
if (limit != null) {
json.addProperty("limit", limit);
}
if (groupId != null) {
json.addProperty("group_id", groupId);
}
if (intentId != null) {
json.addProperty("intent_id", intentId);
}
Comment thread
binarywang marked this conversation as resolved.
return json;
}
Comment thread
binarywang marked this conversation as resolved.

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package me.chanjar.weixin.cp.bean.kf;

import com.google.gson.annotations.SerializedName;
import lombok.Data;

import java.io.Serializable;

/**
* 微信客服知识库分组。
*/
@Data
public class WxCpKfKnowledgeGroup implements Serializable {
private static final long serialVersionUID = -170690715179803477L;

@SerializedName("group_id")
private String groupId;

private String name;

@SerializedName("is_default")
private Integer isDefault;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package me.chanjar.weixin.cp.bean.kf;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

/**
* 微信客服知识库分组新增返回结果。
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WxCpKfKnowledgeGroupAddResp extends WxCpBaseResp {
private static final long serialVersionUID = 232872665454024387L;

@SerializedName("group_id")
private String groupId;

public static WxCpKfKnowledgeGroupAddResp fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpKfKnowledgeGroupAddResp.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package me.chanjar.weixin.cp.bean.kf;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.util.List;

/**
* 微信客服知识库分组列表返回结果。
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WxCpKfKnowledgeGroupListResp extends WxCpBaseResp {
private static final long serialVersionUID = -8350717377843545855L;

@SerializedName("next_cursor")
private String nextCursor;

@SerializedName("has_more")
private Integer hasMore;

@SerializedName("group_list")
private List<WxCpKfKnowledgeGroup> groupList;

public static WxCpKfKnowledgeGroupListResp fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpKfKnowledgeGroupListResp.class);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
package me.chanjar.weixin.cp.bean.kf;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

import java.io.Serializable;
import java.util.List;

/**
* 微信客服知识库问答。
*/
@Data
public class WxCpKfKnowledgeIntent implements Serializable {
private static final long serialVersionUID = -3777712166335763935L;

@SerializedName("group_id")
private String groupId;

@SerializedName("intent_id")
private String intentId;

private Question question;

@SerializedName("similar_questions")
private SimilarQuestions similarQuestions;

private List<Answer> answers;

public static WxCpKfKnowledgeIntent fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpKfKnowledgeIntent.class);
}

@Data
public static class Question implements Serializable {
private static final long serialVersionUID = -1833564733770700525L;
private Text text;
@SerializedName("similar_questions")
private SimilarQuestions similarQuestions;
private List<Answer> answers;
}

@Data
public static class Text implements Serializable {
private static final long serialVersionUID = -4775152873471313775L;
private String content;
}

@Data
public static class SimilarQuestions implements Serializable {
private static final long serialVersionUID = -3338135520171174537L;
private List<Question> items;
}

@Data
public static class Answer implements Serializable {
private static final long serialVersionUID = 482114683168970317L;
private Text text;
private List<Attachment> attachments;
}

@Data
public static class Attachment implements Serializable {
private static final long serialVersionUID = 547601649734690079L;
@SerializedName("msgtype")
private String msgType;
private Image image;
private Video video;
private Link link;
@SerializedName("miniprogram")
private MiniProgram miniProgram;
}

@Data
public static class Image implements Serializable {
private static final long serialVersionUID = -6305485241850490695L;
@SerializedName("media_id")
private String mediaId;
private String name;
}

@Data
public static class Video implements Serializable {
private static final long serialVersionUID = 4002145709503795505L;
@SerializedName("media_id")
private String mediaId;
private String name;
}

@Data
public static class Link implements Serializable {
private static final long serialVersionUID = -1844812819777892606L;
private String title;
@SerializedName("pic_url")
private String picUrl;
private String desc;
private String url;
}

@Data
public static class MiniProgram implements Serializable {
private static final long serialVersionUID = 6893025025270416975L;
private String title;
@SerializedName("thumb_media_id")
private String thumbMediaId;
private String appid;
private String pagepath;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package me.chanjar.weixin.cp.bean.kf;

import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;

/**
* 微信客服知识库问答新增返回结果。
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class WxCpKfKnowledgeIntentAddResp extends WxCpBaseResp {
private static final long serialVersionUID = -2693926545826175543L;

@SerializedName("intent_id")
private String intentId;

public static WxCpKfKnowledgeIntentAddResp fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpKfKnowledgeIntentAddResp.class);
}
}
Loading