根据文档要求总结分为以下的情况:

  1. 文本内容正常 (suggest: “pass”, label: 100):
    1. 情况处理:如果文本内容被判定为正常,可以允许发布该文本内容。
  2. 文本内容命中关键词,但不违规 (suggest: “pass”, label: 20006):
    1. 情况处理:如果文本内容命中自定义关键词但不违规,可以允许发布该文本内容,同时可能根据需要记录命中的关键词和概率信息。
  3. 文本内容建议审核 (suggest: “review”):
    1. 情况处理:如果文本内容被建议进行审核,您可以将该内容设置为待审核状态,让人工审核来决定是否发布该内容。
  4. 文本内容命中违规标签 (suggest: “risky”):
    1. 情况处理:如果文本内容被判定为违规,应禁止发布该内容,并通知用户违规原因。
  5. 文本内容属于广告 (label: 10001):
    1. 情况处理:如果文本内容被判定为广告,应禁止发布该内容,并通知用户不允许发布广告内容。
  6. 文本内容属于色情、辱骂、违法犯罪等 (label: 20002, 20003, 20006等):
    1. 情况处理:如果文本内容被判定为色情、辱骂、违法犯罪等,应禁止发布该内容,并根据需要采取进一步的处理措施,比如记录日志或进行用户封禁等。

开发思路如下:

  1. 从Redis中获取到AccessToken
  2. 查库获取发布者微信的openid
  3. 调用https://api.weixin.qq.com/wxa/msg_sec_check?access_token=接口,校验返回参数
    1. errocode == 0
      1. 获取result对象的suggest参数值并进行比较
        1. 如果文本内容建议审核,则根据实际需求执行人工审核流程,”review”.equals(suggest)
        2. 如果文本内容正常或命中关键词但不违规,允许发布,”pass”.equals(suggest)
        3. 如果文本内容被判定为违规,禁止发布,并输出违规信息,”risky”.equals(suggest)
          1. 此时可以遍历detail数组,并获取对应的prob如果其中有敏感词汇prob>50就不准发布。

大致代码逻辑如下:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
private static void handleResult(String result) {
if (result != null) {
JSONObject responseJson = new JSONObject(result);
int errcode = responseJson.getInt("errcode");
String errmsg = responseJson.getString("errmsg");

if (errcode == 0) {
// 获取综合结果信息
JSONObject resultObject = responseJson.getJSONObject("result");
String suggest = resultObject.getString("suggest");
int label = resultObject.getInt("label");

// 输出综合结果信息
System.out.println("综合结果:");
System.out.println("建议:" + suggest);
System.out.println("标签:" + label);

// 如果文本内容建议审核,则根据实际需求执行人工审核流程
if ("review".equals(suggest)) {
System.out.println("该文本内容建议进行人工审核!");
// 可以将内容设置为待审核状态,由人工审核决定是否发布
} else if ("pass".equals(suggest)) {
// 如果文本内容正常或命中关键词但不违规,允许发布
System.out.println("文本内容合规,可以发布!");
} else if ("risky".equals(suggest)) {
// 如果文本内容被判定为违规,禁止发布,并输出违规信息
System.out.println("文本内容违规,请修改后重新提交!");
JSONArray detailArray = responseJson.getJSONArray("detail");
for (int i = 0; i < detailArray.length(); i++) {
JSONObject detailObject = detailArray.getJSONObject(i);
String strategy = detailObject.getString("strategy");
if ("keyword".equals(strategy)) {
String keyword = detailObject.getString("keyword");
int prob = detailObject.getInt("prob");
System.out.println("命中关键词:" + keyword + ",概率:" + prob);
}
}
} else {
System.out.println("未知建议类型:" + suggest);
}
} else {
// 输出错误信息
System.out.println("接口调用失败,错误码:" + errcode + ",错误信息:" + errmsg);
}
} else {
System.out.println("接口调用失败!");
}