getClient(); try { $response = $client->getAcsResponse($request); if(200 == $response->code){ $taskResults = $response->data; $detail = []; $flag = true; foreach ($taskResults as $taskResult) { if(200 == $taskResult->code){ $this->processSceneResult($taskResult, $flag); }else{ return $this->echoStr(-2000, 'task process fail:'.$response->code); } if (isset($taskResult->filteredContent)) { array_push($detail, $taskResult->filteredContent); } } if($flag == false){ return $this->echoStr(-10000, 'the scene is not normal', $detail); }else{ return $this->echoStr(10000, 'the scene is normal'); } }else{ return $this->echoStr(-2000, 'detect not success. code:'.$response->code); } } catch (Exception $e) { return $this->echoStr(-2000, $e); } } /** * @param $code * @param $msg */ private function echoStr($code, $msg, $detail = []){ return array( 'code' => $code, 'msg' => $msg, 'detail' => $detail ); } /** * @param $taskResult */ private function processSceneResult($taskResult, &$flag){ $sceneResults = $taskResult->results; foreach ($sceneResults as $sceneResult) { //根据scene和suggetion做相关的处理 $suggestion = $sceneResult->suggestion; $rate = $sceneResult->rate; // if($suggestion!='pass' && $rate>80){ // $flag = false; // } if ($suggestion == 'block') { $flag = false; } elseif ($suggestion == 'review' && $rate > 90) { $flag = false; } } } /** * 文本垃圾检测 * scenes字符串数组: * 关键词识别scene场景取值keyword * 分类label:正常normal 含垃圾信息spam 含广告ad 涉政politics 暴恐terrorism 色情porn 辱骂abuse * 灌水flood 命中自定义customized(阿里后台自定义) * 垃圾检测识别场景scene取值antispam * 分类label:正常normal 含违规信息spam 含广告ad 涉政politics 暴恐terrorism 色情porn 违禁contraband * 命中自定义customized(阿里后台自定义) * * tasks json数组 ,最多支持100个task即100段文本 * content 待检测文本,最长4000个字符 * * @param $text 支持字符串和数组 * @return null */ public function checkText($text){ if(empty($text)){ return null; } $request = new Green\TextScanRequest(); $request->setMethod("POST"); $request->setAcceptFormat("JSON"); if(is_array($text)){ $taskArr = []; foreach($text as $k => $v){ $task = 'task'.$k; $$task = array('dataId' => md5(uniqid($task)), 'content' => $v, 'category' => 'post', 'time' => round(microtime(true)*1000) ); array_push($taskArr, $$task); } $request->setContent(json_encode(array("tasks" => $taskArr, "scenes" => array("antispam")))); }else if(is_string($text)){ $task1 = array('dataId' => md5(uniqid()), 'content' => $text ); $request->setContent(json_encode(array("tasks" => array($task1), "scenes" => array("antispam")))); } return $this->processResponse($request); } /** * 图片检测 * scenes字符串数组: * 图片广告识别scene场景取值ad * 分类label: 正常normal 含广告ad * 图片鉴黄识别场景scene取值porn * 分类label:正常normal 性感sexy 色情porn * 图片暴恐涉政识别场景scene取值terrorism * 分类label:正常normal terrorism含暴恐图片 outfit特殊装束 logo特殊标识 weapon武器 politics渉政 others 其它暴恐渉政 * * tasks json数组 ,最多支持100个task即100张图片 * * @param $img 支持字符串和数组 * @return null */ public function checkImg($img){ if(empty($img)){ return null; } $request = new Green\ImageSyncScanRequest(); $request->setMethod("POST"); $request->setAcceptFormat("JSON"); if(is_array($img)){ $taskArr = array(); foreach($img as $k => $v){ $task = 'task'.$k; $$task = array('dataId' => md5(uniqid($task)), 'url' => $v, 'time' => round(microtime(true)*1000) ); array_push($taskArr, $$task); } $request->setContent(json_encode(array("tasks" => $taskArr, "scenes" => array("porn", "terrorism")))); }else if(is_string($img)){ $task1 = array('dataId' => md5(uniqid()), 'url' => $img, 'time' => round(microtime(true)*1000) ); $request->setContent(json_encode(array("tasks" => array($task1), "scenes" => array("porn", "terrorism")))); } return $this->processResponse($request); } }