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.


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.


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
letniconst, 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.


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.