云函数openapi.security.msgSecCheck异常问题解决
问题:
自己做了个日志簿小程序,后端接口完全使用微信云函数,但在开发文字分享评论模块时遇到了问题:文字合规检查;
调用openapi.security.msgSecCheck异常如下:
{“errCode”:-501001,“errMsg”:"openapi.security.msgSecCheck:fail source.on is not a function; at openapi.security.msgSecCheck api; "}
解决:
因为创建了两个云环境 dev 和 publish
在调用云函数时需要动态切换当前环境如下:
[代码]//代码1
cloud.updateConfig({
env: {
database: wxContext.ENV,
storage: wxContext.ENV,
functions: wxContext.ENV
}
})
//代码2
const db = cloud.database({
env: wxContext.ENV
});
//代码3
let result = await cloud.openapi.security.msgSecCheck({
content: event.content
})
[代码]
这样就可以正常返回result了:
{“errMsg”:“openapi.security.msgSecCheck:ok”,“errCode”:0}
原因:
因为之前少了代码片2;其他接口都加了代码1 代码2;但文本合规检查接口想当然认为与数据库环境无关就删掉了代码2…掉坑了~
补充注意点:
合规检查正常时返回result,不合规时会走异常catch,而非直接返回到result…O_O ; 自定义示例代码如下,只有code:300时表示文字不合规;仅供参考~
[代码]
try {
console.log('待检测文本:'+event.content);
let result = await cloud.openapi.security.msgSecCheck({
content: event.content
})
console.log('result:'+JSON.stringify(result));
if (result && result.errCode.toString() === '87014'){
return { code: 300, msg: '内容含有违法违规内容', data: result } //
}else{
return { code: 200, msg: 'ok', data: result }
}
} catch (err) {
if (err.errCode.toString() === '87014'){
return { code: 300, msg: '内容含有违法违规内容', data: err } //
}
return { code: 400, msg: '调用security接口异常', data: err }
}
}
[代码]
以上,希望对大家有所帮助~
ps:日志簿项目二期功能正在开发中…一期开发了私密日志功能;放个程序码,希望大家支持!!~
开发交流,共同进步~
[图片]