UNPKG

node-red-contrib-vocalrec

Version:

Nodos personalizados de Node-RED para la API de VocalRec

66 lines (58 loc) 2.95 kB
module.exports = function(RED) { function VocalRecExtractPropertiesNode(config) { RED.nodes.createNode(this, config); const node = this; // Validar configuración let mappings = []; try { mappings = config.mappings || []; if (!Array.isArray(mappings)) { mappings = []; } } catch (e) { node.error("Error al parsear los mappings: " + e.message); mappings = []; } node.on('input', function(msg, send, done) { // Para compatibilidad con versiones antiguas de Node-RED send = send || function() { node.send.apply(node, arguments) }; done = done || function() {}; try { // Procesar cada mapeo // mappings.forEach(mapping => { // if (mapping.dest && mapping.source) { // try { // // Obtener el valor de origen // const sourceValue = RED.util.evaluateNodeProperty(mapping.source, 'msg', node, msg); // if (sourceValue !== undefined) { // // Asignar el valor al destino usando RED.util.setMessageProperty // RED.util.setMessageProperty(msg, mapping.dest, sourceValue); // } // } catch (evalError) { // node.warn(`Error evaluando '${mapping.source}' para '${mapping.dest}': ${evalError.message}`); // } // } // }); mappings.forEach(mapping => { if (mapping.dest && mapping.source) { try { const sourceType = 'msg'; // o usa mapping.sourceType si ya lo estás manejando const sourceValue = RED.util.evaluateNodeProperty(mapping.source, sourceType, node, msg); if (sourceValue !== undefined) { RED.util.setMessageProperty(msg, mapping.dest, sourceValue, true); const outputValue = RED.util.getMessageProperty(msg, mapping.dest); } } catch (evalError) { node.warn(`Error evaluando '${mapping.source}' para '${mapping.dest}': ${evalError.message}`); } } }); send(msg); done(); } catch (error) { done(error); } }); } RED.nodes.registerType("vocalrec-extract-properties", VocalRecExtractPropertiesNode); }