index.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // 云函数入口文件
  2. const cloud = require('wx-server-sdk')
  3. cloud.init()
  4. async function sendTemplateMessage(event) {
  5. const {OPENID} = cloud.getWXContext()
  6. // 接下来将新增模板、发送模板消息、然后删除模板
  7. // 注意:新增模板然后再删除并不是建议的做法,此处只是为了演示,模板 ID 应在添加后保存起来后续使用
  8. const addResult = await cloud.openapi.templateMessage.addTemplate({
  9. id: 'AT0002',
  10. keywordIdList: [3, 4, 5]
  11. })
  12. const templateId = addResult.result.templateId
  13. const sendResult = await cloud.openapi.templateMessage.send({
  14. touser: OPENID,
  15. templateId,
  16. formId: event.formId,
  17. page: 'page/cloud/pages/scf-openapi/scf-openapi',
  18. data: {
  19. keyword1: {
  20. value: '未名咖啡屋',
  21. },
  22. keyword2: {
  23. value: '2019 年 1 月 1 日',
  24. },
  25. keyword3: {
  26. value: '拿铁',
  27. },
  28. }
  29. })
  30. await cloud.openapi.templateMessage.deleteTemplate({
  31. templateId,
  32. })
  33. return sendResult
  34. }
  35. async function getWXACode() {
  36. const {result} = await cloud.openapi.wxacode.getUnlimited({
  37. scene: 'x=1',
  38. })
  39. // 此处返回 Base64 图片仅作为演示用,在实际开发中,
  40. // 应上传图片至云文件存储,然后在小程序中通过云文件 ID 使用
  41. return `data:${result.contentType};base64,${result.buffer.toString('base64')}`
  42. }
  43. // 云函数入口函数
  44. // eslint-disable-next-line
  45. exports.main = async (event) => {
  46. switch (event.action) {
  47. case 'sendTemplateMessage': {
  48. return sendTemplateMessage(event)
  49. }
  50. case 'getWXACode': {
  51. return getWXACode(event)
  52. }
  53. default: break
  54. }
  55. }