From 11a46343e7d4ff2d9e09481a5b8d53bcb6e4d481 Mon Sep 17 00:00:00 2001 From: Fernando Nina Date: Fri, 19 Jun 2026 13:33:01 -0400 Subject: [PATCH] fix(baileys): allow sending captions with document messages The baileys adapter was ignoring the `caption` field when sending document messages. This commit passes the `caption` from the media payload to the `sendContent` method. Additionally, it updates `message.service.ts` to correctly store the document's caption in the database instead of defaulting to the filename. --- src/engine/adapters/baileys.adapter.spec.ts | 2 ++ src/engine/adapters/baileys.adapter.ts | 7 ++++++- src/modules/message/message.service.ts | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/engine/adapters/baileys.adapter.spec.ts b/src/engine/adapters/baileys.adapter.spec.ts index 81c19471..edc00b39 100644 --- a/src/engine/adapters/baileys.adapter.spec.ts +++ b/src/engine/adapters/baileys.adapter.spec.ts @@ -852,12 +852,14 @@ describe('BaileysAdapter media sends', () => { mimetype: 'application/pdf', data: Buffer.from('PDFDATA').toString('base64'), filename: 'doc.pdf', + caption: 'a document', }); expect(loadRemoteMediaBuffer).not.toHaveBeenCalled(); expect(fakeSock.sendMessage).toHaveBeenCalledWith('628111@s.whatsapp.net', { document: Buffer.from('PDFDATA'), mimetype: 'application/pdf', fileName: 'doc.pdf', + caption: 'a document', }); }); diff --git a/src/engine/adapters/baileys.adapter.ts b/src/engine/adapters/baileys.adapter.ts index c18ad3d8..655805a0 100644 --- a/src/engine/adapters/baileys.adapter.ts +++ b/src/engine/adapters/baileys.adapter.ts @@ -380,7 +380,12 @@ export class BaileysAdapter implements IWhatsAppEngine { async sendDocumentMessage(chatId: string, media: MediaInput): Promise { this.ensureReady(); const { data, mimetype } = await this.resolveMediaBuffer(media); - return this.sendContent(chatId, { document: data, mimetype, fileName: media.filename ?? 'file' }); + return this.sendContent(chatId, { + document: data, + mimetype, + fileName: media.filename ?? 'file', + caption: media.caption, + }); } async sendStickerMessage(chatId: string, media: MediaInput): Promise { diff --git a/src/modules/message/message.service.ts b/src/modules/message/message.service.ts index 38709adf..e69072e2 100644 --- a/src/modules/message/message.service.ts +++ b/src/modules/message/message.service.ts @@ -219,7 +219,7 @@ export class MessageService { // Save message as pending BEFORE sending const message = await this.saveOutgoingMessage(sessionId, { chatId: dto.chatId, - body: dto.filename || '', + body: dto.caption || dto.filename || '', type: 'document', metadata: { media: { mimetype: dto.mimetype, filename: dto.filename, data: dto.base64 || dto.url },