// 云函数入口文件 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, }) }