内容审核
内容审核由两部分组成:敏感词词表 + 处置动作(发送时同步生效),以及审核任务(命中事实的异步复核)。二者共享同一份命中检测逻辑,但消息放行/拦截由同步处置决定。
概念
| 处置动作 | 发送时行为 | 审核任务 |
|---|---|---|
block(默认) | 命中即拒绝,返回 1010,消息不入库 | action=blocked,无 messageId |
replace | 消息入库,命中词替换为 *** | action=replaced,带 messageId |
- 词表按应用隔离;写入包含
replaceWord的词条会把处置动作切到replace。 - 审核任务默认
pending;可通过decide置为approved/rejected,拒绝会回写消息扩展标记并触发message.audit_result回调。 - 审核任务为内存环缓冲,重启后不保留;词表随应用状态持久化。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#moderation。 - 已设置
X-Admin-Secret(默认dev-admin;控制台会保存在浏览器 localStorage 的im.admin.secret)。 - 已创建应用并在控制台顶部选中应用(模块接口路径都带
{appkey})。
步骤
- 配置敏感词与动作
写入词表;确认
action是 block 还是 replace。 - 观察命中
发送含敏感词的消息:block 返回 1010;replace 成功但正文被掩码。
- 处理待审任务
列表按
status=pending;对任务执行 approve/reject。 - 确认审核结果回调
拒绝后检查
message.audit_result投递记录(回调需已开通并订阅该事件)。
参数表
| 操作 | 方法与路径 | 请求体 / 参数 |
|---|---|---|
| 敏感词查询 | GET /api/admin/apps/{appkey}/sensitive-words | —(返回 words/action) |
| 敏感词设置 | POST /api/admin/apps/{appkey}/sensitive-words | {words:[...],action?} |
| 审核任务列表 | GET /api/admin/apps/{appkey}/moderation/tasks | status(pending/approved/rejected)、offset、limit |
| 审核决定 | POST /api/admin/apps/{appkey}/moderation/tasks/{task_id}/decide | {decision:approve|reject,reason?} |
示例
写入词表 → 查待审 → 拒绝
Shell
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/sensitive-words" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"words":["违禁词"],"action":"replace"}'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps/demo/moderation/tasks?status=pending&limit=20" \
-H 'X-Admin-Secret: dev-admin'
# 用上一步 items[].taskId
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps/demo/moderation/tasks/mt_1001/decide" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"decision":"reject","reason":"违规"}'常见问题
关闭 sensitive_words 服务后敏感词还生效吗?
生效。过滤只要求词表非空;该开关只门禁 6 个词表管理接口。
reject 后消息会撤回吗?
不会撤回,但会在消息 content.extra 写入审核标记并触发审核结果回调;客户端需按协议自行渲染或隐藏。
任务列表 default 只看到 pending?
是的,status 缺省为 pending,且 all 会被归一到 pending;请分别按三个状态查询。
相关链接
- 控制台功能索引:8 个模块与其它页面
- 控制台指南:控制台整体说明
- 运营后台指南:Admin API 全量参考
- 敏感词设置(Open API)
- 回调事件