前言

用户的评论,或者什么图片上传,需要进行智能审核,人工也可以就是太麻烦了
,本文介绍如何在前端js中调用华为云内容审核的api


一、华为云的内容审核api的调用需要哪些东西?

1.华为云的账号 2.华为云IAM的账号密码,用来获取token

二、使用步骤

1.先注册一个华为云的账号

2.申请内容审核服务

在官网 搜索内容审核,点击立即使用,选择开通文本内容审核还是图片内容审核
开通服务

3.华为云内容审核API的官方文档

从官方文档可以看出
(以内容审核中的图像审核为例)
①.请求地址:
https://moderation.cn-north-1.myhuaweicloud.com/v2/{project_id}/moderation/image

  • moderation 表示内容审核模块
  • cn-north-1 是表示哪个服务区
  • /v2/{project_id}/moderation/image 这一段表示内容审核里面的API

上面请求地址中的的project_id是什么呢,如何获取呢
project_id 表示用户的project_id
获取:登陆华为云 -> 用户中心 -> 我的凭证 -> api凭证 即可查看对应区域的项目ID。

②.请求头
在这里插入图片描述
这里需要传用户token

获取用户token的API代码如下
因为我是用的uni-app写的,所以用的是uni.request请求方法,根据你本身代码修改

	uni.request({
		method: 'POST',//请求方式
		url: 'https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens', //获取用户token的api
		header: {
			'Content-Type': 'application/json;charset=utf8' //必填固定内容
		},
		data: {
			"auth": {//认证信息
				"identity": {//认证参数
					"methods": [//认证方法
						"password" //密码输入
					],
					"password": {//IAM用户密码认证信息。
						"user": {//需要获取Token的IAM用户信息
							"name": Config.userName,  //IAM用户名
							"password": Config.password, //IAM用户的登录密码。
							"domain": {//IAM用户所属帐号信息。
								"name": Config.domainName //IAM用户所属帐号名称
							},

						}
					}
				},
				"scope": {//Token的使用范围,取值为project或domain,二选一即可。
			//取值为project时,表示获取的Token可以作用于项目级服务,仅能访问指定project下的资源
					"project": {
						"id":id,//IAM用户所属帐号的项目ID
						"name": name //IAM用户所属帐号的项目名称
					}
					
					//取值为domain时,表示获取的Token可以作用于全局服务,全局服务不区分项目或区域
					 //"domain": {
					 	//"id":Config.domainID   //IAM用户所属帐号ID
					 	//"name": Config.domainName //IAM用户所属帐号名
					//}
				}
			}
		},
		success: (res) => {
			//成功后获取到X-Subject-Token 注意这个是在请求头里面
			uni.setStorageSync('hwytoken', res.header['X-Subject-Token']);
		},
	})

4.获取token 成功后,开始调用图片内容审核api

代码如下

const imgModeration = function(url, success) {
	return new Promise((resolve, reject) => {
		uni.request({
			method: 'POST',
			//Config.EndPoint 地址前缀  https://moderation.cn-north-1.myhuaweicloud.com
			//Config.projectId 如上文3小点中的 ①
			url: Config.EndPoint + '/v2/' + Config.projectId + '/moderation/image',
			header: {
				'X-Auth-Token': uni.getStorageSync('hwytoken'),
			},
			data: {
				"categories": [
					"politics",
					"terrorism",
					"porn",
					"ad",
				],
				"moderation_rule": "default",
				"url": "",
				"image": url,
				"threshold": ""
			},
			success: (res) => {
				resolve(res);
			},
			fail: (err) => {
				reject(err);
			},
		})
	})
}

参数说明

  • categories
    检测场景:
    politics:是否涉及政治人物的检测。
    terrorism:是否包含涉政暴恐元素的检测。
    porn:是否包含涉黄内容元素的检测。
    ad:是否包含广告图文的检测。
    all:包含politics、terrorism和porn三种场景的检测。
    可通过配置上述场景,来完对应场景元素的检测。
    为空或无此参数表示politics和terrorism都检测,但不包含porn场景。
  • moderation_rule
    图像审核规则名称,默认使用default规则。
  • url
    图片的URL路径,目前支持:
    公网HTTP/HTTPS URL
    华为云OBS提供的URL,使用OBS数据需要进行授权。
  • image
    图片文件Base64编码字符串。要求base64编码后大小不超过10M。
    政治人物检测人脸部分不小于50*50像素。
    支持JPG/PNG/BMP格式。

image和url二选一即可

返回结果(我已经懒得写了。。。这里放上截图,还有文档连接吧
在这里插入图片描述

总结

一开始以为很难,发现其实挺简单的,如果使用image上传图片需要把图片转成Base64格式,图片转Base64格式我将会在下篇文章分享(还没写的,写完我在回来放连接)

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