NicoChatNicoChatDocumentaçãoBuscar na documentação…
Entrar

Función JavaScript

NicoChat ahora permite que sus usuarios ejecuten lógica de flujo compleja usando la acción JavaScript. Los usuarios pueden escribir código JavaScript para crear diversos flujos complejos y fórmulas que NicoChat aún no admite de forma nativa.

2026-09-07

Seleccionando el nodo de acción JavaScript

Crea un bloque de nodo de acción, haz clic en Acciones avanzadas y selecciona el nodo Función JavaScript.

Nodo Función JavaScript

Una función JavaScript funciona exactamente como una función. Todos los parámetros se parsean primero en el bloque JavaScript antes de poder ser usados. La parte superior de la acción se usa para la entrada.

Nombre del Parámetro: agrega el nombre de la variable que estás parseando.

Valor del Parámetro: agrega el Campo del Contacto que quieres parsear en la función JavaScript.

Valor de Prueba: agrega un valor de prueba que se puede usar aquí para ejecutar pruebas.

El bloque de función admite varias bibliotecas JavaScript.

Estas bibliotecas JavaScript amplían la funcionalidad del bloque de función nativo.

Estas son las bibliotecas disponibles, con la versión que carga el bloque:

Biblioteca
Versión
Para qué
Lodash
4.17.21
utilidades de array, objeto y string: map, groupBy, cloneDeep
Collect.js
4.36.1
colecciones encadenables, al estilo de Laravel
CryptoJS
4.2.0
hash y cifrado: MD5, SHA, HMAC, AES
Day.js
1.11.13
fechas y horas con API ligera: la opción por defecto para código nuevo
Compromise
14.14.0
NLP en inglés: extrae nombres, fechas y sustantivos de un texto
Chrono
2.6.1
lee una fecha escrita en lenguaje natural ("mañana a las 15h") y devuelve un Date
Cheerio
1.0.0-rc.12
recorre y extrae datos de HTML con sintaxis de jQuery
jsonwebtoken
9.0.3
firma y verifica JWT
Jsrsasign
11.1.0
criptografía, certificados X.509 y JWS/JWT en JavaScript puro
libphonenumber-js
1.10.21
valida y formatea números de teléfono por país
Moment.js
2.30.1
fechas y horas; el proyecto está en modo legado, prefiera Day.js
Sentiment
5.0.2
puntúa el sentimiento de un texto, de negativo a positivo

Marque en el bloque las bibliotecas que usará el código: solo las seleccionadas están disponibles en la ejecución.

En el bloque de función, puedes escribir tu código JavaScript.

Después de escribir el código, siempre necesitas devolver el valor, porque el bloque de función funciona como una función común.

Nota: los métodos nativos de JavaScript que requieren un navegador, como console.log, no funcionan en el nodo Función JavaScript.

Puedes mapear los resultados de tu código para actualizar determinados Campos del Contacto.

Nota: al manipular JSONs, todos ellos deben parsearse antes de ser usados dentro del código.

Cómo llegan los parámetros al código

Todo valor de parámetro llega al código como texto, incluso cuando la variable guarda un número, una lista o un JSON. Antes de recorrer un array o leer las claves de un objeto, conviértalo con JSON.parse.

js
// carrinho chega como texto: '[{"preco":30,"qtd":2},{"preco":15,"qtd":1}]'
const itens = JSON.parse(carrinho);

return {
  total: itens.reduce(function (s, i) { return s + i.preco * i.qtd; }, 0),
  quantidade: itens.length
};

El nombre del parámetro ya existe como variable dentro del código: no lo declare de nuevo. Escribir const carrinho = ... para un parámetro llamado carrinho rompe la ejecución.

El código no resuelve {{variable}}: lo que está escrito en el editor vale como texto literal. Los datos del contacto entran solo por el campo Valor del Parámetro, y es ahí donde se reemplaza la variable.

El valor de retorno y el mapeo

Lo que devuelve la función se entrega dentro de result. En el mapeo, la clave total de un objeto devuelto tiene la ruta $.result.total: si escribe solo total o $.total, NicoChat lo completa a la forma correcta.

Retorno en el código
Ruta en el mapeo
Qué se guarda
return 45;
$.result
el número 45
return { total: 45 };
$.result.total
el número 45
return ['a', 'b'];
$.result[0]
el texto a
return { itens: [...] };
$.result.itens
la lista entera, en JSON

Mapear $.result solo guarda el objeto o el array entero en una sola variable. Para grabar cada parte en un campo distinto, devuelva un objeto y mapee clave por clave.

Límites del bloque

  • Sin acceso a la red. Para llamar a una API, use el bloque Solicitud Externa (API) y traiga el resultado aquí.
  • Tiempo de ejecución corto, alrededor de 5 segundos. Un bucle infinito o un procesamiento pesado se interrumpe.
  • eval no está permitido.
  • Nada que dependa del navegador: console.log, document y window no existen aquí.

Trabajar con JSON

No existe un bloque dedicado a manipular JSON en NicoChat: sumar, contar, hallar el mayor valor, extraer una clave o quitar un elemento es trabajo de este bloque. Después de JSON.parse, es JavaScript común.

Qué quiere hacer
Cómo hacerlo
Sumar o contar
reduce y length
Mayor o menor valor
Math.max y Math.min sobre un map
Extraer una columna de la lista
map
Listar las claves de un objeto
Object.keys
Obtener un elemento por el valor de una clave
find
Quitar elementos por una condición
filter

Los dos lugares donde se escribe JavaScript

Además de este bloque, hay JavaScript en el preprocesamiento del bloque Solicitud Externa (API). Los dos no se comportan igual, y confundirlos es la causa más común de un mapeo vacío.

Función JavaScript
Preprocesamiento de la API
Entrada
los parámetros que usted declara, siempre como texto: el JSON necesita JSON.parse
la variable payload, con la respuesta de la API ya lista para usar
Retorno
va a result: mapee $.result.<clave>
queda en la raíz: mapee $.<clave>
Para qué
transformar datos que ya están en el flujo
tratar la respuesta de una API antes de mapearla