Tareas automáticas

¿Cuántos pasos puede tener una tarea?

Botize tiene una limitación de solo 10 pasos en cada tarea para evitar malas prácticas en el diseño de automatizaciones, como la excesiva complejidad. Esta limitación está hecha para obligar a dividir un problema complejo en automatizaciones más sencillas. De esta manera, el mantenimiento de una automatización es más sencillo, hay menos tolerancia a fallos y es más fácil también determinar anomalías si se producen.

Sin embargo, esta limitación no impide crear tareas grandes de muchos pasos. Puedes, desde dentro de una tarea, llamar a otras y así terminar creando automatizaciones mayores. En lugar de crear una tarea con 100 pasos, se pueden crear 10 tareas de 10 pasos cada una, lo cual hace que sea más fácil entender y depurar el proceso. Esto ayuda a mantener la automatización limpia y organizada, lo que facilita el mantenimiento y la resolución de problemas.

Más información: Simplificar y reutilizar tareas.

¿Puedo crear tareas donde se ejecuten unos pasos u otros dependiendo de distintas circustancias?

Sí, a través de las reglas. En cada paso de una tarea puedes definir reglas para que se ejecuten o no dependiendo de ciertas circunstancias.

Aquí encontrarás varios ejemplos explicados paso a paso: REGLAS: Qué hacer y cuándo.

¿Qué es Mustache y cómo usarlo en Botize?

Botize admite el uso de plantillas Mustache en los textos, lo que te permite crear contenido dinámico basado en las etiquetas de los pasos anteriores de una tarea.

¿Qué puedes hacer con Mustache?
Referenciar etiquetas de pasos anteriores:
Puedes insertar el valor de una etiqueta simplemente escribiendo su nombre entre llaves. Por ejemplo:

{{image_url}}
Mostrará el valor almacenado en la etiqueta image_url.

Controlar la lógica condicional:
Mustache permite jugar con bloques condicionales para mostrar texto u otros valores en función de si una etiqueta existe o tiene un valor. Por ejemplo:

