使用ThinkJs搭建微信中控服务的实现方法(2)

字段 类型 注释
id   int   主键  
template_id   varchar   模版id  
openid   varchar   用户的标识,对当前公众号唯一  
url   varchar   跳转url  
miniprogram   varchar   跳转小程序  
data   varchar   发送内容json字符串  
add_time   double   添加时间戳  
send_time   double   发送时间戳  
send_status   varchar   发送结果  
wx_config_id   double   对应配置的微信号id  
uuid   varchar   本次发送的uuid,业务系统可通过uuid查询模版消息推送结果  

处理微信推送消息

文件目录

/src/controller/index.js

文件内容

module.exports = class extends think.Controller { /* * 入口:验证开发者服务器 * 验证开发者服务器,这里只是演示,所以没做签名校验,实际上应该要根据微信要求进行签名校验 */ async indexAction() { let that = this; if (that.method != 'REPLY') { return that.json({code: 1, msg: '非法请求', data: null}) } const {echostr} = that.get(); return that.end(echostr); } /* * 文字 * 用于处理微信推过来的文字消息 */ async textAction() { let that = this; let {id, signature, timestamp, nonce, openid} = that.get(); let {ToUserName, FromUserName, CreateTime, MsgType, Content, MsgId} = that.post(); ..... that.success('') } /* * 事件 * 用于处理微信推过来的事件消息,例如点击菜单等 */ async eventAction() { let that = this; let {id, signature, timestamp, nonce, openid} = that.get(); let {ToUserName, FromUserName, CreateTime, MsgType, Event, EventKey, Ticket, Latitude, Longitude, Precision} = that.post(); switch (Event) { case 'subscribe': // 关注公众号 ... break; case 'unsubscribe': // 取消关注公众号 ... break; case 'SCAN': // 已关注扫码 ... break; case 'LOCATION': // 地理位置 ... break; case 'CLICK': // 自定义菜菜单 ... break; case 'VIEW': // 跳转 ... break; case 'TEMPLATESENDJOBFINISH':// 模版消息发送完毕 ... break; } that.success('') } }

注:支持的action包括: textAction 、 imageAction 、 voiceAction 、 videoAction 、 shortvideoAction 、 locationAction 、 linkAction 、 eventAction 、 deviceTextAction 、 deviceEventAction 。

公众号后台配置

使用ThinkJs搭建微信中控服务的实现方法

注:后面跟的id参数是为了区分是哪个公众号推过来的消息,在上面的接口参数中也有体现

微信相关API的编写

目录结构

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a9cc9d49876738c76e803f71ef62c02c.html