UNPKG

plazbot-cli

Version:
79 lines (78 loc) 3.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendTemplateCommand = void 0; const commander_1 = require("commander"); const plazbot_1 = require("plazbot"); const credentials_1 = require("../../utils/credentials"); const logger_1 = require("../../utils/logger"); const ui_1 = require("../../utils/ui"); exports.sendTemplateCommand = new commander_1.Command('send-template') .description('Envia un mensaje de template de WhatsApp con variables') .requiredOption('-p, --phone <number>', 'Numero de telefono (con codigo de pais)') .requiredOption('-t, --template <name>', 'Nombre del template') .option('--var <vars...>', 'Variables del body (formato: name=valor)') .option('--header-var <vars...>', 'Variables del header (formato: name=valor)') .option('--file-url <url>', 'URL del archivo adjunto') .option('--file-name <name>', 'Nombre del archivo adjunto') .option('--dev', 'Usar ambiente de desarrollo', false) .action(async (options) => { try { const credentials = await (0, credentials_1.getStoredCredentials)(); const messageClient = new plazbot_1.Message({ workspaceId: credentials.workspace, apiKey: credentials.apiKey, zone: credentials.zone, ...(options.dev && { customUrl: "http://localhost:5090" }) }); // Parsear variables const variablesBody = parseVariables(options.var); const variablesHeader = parseVariables(options.headerVar); // Archivo adjunto const file = options.fileUrl ? { fileUrl: options.fileUrl, fileName: options.fileName || 'archivo', } : undefined; logger_1.logger.title('Enviando template WhatsApp'); logger_1.logger.label('Destino', options.phone); logger_1.logger.label('Template', options.template); if (variablesBody.length > 0) { logger_1.logger.label('Variables body', variablesBody.map(v => `${v.variable}=${v.value}`).join(', ')); } if (variablesHeader.length > 0) { logger_1.logger.label('Variables header', variablesHeader.map(v => `${v.variable}=${v.value}`).join(', ')); } if (file) { logger_1.logger.label('Archivo', file.fileUrl); } const spinner = (0, ui_1.createSpinner)('Enviando...'); spinner.start(); const params = { to: options.phone, template: options.template, }; if (variablesBody.length > 0) params.variablesBody = variablesBody; if (variablesHeader.length > 0) params.variablesHeader = variablesHeader; if (file) params.file = file; const response = await messageClient.onConversation(params); spinner.succeed('Template enviado exitosamente'); if (options.dev) { logger_1.logger.warning('Ambiente: desarrollo'); } } catch (error) { const message = error?.message || 'Error desconocido al enviar el template'; logger_1.logger.error(message); process.exit(1); } }); function parseVariables(vars) { if (!vars) return []; return vars.map(v => { const [variable, ...rest] = v.split('='); return { variable: variable.trim(), value: rest.join('=').trim() }; }).filter(v => v.variable && v.value); }