Node.js開發微信公眾號4 - 傳送模板
阿新 • • 發佈:2021-02-09
技術標籤:vuenodejswebsocketajaxpost
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