diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java index dee5b3e317..7e692b3436 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpExternalContactService.java @@ -8,6 +8,8 @@ import me.chanjar.weixin.cp.bean.external.contact.*; import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRule; import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRuleAddRequest; +import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRuleInfo; +import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRuleList; import java.io.File; import java.io.IOException; @@ -1134,6 +1136,31 @@ WxMediaUploadResult uploadAttachment(String mediaType, Integer attachmentType, F */ void delInterceptRule(String ruleId) throws WxErrorException; + /** + * 获取敏感词规则列表 + * + * 企业和第三方应用可以通过此接口获取所有设置的敏感词规则列表。 + * 请求方式:GET(HTTPS) + * 文档地址:获取敏感词规则列表 + * + * @return WxCpInterceptRuleList 敏感词规则列表 + * @throws WxErrorException 微信API异常 + */ + WxCpInterceptRuleList getInterceptRuleList() throws WxErrorException; + + /** + * 获取敏感词详情 + * + * 企业和第三方应用可以通过此接口获取单个敏感词规则的详细信息。 + * 请求方式:GET(HTTPS) + * 文档地址:获取敏感词详情 + * + * @param ruleId 敏感词规则ID + * @return WxCpInterceptRuleInfo 敏感词规则详情 + * @throws WxErrorException 微信API异常 + */ + WxCpInterceptRuleInfo getInterceptRuleDetail(String ruleId) throws WxErrorException; + /** *
    * 创建商品图册
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java
index 06847c2739..64a025e3c3 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpExternalContactServiceImpl.java
@@ -21,6 +21,8 @@
 import me.chanjar.weixin.cp.bean.external.contact.*;
 import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRule;
 import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRuleAddRequest;
+import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRuleInfo;
+import me.chanjar.weixin.cp.bean.external.interceptrule.WxCpInterceptRuleList;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.commons.lang3.StringUtils;
 
@@ -740,6 +742,19 @@ public void delInterceptRule(String ruleId) throws WxErrorException {
       GsonHelper.buildJsonObject("rule_id", ruleId));
   }
 
+  @Override
+  public WxCpInterceptRuleList getInterceptRuleList() throws WxErrorException {
+    String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_INTERCEPT_RULE_LIST);
+    return WxCpInterceptRuleList.fromJson(this.mainService.get(url,null));
+  }
+
+  @Override
+  public WxCpInterceptRuleInfo getInterceptRuleDetail(String ruleId) throws WxErrorException {
+    String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_INTERCEPT_RULE);
+    String json = this.mainService.post(url, GsonHelper.buildJsonObject("rule_id", ruleId));
+    return WxCpInterceptRuleInfo.fromJson(json);
+  }
+
   @Override
   public String addProductAlbum(WxCpProductAlbumInfo wxCpProductAlbumInfo) throws WxErrorException {
     String url = this.mainService.getWxCpConfigStorage().getApiUrl(ADD_PRODUCT_ALBUM);
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/interceptrule/WxCpInterceptRuleInfo.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/interceptrule/WxCpInterceptRuleInfo.java
new file mode 100644
index 0000000000..0e6d75bf0c
--- /dev/null
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/interceptrule/WxCpInterceptRuleInfo.java
@@ -0,0 +1,58 @@
+package me.chanjar.weixin.cp.bean.external.interceptrule;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import me.chanjar.weixin.cp.bean.WxCpBaseResp;
+import me.chanjar.weixin.cp.bean.external.acquisition.WxCpCustomerAcquisitionInfo;
+import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Date: 2024-03-07 17:02
+ * @Author: shenliuming
+ * @return:
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WxCpInterceptRuleInfo extends WxCpBaseResp implements Serializable {
+
+  private static final long serialVersionUID = -425957862453041229L;
+
+  @SerializedName("rule")
+  private Rule rule;
+
+  @Data
+  @EqualsAndHashCode(callSuper = false)
+  public static class Rule implements Serializable {
+    @SerializedName("rule_id")
+    private String ruleId;
+
+    @SerializedName("rule_name")
+    private String ruleName;
+
+    @SerializedName("word_list")
+    private List wordList;
+
+    @SerializedName("semantics_list")
+    private List semanticsList;
+
+    @SerializedName("intercept_type")
+    private Integer interceptType;
+
+    @SerializedName("applicable_range")
+    private ApplicableRange applicableRange;
+
+    @SerializedName("create_time")
+    private long createTime;
+
+  }
+
+
+  public static WxCpInterceptRuleInfo fromJson(String json) {
+    return WxCpGsonBuilder.create().fromJson(json, WxCpInterceptRuleInfo.class);
+  }
+
+}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/interceptrule/WxCpInterceptRuleList.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/interceptrule/WxCpInterceptRuleList.java
new file mode 100644
index 0000000000..79cb9a6932
--- /dev/null
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/external/interceptrule/WxCpInterceptRuleList.java
@@ -0,0 +1,61 @@
+package me.chanjar.weixin.cp.bean.external.interceptrule;
+
+import com.google.gson.annotations.SerializedName;
+import lombok.*;
+import me.chanjar.weixin.common.bean.ToJson;
+import me.chanjar.weixin.cp.bean.WxCpBaseResp;
+import me.chanjar.weixin.cp.bean.external.acquisition.WxCpCustomerAcquisitionInfo;
+import me.chanjar.weixin.cp.bean.external.acquisition.WxCpCustomerAcquisitionList;
+import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Date: 2024-03-07 15:54
+ * @Author: shenliuming
+ * @return:
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class WxCpInterceptRuleList extends WxCpBaseResp implements Serializable {
+
+  private static final long serialVersionUID = -830298362453041229L;
+  /**
+   * link_id列表
+   */
+  @SerializedName("rule_list")
+  private List ruleList;
+
+  public static WxCpInterceptRuleList fromJson(String json) {
+    return WxCpGsonBuilder.create().fromJson(json, WxCpInterceptRuleList.class);
+  }
+
+  @Data
+  @EqualsAndHashCode(callSuper = false)
+  public static class Rule implements Serializable {
+    private static final long serialVersionUID = 4750537220968228300L;
+
+    /**
+     * 规则id
+     */
+    @SerializedName("rule_id")
+    private String ruleId;
+
+    /**
+     * 规则名称,长度上限20个字符
+     */
+    @SerializedName("rule_name")
+    private String ruleName;
+
+    /**
+     * 创建时间
+     */
+    @SerializedName("create_time")
+    private Long createTime;
+
+    public static WxCpInterceptRuleList.Rule fromJson(String json) {
+      return WxCpGsonBuilder.create().fromJson(json, WxCpInterceptRuleList.Rule.class);
+    }
+  }
+}
diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
index dd41d9b8b5..a7d7fa4015 100644
--- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
+++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java
@@ -1344,6 +1344,14 @@ interface ExternalContact {
      * The constant DEL_INTERCEPT_RULE.
      */
     String DEL_INTERCEPT_RULE = "/cgi-bin/externalcontact/del_intercept_rule";
+    /**
+     * 获取敏感词规则列表
+     */
+    String GET_INTERCEPT_RULE_LIST = "/cgi-bin/externalcontact/get_intercept_rule_list";
+    /**
+     * 获取敏感词规则详情
+     */
+    String GET_INTERCEPT_RULE = "/cgi-bin/externalcontact/get_intercept_rule";
     /**
      * 获取当前仍然有效的获客链接
      */