|
|
|
@ -25,6 +25,8 @@ const statusMapped = { saved: 'accepted', pending: 'accepted', sent: 'sent', del
|
|
|
|
|
const directionField = { 'message:received': 'inbound', 'message:updated': 'outbound' };
|
|
|
|
|
const directionPrefix = { inbound: 'in_', outbound: 'out_' };
|
|
|
|
|
|
|
|
|
|
const uniqueMsgId = (msg) => `${directionPrefix[msg.direction]}${msg.to.replace('+', '')}_${msg.id}`;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @returns {Object} webhookBody
|
|
|
|
|
*/
|
|
|
|
@ -43,7 +45,7 @@ const webhookBodyBuilder = (messageData, messageType) => {
|
|
|
|
|
...defaultContent,
|
|
|
|
|
...messageData,
|
|
|
|
|
...(messageData.updateTime ? { [timeField[messageData.status]]: messageData.updateTime } : {}),
|
|
|
|
|
id: messageData.id && messageData.direction ? `${directionPrefix[messageData.direction]}${messageData.id}` : (messageData.id || generateId()),
|
|
|
|
|
id: messageData.id && messageData.direction ? uniqueMsgId(messageData) : (messageData.id || generateId()),
|
|
|
|
|
wamid: messageData.id || '',
|
|
|
|
|
// direction: directionField[messageType],
|
|
|
|
|
status: statusMapped?.[messageData.status] || messageData.status || '',
|
|
|
|
@ -145,12 +147,13 @@ const setupMessageHandler = () => {
|
|
|
|
|
try {
|
|
|
|
|
const now = new Date(new Date().getTime() + 60 * 60 * 1000).toISOString();
|
|
|
|
|
|
|
|
|
|
const savedId = `${directionPrefix[messageData.direction]}${messageData.id}`;
|
|
|
|
|
const savedId = uniqueMsgId(messageData);
|
|
|
|
|
const targetUpsert = messageData.externalId ? { actionId: messageData.externalId } : { id: savedId };
|
|
|
|
|
const savedMsg = await getOutboundMessage(targetUpsert);
|
|
|
|
|
const bixFields = pick(savedMsg, ['actionId', 'externalId']);
|
|
|
|
|
logger.info('message evt\n', eventName, messageData, savedMsg);
|
|
|
|
|
const typeField = { msgtype: messageData?.type || savedMsg?.msgtype || 'text' }; // fix: type 空
|
|
|
|
|
const _type = messageData?.type || savedMsg?.msgtype || 'text';
|
|
|
|
|
const typeField = { msgtype: _type }; // fix: type 空
|
|
|
|
|
|
|
|
|
|
const webhookBody = webhookBodyBuilder({ ...messageData, ...bixFields, ...typeField }, eventName);
|
|
|
|
|
const { waiMessage } = webhookBody;
|
|
|
|
@ -165,7 +168,7 @@ const setupMessageHandler = () => {
|
|
|
|
|
// todo: 现在只能收text 消息, 后续再加其他类型
|
|
|
|
|
|
|
|
|
|
const msgRow = await upsertOutboundMessage(
|
|
|
|
|
{ ...timeFields, ...upsertFields, ...pusher, ...contentFields, ...record, ...typeField, message_origin: savedMsg?.message_origin || JSON.stringify(messageData) },
|
|
|
|
|
{ ...timeFields, ...upsertFields, ...pusher, ...contentFields, ...record, type: _type, message_origin: savedMsg?.message_origin || JSON.stringify(messageData) },
|
|
|
|
|
targetUpsert,
|
|
|
|
|
);
|
|
|
|
|
// console.log('upsert=========================', upsert);
|
|
|
|
|