Merge branch 'main' of github.com:hainatravel/global-sales

dev/supplier-email-drawer
LiaoYijun 9 months ago
commit 8b9fcb47e0

5
.gitignore vendored

@ -14,7 +14,8 @@ dist-ssr
distTest distTest
dev-dist dev-dist
tmp tmp
schema schema*
.gitkeep
# Editor directories and files # Editor directories and files
.vscode/* .vscode/*
@ -32,3 +33,5 @@ schema
**/LexicalEditor0 **/LexicalEditor0
*.zip *.zip
.env.*

@ -74,7 +74,7 @@ const send = async ctx => {
await createOutboundMessage({ ...toUpsert }); await createOutboundMessage({ ...toUpsert });
// wsToSend.sendTextMessage(to, content, actionId); // wsToSend.sendTextMessage(to, content, actionId);
const messagePayload = ctxToSendBuilder(_data); const messagePayload = ctxToSendBuilder(_data);
waEmitter.emit('request.' + from + '.send.' + msgtype, messagePayload); waEmitter.emit('request.' + from + '.send.message', messagePayload);
return 'Message sent successfully'; // { wsToSend, ret: 'Message sent successfully' }; return 'Message sent successfully'; // { wsToSend, ret: 'Message sent successfully' };
} catch (error) { } catch (error) {
console.error('Error sending message:', error); console.error('Error sending message:', error);

@ -4,11 +4,11 @@ const generateId = require('../../utils/generateId.util');
const { domain, name: domainName } = require('../../config').server; const { domain, name: domainName } = require('../../config').server;
const whatsappEvents = require('../emitter'); const whatsappEvents = require('../emitter');
const { callWebhook } = require('../webhook'); const { callWebhook } = require('../webhook');
const { updateConnection, addCurrentConnection, resetConnection } = require('../../services/connections.service');
const { objectMapper, pick } = require('../../utils/commons.util');
const { sessionStore } = require('..'); const { sessionStore } = require('..');
const { createWhatsApp } = require('../../core/baileys');
const { updateConnection, addCurrentConnection, resetConnection, getConnection } = require('../../services/connections.service');
const { getOutboundMessage, upsertOutboundMessage } = require('../../services/outbound_messages.service'); const { getOutboundMessage, upsertOutboundMessage } = require('../../services/outbound_messages.service');
const { objectMapper, pick } = require('../../utils/commons.util');
const { logger, getUserLogger } = require('../../utils/logger.util'); const { logger, getUserLogger } = require('../../utils/logger.util');
const { DbData } = require('../../helper/wai.msg.helper'); const { DbData } = require('../../helper/wai.msg.helper');
@ -45,6 +45,7 @@ const webhookBodyBuilder = (messageData, messageType) => {
...defaultContent, ...defaultContent,
...messageData, ...messageData,
...(messageData.updateTime ? { [timeField[messageData.status]]: messageData.updateTime } : {}), ...(messageData.updateTime ? { [timeField[messageData.status]]: messageData.updateTime } : {}),
type: messageData.type || messageData.msgtype || '',
id: uniqueMsgId(messageData) || messageData.id || generateId(), id: uniqueMsgId(messageData) || messageData.id || generateId(),
wamid: messageData.id || '', wamid: messageData.id || '',
// direction: directionField[messageType], // direction: directionField[messageType],
@ -63,9 +64,11 @@ const webhookBodyFill = (webhookBody, messageData) => {
/** /**
* WhatsApp 连接事件 * WhatsApp 连接事件
* * connection:connect
* * connection:open
* * connection:close
*/ */
const setupConnectionHandler = () => { const setupConnectionHandler = () => {
// connectionEventNames.forEach(eventName => {
whatsappEvents.on('connection:connect', async connectionData => { whatsappEvents.on('connection:connect', async connectionData => {
try { try {
getUserLogger(connectionData.phone).info({ msg: `连接https://web.whatsapp.com/`, connectionData }); getUserLogger(connectionData.phone).info({ msg: `连接https://web.whatsapp.com/`, connectionData });
@ -114,11 +117,11 @@ const setupConnectionHandler = () => {
logger.error({ connectionData, error }, 'error close connection'); logger.error({ connectionData, error }, 'error close connection');
} }
}); });
// });
}; };
/** /**
* 监听 Creds 更新事件 * 监听 Creds 更新事件
* * creds:update
*/ */
const setupCredsHandler = () => { const setupCredsHandler = () => {
whatsappEvents.on('creds:update', async creds => { whatsappEvents.on('creds:update', async creds => {
@ -134,8 +137,8 @@ const setupCredsHandler = () => {
/** /**
* WhatsApp 消息事件 * WhatsApp 消息事件
* pending -> saved -> sent(*) -> delivered -> read * * pending -> saved -> sent(*) -> delivered -> read
* saved -> pending -> sent(*) -> delivered -> read * * saved -> pending -> sent(*) -> delivered -> read
*/ */
const setupMessageHandler = () => { const setupMessageHandler = () => {
messageEventNames.forEach(eventName => { messageEventNames.forEach(eventName => {
@ -175,7 +178,7 @@ const setupMessageHandler = () => {
targetUpsert, targetUpsert,
); );
// console.log('upsert=========================', upsert); // console.log('upsert=========================', upsert);
// todo: 把内容加上, 否则前端没显示 // 把内容加上, 否则前端没显示
await callWebhook(webhookBodyFill(webhookBody, msgRow)); await callWebhook(webhookBodyFill(webhookBody, msgRow));
} catch (error) { } catch (error) {
logger.error({ messageData, error }, 'error call webhook'); logger.error({ messageData, error }, 'error call webhook');
@ -193,8 +196,22 @@ function setupWhatsappHandler() {
/** /**
* 登出: 当前服务的所有连接 * 登出: 当前服务的所有连接
*/ */
async function resetCurrentConnection() { async function resetCurrentConnections() {
await resetConnection(); await resetConnection();
} }
module.exports = { setupWhatsappHandler, resetCurrentConnection }; /**
* 登录: 当前服务的所有连接
*/
async function loginCurrentConnections() {
const currents = await getConnection({ connect_domain: domain, connect_name: domainName });
for (const user of currents) {
const { wa_id: waId } = user;
const phone = waId.replace('+', '');
const whatsApp1 = await createWhatsApp(phone);
whatsApp1.start();
sessionStore.createSession(phone, whatsApp1);
}
}
module.exports = { setupWhatsappHandler, resetCurrentConnections, loginCurrentConnections };

@ -5,7 +5,7 @@ const server = require('./server');
const { port } = require('./config').server; const { port } = require('./config').server;
const { setupWhatsappHandler, resetCurrentConnection } = require('./core/handler/whatsappHandler'); const { setupWhatsappHandler, resetCurrentConnections, loginCurrentConnections } = require('./core/handler/whatsappHandler');
async function bootstrap() { async function bootstrap() {
/** /**
@ -22,7 +22,8 @@ async function bootstrap() {
bootstrap() bootstrap()
.then(server => { .then(server => {
console.log(`🚀 Server listening on port ${server.address().port}!`); console.log(`🚀 Server listening on port ${server.address().port}!`);
resetCurrentConnection(); // resetCurrentConnections();
loginCurrentConnections();
}) })
.catch(err => { .catch(err => {
setImmediate(() => { setImmediate(() => {

Loading…
Cancel
Save