88 lines
2.3 KiB
JavaScript
88 lines
2.3 KiB
JavaScript
// 云函数入口文件
|
||
const cloud = require('wx-server-sdk')
|
||
|
||
cloud.init()
|
||
|
||
// 云函数入口函数
|
||
exports.main = async (event, context) => {
|
||
console.log(event)
|
||
switch (event.action) {
|
||
case 'requestSubscribeMessage': {
|
||
return requestSubscribeMessage(event)
|
||
}
|
||
case 'sendSubscribeMessage': {
|
||
return sendSubscribeMessage(event)
|
||
}
|
||
case 'getWXACode': {
|
||
return getWXACode(event)
|
||
}
|
||
case 'getOpenData': {
|
||
return getOpenData(event)
|
||
}
|
||
default: {
|
||
return
|
||
}
|
||
}
|
||
}
|
||
|
||
async function requestSubscribeMessage(event) {
|
||
// 此处为模板 ID,开发者需要到小程序管理后台 - 订阅消息 - 公共模板库中添加模板,
|
||
// 然后在我的模板中找到对应模板的 ID,填入此处
|
||
return '请到管理后台申请模板 ID 然后在此替换' // 如 'N_J6F05_bjhqd6zh2h1LHJ9TAv9IpkCiAJEpSw0PrmQ'
|
||
}
|
||
|
||
async function sendSubscribeMessage(event) {
|
||
const { OPENID } = cloud.getWXContext()
|
||
|
||
const { templateId } = event
|
||
|
||
const sendResult = await cloud.openapi.subscribeMessage.send({
|
||
touser: OPENID,
|
||
templateId,
|
||
miniprogram_state: 'developer',
|
||
page: 'pages/openapi/openapi',
|
||
// 此处字段应修改为所申请模板所要求的字段
|
||
data: {
|
||
thing1: {
|
||
value: '咖啡',
|
||
},
|
||
time3: {
|
||
value: '2020-01-01 00:00',
|
||
},
|
||
}
|
||
})
|
||
|
||
return sendResult
|
||
}
|
||
|
||
async function getWXACode(event) {
|
||
|
||
// 此处将获取永久有效的小程序码,并将其保存在云文件存储中,最后返回云文件 ID 给前端使用
|
||
|
||
const wxacodeResult = await cloud.openapi.wxacode.get({
|
||
path: 'pages/openapi/openapi',
|
||
})
|
||
|
||
const fileExtensionMatches = wxacodeResult.contentType.match(/\/([^\/]+)/)
|
||
const fileExtension = (fileExtensionMatches && fileExtensionMatches[1]) || 'jpg'
|
||
|
||
const uploadResult = await cloud.uploadFile({
|
||
// 云文件路径,此处为演示采用一个固定名称
|
||
cloudPath: `wxacode_default_openapi_page.${fileExtension}`,
|
||
// 要上传的文件内容可直接传入图片 Buffer
|
||
fileContent: wxacodeResult.buffer,
|
||
})
|
||
|
||
if (!uploadResult.fileID) {
|
||
throw new Error(`upload failed with empty fileID and storage server status code ${uploadResult.statusCode}`)
|
||
}
|
||
|
||
return uploadResult.fileID
|
||
}
|
||
|
||
async function getOpenData(event) {
|
||
return cloud.getOpenData({
|
||
list: event.openData.list,
|
||
})
|
||
}
|