# Mensajes y saltos

Estas funciones deciden qué ve el contacto y hacia dónde sigue el flujo después del código. Los mensajes y el salto se ejecutan cuando el código termina sin error, en el orden en que se llamaron.

## sendMessage

```js
sendMessage(text)
```

Envía un mensaje de texto al contacto.

| Parámetro | Tipo | Qué pasar |
|---|---|---|
| `text` | Cadena | El texto del mensaje. Un número se convierte en cadena |

**No devuelve nada.**

Una cadena vacía no se envía. El texto sale tal cual: las [plantillas](https://support.cleverapp.pro/es/chatbots/templates) `{{ ... }}` que contenga no se procesan; inserta en la cadena los valores que necesites desde el código.

Se pueden enviar hasta 10 mensajes por ejecución. La undécima llamada ya termina el código con un error, y no se envía ni un solo mensaje.

```js
var bouquet = getContactVariable('bouquet');
var price = Number(getContactVariable('price') || 0);

sendMessage('Tu pedido: ' + bouquet + '.');
sendMessage('Total a pagar: ' + price + ' $.');
```

## goToBlock

```js
goToBlock(id)
```

Lleva al contacto a un bloque del flujo: el bot ejecuta ese bloque igual que si una conexión llevara a él.

| Parámetro | Tipo | Qué pasar |
|---|---|---|
| `id` | Número | El ID de un bloque del mismo bot. Se muestra en la configuración del bloque |

**No devuelve nada.**

La función se puede llamar una vez por ejecución: una segunda llamada termina el código con un error. Si el bot no tiene ningún bloque con ese ID, no hay salto y no aparece ningún error en el registro: comprueba el ID.

`goToBlock` no cancela la conexión «Continuar»: sin `disableContinue()`, el bot ejecuta tanto el bloque indicado como el conectado a «Continuar».

```js
var sum = Number(getContactVariable('order_total') || 0);

if (sum >= 100) {
    goToBlock(12345);
    disableContinue();
}
```

Reemplaza `12345` por el ID del bloque que necesitas.

## disableContinue

```js
disableContinue()
```

Desactiva la conexión «Continuar» del bloque en esta ejecución: el flujo no sigue por ella. La próxima vez la conexión vuelve a funcionar, salvo que el código vuelva a llamar a `disableContinue()`.

**Sin parámetros.**

**No devuelve nada.**

Así el propio código decide si el flujo sigue: por ejemplo, se detiene hasta que el contacto indique una dirección.

```js
var address = getContactVariable('delivery_address');

if (!address) {
    sendMessage('Envíanos la dirección de entrega y seguiremos con tu pedido.');
    disableContinue();
}
```
