Eventos
Los eventos en Workflow permiten reaccionar a diferentes tipos de mensajes o acciones, como texto, imágenes, notas de voz, documentos, ubicaciones, órdenes y más. En esta guía, exploraremos cómo configurarlos y usarlos.
Configuración Básica de Eventos
Los eventos se pueden configurar para escuchar mensajes específicos según su tipo o contenido. A continuación, se describen los tipos de eventos más comunes:
Ejemplos de Configuración de Eventos
import { Workflow } from "@elimeleth/vct-flow";
/*
1. Evento `any`:
- Captura cualquier mensaje o acción.
- Tiene la **mayor prioridad** y siempre se dispara primero.
*/
const any = new Workflow("any")
.addAction("Soy el evento any");
/*
2. Evento `image`:
- Captura imágenes y videos enviados por el usuario.
*/
const image = new Workflow("image")
.addAction("Soy el evento image");
/*
3. Evento `voice`:
- Captura notas de voz y mensajes de audio.
*/
const voice = new Workflow("voice")
.addAction("Soy el evento voice");
/*
4. Evento `document`:
- Captura documentos enviados como PDF, Word, etc.
*/
const document = new Workflow("document")
.addAction("Soy el evento document");
/*
5. Evento `location`:
- Captura ubicaciones enviadas por el usuario.
*/
const location = new Workflow("location")
.addAction("Soy el evento location");
/*
6. Evento `order`:
- Captura órdenes realizadas a través del carrito de compras en WhatsApp.
*/
const order = new Workflow("order")
.addAction("Soy el evento order");
/*
7. Evento `template`:
- Captura plantillas diseñadas por Meta.
*/
const template = new Workflow("template")
.addAction("Soy el evento template");
Prioridad de los Eventos
- El evento
anysiempre tiene prioridad máxima , lo que significa que se ejecutará independientemente del tipo de mensaje recibido. - Para otros eventos (
image,voice, etc.), se dispararán únicamente si el mensaje recibido coincide con su tipo específico.
Configuración Avanzada: Eventos Personalizados
La API de Workflow permite definir eventos personalizados mediante:
- Cadenas de texto (
string) : Para capturar mensajes específicos. - Expresiones regulares (
RegExp) : Para definir patrones avanzados. - Eventos especificos : (image, voice, document, location...)
- Listas (
array) : Para combinar múltiples criterios en un solo evento.
Ejemplos de Personalización
/*
1. Captura una palabra específica (texto literal).
*/
const hola = new Workflow("hola")
.addAction("Soy el evento 'hola'");
/*
2. Captura una lista de palabras específicas.
- Captura tanto "hola" como "Hola" (sensible a mayúsculas/minúsculas).
*/
const lista = new Workflow(["hola", "Hola"])
.addAction("Soy el evento lista");
/*
3. Captura texto ignorando mayúsculas/minúsculas.
- Usa una expresión regular (`RegExp`) con las banderas `i` (ignorar caso) y `g` (global).
*/
const regexCaseInsensitive = new Workflow(/^hola/gim)
.addAction("Soy el evento hola en expresión regular");
/*
4. Captura una lista combinada de criterios:
- Usa expresiones regulares y texto literal en un solo evento.
- Ejemplo: Captura "hola" (sin importar mayúsculas/minúsculas), "epale" y "buenas".
*/
const combinados = new Workflow([/^hola/gim, "epale", "buenas", "voice"])
.addAction("Soy el evento combinado");
Consideraciones Importantes
-
Orden y Prioridad :
-
El evento
anyse ejecutará siempre que no haya filtros más específicos, ya que actúa como un "catch-all". -
Evitar Duplicados :
-
Si varios eventos coinciden con un mismo mensaje, asegúrate de priorizar adecuadamente para evitar duplicación en las respuestas.
-
Uso de Expresiones Regulares :
-
Las expresiones regulares son poderosas, pero úsalas con cuidado para no capturar texto no deseado.
Resumen de Funcionalidades
| Evento | Descripción |
|---|---|
any |
Captura cualquier mensaje o acción (prioridad máxima). |
image |
Captura imágenes y videos. |
voice |
Captura notas de voz y mensajes de audio. |
document |
Captura documentos (PDF, Word, etc.). |
location |
Captura ubicaciones enviadas por el usuario. |
order |
Captura órdenes realizadas a través del carrito de compras en WhatsApp. |
template |
Captura plantillas diseñadas por Meta. |
| Personalizado | Define criterios específicos usando string,RegExp o array. |
Con esta flexibilidad, Workflow permite crear flujos robustos y altamente personalizables para manejar diferentes tipos de mensajes en tiempo real. 🎯