adjusts in typebot

This commit is contained in:
Davidson Gomes 2024-06-08 19:22:12 -03:00
parent b7a34ec81a
commit ee9cdc51c0
4 changed files with 92 additions and 52 deletions

View File

@ -21,6 +21,12 @@
* Changed the .env file configuration, removed the yml version and added .env to the repository root * Changed the .env file configuration, removed the yml version and added .env to the repository root
* Removed the mobile type connection with Baileys * Removed the mobile type connection with Baileys
* Simplified payloads and endpoints * Simplified payloads and endpoints
* Improved Typebot
- Now you can register several typebots
- Start configuration by trigger or for all
- Session search by typebot or remoteJid
- KeepOpen configuration (keeps the session even when the bot ends, to run once per contact)
- StopBotFromMe configuration, allows me to stop the bot if I send a chat message.
# 1.8.0 (2024-05-27 16:10) # 1.8.0 (2024-05-27 16:10)

View File

@ -935,38 +935,50 @@ export class TypebotService {
formattedText = formattedText.replace(/\n$/, ''); formattedText = formattedText.replace(/\n$/, '');
await instance.textMessage({ await instance.textMessage(
number: remoteJid.split('@')[0], {
delay: settings?.delayMessage || 1000, number: remoteJid.split('@')[0],
text: formattedText, delay: settings?.delayMessage || 1000,
}); text: formattedText,
},
true,
);
} }
if (message.type === 'image') { if (message.type === 'image') {
await instance.mediaMessage({ await instance.mediaMessage(
number: remoteJid.split('@')[0], {
delay: settings?.delayMessage || 1000, number: remoteJid.split('@')[0],
mediatype: 'image', delay: settings?.delayMessage || 1000,
media: message.content.url, mediatype: 'image',
}); media: message.content.url,
},
true,
);
} }
if (message.type === 'video') { if (message.type === 'video') {
await instance.mediaMessage({ await instance.mediaMessage(
number: remoteJid.split('@')[0], {
delay: settings?.delayMessage || 1000, number: remoteJid.split('@')[0],
mediatype: 'video', delay: settings?.delayMessage || 1000,
media: message.content.url, mediatype: 'video',
}); media: message.content.url,
},
true,
);
} }
if (message.type === 'audio') { if (message.type === 'audio') {
await instance.audioWhatsapp({ await instance.audioWhatsapp(
number: remoteJid.split('@')[0], {
delay: settings?.delayMessage || 1000, number: remoteJid.split('@')[0],
encoding: true, delay: settings?.delayMessage || 1000,
audio: message.content.url, encoding: true,
}); audio: message.content.url,
},
true,
);
} }
const wait = findItemAndGetSecondsToWait(clientSideActions, message.id); const wait = findItemAndGetSecondsToWait(clientSideActions, message.id);
@ -988,11 +1000,14 @@ export class TypebotService {
formattedText = formattedText.replace(/\n$/, ''); formattedText = formattedText.replace(/\n$/, '');
await instance.textMessage({ await instance.textMessage(
number: remoteJid.split('@')[0], {
delay: settings?.delayMessage || 1000, number: remoteJid.split('@')[0],
text: formattedText, delay: settings?.delayMessage || 1000,
}); text: formattedText,
},
true,
);
} }
await prismaRepository.typebotSession.update({ await prismaRepository.typebotSession.update({
@ -1240,11 +1255,14 @@ export class TypebotService {
if (!content) { if (!content) {
if (unknownMessage) { if (unknownMessage) {
this.waMonitor.waInstances[instance.instanceName].textMessage({ this.waMonitor.waInstances[instance.instanceName].textMessage(
number: remoteJid.split('@')[0], {
delay: delayMessage || 1000, number: remoteJid.split('@')[0],
text: unknownMessage, delay: delayMessage || 1000,
}); text: unknownMessage,
},
true,
);
} }
return; return;
} }
@ -1349,11 +1367,14 @@ export class TypebotService {
if (data.messages.length === 0) { if (data.messages.length === 0) {
if (!content) { if (!content) {
if (unknownMessage) { if (unknownMessage) {
this.waMonitor.waInstances[instance.instanceName].textMessage({ this.waMonitor.waInstances[instance.instanceName].textMessage(
number: remoteJid.split('@')[0], {
delay: delayMessage || 1000, number: remoteJid.split('@')[0],
text: unknownMessage, delay: delayMessage || 1000,
}); text: unknownMessage,
},
true,
);
} }
return; return;
} }
@ -1425,11 +1446,14 @@ export class TypebotService {
if (!content) { if (!content) {
if (unknownMessage) { if (unknownMessage) {
this.waMonitor.waInstances[instance.instanceName].textMessage({ this.waMonitor.waInstances[instance.instanceName].textMessage(
number: remoteJid.split('@')[0], {
delay: delayMessage || 1000, number: remoteJid.split('@')[0],
text: unknownMessage, delay: delayMessage || 1000,
}); text: unknownMessage,
},
true,
);
} }
return; return;
} }

View File

@ -74,6 +74,7 @@ export class MessageRouter extends RouterBroker {
return res.status(HttpStatus.CREATED).json(response); return res.status(HttpStatus.CREATED).json(response);
}) })
// TODO: Revisar funcionamento do envio de Status
.post(this.routerPath('sendStatus'), ...guards, async (req, res) => { .post(this.routerPath('sendStatus'), ...guards, async (req, res) => {
const response = await this.dataValidate<SendStatusDto>({ const response = await this.dataValidate<SendStatusDto>({
request: req, request: req,

View File

@ -1672,7 +1672,7 @@ export class BaileysStartupService extends ChannelStartupService {
number: string, number: string,
message: T, message: T,
options?: Options, options?: Options,
isChatwoot = false, isIntegration = false,
) { ) {
const isWA = (await this.whatsappNumber({ numbers: [number] }))?.shift(); const isWA = (await this.whatsappNumber({ numbers: [number] }))?.shift();
@ -1890,10 +1890,19 @@ export class BaileysStartupService extends ChannelStartupService {
this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw); this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw);
if (this.configService.get<Chatwoot>('CHATWOOT').ENABLED && this.localChatwoot.enabled && !isChatwoot) { if (this.configService.get<Chatwoot>('CHATWOOT').ENABLED && this.localChatwoot.enabled && !isIntegration) {
this.chatwootService.eventWhatsapp(Events.SEND_MESSAGE, { instanceName: this.instance.name }, messageRaw); this.chatwootService.eventWhatsapp(Events.SEND_MESSAGE, { instanceName: this.instance.name }, messageRaw);
} }
if (this.configService.get<Typebot>('TYPEBOT').ENABLED && !isIntegration) {
if (messageRaw.messageType !== 'reactionMessage')
await this.typebotService.sendTypebot(
{ instanceName: this.instance.name, instanceId: this.instanceId },
messageRaw.key.remoteJid,
messageRaw,
);
}
await this.prismaRepository.message.create({ await this.prismaRepository.message.create({
data: messageRaw, data: messageRaw,
}); });
@ -1966,7 +1975,7 @@ export class BaileysStartupService extends ChannelStartupService {
} }
// Send Message Controller // Send Message Controller
public async textMessage(data: SendTextDto, isChatwoot = false) { public async textMessage(data: SendTextDto, isIntegration = false) {
const text = data.text; const text = data.text;
if (!text || text.trim().length === 0) { if (!text || text.trim().length === 0) {
@ -1988,7 +1997,7 @@ export class BaileysStartupService extends ChannelStartupService {
mentioned: data?.mentioned, mentioned: data?.mentioned,
}, },
}, },
isChatwoot, isIntegration,
); );
} }
@ -2276,7 +2285,7 @@ export class BaileysStartupService extends ChannelStartupService {
return result; return result;
} }
public async mediaMessage(data: SendMediaDto, isChatwoot = false) { public async mediaMessage(data: SendMediaDto, isIntegration = false) {
const generate = await this.prepareMediaMessage(data); const generate = await this.prepareMediaMessage(data);
return await this.sendMessageWithTyping( return await this.sendMessageWithTyping(
@ -2291,7 +2300,7 @@ export class BaileysStartupService extends ChannelStartupService {
mentioned: data?.mentioned, mentioned: data?.mentioned,
}, },
}, },
isChatwoot, isIntegration,
); );
} }
@ -2331,7 +2340,7 @@ export class BaileysStartupService extends ChannelStartupService {
}); });
} }
public async audioWhatsapp(data: SendAudioDto, isChatwoot = false) { public async audioWhatsapp(data: SendAudioDto, isIntegration = false) {
if (!data?.encoding && data?.encoding !== false) { if (!data?.encoding && data?.encoding !== false) {
data.encoding = true; data.encoding = true;
} }
@ -2348,7 +2357,7 @@ export class BaileysStartupService extends ChannelStartupService {
mimetype: 'audio/mp4', mimetype: 'audio/mp4',
}, },
{ presence: 'recording', delay: data?.delay }, { presence: 'recording', delay: data?.delay },
isChatwoot, isIntegration,
); );
fs.unlinkSync(convert); fs.unlinkSync(convert);
@ -2367,7 +2376,7 @@ export class BaileysStartupService extends ChannelStartupService {
mimetype: 'audio/ogg; codecs=opus', mimetype: 'audio/ogg; codecs=opus',
}, },
{ presence: 'recording', delay: data?.delay }, { presence: 'recording', delay: data?.delay },
isChatwoot, isIntegration,
); );
} }