1.先要在后台创建一个自定义模板
模板内容如下
{{first.DATA}}
姓名:{{keyword1.DATA}}
性别:{{keyword2.DATA}}
体温:{{keyword3.DATA}}
{{remark.DATA}}
2.发送模板服务,此服务需要请求携带用户参数用户自定义模板内容
router.post("/sendTemplateMsg", async (req, res, next) => {
try {
// 接受h5请求的用户参数
const infoData = req.body
// 获取access_token
const { access_token } = await accessToken.fetchAccessToken()
// 发送模板
await sendTemplateMsg(infoData, access_token)
res.send({
state: "success",
msg: "模板消息推送成功",
})
} catch (error) {
console.log("模板消息推送失败:" + error)
next(error)
}
})
3.发送模板核心代码,会根据对应用户open_id 发送对应用户公众号
const rp = require("request-promise-native") //发送请求
class Template {
constructor() {}
sendTemplateMsg(userInfo, access_token) {
const url = `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${access_token}`
const requestData = {
touser: userInfo.openid, //openid
template_id: "xxx", //模板id
url: userInfo.avatar, //跳转url
data: { //模板数据
first: {
value: "身份信息",
color: "#173177",
},
keyword1: {
value: userInfo.nickname,
color: "#1d1d1d",
},
keyword2: {
value: userInfo.sex === 1 ? "男" : "女",
color: "#1d1d1d",
},
keyword3: {
value: userInfo.phone,
color: "#1d1d1d",
},
remark: {
value: userInfo.msg,
color: "#173177",
},
},
}
const options = {
url,
method: "POST",
json: true,
headers: {
"content-type": "application/json",
},
body: requestData,
}
return new Promise((resolve, reject) => {
rp(options)
.then(() => {
console.log("发送模板成功")
resolve()
})
.catch((err) => {
console.log(`发送模板失败: ${err}`)
reject(err)
})
})
}
}
const template = new Template()
module.exports = template