mirror of
https://github.com/cheveguerra/whatsapp-api-tutorial.git
synced 2026-04-17 19:36:59 +00:00
Integrating with Express.js & Socket.io
This commit is contained in:
89
app.js
89
app.js
@@ -1,34 +1,29 @@
|
||||
const { Client } = require('whatsapp-web.js');
|
||||
const qrcode = require('qrcode-terminal');
|
||||
const express = require('express');
|
||||
const socketIO = require('socket.io');
|
||||
const qrcode = require('qrcode');
|
||||
const http = require('http');
|
||||
const fs = require('fs');
|
||||
|
||||
const app = express();
|
||||
const server = http.createServer(app);
|
||||
const io = socketIO(server);
|
||||
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: true }));
|
||||
|
||||
const SESSION_FILE_PATH = './whatsapp-session.json';
|
||||
let sessionCfg;
|
||||
if (fs.existsSync(SESSION_FILE_PATH)) {
|
||||
sessionCfg = require(SESSION_FILE_PATH);
|
||||
}
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.sendFile('index.html', { root: __dirname });
|
||||
});
|
||||
|
||||
const client = new Client({ puppeteer: { headless: true }, session: sessionCfg });
|
||||
|
||||
client.on('qr', (qr) => {
|
||||
console.log('QR RECEIVED', qr);
|
||||
qrcode.generate(qr);
|
||||
});
|
||||
|
||||
client.on('authenticated', (session) => {
|
||||
console.log('AUTHENTICATED', session);
|
||||
sessionCfg=session;
|
||||
fs.writeFile(SESSION_FILE_PATH, JSON.stringify(session), function (err) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
client.on('ready', () => {
|
||||
console.log('Client is ready!');
|
||||
});
|
||||
|
||||
client.on('message', msg => {
|
||||
if (msg.body == '!ping') {
|
||||
msg.reply('pong');
|
||||
@@ -37,4 +32,56 @@ client.on('message', msg => {
|
||||
}
|
||||
});
|
||||
|
||||
client.initialize();
|
||||
client.initialize();
|
||||
|
||||
// Socket IO
|
||||
io.on('connection', function(socket) {
|
||||
socket.emit('message', 'Connecting...');
|
||||
|
||||
client.on('qr', (qr) => {
|
||||
console.log('QR RECEIVED', qr);
|
||||
qrcode.toDataURL(qr, (err, url) => {
|
||||
socket.emit('qr', url);
|
||||
socket.emit('message', 'QR Code received, scan please!');
|
||||
});
|
||||
});
|
||||
|
||||
client.on('ready', () => {
|
||||
socket.emit('ready', 'Whatsapp is ready!');
|
||||
socket.emit('message', 'Whatsapp is ready!');
|
||||
});
|
||||
|
||||
client.on('authenticated', (session) => {
|
||||
socket.emit('authenticated', 'Whatsapp is authenticated!');
|
||||
socket.emit('message', 'Whatsapp is authenticated!');
|
||||
console.log('AUTHENTICATED', session);
|
||||
sessionCfg=session;
|
||||
fs.writeFile(SESSION_FILE_PATH, JSON.stringify(session), function (err) {
|
||||
if (err) {
|
||||
console.error(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Send message
|
||||
app.post('/send-message', (req, res) => {
|
||||
const number = req.body.number;
|
||||
const message = req.body.message;
|
||||
|
||||
client.sendMessage(number, message).then(response => {
|
||||
res.status(200).json({
|
||||
status: true,
|
||||
response: response
|
||||
});
|
||||
}).catch(err => {
|
||||
res.status(500).json({
|
||||
status: false,
|
||||
response: err
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
server.listen(8000, function() {
|
||||
console.log('App running on *: ' + 8000);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user