Preguntar a la IA
Español ES
Ir a CleverApp

Intérprete de JavaScript

El bloque ejecuta tu código JavaScript: hace cálculos, transforma datos, cambia las variables y etiquetas del contacto y decide por dónde sigue el flujo. El bloque en sí no envía nada al chat, solo lo que envíes desde el código.

Panel de configuración del bloque «Intérprete de JavaScript»Panel de configuración del bloque «Intérprete de JavaScript»

Configuración

El bloque tiene un solo campo: el editor de código. Empieza a escribir el nombre de una función y el editor te propondrá cómo completarlo.

Editor de código con una sugerencia: para «setCon» propone setContactTag() y setContactVariable()Editor de código con una sugerencia: para «setCon» propone setContactTag() y setContactVariable()

Qué puede usar el código

Los datos del contacto llegan como variables ya preparadas. Todos los valores son cadenas. Si al contacto le falta algún dato, la variable no existe: compruébalo con typeof phone !== 'undefined'.

Variable Qué contiene
id El ID del contacto en la plataforma
name, first_name, last_name El nombre completo, la primera palabra del nombre, la segunda palabra
phone, email, address Teléfono, email, dirección
username El nombre de usuario en el canal
telegram_id, max_id El ID de la persona en Telegram y en MAX
created_at La fecha en que apareció el contacto, con el formato 2026-01-31 12:00:00
bot_id El ID del bot

Funciones:

Función Qué hace
getContactVariable(name) Devuelve el valor de una variable del contacto, o undefined si no existe. El valor es una cadena: envuélvelo en Number() para hacer cálculos
setContactVariable(name, value) Escribe una variable del contacto. El valor es una cadena, un número o true/false. Convierte antes un objeto o un array en cadena: JSON.stringify(value)
deleteContactVariable(name) Elimina una variable del contacto
getContactTags() Devuelve un array con las etiquetas del contacto
hasContactTag(name) true si el contacto tiene la etiqueta
setContactTag(name) Añade una etiqueta
deleteContactTag(name) Quita una etiqueta
getGlobalVariable(name) Devuelve una variable global del bot
setGlobalVariable(name, value) Escribe una variable global. El valor se guarda como cadena
deleteGlobalVariable(name) Elimina una variable global
sendMessage(text) Envía un texto al contacto. Hasta diez mensajes por ejecución
goToBlock(id) Lleva al contacto al bloque con el ID indicado. Se puede llamar una vez por ejecución
disableContinue() Desactiva la conexión «Continuar» en esta ejecución
hash_hmac(algo, text, key, format) Una firma HMAC. El algoritmo es md5, sha1, sha256, sha512 o md4. El resultado es hexadecimal, o Base64 si pasas 'base64' como cuarto parámetro
base64_encode(text), base64_decode(text) Codificación y decodificación Base64

Los parámetros, los valores devueltos y ejemplos de cada función están en la sección API de JavaScript.

Las variables y las etiquetas se escriben en el contacto cuando el código termina sin errores. Dentro del código, getContactVariable ya ve el valor que acabas de escribir.

Calcular un precio con descuento y guardar el resultado:

var price = Number(getContactVariable('price'));
var total = Math.round(price * 0.9);
setContactVariable('total', total);

El siguiente bloque mostrará el resultado con la plantilla {{ $total }}.

Enviar a un contacto con una etiqueta por otra rama:

if (hasContactTag('vip')) {
    goToBlock(12345);
    disableContinue();
}

Sustituye 12345 por el ID del bloque que necesites: se muestra en la configuración del bloque. goToBlock por sí solo no cancela la conexión «Continuar»: sin disableContinue(), el bot ejecuta tanto el bloque indicado como el conectado a «Continuar».

Salidas

  • «Continuar»: se activa cuando el código se ha ejecutado, salvo que el código haya llamado a disableContinue().

Límites

  • El lenguaje es JavaScript del estándar ES5: sin let ni const, sin funciones flecha ni plantillas literales.
  • Las expresiones regulares no admiten lookahead, lookbehind ni referencias inversas; los detalles están en Lenguaje.
  • El código tiene hasta 16 384 caracteres.
  • El código dispone de 5 segundos para ejecutarse. Si no termina a tiempo, se detiene con un error.
  • El código no puede hacer solicitudes de red: para eso está el bloque «Solicitud HTTP».

Si el código no funciona

Abre el «Registro de ejecución» en la configuración del bloque. Cada entrada muestra el código fuente, la lista de acciones realizadas y el valor de la última expresión. Esto ayuda a depurar: añade el nombre de una variable al final del código y su valor aparecerá en el registro.

«Registro de ejecución» del bloque JavaScript: código fuente, valor de la última expresión y lista de acciones«Registro de ejecución» del bloque JavaScript: código fuente, valor de la última expresión y lista de acciones

Advertencia

Si el código termina con un error, su texto se envía al contacto en el chat y el flujo sigue por la conexión «Continuar». Prueba el código en la vista previa del bot antes de usarlo con personas reales.