内容安全
内容安全检查用户在应用中产生的内容:单聊和群聊消息、聊天室消息、昵称和头像、群资料、群昵称、入群和好友申请的附言,以及上传的图片、语音和视频。检查分三种时机:
- 发送前检查:消息写入之前检查文本,不通过的消息不会发出;
- 保存前检查:资料和申请写入之前检查,不通过的不会保存;
- 事后审核:内容发出或上传之后再审核图片、语音、视频(以及按设置审核文本),违规的自动撤回或屏蔽。
检查的依据是词库和第三方审核服务的结果。命中后按设置拒绝、替换为 * 或送人工审核;用户也可以举报,由你的审核人员在控制台处理。违规会记到用户名下,达到你设置的次数时自动禁言或封禁。
本页说明内容安全的规则,以及它对接口调用和客户端的影响。词库、第三方审核账号、人工审核和自动处罚可以在控制台中配置和处理,见内容安全配置;除第三方审核账号外,你的服务端也可以通过接口完成这些操作:
默认状态
新应用默认只有平台规则生效(见平台规则与你的规则);你的规则对全部场景启用,但在你添加词库或开启第三方审核之前不会拦截任何内容;不自动处罚;允许客户端举报。
审核的内容和时机
| 场景 | 审核的内容 | 时机 | 方式 |
|---|---|---|---|
message 消息 | 单聊和群聊消息中的文本:text 的 text,file 的文件名 name,location 的 name 和 address,custom 的 body 中的全部字符串值(可以关闭);image(含缩略图)、video(含封面)、voice 的文件 | 发送消息、批量发送、编辑消息之前;消息发出之后 | 文本在发送前按词库检查,可以另外开启发送前或发出后的第三方文本审核;图片、语音、视频在发出后由第三方审核 |
chatroom_message 聊天室消息 | 同上 | 发送之前;推送之后 | 同上。聊天室的发送前检查最多 200 毫秒,低优先级的消息只按词库检查,也不做事后审核 |
user_profile 用户资料 | 昵称 nickname;头像 avatar_url | 创建用户(包括批量创建、客户端注册、凭证登录时自动创建)、修改资料之前 | 文本按词库检查,可以开启第三方文本审核;头像可以开启保存前的第三方审核 |
group_profile 群资料 | 群名称 name、简介 description、公告 announcement;群头像 avatar_url | 建群、修改群资料之前 | 同上 |
group_member 群昵称 | 成员的群昵称 group_nickname | 修改群昵称之前 | 按词库检查,可以开启第三方文本审核 |
group_request 入群申请 | 申请理由、邀请(包括建群时邀请)的附言 message,拒绝申请或邀请的理由 reason | 申请、邀请、拒绝之前 | 同上 |
friend_request 好友申请 | 附言 message、添加来源 add_source | 发送好友申请之前 | 同上。添加来源是标识,命中替换的词时按拒绝处理 |
chatroom_profile 聊天室资料 | 名称 name、简介 description、公告 announcement | 创建、修改聊天室之前 | 同上 |
chatroom_attribute 聊天室属性 | 属性的值 | 设置之后 | 只按词库检查,违规的属性被删除 |
media_upload 上传的文件 | 上传到本服务的用户头像、群头像、聊天室封面,以及群文件中的图片、语音、视频;群文件的文件名 | 上传完成之后 | 图片、语音、视频由第三方审核;群文件的文件名按词库检查,违规的屏蔽整个文件 |
- 只检查本次修改的字段:修改资料时只检查与原值不同、不为空的字段,清空字段不检查。资料中已有的旧值不会因为之后添加的词条而让无关的修改失败。
- 消息附件:消息中的图片、语音、视频在消息的场景审核,违规时撤回消息,文件是本服务的附件时同时屏蔽文件。上传时不审核。
- 不审核的内容:用户、群和群成员的自定义属性,消息的
ext和push,好友备注,群提示,文档、压缩包等文件的内容(只检查文件名),音视频通话的内容。 - 批量接口:批量发送的消息只检查一次,结果对全部接收人生效;批量创建用户时只按词库检查昵称,需要第三方审核的昵称和头像改为事后审核,违规的从资料中清除。只推在线的消息只按词库检查。
服务端提交的内容
你的服务端(OpenAPI)和控制台提交的内容(创建用户、修改群资料、以用户的身份发消息、设置聊天室属性等)默认只按平台规则检查,不按你的词库和第三方审核检查:这些通常是你的业务数据和系统通知,由你自己负责。
需要同样检查时,在控制台为对应的场景打开“服务端提交的内容也检查”(chatroom_attribute 除外)。服务端提交的内容被拒绝时,不计入任何用户的违规。
平台规则与你的规则
每条内容按两套规则检查,结果取最严格的:
- 平台规则:平台维护的词库,以及第三方审核结果中平台强制处理的类别(默认为涉政
politics、暴恐terrorism、色情porn)。平台规则对应用内的全部内容生效,包括你的服务端提交的内容,不能用放行词绕过。平台规则命中的内容由平台审核和处置:撤回消息时recalled.role为platform,平台屏蔽的文件和平台的封禁你不能解除。平台对你的应用做过哪些处置,可以在控制台的“平台处置”中查看。 - 你的规则:你在控制台为应用维护的词库、开启的第三方审核和按类别的处理方式,在每个场景可以单独关闭(关闭后这个场景只按平台规则检查)。命中的内容进入你的审核记录,由你的审核人员处理。
平台词库的内容对你不可见。控制台“试一试”和审核记录中,平台词库的命中只显示“平台规则”和类别,不显示命中的词。
审核的结果
| 结果 | 来源 | 发送前、保存前检查 | 事后审核 |
|---|---|---|---|
| 拒绝 | 处理方式为拒绝的词库;第三方审核建议拦截(可以按类别改为送审) | 不写入,调用方收到错误,见调用方看到的错误。客户端提交的计入作者的违规 | 自动撤回消息、屏蔽文件、从资料中清除违规的头像、删除聊天室属性,计入作者的违规,并生成审核记录等待确认 |
| 替换 | 处理方式为替换的词库(只有你的词库) | 写入替换后的内容 | 不适用:事后审核不改写已经发出的内容 |
| 送审 | 处理方式为送审的词库;第三方审核建议人工审核(可以按类别改为不处理) | 照常写入,同时生成审核记录等待人工审核 | 生成审核记录等待人工审核 |
一次检查有多种结果时取最严格的:拒绝优先于替换,替换优先于送审。替换和送审同时出现时,写入替换后的内容并送审。
替换
从命中的第一个字符到最后一个字符,原文中的每个字符(包括夹在中间的符号和空格)都换成一个 *,其余不变,内容不会变长。所有人看到的都是替换后的内容,包括发送者本人:发送接口返回的消息就是替换后的,客户端发送成功后应以返回的消息替换本地的消息。
例如处理方式为替换的词库中有“笨蛋”,用户发送“你这个笨蛋,周末一起吃饭”,返回的消息对象为:
{
"conversation_id": "100311226008993792",
"conversation_type": "single",
"seq": 1,
"message_id": "100311226034159616",
"client_msg_id": "c-20261005-0002",
"sender": "zhangsan",
"sender_type": "user",
"recipient": "lisi",
"type": "text",
"body": {
"text": "你这个**,周末一起吃饭"
},
"ext": null,
"mentions": null,
"reply_to": null,
"need_receipt": false,
"exclude_from_unread": false,
"reactions": null,
"pinned": null,
"edited": null,
"recalled": null,
"erased": false,
"via": "client",
"created_at": "2026-10-04T19:20:59.978Z",
"message_version": 0
}custom 消息只替换 body 中命中的字符串值,键、其他值和结构不变;ext 不检查也不改写。
调用方看到的错误
内容被拒绝时,消息类的接口返回 403 message_rejected,资料和申请类的接口返回 403 content_rejected。错误中不包含命中的词,避免被用来反复试探词库:
code | 返回的接口 | details |
|---|---|---|
message_rejected | 发送消息、编辑消息、发送聊天室消息;批量发送时作为每个接收人的结果返回 | reason |
content_rejected | 创建用户、修改用户资料、建群、修改群资料、修改群昵称、申请入群、邀请入群、拒绝申请或邀请、发送好友申请、创建和修改聊天室 | reason;field 为被拒绝的字段,多个字段被拒绝时为其中的第一个 |
details.reason 的取值:
details.reason | 说明 |
|---|---|
sensitive_content | 命中了拒绝的词库 |
provider_block | 第三方审核判定违规。开启了头像审核时,头像的地址不是可以公开访问的 http、https 地址,或是已被屏蔽的文件,同样返回这个原因 |
check_timeout | 第三方审核超时或出错,应用设置为超时时拒绝。这种情况不计入用户的违规,可以稍后重试 |
details.field 的取值为被拒绝的字段:用户资料为 nickname、avatar_url;群资料为 name、description、announcement、avatar_url;群昵称为 group_nickname;入群申请为 message、reason;好友申请为 message、add_source;聊天室资料为 name、description、announcement。
发送消息被拒绝:
{
"error": {
"code": "message_rejected",
"message": "消息中含有不允许发送的内容",
"details": {
"reason": "sensitive_content"
},
"request_id": "N2RG5744A7XYFW5QUNLDECBBDG"
}
}修改昵称被拒绝:
{
"error": {
"code": "content_rejected",
"message": "内容中含有不允许的内容",
"details": {
"field": "nickname",
"reason": "sensitive_content"
},
"request_id": "MEOJNPL33UENE7ZSLOCTVCGMU5"
}
}头像未通过第三方审核:
{
"error": {
"code": "content_rejected",
"message": "图片无法通过审核",
"details": {
"field": "avatar_url",
"reason": "provider_block"
},
"request_id": "5HROKLWB343QARNZIKNMGOGZ4N"
}
}批量发送消息时,每个接收人的结果中返回同样的错误;批量创建用户时,被拒绝的用户出现在 failed 中,code 为 content_rejected。
客户端遇到这两个错误时,按 details.reason 提示用户修改内容,不要自动重试同样的内容。
发出之后的处置
事后审核判定违规、或审核人员确认违规时,内容由对应的功能处置,效果与你通过接口操作相同:
- 撤回消息:消息的内容被清除,会话中能看到它的用户都会同步到撤回,见撤回消息。按你的规则撤回时
recalled.role为server,按平台规则撤回时为platform,客户端可以据此显示不同的提示; - 屏蔽文件:违规的附件、群文件和头像被屏蔽,之后换取下载地址时返回
file_blocked,见下载与管理文件。被屏蔽的头像同时从用户、群或聊天室的资料中清除; - 清除资料:审核人员可以清除违规的昵称、头像、群资料、群昵称和聊天室资料。只在字段仍是当时被审核的值时清除,用户之后改过的不受影响。清除后与正常修改资料一样通知相关的客户端;
- 删除聊天室属性:只在属性的值没有变化时删除。
事后审核通常在图片发出后 1 分钟内完成,语音和视频取决于第三方审核服务,一般几分钟。消息发出后还会按词库再检查一次,发送前检查因故障、超时而放行的消息,命中拒绝的词时在这一步撤回。
词库
每个应用维护自己的词库,在控制台中添加(见内容安全配置),或者调用词库的接口。词库的属性:
| 属性 | 取值 | 说明 |
|---|---|---|
| 种类 | block 屏蔽、allow 放行 | 放行词用来消除误判,见下文 |
| 处理方式 | reject 拒绝、replace 替换、review 送审 | 只用于屏蔽词库 |
| 匹配方式 | contains 包含、exact 完全相同 | 完全相同:整段文本规范化后与词条相同才命中,适合保留的昵称(如“官方客服”命中“官方 客服”,不命中“官方客服小王”)。放行词库只能用包含 |
| 类别 | 见类别 | 命中时记入审核记录和违规 |
| 场景 | 一个或多个场景,或全部场景 | 词库只在这些场景中生效 |
| 启用 | 是、否 | 停用的词库不参与匹配,词条保留 |
规范化:匹配之前,文本和词条都按同样的规则规范化,用全角字符、繁体字、夹杂符号和空格、形近字母写出的词同样能被发现:
- 全角转为半角,圈号数字、上标等兼容字符转为普通字符;
- 转为小写;
- 繁体转为简体;
- 去掉空白、零宽字符、组合附加符号,以及标点和符号,如“加 微 信”“加-微-信”“加.微.信”都视为“加微信”;
- 常见的形近字母换成拉丁字母,如西里尔字母
а、о、р换成a、o、p。
规范化后与已有词条相同的词条视为重复,例如添加“加 V”后再添加“加v”为重复;屏蔽词规范化后为 2 到 32 个字符,放行词为 2 到 64 个字符。拼音、谐音、拆字和形近汉字不做变体匹配,也不支持正则表达式,常见的写法请作为词条加入,或使用第三方审核。
放行词:一次屏蔽词的命中完全落在一个更长的放行词之内时,这次命中不算。例如屏蔽“加微信”、放行“加微信公众号”时,“关注我们的加微信公众号”通过,“有需要请加微信”被拒绝。你的放行词不能放行平台规则拒绝的词。
生效时间:词库和词条的修改通常在 1 秒内生效,最迟 30 秒。修改后可以在控制台的“试一试”中,或调用检查文本立即验证。
每个应用最多 20 个词库,每个词库最多 10000 个词条,合计最多 50000 个词条,一次最多添加或删除 1000 个词条。
第三方审核
词库只能发现已知的写法。需要识别图片、语音、视频,或更准确地识别文本时,可以开启第三方审核:
- 你自己的审核账号:在控制台添加你在第三方审核服务商(阿里云内容安全、腾讯云天御、网易易盾)开通的账号,为应用选择这个账号,再为需要的场景开启。费用由你直接与服务商结算。账号的配置见审核账号;
- 平台提供的审核:平台也可以为应用开启某些场景的第三方审核,在控制台的“平台的设置”中查看。平台账号的审核次数计入应用的用量,见计量项;每天为每个应用审核的次数有上限(默认 100000 次),超出后当天只按词库检查。
同一个内容只审核一次:你为这个场景开启了第三方审核的,用你的账号;否则用平台的账号。一次审核的结果同时按平台规则和你的规则处理。
审核方式:每个场景分别设置文本和媒体(图片、语音、视频)的审核方式:
| 方式 | 说明 | 可以使用的场景 |
|---|---|---|
| 同步 | 在发送前、保存前调用,等待结果,违规的直接拒绝 | 文本:除 chatroom_attribute、media_upload 外的全部场景;媒体:user_profile、group_profile 的头像 |
| 事后 | 发出或上传之后审核,违规的撤回或屏蔽 | 文本:message、chatroom_message;媒体:message、chatroom_message、media_upload |
消息中的图片、语音、视频只能事后审核:同步审核一张图片要 0.5 到 2 秒,会明显拖慢发送。
超时:同步审核最多等待应用设置的时限(200 到 2000 毫秒,默认 800 毫秒)。超时、服务商出错或账号不可用时,按应用的设置放行或拒绝:放行(默认)的内容之后再补审一次;拒绝时返回 check_timeout。聊天室消息的检查最多 200 毫秒,超时一律放行并补审。
按类别处理:第三方审核给出“建议拦截”“建议人工审核”和类别。你可以按类别设置:建议拦截时拒绝(默认)或送审;建议人工审核时送审(默认)或不处理。平台强制处理的类别不受这项设置影响,由平台规则处理。
节省费用:图片、语音、视频按内容的摘要缓存审核结果,同一张图片被转发多次只审核一次;已撤回、已过期的消息不再审核;服务端提交的内容默认不送你的第三方审核(见服务端提交的内容);每个应用每分钟最多 6000 个内容进入事后审核,超出的只按词库检查。
图片地址:外部地址上的图片由服务商按地址抓取。地址不是可以公开访问的 http、https 地址(如内网地址、无法解析的域名)时不交给服务商:头像的同步审核直接拒绝,消息中的图片生成审核记录,由审核人员判断。建议把图片上传到本服务,见文件概述。
人工审核
以下内容生成审核记录,由你的审核人员在控制台处理(见审核记录),也可以由你的服务端调用审核记录的接口接入自己的审核系统:
- 命中送审的词库,或第三方审核建议人工审核的内容;
- 事后审核自动处置的内容,等待确认;
- 用户举报的内容。
同一条消息、同一个用户的资料、同一个文件同时只有一条未处理的记录,后来的命中和举报都归到这一条上。审核人员可以:
- 确认违规:同时选择处置,如撤回消息、屏蔽文件、清除资料、禁言或封禁作者,默认计入作者的违规;
- 无违规:结束记录。自动处置过的记录改为无违规时,删除它引起的违规、解除它屏蔽的文件;已撤回的消息不能恢复,已执行的禁言和封禁不会自动解除;
- 转交平台:认为内容可能违法、需要平台处理时转交。
作出结论后 30 天内可以把“确认违规”改为“无违规”,用于处理用户的申诉。超过 30 天没有处理的记录自动结束,之后仍可以补作结论。记录结束 30 天后清空其中的内容,180 天后删除。
违规记录与自动处罚
以下情况计入用户的违规:
- 他在客户端提交的内容在发送前、保存前被拒绝(第三方审核超时被拒绝的除外);
- 他的内容在事后审核中被自动处置;
- 审核人员确认他的内容违规(可以选择不计入,如账号被盗用)。
你的服务端和控制台提交的内容被拒绝时不计入任何用户的违规。每次违规记下场景、类别、来源和按谁的规则(平台或你的规则),平台规则的违规同样计入次数。违规记录保留 180 天;删除用户时一并删除。
自动处罚:在控制台为应用设置最多 5 条规则,如“24 小时内违规 3 次,禁言单聊和群聊 1 小时”“7 天内违规 10 次,封禁 7 天”:
| 项目 | 取值 |
|---|---|
| 时间窗口 | 1 到 720 小时 |
| 违规次数 | 1 到 1000 次 |
| 统计的类别 | 全部类别,或指定的几个类别 |
| 处罚 | 全局禁言(选择单聊、群聊、聊天室中的一个或多个场景),或封禁 |
| 时长 | 1 秒到 10 年,或永久 |
每次记下违规后,逐条统计时间窗口内的违规次数,达到次数、且这条规则在这个时间窗口内还没有处罚过这个用户时执行。处罚以你的应用的身份执行,与你调用全局禁言、封禁用户的效果相同:被禁言的用户在客户端发送时收到 403 user_muted;被封禁的用户全部设备随即下线。你可以随时在控制台或通过接口解除。默认没有规则,不自动处罚;平台不会自动处罚你的用户。
例如设置“24 小时内违规 3 次,禁言单聊和群聊 1 小时”后,用户第 3 次发送被拒绝的消息,之后在群里发言时收到:
{
"error": {
"code": "user_muted",
"message": "你已被禁言",
"details": {
"expires_at": "2026-10-04T20:23:49.532Z",
"scope": "group"
},
"request_id": "OFQLWQXJWYXF2ZWQK6BU3S3CCW"
}
}在控制台的“用户违规”中,或调用查询用户的违规、清除用户的违规,可以查看用户的违规记录和最近的处罚,清除按你的规则记下的违规(平台规则的违规只能由平台清除)。清除违规不会解除已执行的处罚。
用户举报
用户可以举报一条消息、一个用户、一个群、一个聊天室或一条聊天室消息。举报进入你的审核记录,由审核人员处理;再多人举报也只提高处理的优先级,不会自动处置。
- 只能举报看得到的内容:消息必须是举报人现在能看到的(入群之前、离开群之后的群消息,本人已删除的消息都不行),已撤回的消息不能举报;私有群只有成员能举报,公开群任何人都可以举报;聊天室不要求举报人在其中,但聊天室消息只能举报聊天室保存的最近消息(24 小时内);不能举报自己和自己的消息。不满足时返回
404 not_found,与对象不存在不作区分。 - 保存证据:举报时保存被举报的内容。之后消息被撤回、资料被修改,审核人员看到的仍是举报时的内容。举报用户和群时可以附上最多 5 条消息作为证据。
- 重复举报:同一个人对同一个对象只算一次,再次举报返回原来的那一次。一个对象被判定无违规后 7 天内的新举报只记录,不重新打开。
- 举报人看到的结果:只有“处理中”和“已处理”两种状态,不告诉举报人被举报的人受到了什么处罚。
客户端举报:用户在客户端用 User Token 调用 POST /client/v1/reports 举报,参数与代用户举报相同(没有 reporter,举报人就是本人);GET /client/v1/reports 查询本人 90 天内的举报。客户端举报按用户限制频率:每分钟 5 次、每天 30 次。应用可以关闭客户端举报(运行策略 report_enabled,默认开启),客户端从运行配置得知是否显示举报入口,关闭后客户端举报返回 403 permission_denied,details.reason 为 report_disabled。SDK 发布后由 SDK 封装。
举报原因
reason | 含义 | 记入的类别 |
|---|---|---|
ad | 广告、骚扰 | ad |
fraud | 诈骗 | fraud |
porn | 色情低俗 | porn |
politics | 涉政 | politics |
terrorism | 暴恐 | terrorism |
abuse | 辱骂攻击 | abuse |
illegal | 违法违禁 | illegal |
infringement | 侵权 | other |
minor | 涉及未成年人 | illegal |
other | 其他 | other |
原因为 fraud、politics、terrorism、minor 的举报,以及举报原因属于平台强制处理的类别的,审核记录的优先级最高。
与回调的关系
内容安全和回调可以一起使用:
- 同步回调:发消息前回调(包括聊天室消息)、加好友前回调、加群前回调都排在内容安全的检查之后。被内容安全拒绝的请求不会触发回调;被替换的内容,回调收到的是替换后的内容;回调改写后的内容不再经过内容安全检查。消息的发送前检查和发消息前回调合计最多 3 秒,聊天室消息合计最多 500 毫秒。
- 事件回调:可以订阅内容安全的事件,在你的服务端接收新的审核记录(
moderation.item_created)、审核结论(moderation.item_decided)、用户举报(moderation.report_created)和违规(moderation.violation_recorded,带这次触发的自动处罚,可以据此通知或警告用户)。事件中不包含被审核的内容和命中的词。平台审核的内容只在平台确认违规时通知。
数据结构
类别
词库、第三方审核的结果、举报和违规都归到以下类别。一条内容有多个类别时,按表中从上到下的顺序取第一个作为主要类别。
| 类别 | 含义 |
|---|---|
politics | 涉政 |
terrorism | 暴恐 |
porn | 色情 |
fraud | 诈骗 |
contraband | 违禁品,如毒品、枪支、管制物品 |
gambling | 赌博 |
abuse | 辱骂、人身攻击 |
vulgar | 低俗 |
ad | 广告、导流(如留联系方式拉人到其他平台) |
illegal | 其他违法内容 |
custom | 自定义 |
other | 其他 |
