Pārlūkot izejas kodu

:tada: push part done

Song 5 gadi atpakaļ
vecāks
revīzija
b2d31d4d77
4 mainītis faili ar 50 papildinājumiem un 0 dzēšanām
  1. 4 0
      app.js
  2. 1 0
      package.json
  3. 24 0
      routes.js
  4. 21 0
      utils.js

+ 4 - 0
app.js

@@ -6,9 +6,13 @@ const http = require("http");
 require("dotenv").config();
 
 const indexRouter = require("./routes");
+const requestToken = require("./utils").requestToken;
 
 const app = express();
 
+requestToken(app);
+setInterval(() => requestToken(app), 100 * 60 * 1000);
+
 app.use(logger("dev"));
 app.use(express.json());
 app.use(express.urlencoded({ extended: false }));

+ 1 - 0
package.json

@@ -6,6 +6,7 @@
     "start": "node ./app.js"
   },
   "dependencies": {
+    "axios": "^0.20.0",
     "cookie-parser": "~1.4.4",
     "debug": "~2.6.9",
     "dotenv": "^8.2.0",

+ 24 - 0
routes.js

@@ -1,6 +1,7 @@
 const express = require("express");
 const router = express.Router();
 const crypto = require("crypto");
+const axios = require("axios");
 
 router.get("/", (req, res, next) => {
   res.send("OK");
@@ -20,4 +21,27 @@ router.get("/verify", (req, res, next) => {
   }
 });
 
+router.get("/push", (req, res, next) => {
+  // Reference: https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
+  let content = req.query.content || req.body.content;
+  console.log(`Get content: ${content}`);
+  let access_token = req.app.access_token;
+  let request_data = {
+    touser: process.env.OPEN_ID,
+    template_id: process.env.TEMPLATE_ID,
+  };
+  request_data.data = { text: content };
+  axios
+    .post(
+      `https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=${access_token}`,
+      request_data
+    )
+    .then((response) => {
+      res.json(response.data);
+    })
+    .catch((error) => {
+      res.json(error);
+    });
+});
+
 module.exports = router;

+ 21 - 0
utils.js

@@ -0,0 +1,21 @@
+const axios = require("axios");
+
+module.exports = {
+  requestToken: function (app) {
+    let token = "";
+    axios
+      .get(
+        `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${process.env.APP_ID}&secret=${process.env.APP_SECRET}`
+      )
+      .then((res) => {
+        if (res.data && res.data.access_token) {
+          console.log("Get token: ", res.data.access_token);
+          token = res.data.access_token;
+          app.access_token = token;
+        } else {
+          console.error(res.data);
+        }
+      });
+    return token;
+  },
+};