|
|
|
|
@ -2,13 +2,14 @@
|
|
|
|
|
|
|
|
|
|
const generateId = require('../../utils/generateId.util');
|
|
|
|
|
const { domain, name: domainName } = require('../../config').server;
|
|
|
|
|
const {second} = require('../../config').database;
|
|
|
|
|
const whatsappEvents = require('../emitter');
|
|
|
|
|
const createAsyncQueueProcessor = require('../emitter/queueProcessor');
|
|
|
|
|
const { callWebhook } = require('../webhook');
|
|
|
|
|
const { sessionStore } = require('..');
|
|
|
|
|
const { createWhatsApp } = require('../../core/baileys');
|
|
|
|
|
const { updateConnection, addCurrentConnection, resetConnection, getConnection } = require('../../services/connections.service');
|
|
|
|
|
const { getOutboundMessage, upsertOutboundMessage, createOutboundMessage } = require('../../services/outbound_messages.service');
|
|
|
|
|
const { getOutboundMessageByIdOrExternalId, upsertOutboundMessage, createOutboundMessage } = require('../../services/outbound_messages.service');
|
|
|
|
|
const { objectMapper, pick, isEmpty, omitEmpty } = require('../../utils/commons.util');
|
|
|
|
|
const { logger, getUserLogger } = require('../../utils/logger.util');
|
|
|
|
|
const { DbData, waiContentToDB, uploadMediaFile, ctxToSendBuilder, ctxToDB } = require('../../helper/wai.msg.helper');
|
|
|
|
|
@ -212,8 +213,9 @@ const setupMessageHandler = async () => {
|
|
|
|
|
const now = new Date(new Date().getTime() + 60 * 60 * 1000).toISOString();
|
|
|
|
|
|
|
|
|
|
const savedId = uniqueMsgId(messageData);
|
|
|
|
|
const targetUpsert = messageData.externalId ? { actionId: messageData.externalId } : { id: savedId };
|
|
|
|
|
const savedMsg = await getOutboundMessage(targetUpsert);
|
|
|
|
|
// const targetUpsert = messageData.externalId ? { actionId: messageData.externalId } : { id: savedId };
|
|
|
|
|
const targetUpsert = [{ actionId: messageData.externalId }, { id: savedId }];
|
|
|
|
|
const savedMsg = await getOutboundMessageByIdOrExternalId(targetUpsert);
|
|
|
|
|
const bixFields = pick(savedMsg, ['actionId', 'externalId']);
|
|
|
|
|
const savedTimeFields = pick(savedMsg, Object.values(timeField));
|
|
|
|
|
logger.info('message evt\n', eventName, messageData, savedMsg);
|
|
|
|
|
@ -229,9 +231,13 @@ const setupMessageHandler = async () => {
|
|
|
|
|
const pusher = { customerProfile_id: waiMessage.customerProfile?.id || '', customerProfile_name: waiMessage.customerProfile?.name || '' };
|
|
|
|
|
const record = objectMapper(waiMessage, { from: 'from', to: 'to', status: 'msg_status', type: 'msgtype' }, false);
|
|
|
|
|
const waiContentFieldsToDB = messageData.type ? waiContentToDB(messageData) : {};
|
|
|
|
|
// 是否空数据. 存储有数据的事件原文
|
|
|
|
|
const upsertMsgOrigin = !isEmpty(omitEmpty(waiContentFieldsToDB)) || isEmpty(savedMsg);
|
|
|
|
|
const msgOrigin = upsertMsgOrigin ? { message_origin: JSON.stringify(messageData) } : {};
|
|
|
|
|
// // 是否空数据. 存储有数据的事件原文
|
|
|
|
|
// const upsertMsgOrigin = !isEmpty(omitEmpty(waiContentFieldsToDB)) || isEmpty(savedMsg);
|
|
|
|
|
// const msgOrigin = upsertMsgOrigin ? { message_origin: JSON.stringify(messageData) } : {};
|
|
|
|
|
// 合并数据原文
|
|
|
|
|
const msgOriginObj = Object.assign({}, JSON.parse(savedMsg?.message_origin || '{}'), messageData);
|
|
|
|
|
const msgOrigin = { message_origin: JSON.stringify(msgOriginObj) };
|
|
|
|
|
|
|
|
|
|
if (isEmpty(savedMsg.IVADS_link) && ['image', 'sticker', 'audio', 'video', 'document'].includes(messageData.type)) {
|
|
|
|
|
// 存储文件
|
|
|
|
|
const filePath = messageData[messageData.type].filePath;
|
|
|
|
|
|