Added Typebot integration

This commit is contained in:
Davidson Gomes 2023-08-04 16:15:59 -03:00
parent d99ccd9df6
commit 469e696ab7

View File

@ -113,10 +113,10 @@ export class TypebotService {
return request.data; return request.data;
} }
public async sendWAMessage(instance: InstanceDto, remoteJid: string, messages: any[], closeSession?: boolean) { public async sendWAMessage(instance: InstanceDto, remoteJid: string, messages: any[], input: any[]) {
processMessages(this.waMonitor.waInstances[instance.instanceName], messages) processMessages(this.waMonitor.waInstances[instance.instanceName], messages, input)
.then(async () => { .then(async () => {
if (closeSession) { if (!input) {
const typebotData = await this.find(instance); const typebotData = await this.find(instance);
const session = typebotData.sessions.find((session) => session.remoteJid === remoteJid); const session = typebotData.sessions.find((session) => session.remoteJid === remoteJid);
@ -132,11 +132,13 @@ export class TypebotService {
console.error('Erro ao processar mensagens:', err); console.error('Erro ao processar mensagens:', err);
}); });
async function processMessages(instance, messages) { async function processMessages(instance, messages, input) {
for (const message of messages) { for (const message of messages) {
if (message.type === 'text') { if (message.type === 'text') {
let formattedText = ''; let formattedText = '';
let linkPreview = false;
for (const richText of message.content.richText) { for (const richText of message.content.richText) {
for (const element of richText.children) { for (const element of richText.children) {
let text = ''; let text = '';
@ -159,6 +161,7 @@ export class TypebotService {
if (element.url) { if (element.url) {
const linkText = element.children[0].text; const linkText = element.children[0].text;
text = `[${linkText}](${element.url})`; text = `[${linkText}](${element.url})`;
linkPreview = true;
} }
formattedText += text; formattedText += text;
@ -173,7 +176,7 @@ export class TypebotService {
options: { options: {
delay: 1200, delay: 1200,
presence: 'composing', presence: 'composing',
linkPreview: false, linkPreview: linkPreview,
}, },
textMessage: { textMessage: {
text: formattedText, text: formattedText,
@ -223,6 +226,32 @@ export class TypebotService {
}); });
} }
} }
if (input) {
if (input.type === 'choice input') {
let formattedText = '';
const items = input.items;
for (const item of items) {
formattedText += `▶️ ${item.content}\n`;
}
formattedText = formattedText.replace(/\n$/, '');
await instance.textMessage({
number: remoteJid.split('@')[0],
options: {
delay: 1200,
presence: 'composing',
linkPreview: false,
},
textMessage: {
text: formattedText,
},
});
}
}
} }
} }
@ -252,7 +281,7 @@ export class TypebotService {
remoteJid: remoteJid, remoteJid: remoteJid,
}); });
await this.sendWAMessage(instance, remoteJid, data.messages); await this.sendWAMessage(instance, remoteJid, data.messages, data.input);
return; return;
} }
@ -267,7 +296,7 @@ export class TypebotService {
remoteJid: remoteJid, remoteJid: remoteJid,
}); });
await this.sendWAMessage(instance, remoteJid, data.messages); await this.sendWAMessage(instance, remoteJid, data.messages, data.input);
return; return;
} }
@ -329,7 +358,7 @@ export class TypebotService {
}); });
} }
await this.sendWAMessage(instance, remoteJid, request.data.messages, !request.data.input); await this.sendWAMessage(instance, remoteJid, request.data.messages, request.data.input);
return; return;
} }