微信客服图片自动回复功能

1、创建数据库集合:service_num;更改集合权限设置

 

 
2、新建云函数 serviceNum  :处理数据库操作

exports.main = async (event, context) => {const wxContext = cloud.getWXContext();let openid = wxContext.OPENID;let sign = event.sign;  // 外部传入参数const db = cloud.database();let result = [];await db.collection('service_num').where({ // 必须加 awati 否则无法更新数据库_id: openid}).get().then(res =>{result = res.data;});if(result.length > 0){let _id = result[0]._id;await db.collection('service_num').doc(_id).set({  // 更新数据data: {service_num: sign}})}else{await db.collection('service_num').add({  // 新增数据data: {_id: openid,service_num: sign}})}return {event,openid: wxContext.OPENID,appid: wxContext.APPID,unionid: wxContext.UNIONID,}
}

3、新建云函数 replayByImg :获取云存储照片,实现自动回复

// 云函数入口文件
const cloud = require('wx-server-sdk')cloud.init()// 云函数入口函数
exports.main = async (event, context) => {const wxContext = cloud.getWXContext()let openid = wxContext.OPENID;const db = cloud.database();let sign = "";await db.collection('service_num').where({  // 必须用 await 才行_id: openid}).get().then(res =>{console.log(res.data);sign = res.data[0].service_num;})// 1、downloadFile:获取 Buffer 类型的图片内容// const fileID = event.fileID;const fileID = "云存储内图片fileID" + sign + ".png";const res = await cloud.downloadFile({ fileID});// 2、uploadTempMedia:获取 mediaId const uploadResult = await cloud.openapi.customerServiceMessage.uploadTempMedia({type: 'image',media: {contentType: 'image/jpg',value: res.fileContent}});// 3、客服消息自动回复const mediaId = uploadResult.mediaId;await cloud.openapi.customerServiceMessage.send({touser: wxContext.OPENID,msgtype: 'image',image: {mediaId: mediaId}})return {event,openid: wxContext.OPENID,appid: wxContext.APPID,unionid: wxContext.UNIONID,}
}

4、全局设置:消息推送只能推到一个环境的一个云函数(无法区分测试、生产环境)