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、全局设置:消息推送只能推到一个环境的一个云函数(无法区分测试、生产环境)