检查文字、图片内容是否合规
云函数内容
javascript">const cloud = require('wx-server-sdk');
cloud.init();
exports.main = async (event, context) => {
console.log(event.txt);
const { value, txt } = event;
try {
let msgR = false;
let imageR = false;
//检查 文字内容是否违规
if (txt) {
msgR = await cloud.openapi.security.msgSecCheck({
content: txt
})
}
//检查 图片内容是否违规
if (value) {
imageR = await cloud.openapi.security.imgSecCheck({
media: {
header: { 'Content-Type': 'application/octet-stream' },
contentType: 'image/png',
value: Buffer.from(value)
}
})
}
return {
msgR, //内容检查返回值
imageR //图片检查返回值
};
} catch (err) {
// 错误处理
// err.errCode !== 0
return err
}
}
-
主要用到security.msgSecCheck和security.imgSecCheck这2个微信开放云调用方法
-
图片security.imgSecCheck 方法只能接收buffer,所以需要把temp的临时图片转化为buffer的形式传过去,我们这里用到 getFileSystemManager 的方法。
需要在config.json文件中做一个授权配置
javascript">{
"permissions": {
"openapi": [
"security.msgSecCheck",
"security.imgSecCheck"
]
}
}
检查文字内容安全
javascript">wx.cloud.callFunction({
name: 'checkContent',
data: {
txt: "乐于分享,一起进步"
},
success(_res) {
console.log(_res)
},
fail(_res) {
console.log(_res)
}
})
检查图片内容安全
javascript">//获取 temp临时图片文件的 buffer
wx.getFileSystemManager().readFile({
filePath: tempImg[0], //这里做示例,所以就选取第一张图片
success: buffer => {
console.log(buffer.data)
//这里是 云函数调用方法
wx.cloud.callFunction({
name: 'checkContent',
data: {
value: buffer.data
},
success(json) {
console.log(json.result.imageR)
if (json.result.imageR.errCode == 87014) {
wx.showToast({
title: '图片含有违法违规内容',
icon: 'none'
});
console.log("bad")
} else {
//图片正常
}
}
})
}
})
先要用 getFileSystemManager() 获取临时图片的buffer(这个是重点),然后再通过wx.cloud.callFunction的方法调用 checkContent的云函数中security.imgSecCheck的方法,校验一张图片是否含有违法违规内容。