Telegram Multi-User Bot#
Consideremos un ejemplo de un robot que demuestra el funcionamiento de un bot de Telegram con varios usuarios. Cada uno de los usuarios puede comunicarse con Chat GPT (utilizando un historial de chat individual). En la variable $NameSession se indica el nombre de la sesión, después de lo cual es necesario autenticarse en el cliente.
¡Importante! Los datos de conexión a Telegram se pueden encontrar en la ruta: c:\Users\User\AppData\Roaming\Sherpa RPA Data\Telegram\
El proyecto del robot consta de dos diagramas.
El diagrama principal del proyecto se ve así (para mayor comodidad, los bloques del diagrama están numerados):
- Bloque “Inicio” (desde este bloque comienza cualquier diagrama).
- Bloque “Proceso” permite crear escenarios compuestos por varios diagramas. La ejecución del escenario continuará desde el bloque “Inicio” del diagrama del proyecto especificado. La ejecución del escenario regresará al bloque actual y continuará en el diagrama actual tan pronto como se alcance el bloque “Fin” en el diagrama externo. Para el bloque “Proceso” se ha especificado la propiedad “Nombre del diagrama” (nombre del archivo del diagrama en el que continuará la ejecución del escenario).
- Bloque “Bot. Crear conexión” permite crear conexiones para el bot de Telegram. Para este bloque se han especificado las siguientes propiedades:
- Token del bot (token del bot que se puede obtener de BotFather en el cliente de Telegram);
- Tiempo de espera (tiempo de espera para la respuesta del servidor de Telegram en segundos).
Como salida se obtiene “Conexión” – una variable con el objeto de la conexión actual a Telegram. En los demás bloques es necesario especificar precisamente esta variable.
- Bloque “Bot. Obtener mensaje” permite recibir un mensaje o una llamada de retorno de la cola. Si no hay mensajes en la cola, se genera un error. Para este bloque se ha especificado la propiedad “Conexión” (objeto de conexión al bot. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Bot. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectarse al bot de Telegram).
- Bloque “Asignar valor a la variable” establece nuevos valores para una o varias variables. En este caso, en las propiedades se ha indicado un valor que debe asignarse a una variable, respectivamente.
- Bloque “Obtener ruta” permite conocer la ruta completa al archivo/directorio. Para este bloque se han especificado las siguientes propiedades:
- Ruta a la carpeta (ruta a la carpeta donde se encuentra el archivo necesario);
- Nombre del archivo (nombre del archivo).
- Bloque “Contenedor” permite colapsar el contenido. Por contenido se entienden los bloques que provienen del actual a través del conector inferior. Para un funcionamiento correcto, los bloques de este contenedor deben finalizar con el bloque “Fin”. Al finalizar el trabajo de los bloques internos, se realizará un salto a través del conector “Salida”. En este caso, en el contenedor "Cargando datos del cliente" puede alternar "Prompts" (o establecer los suyos) y así indicar el comportamiento del chatbot. El contenido del bloque “Contenedor” para este diagrama se ve así:
7.1 Bloque “Cargar desde CSV” permite cargar una tabla de datos desde un documento CSV. Para este bloque se han especificado las siguientes propiedades:
- Ruta al archivo (ruta al documento desde el cual se debe cargar la información en la Tabla de Datos);
- Separador (símbolo separador, por defecto se utiliza el punto y coma);
- Codificación (codificación del archivo).
7.2 Bloque “Ejecutar expresión” inicia la ejecución de una o varias expresiones en un lenguaje compatible con PowerShell. En este caso se utilizan dos expresiones.
7.3 Bloque “ToDo” se utiliza como un marcador de posición o recordatorio para funciones que se planean implementar. A diferencia del bloque “Comentario”, este bloque es un elemento del escenario, pero no realiza ninguna acción.
7.4 – 7.11 Bloques “Agregar fila” permiten agregar una fila a la tabla de datos. Para estos bloques se han especificado las siguientes propiedades:
- Tabla (tabla de datos a la que se agrega la fila);
- Valores (lista de valores de la nueva fila).
7.12 – 7.13 Bloque “Fin” (este bloque finaliza la ejecución del guion o devuelve el diagrama del subproceso al proceso principal).
- Bloque “Agregar fila” permite agregar una fila a la tabla de datos. Para este bloque se especifican las siguientes propiedades:
- Table/Tabla (tabla de datos a la que se agrega la fila);
- Values/Valores (lista de valores de la nueva fila).
- Bloque “Log” permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del guion del robot. Para este bloque se indica la propiedad “Valor”. En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, este bloque registra en el log del robot el ID del cliente y su mensaje de texto. En el Orquestador, este mensaje del robot será marcado como “Info”.
- Bloque “Solicitud a ChatGPT” permite enviar solicitudes a los nuevos modelos generativos de Open AI comenzando con ChatGPT. Con él puede crear nuevos textos a pedido, realizar diversas tareas de clasificación, resumen, traducción y reescritura de textos, escribir prototipos de código en diferentes lenguajes de programación, analizar datos semiestructurados y no estructurados, extraer y procesar hechos, mantener un diálogo sobre diversos temas, y mucho más. El pago por el uso de esta funcionalidad se deduce de la cuenta del cliente en la plataforma. Para fines de prueba, a cada nuevo usuario se le da la oportunidad de probar esta funcionalidad sin costo. Al utilizar esta funcionalidad, después de finalizar el desarrollo del robot, se requiere pago. Para este bloque se especifican las siguientes propiedades:
- Historial de chat (historial de chat, sobre la base del contexto que la red neuronal debe generar una respuesta);
- Modelo (modelo para generar la respuesta);
- Temperatura (número decimal entre 0 y 1 que indica el grado de "aleatoriedad" o "creatividad" del resultado, donde 0 es el resultado menos creativo y 1 es el más aleatorio);
- Longitud máxima (longitud máxima del resultado, expresada en tokens condicionales);
- Autolimitación de longitud (la bandera establecida activa la autocorrección de la longitud máxima del resultado);
- Tiempo de espera (tiempo máximo de espera por respuesta en segundos).
- Bloque “Agregar fila” permite agregar una fila a la tabla de datos. Para este bloque se especifican las siguientes propiedades:
- Table/Tabla (tabla de datos a la que se agrega la fila);
- Values/Valores (lista de valores de la nueva fila).
- Bloque “Log” permite registrar mensajes arbitrarios y/o valores de variables durante la ejecución del guion del robot. Para este bloque se indica la propiedad “Valor”. En las comillas se indica una constante de texto, y el nombre de la variable comienza con el símbolo $. Es decir, este bloque registra en el log del robot el ID del cliente y la respuesta a su solicitud. En el Orquestador, este mensaje del robot será marcado como “Info”.
- Bloque “Bot. Enviar mensaje” permite enviar un mensaje de texto en el chat. Para este bloque se especifican las siguientes propiedades:
- Conexión (objeto de conexión al bot. El nombre de la variable en esta propiedad debe coincidir con el nombre de la variable en la propiedad "Conexión", del bloque "Bot. Crear conexión" del grupo Telegram, que se utilizó anteriormente para conectarse al bot de Telegram);
- ID del chat (Id del chat. Este valor se obtiene del bloque "Bot. Obtener mensaje" en la propiedad "Mensaje");
- ID del mensaje (ID del mensaje al que se debe responder. Este valor se puede obtener del bloque "Bot. Obtener mensaje" en la propiedad "Mensaje");
- Texto (texto del mensaje).
- Bloque “Guardar en CSV” permite guardar la tabla de datos en un documento CSV. Para este bloque se especifican las siguientes propiedades:
- Tabla de Datos (tabla de datos que se debe guardar en el documento);
- Ruta al archivo (ruta al documento en el que se debe guardar la Tabla de Datos);
- Separador (símbolo separador, por defecto se utiliza el punto y coma);
- Codificación (codificación del archivo);
- Escribir encabezados (la bandera establecida activa la escritura de los encabezados de la tabla).
- Bloque “Pausa” pausa la ejecución del guion durante un tiempo determinado. Para este bloque se especifican las siguientes propiedades:
- Unidad de medida (unidad de medida en la que se especifica la duración de la pausa);
- Duración (valor del intervalo de tiempo en las unidades de medida especificadas).
- Bloque “Se requiere detener” verifica la necesidad de detener el guion.
Para este bloque, en la salida, en la línea “Resultado” se indica la variable $NeedStop.
- Bloque “Fin” (este bloque finaliza la ejecución del guion o devuelve el diagrama del subproceso al proceso principal).
Diagrama “Configuraciones”
- Bloque “Inicio” (desde este bloque comienza cualquier diagrama).
- Bloque “Unir camino” une las líneas en un camino. Para este bloque se ha especificado la propiedad “Camino inicial”.
- Bloque “Crear carpeta” permite crear una nueva carpeta. Para este bloque se ha especificado la propiedad “Nombre de la carpeta” (nombre completo de la nueva carpeta).
- Bloque “Fin” (este bloque finaliza la ejecución del guion o devuelve el diagrama del subproceso al proceso principal).