node-red-contrib-vocalrec
Version:
Nodos personalizados de Node-RED para la API de VocalRec
75 lines (56 loc) • 2.67 kB
JavaScript
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);
};