diff --git a/src/apps/chatwoot/consumers/waha/message.any.ts b/src/apps/chatwoot/consumers/waha/message.any.ts index acb56d5c..c820300a 100644 --- a/src/apps/chatwoot/consumers/waha/message.any.ts +++ b/src/apps/chatwoot/consumers/waha/message.any.ts @@ -24,6 +24,7 @@ import { LocationMessage, MessageToChatWootConverter, PollMessage, + ListMessage, ShareContactMessage, TextMessage, UnsupportedMessage, @@ -104,6 +105,12 @@ class MessageAnyHandler extends MessageBaseHandler { return msg; } + converter = new ListMessage(this.l); + msg = await converter.convert(payload, protoMessage); + if (msg) { + return msg; + } + converter = new EventMessage(this.l); msg = await converter.convert(payload, protoMessage); if (msg) { diff --git a/src/apps/chatwoot/i18n/locales/ar-AE.yaml b/src/apps/chatwoot/i18n/locales/ar-AE.yaml index c9f2d233..32ca9732 100644 --- a/src/apps/chatwoot/i18n/locales/ar-AE.yaml +++ b/src/apps/chatwoot/i18n/locales/ar-AE.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/bn-BD.yaml b/src/apps/chatwoot/i18n/locales/bn-BD.yaml index d75652e3..7ad63daf 100644 --- a/src/apps/chatwoot/i18n/locales/bn-BD.yaml +++ b/src/apps/chatwoot/i18n/locales/bn-BD.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/de-DE.yaml b/src/apps/chatwoot/i18n/locales/de-DE.yaml index b8ee5dc1..b600e695 100644 --- a/src/apps/chatwoot/i18n/locales/de-DE.yaml +++ b/src/apps/chatwoot/i18n/locales/de-DE.yaml @@ -286,6 +286,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/en-US.yaml b/src/apps/chatwoot/i18n/locales/en-US.yaml index 1d5a0466..9fb25a2f 100644 --- a/src/apps/chatwoot/i18n/locales/en-US.yaml +++ b/src/apps/chatwoot/i18n/locales/en-US.yaml @@ -160,6 +160,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/es-ES.yaml b/src/apps/chatwoot/i18n/locales/es-ES.yaml index 11027382..a45881f6 100644 --- a/src/apps/chatwoot/i18n/locales/es-ES.yaml +++ b/src/apps/chatwoot/i18n/locales/es-ES.yaml @@ -286,6 +286,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/fa-IR.yaml b/src/apps/chatwoot/i18n/locales/fa-IR.yaml index b8cf7d74..cc05f769 100644 --- a/src/apps/chatwoot/i18n/locales/fa-IR.yaml +++ b/src/apps/chatwoot/i18n/locales/fa-IR.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/fr-FR.yaml b/src/apps/chatwoot/i18n/locales/fr-FR.yaml index 2a3ffa3b..f73672d8 100644 --- a/src/apps/chatwoot/i18n/locales/fr-FR.yaml +++ b/src/apps/chatwoot/i18n/locales/fr-FR.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/he-IL.yaml b/src/apps/chatwoot/i18n/locales/he-IL.yaml index cd3ad30e..23829cb6 100644 --- a/src/apps/chatwoot/i18n/locales/he-IL.yaml +++ b/src/apps/chatwoot/i18n/locales/he-IL.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/hi-IN.yaml b/src/apps/chatwoot/i18n/locales/hi-IN.yaml index bbb6805e..7089309a 100644 --- a/src/apps/chatwoot/i18n/locales/hi-IN.yaml +++ b/src/apps/chatwoot/i18n/locales/hi-IN.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/id-ID.yaml b/src/apps/chatwoot/i18n/locales/id-ID.yaml index 25dec16a..2c40aea4 100644 --- a/src/apps/chatwoot/i18n/locales/id-ID.yaml +++ b/src/apps/chatwoot/i18n/locales/id-ID.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/pa-PK.yaml b/src/apps/chatwoot/i18n/locales/pa-PK.yaml index c7620a8b..e64f1789 100644 --- a/src/apps/chatwoot/i18n/locales/pa-PK.yaml +++ b/src/apps/chatwoot/i18n/locales/pa-PK.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/pt-BR.yaml b/src/apps/chatwoot/i18n/locales/pt-BR.yaml index ca04356e..a0c41a54 100644 --- a/src/apps/chatwoot/i18n/locales/pt-BR.yaml +++ b/src/apps/chatwoot/i18n/locales/pt-BR.yaml @@ -286,6 +286,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/ru-RU.yaml b/src/apps/chatwoot/i18n/locales/ru-RU.yaml index 2b350604..3a9b5f2c 100644 --- a/src/apps/chatwoot/i18n/locales/ru-RU.yaml +++ b/src/apps/chatwoot/i18n/locales/ru-RU.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/tr-TR.yaml b/src/apps/chatwoot/i18n/locales/tr-TR.yaml index 509a51c3..46b92b02 100644 --- a/src/apps/chatwoot/i18n/locales/tr-TR.yaml +++ b/src/apps/chatwoot/i18n/locales/tr-TR.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/uk-UA.yaml b/src/apps/chatwoot/i18n/locales/uk-UA.yaml index 146781a1..03d4057e 100644 --- a/src/apps/chatwoot/i18n/locales/uk-UA.yaml +++ b/src/apps/chatwoot/i18n/locales/uk-UA.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/ur-PK.yaml b/src/apps/chatwoot/i18n/locales/ur-PK.yaml index b6e4b6cf..6f0f42be 100644 --- a/src/apps/chatwoot/i18n/locales/ur-PK.yaml +++ b/src/apps/chatwoot/i18n/locales/ur-PK.yaml @@ -283,6 +283,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/locales/zh-CN.yaml b/src/apps/chatwoot/i18n/locales/zh-CN.yaml index 934ac819..12f5c50d 100644 --- a/src/apps/chatwoot/i18n/locales/zh-CN.yaml +++ b/src/apps/chatwoot/i18n/locales/zh-CN.yaml @@ -285,6 +285,34 @@ whatsapp.to.chatwoot.message.poll: |- {{/options}} {{/poll}} +whatsapp.to.chatwoot.message.list: |- + {{#message.listMessage}} + {{#title}} + *{{{title}}}* + {{/title}} + {{#description}} + {{{description}}} + {{/description}} + {{#footerText}} + {{{footerText}}} + {{/footerText}} + + {{#buttonText}} + {{{buttonText}}} + {{/buttonText}} + {{#sections}} + {{#title}} + {{{title}}}: + {{/title}} + {{#rows}} + {{#title}} + - {{{title}}} + {{/title}} + {{/rows}} + + {{/sections}} + {{/message.listMessage}} + whatsapp.to.chatwoot.message.event: |- {{#message}} {{#eventMessage}} diff --git a/src/apps/chatwoot/i18n/templates.ts b/src/apps/chatwoot/i18n/templates.ts index 13491172..969eb615 100644 --- a/src/apps/chatwoot/i18n/templates.ts +++ b/src/apps/chatwoot/i18n/templates.ts @@ -56,6 +56,7 @@ export enum TKey { WA_TO_CW_MESSAGE_PIX = 'whatsapp.to.chatwoot.message.pix', WA_TO_CW_MESSAGE_UNSUPPORTED = 'whatsapp.to.chatwoot.message.unsupported', WA_TO_CW_MESSAGE_FACEBOOK_AD = 'whatsapp.to.chatwoot.message.facebook.ad', + WA_TO_CW_MESSAGE_LIST = 'whatsapp.to.chatwoot.message.list', // // App Inbox @@ -174,6 +175,10 @@ export type TemplatePayloads = { eventMessage: Record; }; }; + [TKey.WA_TO_CW_MESSAGE_LIST]: { + payload: WAMessage; + message: proto.Message; + }; [TKey.WA_TO_CW_MESSAGE_PIX]: { payload: WAMessage; message: proto.Message | null; diff --git a/src/apps/chatwoot/messages/to/chatwoot/ListMessage.ts b/src/apps/chatwoot/messages/to/chatwoot/ListMessage.ts new file mode 100644 index 00000000..5c35714a --- /dev/null +++ b/src/apps/chatwoot/messages/to/chatwoot/ListMessage.ts @@ -0,0 +1,37 @@ +import { ChatWootMessagePartial } from '@waha/apps/chatwoot/consumers/waha/base'; +import { Locale } from '@waha/apps/chatwoot/i18n/locale'; +import { TKey } from '@waha/apps/chatwoot/i18n/templates'; +import { MessageToChatWootConverter } from '@waha/apps/chatwoot/messages/to/chatwoot'; +import { isEmptyString } from '@waha/apps/chatwoot/messages/to/chatwoot/utils/proto'; +import { WhatsappToMarkdown } from '@waha/apps/chatwoot/messages/to/chatwoot/utils/markdown'; +import * as lodash from 'lodash'; +import type { proto } from '@adiwajshing/baileys'; +import { WAMessage } from '@waha/structures/responses.dto'; + +export class ListMessage implements MessageToChatWootConverter { + constructor(private readonly locale: Locale) {} + + convert( + payload: WAMessage, + protoMessage: proto.Message | null, + ): ChatWootMessagePartial | null { + const listMessage = protoMessage?.listMessage; + if (lodash.isEmpty(listMessage)) { + return null; + } + + const content = this.locale + .key(TKey.WA_TO_CW_MESSAGE_LIST) + .r({ payload, message: protoMessage as proto.Message }); + + if (isEmptyString(content)) { + return null; + } + + return { + content: WhatsappToMarkdown(content), + attachments: [], + private: undefined, + }; + } +} diff --git a/src/apps/chatwoot/messages/to/chatwoot/index.ts b/src/apps/chatwoot/messages/to/chatwoot/index.ts index 2b779a3c..36f421e1 100644 --- a/src/apps/chatwoot/messages/to/chatwoot/index.ts +++ b/src/apps/chatwoot/messages/to/chatwoot/index.ts @@ -12,6 +12,7 @@ export { FacebookAdMessage } from './FacebookAdMessage'; export { PollMessage } from './PollMessage'; export { EventMessage } from './EventMessage'; export { PixMessage } from './PixMessage'; +export { ListMessage } from './ListMessage'; export type Awaitable = T | Promise;