Sistema de acciones de Tommy
Tommy Actions es un sistema basado en IFTTT que utiliza los siguientes objetos: Tareas, Disparadores, Condiciones y Actividades.
Cada mini programa puede definir una serie de Acciones que pueden utilizarse para ejecutar código dinámico y realizar tareas arbitrarias que actualizan la interfaz en tiempo real.
Tareas
Las tareas ejecutan un bloque de código a intervalos programados y activan un Disparador cuando hay datos disponibles o se cumple una condición interna. El código ejecutado por las tareas es completamente independiente de la implementación, pero los datos generados por el script deben tener un formato que Tommy entienda para que el sistema de acciones pueda ejecutar el Disparador correcto.
Disparadores
Los disparadores son ejecutados por una Tarea y se pasan al sistema de acciones para que los procese una Actividad.
Condiciones
Las condiciones son procesadores opcionales que comprueban los datos del Disparador para determinar si se puede ejecutar una Actividad. Las condiciones utilizan operadores condicionales como greater_than, less_than o equal_to para procesar los datos del Disparador.
Actividades
Las actividades gestionan los datos del Disparador y hacen algo con ellos. Esto puede incluir enviar un correo electrónico, notificar a un usuario o prácticamente cualquier cosa que pueda imaginar con nuestras API internas o de terceros externas.
Definición de una acción
La forma más fácil de aprender a definir una acción es aplicar ingeniería inversa a lo que ya se ha creado. Tomemos como ejemplo el mini programa Poke, que define una acción que ejecuta una Tarea (poke.tasks.default), un Disparador (poke.triggers.default) y una Actividad (_chat.activities.send_message_).
Entonces, ¿qué está ocurriendo realmente aquí? Es bastante sencillo una vez que se comprende la sintaxis.
El parámetro timer indica al sistema de acciones que ejecute la tarea especificada todos los días a las 9 de la mañana.
En nuestro caso, la tarea que se ejecuta es poke.tasks.default, cuya única función es activar el disparador poke.triggers.default. Tanto estas tareas como los disparadores se definen en el archivo manifest.yml, cuyo contenido completo puede verse dentro del SDK.
Nuestra definición de acción especifica chat.activities.send_message como la actividad que se ejecutará cuando se active el disparador poke.triggers.default. Como habrá adivinado por el prefijo chat. en el parámetro de la actividad, la actividad chat.activities.send_message se define en realidad de forma externa en Tommy chat, y el único propósito de la actividad es enviar un mensaje de chat cuando se ejecuta. Así es como se hace referencia a las tareas, los disparadores y las actividades de un complemento externo al programar sus propios mini programas. Tenga en cuenta que si hace referencia a elementos externos, entonces debe añadirlos a la lista de dependencias.
La otra cosa muy importante que hay que mencionar es el parámetro mappings. Este describe cómo consumirá la actividad los datos del disparador. En nuestro caso, el disparador solo toma un parámetro message simple, y nuestro disparador también genera un parámetro message, así que lo único que hacemos es asignar el parámetro message del disparador con la actividad.