微信小程序使用京东云实现垃圾分类图片识别垃圾分类

在做微信小程序垃圾分类功能时,有用到拍照识别语音识别和文字识别,文字识别直接传参,语音识别需要将语音转化成文字,图片识别需要将图片转化成base64格式传参,通过调用京东云的接口来返回垃圾信息。具体实现我用了云函数来实现,具体步骤如下(无坑一步一步跟着走绝对能运行)

一、构建云函数

// 云函数入口文件
const cloud = require('wx-server-sdk')
const TcbRouter = require('tcb-router');
const axios = require('axios');
const {
  Context,
  Signer
} = require('jdcloud-sdk-signer')

cloud.init({
  env: ""
})
let db = cloud.database()
const _ = db.command

/**
 * 因为京东neuhub平台服务器崩溃,所以改用京东云垃圾分类API
 */

/**
 * 京东API配置
 * 垃圾分类api
 * 
 * 申请地址:https://www.jdcloud.com/cn/products/garbage-classification
 */
let jdaiyuncofig = {
  accessKeyId: 'JDC_F0904F0F3B595D5B7221FEAw3802CF8',
  secretAccessKey: 'DEA78F8481A2C51112337F2F89BD3BA9F0B'
//这里需要自己去京东云申请自己的密钥,上面的密钥是假的
}

function getAuthorization() {
  let ctx = new Context('nativecontainer.internal.cn-north-1.jdcloud-api.com', '/jdai/*', 'POST', null, '', 'cn-north-1')
  ctx.buildNonce()
  let signer = new Signer(ctx, jdaiyuncofig)
  let auth = signer.sign(new Date())
  return auth
}

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  let {
    APPID,
    OPENID
  } = wxContext
  const app = new TcbRouter({
    event
  })

  //提供通过文本进行垃圾分类查询的能力
  app.router('garbageTextSearch', async (ctx, next) => {
    let {
      text,
      devIntegral
    } = event
    let auth = getAuthorization()
    ctx.body = axios.post(`https://aiapi.jdcloud.com/jdai/garbageTextSearch`, {
      text: text,
      cityId: '310000'
    }, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': auth
      }
    }).then(res => {
      return res.data
    })
  })
    //获取用户openID
    app.router('openId', async (ctx, next) => {
        ctx.body = {
          openId: OPENID
        }
      })
      return app.serve()
    }

构建云函数时相应的插件如下,保存后通过工具=》构建npm来进行构建

{
    "name": "api",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "author": "",
    "license": "ISC",
    "dependencies": {
        "axios": "^0.20.0",
        "debug": "^4.3.1",
        "jdcloud-sdk-signer": "^2.0.2",
        "md5-node": "^1.0.1",
        "qs": "^6.9.4",
        "tcb-router": "^1.1.2",
        "wx-server-sdk": "~2.5.3"
    }
}

おすすめ

転載: blog.csdn.net/yinzisang/article/details/122878258