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、全局設置:消息推送只能推到一個環境的一個雲函數(無法區分測試、生產環境)