Imagen de un hombre escribiendo sobre un papel con estilo lineart, generado por la inteligencia artificial de bing

Desarrollo de bots: Escriba del Muro. Parte 2

El proyecto del escriba del muro es un experimento para desarrollar un medio para la creación de formularios dinámicos con administración manual para la dinamización de canales e interacción con los usuarios. Lo he ido creando al vuelo, por lo que objetivos y funciones pueden cambiar en cada entrada.

Tabla de contenidos

Introducción

Este articulo corresponde a la segunda parte del que ya esta publicado en este enlace. Dado que las bases ya están construidas, ahora me centraré en el desarrollo del ciclo de conversación.

Escriba del Muro

El Escriba del muro es un sistema sencillo, debido a que es una practica de concepto que busca demostrar e ilustrar el proceso de interaccion entre el usuario y un bot de unico proceso. Me resulta complicado todavia decidir si es mejor crear un bot universal de muchisimas funciones o uno de proposito simple, porque es complicado tener conciencia de tantos bots, pero por el momento le apostaré a la modularidad y creare muchos de proposito simple.

El Escriba del Muro tiene como propósito, permitir a otros usuarios de Telegram, publicar en un canal especifico, previo el cumplimiento de algunos requisitos que son los siguientes:

  • Registro en el canal especifico: Esto concede al usuario el derecho de publicar y lo obliga a permanecer en el canal para conservar el derecho a publicar. Actualmente no tiene una validación de retiro, por lo que no seria necesario mas que unirse, publicar y luego desuscribirse.
  • Autorización manual: Aunque la situación anterior permite muchos abusos, la autorización manual permite a los administradores del canal decidir sobre que datos recibidos por el bot son aprobados o rechazados. Se han tomado algunas licencias para permitir la simplificacion del código.

El Escriba del muro funciona con Grammy para la gestión de la api de Telegram. A pesar de que Grammy permite un sistema de persistencia y sesiones propio, he optado por usar SQLite3 con SequelizeORM para analizar de cerca las ideas que tengo.

Persistencia de Sesiones

En general, un chat, sea para la plataforma qué sea, es solo un intermediario entre un usuario y otro, el cual puede ser un programa o persona.

En el caso de dos personas, la comunicación se da transfiriendo un mensaje por un medio, y solo se puede sostener en el contexto, que es apoyado por el cerebro de los dos interlocutores. Esto permite, por ejemplo, evitar bucles infinitos, que son causados por los parámetros de una conversación, por ejemplo, al saludar.

Un saludo debe ser respondido por otro saludo, Siguiendo esta regla, sin un contexto, es decir, sin saber si antes o después ya se ha saludado, se obedecerá a la regla establecida y se continuara respondiendo al saludo, Esto es especialmente notable en saludos mas ambiguos como «Hola».

Tener contexto, permite reaccionar de formas mas complejas y establecer un inicio y un fin a la comunicación. En el caso del Bot «El Escriba del Muro» aunque no habrá una conversación real, permitirá a los usuarios establecer un canal personal con el Bot que le otorgará la capacidad de recordar y ejecutar las ordenes de forma coherente.

Flujo de sesión

La interacción básica esta fundamentada en respuestas prediseñadas, por lo que aunque se escriban cosas distintas, siempre se obtendrá las mismas respuestas.

La aplicación de la persistencia de sesión entra en funcionamiento en la validación de usuario y creación de canal de comunicación mediante este modelo:

  • El usuario inicia una conversación, por lo que se guarda su identidad a manera de persistencia.
  • El bot responde con un mensaje prediseñado, guiandolo e instruyendolo para que elija el comando que dispare el flujo de sesion.
  • El usuario elije el comando correspondiente y se asocia un conjunto de campos, comando_usuario y variable_usuario para recordar en que fase del ciclo de interaccion se encuentra la sesion.
  • El Bot «recuerda» el comando y las variables del usuario y responde acorde a la interacción en curso.

Ejemplo de flujo de sesión usando el comando /revisar para el administrador

Para la demostración de la persistencia de sesión y flujo de sesión, utilizaré el comando /revisar, el cual solo puede ser utilizado por el administrador.

  • El usuario invoca el comando /revisar
  • El bot valida que el usuario corresponda al administrador, previamente registrado en el .env
  • El bot consulta de los usuarios quienes tengan una sesion en curso
  • El bot selecciona el post mas antiguo en base al campo updatedAt y lo muestra al admin
  • El admin aprueba el post
  • El bot publica el post en el canal y limpia los campos de comando_usuario y variables_usuario del usuario y el admin.

Estado actual

El Bot actualmente ya se encuentra en funcionamiento y en fase de pruebas, pero no esta abierto al publico, debido a que en las pruebas iniciales, en las que participé solo yo, funcionaba correctamente, pero al involucrar a alguien mas, no fue capaz de detectar si este se unió al canal, por lo que simplemente no lo dejo participar. Imagino que para cuando haga la tercera parte de este articulo, ya quedará listo, pero por el momento aun le falta mas para cumplir con su cometido.

También estoy agregando una función de soporte para que los usuarios que tengan dudas, puedan abrir un canal de comunicación directa con el administrador mediante el Bot, sin necesidad de que abran mensaje al administrador en su cuenta personal.

Publicado por

Drk0027

Soy Drk0027, un desarrollador web con diversas capacidades como Administración de servidores web, Gestión de sitios web WordPress, Creación de plantillas HTML+CSS responsivo y otros. Puedes hablar conmigo en mi perfil de Telegram o seguir mis proyectos en mi canal https://t.me/drk0072

Un comentario en «Desarrollo de bots: Escriba del Muro. Parte 2»

  1. @drk0027 El proyecto del escriba del muro es un experimento para desarrollar un medio para la creación de formularios dinámicos con administración manual para la dinamización de canales e interacción con los usuarios.

Deja un comentario

Interlan