Skip to content

Commit 128119d

Browse files
committed
Merge branch 'release/1.7.1'
2 parents b87558d + 324dc01 commit 128119d

5 files changed

Lines changed: 225 additions & 28 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
# 1.7.1 (2024-04-03 10:19)
2+
3+
### Fixed
4+
5+
* Correction when sending files with captions on Whatsapp Business
6+
* Correction in receiving messages with response on WhatsApp Business
7+
* Correction when sending a reaction to a message on WhatsApp Business
8+
* Correction of receiving reactions on WhatsApp business
9+
* Removed mandatory description of rows from sendList
10+
* Feature to collect message type in typebot
11+
112
# 1.7.0 (2024-03-11 18:23)
213

314
### Feature

src/validate/validate.schema.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,7 @@ export const listMessageSchema: JSONSchema7 = {
406406
description: { type: 'string' },
407407
rowId: { type: 'string' },
408408
},
409-
required: ['title', 'description', 'rowId'],
409+
required: ['title', 'rowId'],
410410
...isNotEmpty('title', 'description', 'rowId'),
411411
},
412412
},

src/whatsapp/dto/typebot.dto.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export class Session {
1010
export class PrefilledVariables {
1111
remoteJid?: string;
1212
pushName?: string;
13+
messageType?: string;
1314
additionalData?: { [key: string]: any };
1415
}
1516

src/whatsapp/services/typebot.service.ts

Lines changed: 118 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -269,19 +269,27 @@ export class TypebotService {
269269
}
270270

271271
private getTypeMessage(msg: any) {
272-
this.logger.verbose('get type message');
273-
274-
const types = {
275-
conversation: msg.conversation,
276-
extendedTextMessage: msg.extendedTextMessage?.text,
277-
responseRowId: msg.listResponseMessage?.singleSelectReply?.selectedRowId,
278-
};
279-
280-
this.logger.verbose('type message: ' + types);
272+
this.logger.verbose('get type message');
273+
const types = {
274+
conversation: msg.conversation,
275+
extendedTextMessage: msg.extendedTextMessage?.text,
276+
audioMessage: msg.audioMessage?.url,
277+
imageMessage: msg.imageMessage?.url,
278+
videoMessage: msg.videoMessage?.url,
279+
documentMessage: msg.documentMessage?.fileName,
280+
contactMessage: msg.contactMessage?.displayName,
281+
locationMessage: msg.locationMessage?.degreesLatitude,
282+
viewOnceMessageV2: msg.viewOnceMessageV2?.message?.imageMessage?.url || msg.viewOnceMessageV2?.message?.videoMessage?.url || msg.viewOnceMessageV2?.message?.audioMessage?.url,
283+
listResponseMessage: msg.listResponseMessage?.singleSelectReply?.selectedRowId,
284+
responseRowId: msg.listResponseMessage?.singleSelectReply?.selectedRowId,
285+
};
281286

282-
return types;
287+
const messageType = Object.keys(types).find(key => types[key] !== undefined) || 'unknown';
288+
289+
this.logger.verbose('Type message: ' + JSON.stringify(types));
290+
return { ...types, messageType };
283291
}
284-
292+
285293
private getMessageContent(types: any) {
286294
this.logger.verbose('get message content');
287295
const typeKey = Object.keys(types).find((key) => types[key] !== undefined);
@@ -305,6 +313,101 @@ export class TypebotService {
305313
return messageContent;
306314
}
307315

316+
private getAudioMessageContent(msg: any) {
317+
this.logger.verbose('get audio message content');
318+
319+
const types = this.getTypeMessage(msg);
320+
321+
const audioContent = types.audioMessage;
322+
323+
this.logger.verbose('audio message URL: ' + audioContent);
324+
325+
return audioContent;
326+
}
327+
328+
private getImageMessageContent(msg: any) {
329+
this.logger.verbose('get image message content');
330+
331+
const types = this.getTypeMessage(msg);
332+
333+
const imageContent = types.imageMessage;
334+
335+
this.logger.verbose('image message URL: ' + imageContent);
336+
337+
return imageContent;
338+
}
339+
340+
private getVideoMessageContent(msg: any) {
341+
this.logger.verbose('get video message content');
342+
343+
const types = this.getTypeMessage(msg);
344+
345+
const videoContent = types.videoMessage;
346+
347+
this.logger.verbose('video message URL: ' + videoContent);
348+
349+
return videoContent;
350+
}
351+
352+
private getDocumentMessageContent(msg: any) {
353+
this.logger.verbose('get document message content');
354+
355+
const types = this.getTypeMessage(msg);
356+
357+
const documentContent = types.documentMessage;
358+
359+
this.logger.verbose('document message fileName: ' + documentContent);
360+
361+
return documentContent;
362+
}
363+
364+
private getContactMessageContent(msg: any) {
365+
this.logger.verbose('get contact message content');
366+
367+
const types = this.getTypeMessage(msg);
368+
369+
const contactContent = types.contactMessage;
370+
371+
this.logger.verbose('contact message displayName: ' + contactContent);
372+
373+
return contactContent;
374+
}
375+
376+
private getLocationMessageContent(msg: any) {
377+
this.logger.verbose('get location message content');
378+
379+
const types = this.getTypeMessage(msg);
380+
381+
const locationContent = types.locationMessage;
382+
383+
this.logger.verbose('location message degreesLatitude: ' + locationContent);
384+
385+
return locationContent;
386+
}
387+
388+
private getViewOnceMessageV2Content(msg: any) {
389+
this.logger.verbose('get viewOnceMessageV2 content');
390+
391+
const types = this.getTypeMessage(msg);
392+
393+
const viewOnceContent = types.viewOnceMessageV2;
394+
395+
this.logger.verbose('viewOnceMessageV2 URL: ' + viewOnceContent);
396+
397+
return viewOnceContent;
398+
}
399+
400+
private getListResponseMessageContent(msg: any) {
401+
this.logger.verbose('get listResponseMessage content');
402+
403+
const types = this.getTypeMessage(msg);
404+
405+
const listResponseContent = types.listResponseMessage || types.responseRowId;
406+
407+
this.logger.verbose('listResponseMessage selectedRowId: ' + listResponseContent);
408+
409+
return listResponseContent;
410+
}
308411
public async createNewSession(instance: InstanceDto, data: any) {
309412
if (data.remoteJid === 'status@broadcast') return;
310413
const id = Math.floor(Math.random() * 10000000000).toString();
@@ -565,6 +668,7 @@ export class TypebotService {
565668
const delay_message = findTypebot.delay_message;
566669
const unknown_message = findTypebot.unknown_message;
567670
const listening_from_me = findTypebot.listening_from_me;
671+
const messageType = this.getTypeMessage(msg.message).messageType;
568672

569673
const session = sessions.find((session) => session.remoteJid === remoteJid);
570674

@@ -687,6 +791,9 @@ export class TypebotService {
687791
sessions: sessions,
688792
remoteJid: remoteJid,
689793
pushName: msg.pushName,
794+
prefilledVariables: {
795+
messageType: messageType,
796+
},
690797
});
691798

692799
await this.sendWAMessage(instance, remoteJid, data.messages, data.input, data.clientSideActions);

0 commit comments

Comments
 (0)