123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- const { WhasAppClient } = require('./whatsapp-client.js');
- const express = require('express');
- const axios = require('axios')
- const map = new Map();
- const duplicateMap = new Map();
- const app = express();
- app.use(express.json());
- app.get("/api/qr/:be", (req, res) => {
- try {
- console.log(`params:${req.params.be}`);
- const be = req.params.be;
- const waMap = map.get(be);
- if (waMap != null) {
- res.json({ status: '00', be: be });
- return;
- }
- const duplicate = duplicateMap.get(be);
- if (duplicate != null) {
- res.json({ status: '02', be: be, description: 'Duplicate request' });
- return;
- }
- duplicateMap.set(be, be);
- const wa = new WhasAppClient(be, res);
- wa.client.on('ready', () => {
- console.log(`be:${wa.clientId}:Client is ready!`);
- map.set(wa.clientId, wa.client);
- if (!wa.isGenerateQr) {
- res.json({ status: '00', be: wa.clientId });
- }
- });
- } catch (error) {
- console.log(`error:${error}`);
- }
- });
- app.post("/api/send/:be", async (req, res) => {
- try {
- console.log(`params:${req.params.be}, body:${JSON.stringify(req.body)}`);
- const be = req.params.be;
- const client = map.get(be);
- if (client == null) {
- res.json({ status: '01', be: be, description: 'Unauthorize access' });
- return;
- }
- const to = req.body.to;
- const message = req.body.message;
- if (Object.hasOwn(message, 'media')) {
- const media = req.body.message.media;
- const data = req.body.message.data;
- const caption = req.body.message.caption;
- let messageMedia = await new MessageMedia(media, data, caption)
- await client.sendMessage(`${to}@c.us`, messageMedia,);
- res.json({ status: '00', be: be });
- return;
- }
- await client.sendMessage(`${to}@c.us`, message);
- res.json({ status: '00', be: be });
- } catch (error) {
- console.log(`error:${error}`);
- }
- });
- const https = require('https');
- const fs = require('fs');
- const port = process.env.PORT || 9009;
- const options = {
- key: fs.readFileSync('./server.key'),
- cert: fs.readFileSync('./server.crt'),
- rejectUnauthorized: false,
- requestCert: true,
- agent: false
- };
- https.createServer(options, app).listen(port, () => {
- console.log(`Server running on port ${port}`);
- });
|