plazbot-cli
Version:
CLI para Plazbot SDK
79 lines (78 loc) • 3.41 kB
JavaScript
;
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);
}