From 839fe74a2cdb7cacad7f14b33cc033e92baf8bac Mon Sep 17 00:00:00 2001 From: Diego Marino <97317367+diegomustafamarino@users.noreply.github.com> Date: Tue, 20 Aug 2024 22:50:25 -0300 Subject: [PATCH 1/2] Put Meta Data in Message Add externalAdReplyBody in Message for controlling ADS replies. --- .../chatbot/dify/services/dify.service.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/api/integrations/chatbot/dify/services/dify.service.ts b/src/api/integrations/chatbot/dify/services/dify.service.ts index a1fbf21a..95da1c3e 100644 --- a/src/api/integrations/chatbot/dify/services/dify.service.ts +++ b/src/api/integrations/chatbot/dify/services/dify.service.ts @@ -726,6 +726,9 @@ export class DifyService { : '' }` : undefined, + externalAdReplyBody: msg?.message?.extendedTextMessage?.contextInfo?.externalAdReply?.body + ? `externalAdReplyBody|${msg.message.extendedTextMessage.contextInfo.externalAdReply.body}` + : undefined, }; const messageType = Object.keys(types).find((key) => types[key] !== undefined) || 'unknown'; @@ -734,9 +737,13 @@ export class DifyService { } private getMessageContent(types: any) { - const typeKey = Object.keys(types).find((key) => types[key] !== undefined); + const typeKey = Object.keys(types).find((key) => key !== 'externalAdReplyBody' && types[key] !== undefined); - const result = typeKey ? types[typeKey] : undefined; + let result = typeKey ? types[typeKey] : undefined; + + if (types.externalAdReplyBody) { + result = result ? `${result}\n${types.externalAdReplyBody}` : types.externalAdReplyBody; + } return result; } From aa79409d44a3c845e9c2ef1721097ce10bb196e3 Mon Sep 17 00:00:00 2001 From: Diego Marino <97317367+diegomustafamarino@users.noreply.github.com> Date: Fri, 23 Aug 2024 21:35:41 -0300 Subject: [PATCH 2/2] Implement externalAdReplyBody for Meta Ads Receive Instagram/Facebook Ads messages for recognizing in messages to use in Dify(example). --- .../chatwoot/services/chatwoot.service.ts | 17 +++++++++++------ src/utils/getConversationMessage.ts | 11 +++++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts index 3e70b276..4211c6c7 100644 --- a/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts +++ b/src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts @@ -1585,16 +1585,21 @@ export class ChatwootService { private getMessageContent(types: any) { const typeKey = Object.keys(types).find((key) => types[key] !== undefined); - - const result = typeKey ? types[typeKey] : undefined; - + + let result = typeKey ? types[typeKey] : undefined; + + // Remove externalAdReplyBody| in Chatwoot (Already Have) + if (result && typeof result === 'string' && result.includes('externalAdReplyBody|')) { + result = result.split('externalAdReplyBody|').filter(Boolean).join(''); + } + if (typeKey === 'locationMessage' || typeKey === 'liveLocationMessage') { const latitude = result.degreesLatitude; const longitude = result.degreesLongitude; - + const locationName = result?.name; const locationAddress = result?.address; - + const formattedLocation = `*${i18next.t('cw.locationMessage.location')}:*\n\n` + `_${i18next.t('cw.locationMessage.latitude')}:_ ${latitude} \n` + @@ -1603,7 +1608,7 @@ export class ChatwootService { (locationAddress ? `_${i18next.t('cw.locationMessage.locationAddress')}:_ ${locationAddress} \n` : '') + `_${i18next.t('cw.locationMessage.locationUrl')}:_ ` + `https://www.google.com/maps/search/?api=1&query=${latitude},${longitude}`; - + return formattedLocation; } diff --git a/src/utils/getConversationMessage.ts b/src/utils/getConversationMessage.ts index fb08d9ea..3f8b5998 100644 --- a/src/utils/getConversationMessage.ts +++ b/src/utils/getConversationMessage.ts @@ -41,6 +41,9 @@ const getTypeMessage = (msg: any) => { : '' }` : undefined, + externalAdReplyBody: msg?.message?.extendedTextMessage?.contextInfo?.externalAdReply?.body + ? `externalAdReplyBody|${msg.message.extendedTextMessage.contextInfo.externalAdReply.body}` + : undefined, }; const messageType = Object.keys(types).find((key) => types[key] !== undefined) || 'unknown'; @@ -49,9 +52,13 @@ const getTypeMessage = (msg: any) => { }; const getMessageContent = (types: any) => { - const typeKey = Object.keys(types).find((key) => types[key] !== undefined); + const typeKey = Object.keys(types).find((key) => key !== 'externalAdReplyBody' && types[key] !== undefined); - const result = typeKey ? types[typeKey] : undefined; + let result = typeKey ? types[typeKey] : undefined; + + if (types.externalAdReplyBody) { + result = result ? `${result}\n${types.externalAdReplyBody}` : types.externalAdReplyBody; + } return result; };