官方文档:https://help.aliyun.com/document_detail/467828.html?spm=a2c4g.11186623.help-menu-28415.d_3_1.7ab029b1JZTUV7&scm=20140722.H_467828._.OR_help-T_cn~zh-V_1
示例代码
安装SDK
composer require alibabacloud/green-20220302 2.20.0
<?php
/**
* 阿里内容检查
* https://help.aliyun.com/document_detail/467828.html?spm=a2c4g.11186623.help-menu-28415.d_3_1.13cc17f49tiCfb&scm=20140722.H_467828._.OR_help-T_cn~zh-V_1#669625e027ruf
*
* composer require alibabacloud/green-20220302 2.20.0
*/
namespace Ai;
use AlibabaCloud\SDK\Green\V20220302\Models\ImageModerationResponse;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\SDK\Green\V20220302\Green;
use AlibabaCloud\SDK\Green\V20220302\Models\ImageModerationRequest;
use AlibabaCloud\Tea\Utils\Utils;
use Exception;
class AliCheck
{
static $accessKeyId = "";
static $accessKeySecret = "";
static $endpoint = 'green-cip.ap-southeast-1.aliyuncs.com'; // 新加坡
// static $endpoint = 'green-cip.cn-shenzhen.aliyuncs.com'; // 深圳
/**
* 创建请求客户端
* @param $accessKeyId
* @param $accessKeySecret
* @param $endpoint
* @return Green
*/
static function create_client($accessKeyId, $accessKeySecret, $endpoint): Green
{
$config = new Config([
"accessKeyId" => $accessKeyId,
"accessKeySecret" => $accessKeySecret,
// 设置HTTP代理。
// "httpProxy" => "http://10.10.xx.xx:xxxx",
// 设置HTTPS代理。
// "httpsProxy" => "https://10.10.xx.xx:xxxx",
"endpoint" => $endpoint,
]);
return new Green($config);
}
/**
* 提交检测任务
* @param $accessKeyId
* @param $accessKeySecret
* @param $endpoint
* @return ImageModerationResponse
*/
static function invoke($accessKeyId, $accessKeySecret, $endpoint, $imgUrl): ImageModerationResponse
{
// 注意:此处实例化的client请尽可能重复使用,避免重复建立连接,提升检测性能。
$client = self::create_client($accessKeyId, $accessKeySecret, $endpoint);
// 创建RuntimeObject实例并设置运行参数。
$runtime = new RuntimeOptions([]);
// 检测参数构造。
$request = new ImageModerationRequest();
$serviceParameters = array(
// 待检测图片,公网可访问的URL。
'imageUrl' => $imgUrl,
// 检测数据唯一标识。
'dataId' => uniqid());
// 图片检测service:内容安全控制台图片增强版规则配置的serviceCode,示例:baselineCheck
// 支持service请参考:https://help.aliyun.com/document_detail/467826.html?0#p-23b-o19-gff
$request->service = "baselineCheck_cb"; // 出海版
// $request->service = "baselineCheck"; // 国内
$request->serviceParameters = json_encode($serviceParameters);
// 提交检测
return $client->imageModerationWithOptions($request, $runtime);
}
/**
* 检测图片
* @param $imgUrl
* @param $type 0- 返回检查数据 1-直接检查
* @return array
*/
static function checkImg($imgUrl = '', $type = 0)
{
try {
$response = self::invoke(self::$accessKeyId, self::$accessKeySecret, self::$endpoint, $imgUrl);
// 自动路由。
if (Utils::equalNumber(500, $response->statusCode) || Utils::equalNumber(500, $response->body->code)) {
//区域切换到cn-beijing。
$endpoint = "green-cip.cn-beijing.aliyuncs.com";
$response = self::invoke(self::$accessKeyId, self::$accessKeySecret, $endpoint, $imgUrl);
}
$data = json_encode($response->body, JSON_UNESCAPED_UNICODE);
$data = json_decode($data, true);
$data = $data['data'] ?? []; // riskLevel = high
$riskLevel = $data['riskLevel'] ?? 'none';
if ($type == 1 && $riskLevel == 'high') {
return [0, 'risk_level_high', []];
}
return [1, 'success', $data];
} catch (Exception $e) {
return [0, $e->getMessage(), []];
}
}
}
问题
按文档里的安装SDK,使用demo示例碰到问题:
确实引入库文件如图:
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use AlibabaCloud\Tea\Utils\Utils;

解决办法引入缺少的SDK库
composer require alibabacloud/tea-utils

1972

被折叠的 条评论
为什么被折叠?



