微信小程序-文本/图片/视频内容安全识别

// 微信小程序-文本内容安全识别
if (!function_exists('msgSecCheck')) {
    /**
     * Notes:微信小程序-文本内容安全识别msgSecCheck
     * User: 任性不起来了
     * Date: 2024/7/9 11:47
     * @param string $user_id    通过用户ID获取小程序用户openid
     * @param int $scene    场景枚举值(1 资料;2 评论;3 论坛;4 社交日志)
     * @param string $nickname  用户昵称,需使用UTF-8编码
     * @param $title    文本标题,需使用UTF-8编码
     * @param string $content   需检测的文本内容,文本字数的上限为2500字,需使用UTF-8编码
     * @param string $signature 个性签名,该参数仅在资料类场景有效(scene=1),需使用UTF-8编码
     * @return array
     */
    function msgSecCheck($user_id='',$scene=1,$content='',$nickname='',$title='',$signature='')
    {
        $openid = Db::name('user_info')->where('user_id',$user_id)->value('xcx_openid') ;
        $get_access_token = get_access_token() ;
        $access_token = $get_access_token['access_token'] ;

        $url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token={$access_token}" ;

        $param = [
            'content' => $content,
            'version' => 2,
            'scene' => $scene,
            'openid' => $openid,
            'title' => $title,
            'nickname' => $nickname,
            'signature' => $signature,
        ] ;
        $log['param'] = $param ;
        $param = json_encode($param,JSON_UNESCAPED_UNICODE);//一直返回ok,就是因为这里出现了问题,转json时,需保留编码格式

        $result = curl_post($url,$param);

        $result = json_decode($result,true);
        $log['curlpost_result'] = $result ;
        error_log(date('Y-m-d H:i:s').' $log==='.json_encode($log,320).' '.PHP_EOL,3,'../runtime/msgSecCheck.log');
        
        if($result['errcode'] == 0 && $result['result']['suggest'] == 'pass'){
            return ['code'=>1,'msg'=>$result['errmsg']] ;
        }else{
            return ['code'=>0,'msg'=>'内容违规' ] ;
        }

    }
}
// 微信小程序-音视频内容安全识别
if (!function_exists('mediaCheckAsync')) {
    /**
     * Notes:微信小程序-文音视频内容安全识别mediaCheckAsync
     * User: 任性不起来了
     * Date: 2024/7/9 11:47
     * @param string $user_id    通过用户ID获取小程序用户openid
     * @param int $scene    场景枚举值(1 资料;2 评论;3 论坛;4 社交日志)
     * @param string $nickname  用户昵称,需使用UTF-8编码
     * @param $title    文本标题,需使用UTF-8编码
     * @param string $content   需检测的文本内容,文本字数的上限为2500字,需使用UTF-8编码
     * @param string $signature 个性签名,该参数仅在资料类场景有效(scene=1),需使用UTF-8编码
     * @return array
     */
    function mediaCheckAsync($user_id='',$scene=1,$media_type=1,$media_url='')
    {
        $openid = Db::name('user_info')->where('user_id',$user_id)->value('xcx_openid') ;
        $get_access_token = get_access_token() ;
        $access_token = $get_access_token['access_token'] ;

        $url = "https://api.weixin.qq.com/wxa/media_check_async?access_token={$access_token}" ;

        $param = [
            'media_url' => $media_url,
            'version' => 2,
            'scene' => $scene,
            'media_type' => $media_type,
            'openid' => $openid,
        ] ;
        $param = json_encode($param,JSON_UNESCAPED_UNICODE);//一直返回ok,就是因为这里出现了问题,转json时,需保留编码格式

        $result = curl_post($url,$param);
        error_log(date('Y-m-d H:i:s').'mediaCheckAsync--- $result==='.$result.' '.PHP_EOL,3,'../runtime/msgSecCheck.log');

        $result = json_decode($result,true);
        if($result['errcode'] == 0){
            return ['code'=>1,'msg'=>$result['errmsg']] ;
        }else{
            return ['code'=>0,'msg'=>$result['errmsg']] ;
        }

    }
}
// 获取access_toke
if (!function_exists('get_access_token')) {
    /**
     * 获取access_toke
     */
    function get_access_token()
    {
        $access_token = Db::name('access_token')->where('is_del',0)->find();
        if(empty($access_token) || $access_token['access_token_expire'] <= time() ){

            //获取微信配置信息
            $config = \app\member\model\MemberConfig::where(["type" => 1, "name" => 'wechat'])->value("value");

            error_log(date('Y-m-d H:i:s').' $config==='.json_encode($config,320).' '.PHP_EOL,3,'../runtime/get_access_token.log');
            $miniconfig = json_decode($config, true);
            //即将过期、或不存在
            $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$miniconfig['mini_appid'].'&secret='.$miniconfig['mini_appsecret'];
//            $url = 'https://api.weixin.qq.com/cgi-bin/stable_token&grant_type=client_credential&appid='.$miniconfig['mini_appid'].'&secret='.$miniconfig['mini_appsecret'];

            $weixin = file_get_contents($url); //通过code换取网页授权access_token
            $jsondecode = json_decode($weixin); //对JSON格式的字符串进行编码
            $array = get_object_vars($jsondecode); //转换成数组

            error_log(date('Y-m-d H:i:s').' $array==='.json_encode($array,320).' '.PHP_EOL,3,'../runtime/get_access_token.log');


            if($array['access_token']){
                $update = [
                    'access_token' => $array['access_token'] ,
                    'access_token_expire' => time() + 5000 ,
                    'update_time' => time() ,
                ] ;
                Db::name('access_token')->where('aid',$access_token['aid'])->update($update);
                $access_token['access_token'] = $update['access_token'] ;
            }
        }

        return [ 'access_token' => $access_token['access_token'] ] ;

    }
}
//CURL POST
function curl_post($url, $data, $is_json = false, $header = [], $isCustomHeader = false)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($curl, CURLOPT_POST, 1);
        if ($is_json) {
            $headerArray = array("Content-type:application/json;charset=utf-8", "Accept:application/json");
            if ($isCustomHeader) {
                $headerArray = [];
            }
            foreach ($header as $key => $value) {
                $headerArray[] = $key . ':' . $value;
            }
            $data = json_encode($data);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);
        }
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值