文本在线检测

2021.08.12 15:29:04

    接口地址

    https://as.dun.163yun.com/v3/text/check

    接口描述

    根据发布的内容、发布者、ip、设备id等信息来检测是否为需拦截内容。接口同步返回易盾内容安全服务实时反垃圾引擎检测结果,产品可以根据该结果对数据进行初步过滤。该接口返回结果状态分以下三种:

    • 不通过:表示是确认内容非法,产品可对数据做删除隐藏处理。
    • 嫌疑:表示该内容疑似非法,需内容安全云服务离线检测模块进一步确认处理,确认结果需产品自行定期调用文本离线检测结果获取获取,产品对嫌疑数据可以做特殊策略处理,如本人可见等。
    • 通过:表示云安全反垃圾云服务实时反垃圾引擎未识别为非法内容,产品对该类数据可以直接放过,发表成功。云安全反垃圾云服务离线检测模块也会对这些数据做进一步分析处理,分析结果需产品自行定期调用文本离线检测结果获取获取。

    文本限制

    单次请求<5000字符,字段长度超过5000字符,会截取前面5000字符进行检测和存储;

    请求参数

    公共参数已省略,详细见 请求公共参数,其他参数如下:

    请求参数

    公共参数已省略,详细见 请求公共参数,其他参数如下:

    基本参数

    参数名称 类型 是否必选 最大长度 描述
    dataId String Y 128 数据唯一标识,能够根据该值定位到该条数据,如对数据结果有异议,可以发送该值给客户经理查询
    content String Y 5000 用户发表内容,建议对内容中JSON、表情符、HTML标签、UBB标签等做过滤,只传递纯文本,以减少误判概率
    title String N 512 内容标题,适用于贴子、博客的文章标题等场景,建议抄送,辅助机审策略精准调优
    dataType Number N 4 子数据类型,与易盾内容安全服务约定即可
    version String Y 4 接口版本号,可选值 v3.1
    callback String N 2^16-1 数据回调参数,调用方根据业务情况自行设计,当调用文本离线结果获取接口时,该接口会原样返回该字段,详细见文本离线检测结果获取。作为数据处理标识,因此该字段应该设计为能唯一定位到该次请求的数据结构,如对用户的昵称进行检测,dataId可设为用户标识(用户ID),用户修改多次,每次请求数据的dataId可能一致,但是callback参数可以设计成定位该次请求的数据结构,比如callback字段设计成json,包含dataId和请求的时间戳等信息,当然如果不想做区分,也可以直接把callback设置成dataId的值。
    publishTime Number N 13 发表时间,UNIX 时间戳(毫秒值)
    callbackUrl String N 256 人工审核结果回调通知到客户的URL。主动回调数据接口超时时间设置为2s,为了保证顺利接收数据,需保证接收接口性能稳定并且保证幂等性。
    checkLabels String N 512 业务过检分类,如果没有勾选分类提交返回参数错误,您可指定多个垃圾类别进行机器检测,多个垃圾类别以逗号分隔("100,200"),指定后业务配置过检分类即失效,过检分类列表:100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂,700:灌水

    业务扩展参数

    业务扩展参数,有助于通过业务维度辅助反垃圾结果判定

    参数名称 类型 是否必选 最大长度 描述
    用户信息 - N - 用户信息包含账号、昵称、等级、角色等,请查看 业务扩展参数—用户信息
    设备信息 - N - 设备信息包含设备ID、设备ID类型等,请查看 业务扩展参数—设备信息
    场景信息 - N - 场景信息包含私聊、群聊、直播、帖子等场景字段,请查看 业务扩展参数—场景信息
    ip String N 128 用户IP地址,建议抄送,辅助机审策略精准调优
    relatedKeys String N 512 String数组,多个关联Key以逗号分隔("xxx,xxx"),最多三个Key,单个Key长度不超过128,适用于私聊/评论/跟帖等情况同一用户或不同用户发送多条违规内容关联检测的场景。如需要检测同一评论下的同一用户或不同用户发送违规内容盖楼场景,Key传值方式可以为("评论ID用户ID,评论ID")
    extStr1 String N 128 自定义扩展参数
    extStr2 String N 128 自定义扩展参数
    extLon1 Long N 2^63-1 自定义扩展参数
    extLon2 Long N 2^63-1 自定义扩展参数

    响应结果

    响应字段如下,响应通用字段已省略,详细见响应通用字段

    result 数据结构

    参数名称 类型 描述
    action Number 检测结果,0:通过,1:嫌疑,2:不通过
    censorType Number 审核模式,0:纯机审,1:机审+部分人审,2:机审+全量人审
    strategyVersion String 策略版本号,策略更新时该参数会更新,可用于追溯策略调优效果
    taskId String 本次请求数据标识,可以根据该标识查询数据最新结果
    lang json数组 语种代码数组,详见 语种代码表
    isRelatedHit boolean 是否关联检测命中,true:关联检测命中,false:原文命中
    labels json数组 分类信息

    labels 数据结构

    参数名称 类型 描述
    label Number 分类信息,100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂,700:灌水,900:其他
    subLabels json数组 细分类信息,可能包含多个,可能为空
    level Number 分类级别,0:通过, 1:嫌疑,2:不通过
    details json对象 其他信息

    subLabels 数据结构

    参数名称 类型 描述
    subLabel Number 细分类,详细编码请参考下方对应细分类编码 对照表

    自定义细分类

    易盾支持subLabel自定义细分类过检并返回,如有需求,可联系您的专属安全策略经理添加。

    details 数据结构

    参数名称 类型 描述
    hint json数组 线索信息,用于定位文本中有问题的部分,辅助人工审核
    hitInfos json数组 线索详细信息

    hitInfos 数据结构

    参数名称 类型 描述
    hitType Number 线索分类信息,返回10:表示命中用户自定义添加用户名单,返回11:表示命中用户自定义添加ip名单,返回30:表示命中用户自定义添加敏感词,返回140:标识命中反作弊(hitReason为反作弊命中原因,1:数据异常 2:行为模型 3:设备模型 4:业务类型 5:校验异常 6:模拟器 7:越狱或root 8:浏览器异常 9:ip异常 10:易盾黑名单 11:自定义黑名单 12:自定义白名单)

    请求示例

        /** 产品密钥ID,产品标识 */
        private final static String SECRETID = "your_secret_id";
        /** 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 */
        private final static String SECRETKEY = "your_secret_key";
        /** 业务ID,易盾根据产品业务特点分配 */
        private final static String BUSINESSID = "your_business_id";
        /** 易盾内容安全文本在线检测接口地址 */
        private final static String API_URL = "https://as.dun.163yun.com/v3/text/check";
        /** 实例化HttpClient,发送http请求使用,可根据需要自行调参 */
        private static HttpClient httpClient = HttpClient4Utils.createHttpClient(100, 20, 2000, 2000, 2000);
    
        /**
         *
         * @param args
         * @throws Exception
         */
        public static void main(String[] args) throws Exception {
            Map<String, String> params = new HashMap<String, String>();
            // 1.设置公共参数
            params.put("secretId", SECRETID);
            params.put("businessId", BUSINESSID);
            params.put("version", "v3.1");
            params.put("timestamp", String.valueOf(System.currentTimeMillis()));
            params.put("nonce", String.valueOf(new Random().nextInt()));
    
            // 2.设置私有参数
            params.put("dataId", "ebfcad1c-dba1-490c-b4de-e784c2691768");
            params.put("content", "易盾测试内容!v3接口! ");
            params.put("dataType", "1");
            params.put("ip", "123.115.77.137");
            params.put("account", "java@163.com");
            params.put("deviceType", "4");
            params.put("deviceId", "92B1E5AA-4C3D-4565-A8C2-86E297055088");
            params.put("callback", "ebfcad1c-dba1-490c-b4de-e784c2691768");
            params.put("publishTime", String.valueOf(System.currentTimeMillis()));
    
            // 3.生成签名信息
            String signature = SignatureUtils.genSignature(SECRETKEY, params);
            params.put("signature", signature);
    
            // 4.发送HTTP请求,这里使用的是HttpClient工具包,产品可自行选择自己熟悉的工具包发送请求
            String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8);
    
            // 5.解析接口返回值
            JsonObject jObject = new JsonParser().parse(response).getAsJsonObject();
            int code = jObject.get("code").getAsInt();
            String msg = jObject.get("msg").getAsString();
            if (code == 200) {
                JsonObject resultObject = jObject.getAsJsonObject("result");
                int action = resultObject.get("action").getAsInt();
                String taskId = resultObject.get("taskId").getAsString();
                JsonArray labelArray = resultObject.getAsJsonArray("labels");
                /*for (JsonElement labelElement : labelArray) {
                    JsonObject lObject = labelElement.getAsJsonObject();
                    int label = lObject.get("label").getAsInt();
                    int level = lObject.get("level").getAsInt();
                    JsonObject detailsObject=lObject.getAsJsonObject("details");
                    JsonArray hintArray=detailsObject.getAsJsonArray("hint");
                }*/
                if (action == 0) {
                    System.out.println(String.format("taskId=%s,文本机器检测结果:通过", taskId));
                } else if (action == 1) {
                    System.out.println(String.format("taskId=%s,文本机器检测结果:嫌疑,需人工复审,分类信息如下:%s", taskId, labelArray.toString()));
                } else if (action == 2) {
                    System.out.println(String.format("taskId=%s,文本机器检测结果:不通过,分类信息如下:%s", taskId, labelArray.toString()));
                }
            } else {
                System.out.println(String.format("ERROR: code=%s, msg=%s", code, msg));
            }
    
        }
    
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    """云安全(易盾)文本在线检测接口python示例代码
    接口文档: http://dun.163.com/api.html
    python版本:python2.7
    运行:
        1. 修改 SECRET_ID,SECRET_KEY,BUSINESS_ID 为对应申请到的值
        2. $ python text_check_api_demo.py
    """
    __author__ = 'yidun-dev'
    __date__ = '2016/3/10'
    __version__ = '0.1-dev'
    
    import hashlib
    import time
    import random
    import urllib
    import urllib2
    import json
    
    class TextCheckAPIDemo(object):
        """文本在线检测接口示例代码"""
        API_URL = "https://as.dun.163yun.com/v3/text/check"
        VERSION = "v3.1"
    
        def __init__(self, secret_id, secret_key, business_id):
            """
            Args:
                secret_id (str) 产品密钥ID,产品标识
                secret_key (str) 产品私有密钥,服务端生成签名信息使用
                business_id (str) 业务ID,易盾根据产品业务特点分配
            """
            self.secret_id = secret_id
            self.secret_key = secret_key
            self.business_id = business_id
    
        def gen_signature(self, params=None):
            """生成签名信息
            Args:
                params (object) 请求参数
            Returns:
                参数签名md5值
            """
            buff = ""
            for k in sorted(params.keys()):
                buff += str(k)+ str(params[k])
            buff += self.secret_key
            return hashlib.md5(buff).hexdigest()
    
        def check(self, params):
            """请求易盾接口
            Args:
                params (object) 请求参数
            Returns:
                请求结果,json格式
            """
            params["secretId"] = self.secret_id
            params["businessId"] = self.business_id
            params["version"] = self.VERSION
            params["timestamp"] = int(time.time() * 1000)
            params["nonce"] = int(random.random()*100000000)
            params["signature"] = self.gen_signature(params)
    
            try:
                params = urllib.urlencode(params)
                request = urllib2.Request(self.API_URL, params)
                content = urllib2.urlopen(request, timeout=1).read()
                return json.loads(content)
            except Exception, ex:
                print "调用API接口失败:", str(ex)
    
    if __name__ == "__main__":
        """示例代码入口"""
        SECRET_ID = "your_secret_id" # 产品密钥ID,产品标识
        SECRET_KEY = "your_secret_key" # 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露
        BUSINESS_ID = "your_business_id" # 业务ID,云安全(易盾)根据产品业务特点分配
        text_api = TextCheckAPIDemo(SECRET_ID, SECRET_KEY, BUSINESS_ID)
    
        params = {
            "dataId": "ebfcad1c-dba1-490c-b4de-e784c2691768",
            "content": "易盾测试内容!",
            "dataType": "1",
            "ip": "123.115.77.137",
            "account": "python@163.com",
            "deviceType": "4",
            "deviceId": "92B1E5AA-4C3D-4565-A8C2-86E297055088",
            "callback": "ebfcad1c-dba1-490c-b4de-e784c2691768",
            "publishTime": str(int(time.time() * 1000))
        }
        ret = text_api.check(params)
        if ret["code"] == 200:
            action = ret["result"]["action"]
            taskId = ret["result"]["taskId"]
            labelArray=json.dumps(ret["result"]["labels"],ensure_ascii=False)
            if action == 0:
                print "taskId=%s,文本机器检测结果:通过" % (taskId)
            elif action == 1:
                print "taskId=%s,文本机器检测结果:嫌疑,需人工复审,分类信息如下:%s" %(taskId,labelArray)
            elif action == 2:
                print "taskId=%s,文本机器检测结果:不通过,分类信息如下:%s" % (taskId,labelArray)
        else:
            print "ERROR: ret.code=%s, ret.msg=%s" % (ret["code"], ret["msg"])
    
    <?php
    /** 产品密钥ID,产品标识 */
    define("SECRETID", "your_secret_id");
    /** 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 */
    define("SECRETKEY", "your_secret_key");
    /** 业务ID,易盾根据产品业务特点分配 */
    define("BUSINESSID", "your_business_id");
    /** 易盾内容安全服务文本在线检测接口地址 */
    define("API_URL", "https://as.dun.163yun.com/v3/text/check");
    /** api version */
    define("VERSION", "v3.1");
    /** API timeout*/
    define("API_TIMEOUT", 2);
    /** php内部使用的字符串编码 */
    define("INTERNAL_STRING_CHARSET", "auto");
    
    /**
     * 计算参数签名
     * $params 请求参数
     * $secretKey secretKey
     */
    function gen_signature($secretKey, $params){
        ksort($params);
        $buff="";
        foreach($params as $key=>$value){
            if($value !== null) {
               $buff .=$key;
               $buff .=$value;
            }
        }
        $buff .= $secretKey;
        return md5($buff);
    }
    
    /**
     * 将输入数据的编码统一转换成utf8
     * @params 输入的参数
     */
    function toUtf8($params){
        $utf8s = array();
        foreach ($params as $key => $value) {
            $utf8s[$key] = is_string($value) ? mb_convert_encoding($value, "utf8", INTERNAL_STRING_CHARSET) : $value;
        }
        return $utf8s;
    }
    
    /**
     * 内容安全请求接口简单封装
     * $params 请求参数
     */
    function check($params){
        $params["secretId"] = SECRETID;
        $params["businessId"] = BUSINESSID;
        $params["version"] = VERSION;
        $params["timestamp"] = sprintf("%d", round(microtime(true)*1000));// time in milliseconds
        $params["nonce"] = sprintf("%d", rand()); // random int
    
        $params = toUtf8($params);
        $params["signature"] = gen_signature(SECRETKEY, $params);
        // var_dump($params);
    
        $options = array(
            'http' => array(
                'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
                'method'  => 'POST',
                'timeout' => API_TIMEOUT, // read timeout in seconds
                'content' => http_build_query($params),
            ),
        );
        $context  = stream_context_create($options);
        $result = file_get_contents(API_URL, false, $context);
        if($result === FALSE){
            return array("code"=>500, "msg"=>"file_get_contents failed.");
        }else{
            return json_decode($result, true);
        }
    }
    
    // 简单测试
    function main(){
        echo "mb_internal_encoding=".mb_internal_encoding()."\n";
        $params = array(
            "dataId"=>"ebfcad1c-dba1-490c-b4de-e784c2691768",
            "content"=>"易盾测试内容!v3接口!",
            "dataType"=>"1",
            "ip"=>"123.115.77.137",
            "account"=>"php@163.com",
            "deviceType"=>"4",
            "deviceId"=>"92B1E5AA-4C3D-4565-A8C2-86E297055088",
            "callback"=>"ebfcad1c-dba1-490c-b4de-e784c2691768",
            "publishTime"=>round(microtime(true)*1000)
        );
    
        $ret = check($params);
        var_dump($ret);
        if ($ret["code"] == 200) {
            $action = $ret["result"]["action"];
            $taskId = $ret["result"]["taskId"];
            $labelArray = $ret["result"]["labels"];
                   if ($action == 0) {
                echo "taskId={$taskId},文本机器检测结果:通过\n";
                  } else if ($action == 1) {
                      echo "taskId={$taskId},文本机器检测结果:嫌疑,需人工复审,分类信息如下:".json_encode($labelArray)."\n";
            } else if ($action == 2) {
                echo "taskId={$taskId},文本机器检测结果:不通过,分类信息如下:".json_encode($labelArray)."\n";
            }
            }else{
                var_dump($ret); // error handler
            }
    }
    
    main();
    ?>
    
    using Newtonsoft.Json.Linq;
    using System;
    using System.Collections.Generic;
    using System.Net.Http;
    
    namespace Com.Netease.Is.Antispam.Demo
    {
        class TextCheckApiDemo
        {
            public static void textCheck()
            {
                /** 产品密钥ID,产品标识 */
                String secretId = "your_secret_id";
                /** 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 */
                String secretKey = "your_secret_key";
                /** 业务ID,易盾根据产品业务特点分配 */
                String businessId = "your_business_id";
                /** 易盾内容安全服务文本在线检测接口地址 */
                String apiUrl = "https://as.dun.163yun.com/v3/text/check";
                Dictionary<String, String> parameters = new Dictionary<String, String>();
    
                long curr = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds;
                String time = curr.ToString();
    
                // 1.设置公共参数
                parameters.Add("secretId", secretId);
                parameters.Add("businessId", businessId);
                parameters.Add("version", "v3.1");
                parameters.Add("timestamp", time);
                parameters.Add("nonce", new Random().Next().ToString());
    
                // 2.设置私有参数
                parameters.Add("dataId", "ebfcad1c-dba1-490c-b4de-e784c2691768");
                parameters.Add("content", "易盾测试内容!v3接口!");
                parameters.Add("dataType", "1");
                parameters.Add("ip", "123.115.77.137");
                parameters.Add("account", "csharp@163.com");
                parameters.Add("deviceType", "4");
                parameters.Add("deviceId", "92B1E5AA-4C3D-4565-A8C2-86E297055088");
                parameters.Add("callback", "ebfcad1c-dba1-490c-b4de-e784c2691768");
                parameters.Add("publishTime", time);
    
                // 3.生成签名信息
                String signature = Utils.genSignature(secretKey, parameters);
                parameters.Add("signature", signature);
    
                // 4.发送HTTP请求
                HttpClient client = Utils.makeHttpClient();
                String result = Utils.doPost(client, apiUrl, parameters, 1000);
                Console.WriteLine(result);
                if(result != null)
                {
                    JObject ret = JObject.Parse(result);
                    int code = ret.GetValue("code").ToObject<Int32>();
                    String msg = ret.GetValue("msg").ToObject<String>();
                    if (code == 200)
                    {
                        JObject resultObject = (JObject)ret["result"];
                        String taskId = resultObject["taskId"].ToObject<String>();
                        int action = resultObject["action"].ToObject<Int32>();
                        JArray labelArray = (JArray)resultObject.SelectToken("labels");
                        if (action == 0)
                        {
                            Console.WriteLine(String.Format("taskId={0},文本机器检测结果:通过", taskId));
                        }
                        else if (action == 1)
                        {
                            Console.WriteLine(String.Format("taskId={0},文本机器检测结果:嫌疑,需人工复审,分类信息如下:{1}", taskId, labelArray));
                        }
                        else if (action == 2)
                        {
                            Console.WriteLine(String.Format("taskId={0},文本机器检测结果:不通过,分类信息如下:{1}", taskId, labelArray));
                        }
                    }
                    else
                    {
                        Console.WriteLine(String.Format("ERROR: code={0}, msg={1}", code, msg));
                    }
                }
                else
                {
                    Console.WriteLine("Request failed!");
                }
    
            }
        }
    }
    
    var utils=require("./utils");
    //产品密钥ID,产品标识
    var secretId="your_secret_id";
    // 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露
    var secretKey="your_secret_key";
    // 业务ID,易盾根据产品业务特点分配
    var businessId="your_business_id";
    // 易盾内容安全服务文本在线检测接口地址
    var apiurl="https://as.dun.163yun.com/v3/text/check";
    //请求参数
    var post_data = {
        // 1.设置公有有参数
        secretId:secretId,
        businessId:businessId,
        version:"v3.1",
        timestamp:new Date().getTime(),
        nonce:utils.noncer(),
        // 2.设置私有参数
        dataId:"ebfcad1c-dba1-490c-b4de-e784c2691768",
        content:"易盾测试内容!v3接口!",
        ip:"123.115.77.137",
        dataType:"1",
        account:"nodejs@163.com",
        deviceType:"4",
        deviceId:"92B1E5AA-4C3D-4565-A8C2-86E297055088",
        callback:"ebfcad1c-dba1-490c-b4de-e784c2691768",
        publishTime:new Date().getTime()
    };
    var signature=utils.genSignature(secretKey,post_data);
    post_data.signature=signature;
    //http请求结果
    var responseCallback=function(responseData){
        var data = JSON.parse(responseData);
        var code=data.code;
        var msg=data.msg;
        if(code==200){
            var result=data.result;
            var taskId=result.taskId;
            var action=result.action;
            var labelArray=result.labels;
            if(action==0){
                console.log("taskId="+taskId+",文本机器检测结果:通过")
            }else if(action==1){
                console.log("taskId="+taskId+",文本机器检测结果:嫌疑,需人工复审,分类信息如下:"+JSON.stringify(labelArray))
            }else if(action==2){
                console.log("taskId="+taskId+",文本机器检测结果:不通过,分类信息如下:"+JSON.stringify(labelArray))
            }
        }else{
             console.log('ERROR:code=' + code+',msg='+msg);
        }
    }
    utils.sendHttpRequest(apiurl,"POST",post_data,responseCallback);
    

    响应示例

    结果为不通过时,输出示例如下:

    {
      "code": 200,
      "msg": "ok",
      "result": {
        "taskId": "fx6sxdcd89fvbvg4967b4787d78a",
        "action": 1,
        "censorType": 0,
        "lang": ["en","vi"],
        "isRelatedHit":false,
        "labels": [
          {
            "label": 100,
            "level": 1,
            "details": {
              "hint": [
                "xxx,ooo"
              ],
              "hitInfos": []
            },
            "subLabels": [
              {
                "subLabel": "100002"
              }
            ]
          }
        ]
      }
    }
    

    结果为通过时,输出示例如下:

    {
        "code": 200,
        "msg": "ok",
        "result": {
            "taskId": "079560a6c9f34783bdce47e168510038",
            "action": 0,
            "labels": [
                
            ]
        }
    }
    

    文本批量检测

    接口地址

    http://as.dun.163.com/v3/text/batch-check

    接口描述

    建议您使用POST请求, 且仅接受 application/x-www-form-urlencoded 编码格式。

    批量文本检测接口当前设计为检测前会统一对所有的文本参数做合法性校验,校验失败则此次提交失败,参数校验通过后,批量文本检测,最终每个文本会有对应的检测结果(该结果是业务性的错误,如文本检测超时、服务异常等),调用方可以根据dataId获取到每个文本的检测结果,所以批量接口中各个内容的dataId不能重复,否则调用方无确定对应文本的检测结果,目前接口侧没有做校验,需要调用方自己保证,为了保证通用性,接口数据返回顺序和提交顺序保持一致。

    文本限制

    单次批量提交 1-100条,每条 < 5000字符

    请求参数

    公共参数已省略,详细见 请求公共参数,其他参数如下:

    基本参数

    参数名称 数据类型 是否必填 取值范围 描述
    version String Y v3.1 接口版本号,可选值 v3.1
    texts String(json数组) Y 1-100条文本数据 json格式对象数组

    texts结构如下:

    参数名称 数据类型 是否必填 取值范围 描述
    dataId String Y 128 数据唯一标识,能够根据该值定位到该条数据,如对数据结果有异议,可以发送该值给客户经理查询
    content String Y 2^24-1 用户发表内容,建议对内容中JSON、表情符、HTML标签、UBB标签等做过滤,只传递纯文本,以减少误判概率。请注意为了检测效果和性能,如果该字段长度超过5000字符,会截取前面5000字符进行检测和存储。该字段不能为空,如果为空会返回参数错误。
    title String N 512 内容标题,适用于贴子、博客的文章标题等场景,建议抄送,辅助机审策略精准调优
    dataType Integer N 4 子数据类型,与易盾内容安全服务约定即可
    callback String N 2^16-1 数据回调参数,调用方根据业务情况自行设计,当调用文本离线结果获取接口时,该接口会原样返回该字段,详细见文本离线检测结果获取。作为数据处理标识,因此该字段应该设计为能唯一定位到该次请求的数据结构,如对用户的昵称进行检测,dataId可设为用户标识(用户ID),用户修改多次,每次请求数据的dataId可能一致,但是callback参数可以设计成定位该次请求的数据结构,比如callback字段设计成json,包含dataId和请求的时间戳等信息,当然如果不想做区分,也可以直接把callback设置成dataId的值
    publishTime Long N 13 用户发表时间,UNIX 时间戳(毫秒值)
    callbackUrl String N 256 人工审核结果回调通知到客户的URL。主动回调数据接口超时时间设置为2s,为了保证顺利接收数据,需保证接收接口性能稳定并且保证幂等性
    checkLabels String N 512 String数组,可指定多个垃圾类别进行机器检测,多个垃圾类别以逗号分隔("100,200")

    业务扩展参数

    参数名称 数据类型 是否必填 取值范围 描述
    用户信息 - N - 用户信息包含账号、昵称、等级、角色等,请查看 业务扩展参数—用户信息
    设备信息 - N - 设备信息包含设备ID、设备ID类型等,请查看 业务扩展参数—设备信息
    场景信息 - N - 场景信息包含私聊、群聊、直播、帖子等场景字段,请查看 业务扩展参数—场景信息
    | ip | String | N | 32 | 用户IP地址 |
    

    | extStr1 | String | N | 128 | 自定义扩展参数 | | extStr2 | String | N | 128 | 自定义扩展参数 | | extLon1 | Long | N | 2^63-1 | 自定义扩展参数 | | extLon2 | Long | N | 2^63-1 | 自定义扩展参数 |

    响应结果

    响应字段如下,响应通用字段已省略,详细见响应通用字段

    result 数据结构:

    参数名称 数据类型 是否必填 描述
    result List Y 返回具体的检测结果数据

    TextBatchCheckResult数据结构如下:

    参数名称 数据类型 描述
    dataId String 数据唯一标识,能够根据该值定位到该条数据
    taskId String 本次请求数据标识,可以根据该标识查询数据最新结果
    status Integer 文本检测状态码,定义为:0:检测成功,1:检测失败
    censonrType Number 审核模式,0:纯机审,1:机审+部分人审,2:机审+全量人审
    action Integer 检测结果,0:通过,1:嫌疑,2:不通过
    lang json数组 语种代码数组,详见 语种代码表
    labels json数组 分类信息

    labels数据结构如下:

    参数名称 数据类型 描述
    label Integer 分类信息,100:色情,200:广告,260:广告法,400:违禁,500:涉政,600:谩骂,700:灌水,900:其他
    level Integer 分类级别,1:不确定,2:确定
    details json对象 其他信息
    subLabels List 二级细分类

    subLabels数据结构如下:

    参数名称 数据类型 描述
    subLabel String 细分类,详细编码请参考下方对应细分类编码 对照表

    自定义细分类

    易盾支持subLabel自定义细分类过检并返回,如有需求,可联系您的专属安全策略经理添加。

    details数据结构如下:

    参数名称 数据类型 描述
    hint json数组 线索信息,用于定位文本中有问题的部分,辅助人工审核
    hitInfos List 命中信息(目前只返回命中用户自定义的)

    HitInfo数据结构如下:

    参数名称 数据类型 描述
    hitType Integer 命中类型

    请求示例

    Request: {
        "businessId": "30e92b6c84c274abf01e949729077034",
        "nonce": 478525692,
        "secretId": "deec28356fe8596d18fa8364a8cfbfd0",
        "timestamp": " 1546925205000",
        "version": "v3.1",
        "signature": "294407a232cc7d417d70e4f785eb7377",
        "texts": [{
            "dataId": "123",
            "content": "文本检测",
            "dataType": 1,
            "ip": "127.0.0.1",
            "account": "baijw",
            "deviceType": 1,
            "deviceId": "yneeeooooo-xl",
            "callback": "124",
            "publishTime": 1546925205001
        },{
            "dataId": "456",
            "content": "文本检测2",
            "dataType": 2,
            "ip": "127.0.0.1",
            "account": "baijw",
            "deviceType": 1,
            "deviceId": "yneeeooooo-xl2",
            "callback": "456",
            "publishTime": 1546925205001
        }]
    }
    

    响应示例

    Response: {
      "code": 200,
    	"msg": "ok",
    	"result": [
            {
                "dataId": "123",
                "taskId": "079560a6c9f34783bdce47e168510038",
                "status": 0,
                "action": 2,
    	    "lang": ["en","vi"],
                "labels": [{
                    "label": 100,
                    "level": 2,
                    "details": {
                        "hint": [
                            "xxx","ooo"
                        ],
                        "hitInfos": [{
                            "hitType": 10
                        }]
                    },
                    "subLabels": [{
                        "subLabel": "21000"
                    }]
                }]
            }, {
                "dataId": "456",
                "taskId": "079560a6c9f34783bdce47e168510066",
                "status": 0,
                "action": 1,
    	    "lang": ["en","vi"],
                "labels": [{
                    "label": 200,
                    "level": 2,
                    "details": {
                        "hint": [
                            "xxx","ooo"
                        ],
                        "hitInfos": [{
                            "hitType": 10
                        }]
                    },
                    "subLabels": [{
                        "subLabel": "21000"
                    }]
                }]      
            }
        ]
    }
    
    在线咨询 电话咨询:95163223 免费试用