Enhance getTypeMessage to include orderMessage

Added support for orderMessage in getTypeMessage method and updated message formatting for orders.
This commit is contained in:
ValdecirMysian
2026-01-28 00:03:27 -03:00
committed by GitHub
parent cd800f2976
commit 2d729a3a35
@@ -1758,41 +1758,60 @@ export class ChatwootService {
} }
private getTypeMessage(msg: any) { private getTypeMessage(msg: any) {
const types = { const types = {
conversation: msg.conversation, conversation: msg.conversation,
imageMessage: msg.imageMessage?.caption, imageMessage: msg.imageMessage?.caption,
videoMessage: msg.videoMessage?.caption, videoMessage: msg.videoMessage?.caption,
extendedTextMessage: msg.extendedTextMessage?.text, extendedTextMessage: msg.extendedTextMessage?.text,
messageContextInfo: msg.messageContextInfo?.stanzaId, messageContextInfo: msg.messageContextInfo?.stanzaId,
stickerMessage: undefined, stickerMessage: undefined,
documentMessage: msg.documentMessage?.caption, documentMessage: msg.documentMessage?.caption,
documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption, documentWithCaptionMessage: msg.documentWithCaptionMessage?.message?.documentMessage?.caption,
audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined, audioMessage: msg.audioMessage ? (msg.audioMessage.caption ?? '') : undefined,
contactMessage: msg.contactMessage?.vcard, contactMessage: msg.contactMessage?.vcard,
contactsArrayMessage: msg.contactsArrayMessage, contactsArrayMessage: msg.contactsArrayMessage,
locationMessage: msg.locationMessage, locationMessage: msg.locationMessage,
liveLocationMessage: msg.liveLocationMessage, liveLocationMessage: msg.liveLocationMessage,
listMessage: msg.listMessage, listMessage: msg.listMessage,
listResponseMessage: msg.listResponseMessage, listResponseMessage: msg.listResponseMessage,
viewOnceMessageV2: // Adicione a linha abaixo. Atenção à vírgula na linha de cima!
msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url || orderMessage: msg.orderMessage,
msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url || viewOnceMessageV2:
msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url, msg?.message?.viewOnceMessageV2?.message?.imageMessage?.url ||
}; msg?.message?.viewOnceMessageV2?.message?.videoMessage?.url ||
msg?.message?.viewOnceMessageV2?.message?.audioMessage?.url,
};
return types; return types;
} }
private getMessageContent(types: any) { private getMessageContent(types: any) {
const typeKey = Object.keys(types).find((key) => types[key] !== undefined); const typeKey = Object.keys(types).find((key) => types[key] !== undefined);
let result = typeKey ? types[typeKey] : undefined; let result = typeKey ? types[typeKey] : undefined;
// Remove externalAdReplyBody| in Chatwoot (Already Have) // Remove externalAdReplyBody| in Chatwoot
if (result && typeof result === 'string' && result.includes('externalAdReplyBody|')) { if (result && typeof result === 'string' && result.includes('externalAdReplyBody|')) {
result = result.split('externalAdReplyBody|').filter(Boolean).join(''); result = result.split('externalAdReplyBody|').filter(Boolean).join('');
} }
// Tratamento de Pedidos do Catálogo
if (typeKey === 'orderMessage') {
const amount = result.totalAmount1000;
// Converte o objeto Long para número antes da divisão
const rawPrice = (Long.isLong(amount) ? amount.toNumber() : amount) || 0;
const price = (rawPrice / 1000).toLocaleString('pt-BR', {
style: 'currency',
currency: result.totalCurrencyCode || 'BRL',
});
return `🛒 *NOVO PEDIDO NO CATÁLOGO*\n\n` +
`*Produto:* ${result.orderTitle}\n` +
`*Valor:* ${price}\n` +
`*ID:* ${result.orderId}\n\n` +
`_Atenda agora para finalizar a venda!_`;
}
if (typeKey === 'locationMessage' || typeKey === 'liveLocationMessage') { if (typeKey === 'locationMessage' || typeKey === 'liveLocationMessage') {
const latitude = result.degreesLatitude; const latitude = result.degreesLatitude;
const longitude = result.degreesLongitude; const longitude = result.degreesLongitude;