diff --git a/src/api/dto/sendMessage.dto.ts b/src/api/dto/sendMessage.dto.ts index da71494b9..b3d87e5e0 100644 --- a/src/api/dto/sendMessage.dto.ts +++ b/src/api/dto/sendMessage.dto.ts @@ -25,6 +25,8 @@ export class MediaMessage { fileName?: string; // url or base64 media: string; + gifPlayback?: boolean | string; + gifAttribution?: number | string; } export class StatusMessage { @@ -83,6 +85,8 @@ export class SendMediaDto extends Metadata { fileName?: string; // url or base64 media: string; + gifPlayback?: boolean | string; + gifAttribution?: number | string; } export class SendPtvDto extends Metadata { diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index df5e3add5..821a78047 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -3157,7 +3157,14 @@ export class BaileysStartupService extends ChannelStartupService { prepareMedia[mediaType].fileName = mediaMessage.fileName; if (mediaMessage.mediatype === 'video') { - prepareMedia[mediaType].gifPlayback = false; + prepareMedia[mediaType].gifPlayback = mediaMessage.gifPlayback === true || mediaMessage.gifPlayback === 'true'; + + if (mediaMessage.gifAttribution !== undefined) { + const gifAttribution = Number(mediaMessage.gifAttribution); + if (gifAttribution === 0 || gifAttribution === 1 || gifAttribution === 2) { + prepareMedia[mediaType].gifAttribution = gifAttribution; + } + } } return generateWAMessageFromContent( diff --git a/src/validate/message.schema.ts b/src/validate/message.schema.ts index 040b22280..db76fe1c8 100644 --- a/src/validate/message.schema.ts +++ b/src/validate/message.schema.ts @@ -102,6 +102,15 @@ export const mediaMessageSchema: JSONSchema7 = { media: { type: 'string' }, fileName: { type: 'string' }, caption: { type: 'string' }, + gifPlayback: { + oneOf: [{ type: 'boolean' }, { type: 'string', enum: ['true', 'false'] }], + }, + gifAttribution: { + oneOf: [ + { type: 'integer', enum: [0, 1, 2] }, + { type: 'string', enum: ['0', '1', '2'] }, + ], + }, delay: { type: 'integer', description: 'Enter a value in milliseconds',