You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Global-sales/wai-server/api/channels/channel.controller.js

40 lines
1.5 KiB
JavaScript

const { sessionService } = require('../../core'); // Import from core/index.js
const { createWhatsApp } = require('../../core/baileys'); // Import from core/index.js
const { getConnection } = require('../../services/connections.service');
const { objectMapper, isEmpty } = require('../../utils/commons.util');
const { domain } = require('../../config').server;
exports.newConnect = async ctx => {
try {
const { phone } = ctx.query;
const findSession = await getConnection({ sesson_id: phone, connect_domain: domain });
// todo: 只有一条
if (!isEmpty(findSession)) {
const { sesson_id: sessonId, status } = findSession[0];
if (['open', 'connecting'].includes(status)) {
const sock = sessionService.getSession(sessonId);
if (!isEmpty(sock)) {
return sock;
}
}
}
const whatsApp1 = await createWhatsApp(phone);
const existsSession = sessionService.getSession(phone);
let qr;
if (isEmpty(existsSession)) {
qr = await whatsApp1.start();
const { sessionId } = sessionService.createSession(phone, whatsApp1);
}
ctx.assert(whatsApp1, 503, 'No available connections');
return { qr, phone, sessionId: phone };
} catch (error) {
console.error('create connection error', error);
ctx.assert(null, 500, 'Failed to create connection or generate QR code.');
}
};
exports.getAll = async () => {
const sessions = sessionService.sessions;
return Array.from(sessions);
};