UNPKG

n8n-nodes-evolution-api

Version:
121 lines 4.71 kB
"use strict"; 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