UNPKG

node-red-contrib-vocalrec

Version:

Nodos personalizados de Node-RED para la API de VocalRec

75 lines (56 loc) 2.67 kB
const axios = require('axios'); const https = require('https'); module.exports = function(RED) { function VocalRecMetadataNode(config) { RED.nodes.createNode(this, config); this.server = RED.nodes.getNode(config.server); const node = this; node.status({ fill: "grey", shape: "ring", text: "inactivo" }); node.on('input', function(msg) { if (!node.server) { node.error("No se ha configurado el servidor VocalRec"); return; } const transactionId = config.transactionId || msg.transactionId; const metadata = msg.payload || config.metadata || []; console.log(`metadato:${JSON.stringify(metadata)}`); if (!transactionId) { node.error("Transaction ID es requerido", msg); return; } if (!Array.isArray(metadata) || metadata.length === 0) { node.error("Se requiere un array de metadatos en msg.payload.metadata o en la configuración", msg); return; } const validMetadata = metadata.filter(item => item.key && item.key.trim() !== "" && item.value !== undefined && item.value !== null && item.value.toString().trim() !== "" ); if (validMetadata.length === 0) { node.error("No hay metadatos válidos. Cada item debe tener key y value no vacíos.", msg); return; } const url = `${node.server.base_url}/api/metadataBatch/${transactionId}`; const headers = { 'Content-Type': 'application/json' }; if (node.server.token) { headers['Authorization'] = `Bearer ${server.token}`; } const httpsAgent = new https.Agent({ rejectUnauthorized: false }); node.status({ fill: "blue", shape: "dot", text: "estableciendo metadatos..." }); console.log(validMetadata); axios.post(url, validMetadata, { headers, httpsAgent }) .then(response => { node.status({ fill: "green", shape: "dot", text: "metadatos establecidos" }); msg.payload = response.data; node.send(msg); }) .catch(error => { node.status({ fill: "red", shape: "ring", text: "error" }); node.error(`Error al establecer el alias: ${error.message}`, msg); }); }); } RED.nodes.registerType("vocalrec-metadata", VocalRecMetadataNode); };