Saltar a contenido

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!".