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