折翼天使资源社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 27|回复: 0

[文档教程] 微信小程序nodejs 实现发送模版消息

[复制链接]

6981

主题

7363

帖子

285

积分

网站编辑

Rank: 8Rank: 8

天使之心
0
注册时间
2013-8-22
发表于 2018-11-23 11:22:32 | 显示全部楼层 |阅读模式
<font color="Black">功能分析

现需要实现一个用户报名成功通知到功能,管理员在后台审核之后,会通过用户的申请,同时发送小程序报名成功的模版消息到用户的微信上。

首先需要分析一下微信发送模版消息的接口
  1. //模版消息的结构
  2. let opts = {
  3. touser: param.openid, //目标用户的openid
  4. template_id: template_id, //模版消息的id,需要在小程序管理配置获得
  5. form_id: param.formId,//当前用户通过表单提交行为获得的formId 有效期7天
  6. data: {
  7. "keyword1": {
  8. "value": '值1',
  9. "color": "#1d1d1d"
  10. },
  11. "keyword2": {
  12. "value": 值2,
  13. "color": "#1d1d1d"
  14. }
  15. }
  16. }
复制代码
复制代码
  1. //发送小程序模版消息的请求
  2. let data = {
  3. method: 'POST',
  4. //请求接口 需要一个生成有效期为两小时的 accessToken,见下方代码
  5. url: `https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=${accessToken}`,
  6. //将模版消息的结构字符画
  7. body: JSON.stringify(opts),
  8. header: {
  9. 'content-type': 'application/json' // 默认值
  10. }
  11. }
复制代码
复制代码
  1. //请求获取临时 AccessToken 的 Promise函数
  2. const request = require('request');
  3. const fetchAccessTokenReq = new Promise((resolve, reject) => {
  4. let APPID = '你的小程序appid';
  5. let secret = '你的小程序appsecret';
  6. let url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${secret}`
  7. request.get(url, (err, response, data) => {
  8. if (err) {
  9. resolve(false);
  10. } else {
  11. let AccessToken = JSON.parse(data);
  12. resolve(AccessToken);
  13. }
  14. })
  15. })
复制代码
复制代码
表单收集

假设活动字段设计为如下
  1. const bookingrecord = mongoose.Schema({
  2. activity_id: String, //用户请求的参加活动的id
  3. activity_content: Object, //活动对象
  4. openid: String, //参加用户的openid
  5. submit: Object,// 提交表单
  6. isAllow: Boolean, //是否已经同意
  7. formId:String //表单id 也可以为单个用户保存
  8. })
复制代码
复制代码
在小程序的form 表单中间通过 submit 提交获取到 formid,通过 post请求提交并保存到数据库
[code]// 在page 的 form 表单中收集

活动报名
* 真实姓名

* 联系方式
6e84cc3c71a444cfabcdc9549b8ee23e.png