{{#image_url}}Ver imagen: {{.}}{{/image_url}}

Este bloque imprimirá "Ver imagen: " junto con su correspondiente URL solo si la etiqueta image_url tiene un valor.

{{^image_url}}No hay imagen disponible.{{/image_url}}

Este bloque imprimirá "No hay imagen disponible." si la etiqueta image_url no existe o está vacía.

Creación de contenido condicional avanzado:
Usando combinaciones de etiquetas y bloques, puedes generar texto más complejo adaptado a las circunstancias de cada tarea.

¿Qué sucede al eliminar una tarea en Botize? ¿Puedo recuperar una automatización eliminada?

Cuando eliminas una tarea en Botize, esta se borra de forma permanente. Aunque no es posible recuperar tareas eliminadas, siempre puedes hacer un backup de todas tus automatizaciones en cualquier momento desde el tu área de usuario.

¿Puedo compartir o copiar tareas entre distintas cuentas de Botize?

Sí, en la sección Cuenta tienes el botón "Exportar" que te permite exportar todas tus tareas de Botize, y el botón "Importar" que permite importarlas. De esta manera puedes exportar tus tareas tanto para mantener una copia de seguridad como para importarlas en otra cuenta distinta de Botize.

¿Qué pasa si un paso de mi tarea falla? ¿Puede la tarea continuar y reaccionar al error?

Por defecto, si un paso falla la tarea se detiene ahí: los pasos siguientes no llegan a ejecutarse.

Si prefieres que continúe, abre ese paso en el editor y busca el apartado Comportamiento. Ahí tienes dos casillas:
  • Continuar incluso si este paso genera un error: el paso falla, pero la tarea sigue adelante.
  • Continuar incluso si este paso no devuelve resultados: el paso no encuentra nada, pero la tarea sigue adelante.
Al marcar la primera, el error deja de ser un final y pasa a ser un dato: ese paso publica dos etiquetas nuevas que puedes usar en los pasos siguientes, {{error_code}} y {{error_message}}, con el código y el texto del error.

Combinando eso con las reglas puedes montar dos caminos en la misma tarea: un paso que solo se ejecute si error_message no está vacío (el camino del fallo) y otro que solo se ejecute si está vacío (el camino normal). Así una tarea puede intentar algo y, si no sale, probar otra cosa o avisarte, en lugar de pararse en silencio.

Ten en cuenta que la casilla no distingue un error de otro: hace continuar la tarea ante cualquier fallo de ese paso. Si solo quieres reaccionar a un error concreto, comprueba su texto en la regla del paso siguiente.

¿Qué diferencia hay entre pausar, reiniciar y activar una tarea?

Una tarea solo tiene dos estados: activa o pausada. Las acciones están en tu lista de tareas, cada una con sus botones.
  • Pausar: la tarea deja de atender su disparador, pero conserva todo su estado interno (por dónde iba, contadores, datos temporales).
  • Activar: vuelve a atender su disparador y continúa donde se quedó.
  • Reiniciar: la deja como recién creada — borra punteros, contadores y datos temporales. No borra la tarea, solo su memoria de ejecución. Es lo que hay que usar cuando una tarea "se ha quedado enganchada" y quieres que empiece de cero.
Editar una tarea no la activa: si estaba pausada, sigue pausada después de guardar.

¿Cómo pasan los datos de un paso al siguiente? ¿Y si dos pasos devuelven una variable con el mismo nombre?

Cada paso publica sus variables de salida y Botize las va acumulando: cualquier paso puede usar las variables de todos los pasos anteriores, no solo del inmediatamente anterior. Se escriben entre dobles llaves, por ejemplo {{title}}.

El detalle que da problemas: si dos pasos publican una variable con el mismo nombre, la del paso posterior pisa a la anterior. Es fácil que ocurra, porque nombres como title, url o text los usan muchas aplicaciones.

La solución es renombrar. En cada paso tienes la opción Personalizar etiquetas, que te permite darle otro nombre a las variables que ese paso publica. Si el paso 2 devuelve url y el paso 4 también, renombra la del paso 2 a algo como url_producto y las dos convivirán sin pisarse.

¿Qué tipos de disparador puede tener una tarea?

El disparador es lo que decide cuándo se ejecuta la tarea, y siempre es el primer paso. Hay tres formas:
  • Cada cierto tiempo: la tarea se ejecuta sola con la frecuencia que elijas.
  • Cuando ocurre algo en una aplicación: por ejemplo, cuando llega un correo, cuando alguien escribe a tu bot de Telegram o cuando se publica algo en un canal. La tarea duerme hasta que ese servicio avisa. Es el disparador de la propia aplicación: no hay nada más que configurar para que sea instantánea.
  • Bajo petición: la tarea se queda esperando a que alguien la llame desde fuera (una dirección web a la que se envían los datos), o a que tú la lances a mano.
Una tarea tiene un disparador y solo uno, y va siempre el primero. Si necesitas que la misma automatización responda a dos cosas distintas, son dos tareas.

¿Cuál es la diferencia entre poner reglas en un paso y usar el paso de Filtros?

Las dos cosas son condiciones, pero no hacen lo mismo, y confundirlas es una fuente clásica de sorpresas:
  • Reglas dentro de un paso (el apartado Reglas que ves al configurarlo): si no se cumplen, se salta ese paso y la tarea continúa con los siguientes.
  • El paso de Filtros: si no se cumple, la tarea muere ahí y no se ejecuta nada de lo que viene después.
Dicho de otro modo: las reglas del paso deciden "¿hago esto?"; el paso de Filtros decide "¿sigo o paro?".

En ambos casos las condiciones se agrupan: dentro de un grupo se tienen que cumplir todas (Y), y basta con que se cumpla uno de los grupos (O). Así puedes montar caminos distintos en la misma tarea: un paso que solo se ejecute en un caso y otro que solo se ejecute en el contrario.

¿Qué pasa con las variables de un paso que se ha saltado por sus reglas?

Un paso que se salta no publica nada. Y una variable que nadie ha publicado no se comporta como "inexistente": se lee como vacía.

Eso tiene una consecuencia que sorprende: una regla del tipo «tal cosa está vacía» también se cumple en los caminos donde el paso que produce esa variable ni siquiera llegó a ejecutarse.

El caso típico. Una tarea busca un producto y, si no lo encuentra, busca alternativas. El último paso —el que avisa de que no hay nada— lleva la regla «alternativa está vacía». Cuando el producto sí aparece, el paso de alternativas se salta, «alternativa» nunca se publica, se lee vacía… y ese último paso responde igual. El usuario recibe el producto y, justo detrás, un mensaje diciéndole que no se ha encontrado nada.

Cómo se evita. Cada camino lleva además la condición que lo identifica a él, no solo la ausencia de los demás. En el ejemplo, el paso que avisa de que no hay nada tiene que pedir dos cosas a la vez: que la búsqueda del producto fallara y que no haya alternativa. Recuerda que dos reglas dentro del mismo grupo se cumplen a la vez (Y) y que en grupos distintos basta con una (O).

Antes de dar por buena una tarea con varios caminos, recórrelos uno a uno y comprueba que a cada situación le responde exactamente un paso. Si a un caso le responden dos, es un error; si no le responde ninguno, también.

¿Qué condiciones puedo poner en una tarea, y dónde funciona cada una?

Una condición se puede poner en cuatro sitios distintos de una tarea, y no todos entienden lo mismo. Esta tabla dice, para cada condición, dónde funciona. Se genera a partir del motor, así que no se queda vieja.

Si pones una condición en un sitio donde no está disponible, la tarea falla al ejecutarse. Por eso conviene mirar la columna antes.

CondiciónNombre técnicoPide un valorRegla en un pasoPaso «Filtros»Paso «Filtrar una lista»Rama de un flujo
debe haber variadochange
debe contener todas estas palabrascontains_all
debe contener alguna de estas palabrascontains_certain
debe contener alguna de estas palabras (distingue mayúsculas/minúsculas)contains_certain_cs
El día del mes debe sercontainsdaymonths
el día de la semana debe sercontainsdays
la hora debe sercontainshours
El mes debe sercontainsmonths
debe haber disminuidodecreases
no contiene ningún valorempty
debe ser igual aequal
la fecha esequal_date
debe estar especificadoexists
Falsofalse
Cambia de Falso a Verdaderofalse_to_true
↥ debe ser mayor quegreaterthan
debe haber aumentadogrows
debe figurar en esta listain_array
No tiene un valoris_null
el número de caracteres es mayor quelen_greaterthan
el número de caracteres es menor quelen_lessthan
↧ debe ser menor quelessthan
una sola vez transcurrido un díanewday
una sola vez transcurrido un día y una determinada horanewdaytime
no debe estar especificadonon_existent
debe ser distinto denot_equal
no debe figurar en esta listanot_in_array
no ha aparecido en el último díanot_seen_1d
no ha aparecido en la última horanot_seen_1h
no ha aparecido en los últimos 30 díasnot_seen_30d
no ha aparecido en los últimos 7 díasnot_seen_7d
no debe empezar por ninguna de estas palabrasnot_starts_with
no debe contener ninguna de estas palabrasnotcontains
contiene un valornotempty
debe empezar por alguna de estas palabrasstarts_with_certain
debe hacer menos detimeafterlessthan
debe hacer más detimeaftermorethan
la hora debe ser posterior atimeafterthan
la hora debe ser anterior atimebeforethan
El número total de elementos estotal_items_equal
El número total de elementos es mayor quetotal_items_greater_than
El número total de elementos es menor quetotal_items_less_than
Verdaderotrue
Cambia de Verdadero a Falsotrue_to_false
no debe haber variadounchanged
el número de palabras es mayor quewords_greaterthan
el número de palabras es menor quewords_lessthan

«Regla en un paso» es el apartado Reglas de cualquier paso. «Filtros» y «Filtrar una lista» son los dos métodos del paso Filtros. «Rama de un flujo» es cada camino de una tarea dibujada con ramas: ahí sólo funcionan las condiciones que dependen únicamente de lo que llega, no de lo que pasó en ejecuciones anteriores.