开发指南
敏感信息拦截回调
SDK 从 5.1.4 版本开始支持敏感信息拦截回调。
默认情况下,消息发送方无法感知消息是否已被融云审核服务拦截。如果 App 希望在消息因触发审核规则而无法下发时通知消息发送方,可开通使用敏感信息拦截回调服务。
融云的内容审核服务(包括消息敏感词、IM 审核服务、消息回调服务),可能在以下情况下拦截消息:
- 文本消息内容命中了融云内置的消息敏感词,导致消息不下发给接收方。
- 文本消息内容命中了您自定义的消息敏感词(屏蔽敏感词),导致消息不下发给接收方。
- 消息命中了 IM 审核服务,或消息回调服务设置的审核规则,导致消息不下发给接收方。
开通服务
如有需求,请提交工单,申请开通含敏感词消息屏蔽状态回调发送端。客户端 SDK 5.1.4 及之后版本支持该回调服务。
敏感信息拦截监听器说明
在发出的消息被拦截时,SDK 会触发 MessageBlockListener
的以下方法:
void onMessageBlock(BlockedMessageInfo info)
BlockedMessageInfo
里包含了被拦截消息的相关信息,您可以通过下表列出的方法获取:
方法名称 | 说明 |
---|---|
getConversationType() | 获取被拦截消息所在会话的会话类型 |
getTargetId() | 获取被拦截消息所在的会话 Id |
getChannelId() | 获取被拦截消息所在的超级群频道 ID。要求 Android 端 SDK ≧ 5.2.4 |
getBlockMsgUId() | 获取被拦截消息的唯一 Id |
getType() | 获取消息被拦截的原因,详见下方 MessageBlockType 说明。 |
getExtra() | 获取被拦截消息的附加信息。要求 Android 端 SDK 版本 ≧ 5.2.5(例外:因历史遗留问题,在 5.2.3.2 及之后的 5.2.3.x 系列的维护版本上也可用)。 |
getSourceType() | 获取被拦截的超级群消息的源类型。0 :原始消息触发了拦截(默认)。1 :消息扩展触发了拦截。2 :修改消息后的消息内容触发了拦截。Android 端 SDK 5.2.5 及以后版本支持(仅支持超级群)。 |
getSourceContent() | 获取被拦截的超级群消息或扩展的内容 JSON 字符串。sourceType 字段为 1 时表示扩展内容。sourceType 为 2 时表示修改后的消息内容。详见下方 sourceContent 说明。Android 端 SDK 5.2.5 及以后版本支持(仅支持超级群)。 |
-
MessageBlockType
说明public enum MessageBlockType {
/**
* 未知类型
*/
UNKNOWN(0),
/**
* 全局敏感词:命中了融云内置的全局敏感词
*/
BLOCK_GLOBAL(1),
/**
* 自定义敏感词拦截:命中了客户在融云自定义的敏感词
*/
BLOCK_CUSTOM(2),
/**
* 第三方审核拦截:命中了第三方(数美)或消息回调服务(原模板路由服务)决定不下发的状态
*/
BLOCK_THIRD_PATY(3);
} -
sourceContent
说明sourceType
为0
时,sourceContent 为空。sourceType
为1
时,sourceContent 是消息扩展内容,示例{"mid":"xxx-xxx-xxx-xxx","put":{"key":"敏感词"}}
。mid 为通知信息的 ID。sourceType
为2
时,sourceContent 是修改后的消息内容,示例{"content":"含有敏感信息的文字"}
。内置消息类型的消息内容格式消息类型概述。
设置敏感信息拦截监听器
注意
该接口在
RongIMClient
中。
您可以通过下面的方法设置敏感词拦截监听器,监听到被拦截的消息以及拦截原因。
RongIMClient.getInstance().setMessageBlockListener(listener)