跳到主要内容

开发指南

敏感信息拦截回调

SDK 从 5.1.4 版本开始支持敏感信息拦截回调。

默认情况下,消息发送方无法感知消息是否已被融云审核服务拦截。如果 App 希望在消息因触发审核规则而无法下发时通知消息发送方,可开通使用敏感信息拦截回调服务。

融云的内容审核服务(包括消息敏感词、IM 审核服务、消息回调服务),可能在以下情况下拦截消息:

  • 文本消息内容命中了融云内置的消息敏感词,导致消息不下发给接收方。
  • 文本消息内容命中了您自定义的消息敏感词(屏蔽敏感词),导致消息不下发给接收方。
  • 消息命中了 IM 审核服务,或消息回调服务设置的审核规则,导致消息不下发给接收方。

开通服务

您可以在融云控制台,通过应用配置>IM 服务>免费基础功能>安全,开启含敏感词消息屏蔽状态回调发送端

敏感信息拦截监听器说明

在发出的消息被拦截时,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 说明

    • sourceType0 时,sourceContent 为空。
    • sourceType1 时,sourceContent 是消息扩展内容,示例 {"mid":"xxx-xxx-xxx-xxx","put":{"key":"敏感词"}}。mid 为通知信息的 ID。
    • sourceType2 时,sourceContent 是修改后的消息内容,示例 {"content":"含有敏感信息的文字"}。内置消息类型的消息内容格式消息类型概述

设置敏感信息拦截监听器

注意

该接口在 RongIMClient 中。

您可以通过下面的方法设置敏感词拦截监听器,监听到被拦截的消息以及拦截原因。

RongIMClient.getInstance().setMessageBlockListener(listener)