Skip to content

Commit 260ad02

Browse files
committed
feat: implement Baileys channel services with advanced message handling, Typebot integration, and comprehensive API functionalities for chat, group, and business profiles.
1 parent dcc9ffc commit 260ad02

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2229,7 +2229,10 @@ export class BaileysStartupService extends ChannelStartupService {
22292229

22302230
if (!match) return undefined;
22312231

2232-
const url = match[0];
2232+
// Trim common trailing punctuation that may follow URLs in natural text
2233+
const url = match[0].replace(/[.,);\]]+$/u, '');
2234+
if (!url) return undefined;
2235+
22332236
const previewData = await getLinkPreview(url, {
22342237
imagesPropertyType: 'og', // fetches only open-graph images
22352238
headers: {

src/api/integrations/chatbot/typebot/services/typebot.service.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,9 +369,33 @@ export class TypebotService extends BaseChatbotService<TypebotModel, any> {
369369
}
370370

371371
if (message.type === 'file' || message.type === 'embed') {
372-
const mediaUrl = message.content.url;
372+
const content = message.content as { url?: string; name?: string } | undefined;
373+
if (!content?.url) {
374+
sendTelemetry('/message/sendMediaMissingUrl');
375+
return;
376+
}
377+
378+
const mediaUrl = content.url;
373379
const mediaType = this.getMediaType(mediaUrl);
374380

381+
let fileName = content.name;
382+
if (!fileName) {
383+
try {
384+
const urlObj = new URL(mediaUrl);
385+
const path = urlObj.pathname || '';
386+
const candidate = path.split('/').pop() || '';
387+
if (candidate && candidate.includes('.')) {
388+
fileName = candidate;
389+
}
390+
} catch {
391+
// Ignore URL parsing failures
392+
}
393+
394+
if (!fileName) {
395+
fileName = mediaType && mediaType !== 'document' ? `media.${mediaType}` : 'attachment';
396+
}
397+
}
398+
375399
if (mediaType === 'audio') {
376400
await instance.audioWhatsapp(
377401
{
@@ -389,7 +413,7 @@ export class TypebotService extends BaseChatbotService<TypebotModel, any> {
389413
delay: settings?.delayMessage || 1000,
390414
mediatype: mediaType || 'document',
391415
media: mediaUrl,
392-
fileName: message.content.name || 'document.pdf',
416+
fileName,
393417
},
394418
null,
395419
false,

0 commit comments

Comments
 (0)