From 56dc5a365d20418146cb89579d6b1c53cf59ffc0 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Mon, 30 Dec 2024 14:38:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E5=88=86=20inbound=20outbound=20?= =?UTF-8?q?=E7=9A=84messageId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/core/handler/whatsappHandler.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/wai-server/core/handler/whatsappHandler.js b/wai-server/core/handler/whatsappHandler.js index ec264fd..30d484b 100644 --- a/wai-server/core/handler/whatsappHandler.js +++ b/wai-server/core/handler/whatsappHandler.js @@ -19,6 +19,7 @@ const eventTypeMapped = { const timeField = { saved: 'createTime', pending: 'createTime', sent: 'sendTime', delivered: 'deliverTime', read: 'readTime', }; const statusMapped = { saved: 'accepted', pending: 'accepted', sent: 'sent', delivered: 'delivered', read: 'read', failed: 'failed' } const directionField = { 'message:received': 'inbound', 'message:updated': 'outbound' }; +const directionPrefix = { 'inbound': 'in_', 'outbound': 'out_' }; /** * @returns {Object} webhookBody @@ -35,11 +36,12 @@ const webhookBodyBuilder = (messageData, messageType) => { waiMessage: { ...messageData, ...(messageData.updateTime ? { [timeField[messageData.status]]: messageData.updateTime } : {}), + id: `${directionPrefix[messageData.direction]}${messageData.id}`, wamid: messageData.id, // direction: directionField[messageType], status: statusMapped?.[messageData.status] || messageData.status || '', // externalId: '-1', // todo: - externalId: `-${messageData.externalId || 1}`, // debug: 测试: 是负值 + externalId: messageData?.externalId || '', }, }; return message; @@ -99,7 +101,7 @@ const setupConnectionHandler = () => { /** * WhatsApp 消息事件 - * pending -> saved -> sent(*) -> delivered -> read + * pending ⏰ -> saved ⏰ -> sent(*) ✔ -> delivered ✔✔ -> read ✅ * saved -> pending -> sent(*) -> delivered -> read */ const setupMessageHandler = () => { @@ -113,7 +115,7 @@ const setupMessageHandler = () => { try { const now = new Date(new Date().getTime() + 60 * 60 * 1000).toISOString(); - const targetUpsert = messageData.externalId ? { actionId: messageData.externalId } : { id: messageData.id }; + const targetUpsert = messageData.externalId ? { actionId: messageData.externalId } : { wamid: messageData.id }; const savedMsg = await getOutboundMessage(targetUpsert); const bixFields = pick(savedMsg, ['actionId', 'externalId']); logger.info('message evt\n', eventName, messageData, savedMsg);