n8n-nodes-evolution-api
Version:
A Evolution API é um hub de canais com foco no WhatsApp
121 lines • 4.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sendButtons = sendButtons;
const n8n_workflow_1 = require("n8n-workflow");
const evolutionRequest_1 = require("../evolutionRequest");
async function sendButtons(ef) {
var _a, _b, _c;
try {
const instanceName = ef.getNodeParameter('instanceName', 0);
const remoteJid = ef.getNodeParameter('remoteJid', 0);
const title = ef.getNodeParameter('title', 0);
const description = ef.getNodeParameter('description', 0);
const footer = ef.getNodeParameter('footer', 0, '');
const buttons = ef.getNodeParameter('buttons.buttonValues', 0, []);
if (!Array.isArray(buttons) || buttons.length === 0 || buttons.length > 3) {
const errorData = {
success: false,
error: {
message: 'Lista de botões inválida',
details: 'É necessário fornecer entre 1 e 3 botões',
code: 'INVALID_BUTTONS',
timestamp: new Date().toISOString(),
},
};
return {
json: errorData,
error: errorData,
};
}
const options = ef.getNodeParameter('options_message', 0, {});
const body = {
number: remoteJid,
title,
description,
buttons: buttons.map(button => {
const baseButton = {
type: button.type,
displayText: button.displayText,
};
switch (button.type) {
case 'reply':
return { ...baseButton, id: button.id };
case 'copy':
return { ...baseButton, copyCode: button.copyCode };
case 'url':
return { ...baseButton, url: button.url };
case 'call':
return { ...baseButton, phoneNumber: button.phoneNumber };
default:
return baseButton;
}
}),
};
if (footer)
body.footer = footer;
if (options.delay)
body.delay = options.delay;
if ((_b = (_a = options.quoted) === null || _a === void 0 ? void 0 : _a.messageQuoted) === null || _b === void 0 ? void 0 : _b.messageId) {
body.quoted = {
key: {
id: options.quoted.messageQuoted.messageId,
},
};
}
if ((_c = options.mentions) === null || _c === void 0 ? void 0 : _c.mentionsSettings) {
const { mentionsEveryOne, mentioned } = options.mentions.mentionsSettings;
if (mentionsEveryOne) {
body.mentionsEveryOne = true;
}
else if (mentioned) {
const mentionedNumbers = mentioned
.split(',')
.map(num => num.trim())
.map(num => (num.includes('@s.whatsapp.net') ? num : `${num}@s.whatsapp.net`));
body.mentioned = mentionedNumbers;
}
}
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
uri: `/message/sendButtons/${instanceName}`,
body,
json: true,
};
const response = await (0, evolutionRequest_1.evolutionRequest)(ef, requestOptions);
return {
json: {
success: true,
data: response,
},
};
}
catch (error) {
const errorData = {
success: false,
error: {
message: error.message.includes('Could not get parameter')
? 'Parâmetros inválidos ou ausentes'
: 'Erro ao enviar botões',
details: error.message.includes('Could not get parameter')
? 'Verifique se todos os campos obrigatórios foram preenchidos corretamente'
: error.message,
code: error.code || 'UNKNOWN_ERROR',
timestamp: new Date().toISOString(),
},
};
if (!ef.continueOnFail()) {
throw new n8n_workflow_1.NodeOperationError(ef.getNode(), error.message, {
message: errorData.error.message,
description: errorData.error.details,
});
}
return {
json: errorData,
error: errorData,
};
}
}
//# sourceMappingURL=sendButtons.js.map