小程序使用云调用进行文本过滤

首先点击云开发配置

app.json写上“cloud”:true,如图

小程序使用云调用进行文本过滤_第1张图片

project.config.json写上云函数所在目录"cloudfunctionRoot": "cloudfunctions/",如图

小程序使用云调用进行文本过滤_第2张图片

没有生成文件的话就在小程序根目录下创建云函数文件夹

小程序使用云调用进行文本过滤_第3张图片

云函数目录右键新建node.js云函数,填写名字,并确认部署,等命令提示符弄完

小程序使用云调用进行文本过滤_第4张图片

├─checkContent
│      config.json   //云调用的权限配置
│      index.js   //云服务器node 入口文件
│      package.json   // NPM包依赖
│ ...

 

 config.json 文件内容

{
    "permissions": {
        "openapi": [
            "security.msgSecCheck",
            "security.imgSecCheck"
        ]
    }
}

index.js文件内容

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.msgSecChecksecurity.imgSecCheck这2个微信开放云调用方法(需开发者工具版本 >= 1.02.1904090),以往我们还要在服务器上单独写个方法,现在变得十分的方便,直接在云函数中调用即可。

这里需要重点说2个点

  • 图片security.imgSecCheck 方法只能接收buffer,所以需要把temp的临时图片转化为buffer的形式传过去,我们这里用到 getFileSystemManager 的方法。
  • 如果目录文件中没有config.json,需要自己建一个,并且做一个授权的配置。

封装好云函数之后右键上传并部署

小程序使用云调用进行文本过滤_第5张图片

上传好之后可以在云开发的控制台看到这个云函数

小程序使用云调用进行文本过滤_第6张图片

云函数和小程序调用前,都要运行初始化 wx.cloud.init()

小程序使用云调用进行文本过滤_第7张图片

调用文本过滤例子

wx.cloud.callFunction({
    name: 'checkContent',
    data: {
        txt: "测试测试"
    },
    success(_res) {
        console.log(_res)
    },
    fail(_res) {
        console.log(_res)
    }
})

//返回值参考
{
    "errMsg": "cloud.callFunction:ok",
    "result": {
        "msgR": {
            "errMsg": "openapi.security.msgSecCheck:ok",
            "errCode": 0
        },
        "imageR": false
    },
    "requestID": "77952319-b2b4-11e9-bdc8-525400192d0e"
}

调用图片过滤例子

//获取 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 {
                    //图片正常
                }
            }
        })
    }
})

//返回值参考
{
    "errMsg": "cloud.callFunction:ok",
    "result": {
        "msgR": false,
        "imageR": {
            "errMsg": "openapi.security.imgSecCheck:ok",
            "errCode": 0
        }
    },
    "requestID": "c126353c2d-b40b-11e9-81c4d-525400235f2a"
}

 

你可能感兴趣的:(小程序,云函数,小程序)