检测一段文本是否包含违法违规内容
官方文档地址:
官方文档
直接上代码流程:
控制器代码:
$zijie = new Zijie();
//检测回复内容 是否合规
$content = $zijie->contentTesting($content);
if ($content == false) {
return $this->error('评论内容包含敏感信息,请修改',[],401);
// return $this->error('评论内容包含敏感信息,请修改');
}
Zijie类代码
<?php
namespace App\Apis\Microapp;
use App\Apis\BaseApi;
use Illuminate\Http\Client\Response;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Storage;
use Johnnylib\AliyunSls\Facades\Sls;
class Zijie extends BaseApi implements Microapp
{
protected $appid;
protected $secret;
protected $domain;
/**
* @var string $url 发起请求地址
*/
protected $url;
/**
* @var array|string 请求信息
*/
protected $param;
public function __construct()
{
$this->appid = config("htknow.zijie_Microapp.appid");
$this->secret = config("htknow.zijie_Microapp.secret");
$this->domain = config("htknow.zijie_Microapp.domain");
}
/**
* 获取小程序授权
*
* @return string
*/
public function getToken(): string
{
$cache_data = Cache::get('tt_token');
if (empty($cache_data) || $cache_data['expires_in'] <= time()) {
$this->url = $this->domain . "/apps/token";
$response = $this->checkResponse($this->get($this->url, ['appid' => $this->appid, 'secret' => $this->secret, 'grant_type' => 'client_credential']));
$cache_data = ['token' => $response['access_token'] ?? '', 'expires_in' => time() + ($response['expires_in'] - 600)];
Cache::put('tt_token', $cache_data, $response['expires_in']);
}
return $cache_data['token'] ?? '';
}
/**
* 处理请求响应结果
*
* @param Response $response
* @return array|bool
*/
protected function checkResponse(Response $response)
{
//解析数据
$data = $response->json();
//判断接口返回内容 0是正确
if (!isset($data['errcode'])) {
return $data;
}
Sls::info('请求字节小程序服务端接口错误', ['url' => $this->url, 'param' => json_encode($this->param), 'run_data' => json_encode($data)]);
return false;
}
/**
* 抖音内容检测
*
* @param string $content 内容
* @return bool|string
*/
public function contentTesting(string $content)
{
if (empty($content)) return false;
$article_content = strip_tags($content);
//获取token
$token = $this->getToken();
if (empty($token)) return false;
$this->url = $this->domain . "/v2/tags/text/antidirt";
//请求抖音内容检测接口
$response = $this->setHeaders(['X-Token' => $token])->post($this->url, ['tasks' => [['content' => $article_content]]]);
$response_contnet = $this->checkResponse($response);
//解析检测返回结果
if (isset($response_contnet['log_id']) && !empty($response_contnet['data']) && !empty($response_contnet['data'][0]['predicts'][0])) {
$predicts = $response_contnet['data'][0]['predicts'][0];
if ($predicts['prob'] == 1) return false;
}
return $article_content;
}
}