Hello world
Bienvenido a la documentación de Vaincentflow. Aquí encontrarás información detallada sobre cómo configurar y utilizar el router y sus funcionalidades.
Flujo Inicial en Vaincentflow
Explicación basica del Workflow
import { Workflow } from "@elimeleth/vct-flow";
/*
Tipos de flujos o disparadores:
- `any`: Captura cualquier tipo de entrada.
- `image`: Captura contenido multimedia (imágenes).
- `voice`: Captura notas de voz.
- `document`: Captura documentos.
- `location`: Captura ubicaciones.
- `order`: Captura órdenes.
- `template`: Captura plantillas de meta.
También pueden ser disparadores manuales como:
- "hola"
- ["hola", "Hola"]
- .* (expresiones regulares)
- /^hola/gim (expresiones regulares)
*/
const workflow = new Workflow("any", {
metadata: {
/* Nombre del flujo */
name: "general",
intentions: [
/* Recuerda que las intenciones no se disparan con el flujo 'any' */
{
intention: "horario",
description: "Si la persona pregunta por horarios"
}
]
}
});
1. Configuración Inicial
Para comenzar a utilizar la librería, sigue estos pasos:
import "dotenv/config";
import { TelegramProvider } from "@elimeleth/telegram";
import { Workflow, GlobalRouter } from "@elimeleth/vaincentflow";
// Configuración inicial del proveedor de mensajería
const provider = new TelegramProvider({});
// Configuración del enrutador global con el proveedor de Telegram
const router = new GlobalRouter({
provider
});
// Creación de un flujo de trabajo simple
const foo = new Workflow("hola")
.addAction("Hola!");
// Agrega el flujo de trabajo al enrutador y escucha los mensajes
router.addFlows([foo])
.listen();
Este ejemplo crea un flujo de trabajo simple que responde "Hola!" a los mensajes entrantes.
2. Estructura de Componentes
La librería se organiza en componentes clave que facilitan la creación de flujos, la configuración de rutas de mensajes y el manejo de interacciones.
GlobalRouter y Workflow
- GlobalRouter : El enrutador central que gestiona los flujos y enrutamiento de mensajes. Conecta la aplicación al proveedor de mensajería.
- Workflow : Define un flujo de trabajo, o conjunto de acciones. Un flujo (
Workflow) se compone de nodos (Nodes) que describen cada paso y condición en el flujo.
3. Configuración del Router
A continuación, se presenta la configuración del GlobalRouter:
import "dotenv/config";
import { GlobalRouter } from "@elimeleth/vct-flow";
/*
Bienvenid@ a Vaincentflow 🚀
Visita la documentación completa: https://docs.vaincent.flippoapp.com/
*/
// Ejemplo de uso:
const router = new GlobalRouter({
/* Por defecto, Vaincentflow busca el proveedor en la carpeta /provider/index.ts.
Asegúrate de tener tu proveedor configurado correctamente. */
provider: undefined,
/* Configuración para la descarga automática de archivos.
Los archivos se almacenan temporalmente en la carpeta tmp/.
Puedes visualizar la ruta en ctx.file_dir_path. */
downloadConf: undefined,
/* Función que gestiona una lista de clientes fuera del asistente.
Puede funcionar como blacklist o whitelist, permitiendo o restringiendo
el acceso de ciertos usuarios. */
pauseFn: undefined,
/* Función de circuito que valida que se cumplan condiciones específicas.
Solo se ejecuta como un callback que decide si el flujo continúa o no. */
circuitBreaker: undefined,
/* Configuración para guardar mensajes en la base de datos de tu elección.
Consulta la sección correspondiente en la documentación para obtener más información:
https://docs.vaincent.flippoapp.com/es/recipes/workflows/database/ */
database: undefined,
/* Conecta un asistente de OpenAI para interactuar con inteligencia artificial.
Puedes encontrar más detalles en:
https://docs.vaincent.flippoapp.com/es/recipes/workflows/openai_assistant/ */
openai_assistant: undefined,
/* Opción para restaurar el último flujo disparado en caso de un fallo.
Establece `restorePreviousCheckpoint` a true para habilitar esta funcionalidad. */
restorePreviousCheckpoint: false,
/* Configuración para capturar intenciones cuando un flujo no fue disparado manualmente.
Establece `multimodal` a true para habilitar la captura de intenciones
en múltiples formatos. Más información en:
https://docs.vaincent.flippoapp.com/es/recipes/workflows/intentions/ */
llm: { provider: "openai", multimodal: false }
});
/* Se pone a escuchar los mensajes entrantes.
Asegúrate de que tu proveedor y flujos están configurados correctamente
para manejar los mensajes de manera efectiva. */
router.listen();
Opciones de Configuración del Router
- provider : Proveedor de mensajería que se utiliza para gestionar las interacciones. Por defecto, busca en
/provider/index.ts. - downloadConf : Configuración para la descarga automática de archivos, que se almacenan en la carpeta
tmp/. - pauseFn : Función para gestionar una lista de clientes, funcionando como blacklist o whitelist.
- circuitBreaker : Función que valida condiciones específicas para decidir si el flujo debe continuar.
- database : Configuración para guardar mensajes en una base de datos.
- openai_assistant : Configuración para conectar un asistente de OpenAI.
- restorePreviousCheckpoint : Restaura el último flujo disparado en caso de un fallo.
- llm : Configuración para capturar intenciones, permitiendo la interacción multimodal.
4. Ejemplo Completo
Aquí hay un ejemplo completo de cómo utilizar el GlobalRouter junto con un flujo de trabajo:
import "dotenv/config";
import { TelegramProvider } from "@elimeleth/telegram";
import { Workflow, GlobalRouter } from "@elimeleth/vaincentflow";
// Configuración inicial del proveedor de mensajería
const provider = new TelegramProvider({});
// Configuración del enrutador global con el proveedor de Telegram
const router = new GlobalRouter({
provider,
database: {/* configuración de tu base de datos */},
openai_assistant: {/* configuración del asistente */},
restorePreviousCheckpoint: true,
});
// Creación de un flujo de trabajo que responde a "hola"
const helloWorkflow = new Workflow("hola")
.addAction("Hola!");
// Agrega el flujo de trabajo al enrutador y escucha los mensajes
router.addFlows([helloWorkflow])
.listen();
Con este código, el sistema estará preparado para manejar interacciones con los usuarios y responderá a "hola" con un mensaje de "Hola!".