独立敏感词过滤服务

wendi_liuqiyou 22小时前 33

问题是我过滤成星号的文本内容,没生效。用户接受到的还是明文

@RequestMapping("/censor")
    public Object censor(HttpServletRequest request) {
        String postData = BodyParamsUtil.getPostData(request);
        log.info("censor:{}", postData);
//        {"messageId":485745265509138561,"sender":"1902717025395548161",
//        "conv":{"type":0,"target":"1903332021271928834","line":20},
//        "payload":{"type":1,"searchableContent":"111","pushContent":"","pushData":"","content":"","mediaType":0,"remoteMediaUrl":"","persistFlag":3,"expireDuration":0,"mentionedType":0,"mentionedTarget":[],"extra":"{\"vip\":0}"},
//        "toUsers":[],"timestamp":1746357392016}
        JSONObject jsonObject = JSONObject.parseObject(postData);
        //取消息内容searchableContent
        JSONObject payload = jsonObject.getJSONObject("payload");
        if (payload!=null && StringUtil.isNotEmpty(payload.getString("searchableContent"))) {
            String searchableContent = jsonObject.getJSONObject("payload").getString("searchableContent");
            // 隐藏手机号
            searchableContent = searchableContent.replaceAll("1[3-9]\\d{9}", "***********");
            // 隐藏微信号
            searchableContent = searchableContent.replaceAll("[a-zA-Z][-_0-9a-zA-Z]{5,19}", "********");
            // 隐藏QQ号
            searchableContent = searchableContent.replaceAll("[1-9][0-9]{4,}", "*****");
            jsonObject.getJSONObject("payload").put("searchableContent", searchableContent);
        }
        log.info("return jsonObject = {}", jsonObject.toJSONString());
        ResponseEntity.BodyBuilder ok = ResponseEntity.ok();
        MessagePayload result = new MessagePayload();
        try {
//            result = MessagePayload.fromProtoMessageContent(MessagePayload.fromProtoMessageContent(jsonObject.toJavaObject(WFCMessage.MessageContent.class)).toProtoMessageContent());
            result.setExtra(jsonObject.getJSONObject("payload").getString("extra"));
            result.setSearchableContent(jsonObject.getJSONObject("payload").getString("searchableContent"));
            result.setContent("");
            result.setType(1);
            result.setPushContent("");
            result.setPushData("");
            result.setPersistFlag(3);
            result.setExpireDuration(0);
            result.setMentionedType(0);
            result.setMentionedTarget(new ArrayList<>());
            result.setMediaType(0);
            result.setRemoteMediaUrl("");
            result.setBase64edData("");
        } catch (Exception e) {
            log.error("censor error", e);
        }
        log.info("censor result = {}", result);
        log.info("json censor result = {}", JSONObject.toJSONString(result));
        return ok.body(result);
    }

以上是代码

服务器日志 这个是日志。

接收消息人 这个是接收到的消息

最新回复 (4)
  • HeavyRain 20小时前
    引用 2
    IM服务是专业版还是社区版?大概是多久以前的?
  • HeavyRain 20小时前
    引用 3
    https://gitee.com/wfchat/app-server/blob/master/src/main/java/cn/wildfirechat/app/IMCallbackController.java 这个示例代码是所有IM的HTTP回调数据的演示,里面包含censorMessage方法,可以修改这个方法,把所有文本消息的内容都替换为***,修改IM服务配置为应用服务,测试看看应用服务处理的对不对
  • wendi_liuqiyou 18小时前
    引用 4
    专业版,23年买的
  • wendi_liuqiyou 18小时前
    引用 5
    HeavyRain https://gitee.com/wfchat/app-server/blob/master/src/main/java/cn/wildfirechat/app/IMCallbackControll ...
    可以啦
返回