Logo Studenta

TFG_SARA_SANCHEZ_MOTA

¡Este material tiene más páginas!

Vista previa del material en texto

Universidad Politécnica 
de Madrid 
Escuela Técnica Superior de 
Ingenieros Informáticos 
 
Grado en Ingeniería Informática 
 
 
Trabajo Fin de Grado 
ChatBot para Proyecto Mentor 
 
 
 
 
 
 
 
 
Autor: Sara Sánchez Mota 
Tutor(a): Guillermo Román Díez 
Madrid, junio 2023
Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la 
Universidad Politécnica de Madrid para su defensa. 
Trabajo Fin de Grado 
Grado en Ingeniería Informática 
Título: ChatBot para Proyecto Mentor 
Junio 2023 
Autor: Sara Sánchez Mota 
 
Tutor: 
Guillermo Román Díez 
Lenguajes, Sistemas Informáticos e Ingeniería de Software 
ETSI Informáticos 
Universidad Politécnica de Madrid 
 
i 
Resumen 
 
En este Trabajo Final de Grado se realiza una introducción a la construcción de 
chatBots. Se describirá la metodología seguida para construir un prototipo 
capaz de interactuar con el alumno. Se realizará un pequeño estudio del estado 
del arte de las principales tecnologías para la creación de este y las explicaciones 
correspondientes en el uso de la API de Telegram por la que se ha optado para 
la realización de este trabajo, así como otras posibles opciones o alternativas. 
El Proyecto tiene como objetivo implementar un asistente virtual o chatBot que 
permita facilitar la búsqueda de datos que suelen ser frecuentados y 
consultados por los alumnos de nuevo ingreso de la Universidad Politécnica de 
Madrid. Este chatBot está especialmente implementado para los alumnos de 
primero de carrera, aunque se ha tenido en cuenta que sea escalable de cara a 
un futuro por si se quieren añadir el resto de los cursos. De momento, solo los 
alumnos de primer curso, estos tendrán toda la información necesaria sobre 
sus asignaturas, profesores, y temas de interés para esta nueva etapa en la 
Universidad. 
El diseño completo del proyecto requiere el diseño y desarrollo estructural tanto 
de una base de datos en la que se van a almacenar los elementos necesarios 
para el proyecto (profesores, asignaturas, aulas, horarios, porcentajes, etc.) 
como de una API que sirva como controlador y ofrezca servicios entre la base de 
datos y el chatBot y futuras herramientas que pueden requerirla. 
Además, se ha desarrollado una versión preliminar del chatBot para realizar las 
pruebas necesarias y así consolidar las tecnologías y servicios a utilizar en este 
proyecto. También se harán ver todos los escenarios posibles, así como la 
arquitectura del proyecto. 
Por último, se muestra el producto final, explicando cómo funciona y mostrando 
el resultado mediante imágenes y capturas de pantalla desde el propio chat. 
 
 
ii 
Abstract 
 
This Final Degree Project is an introduction to the construction of chatBots. The 
methodology followed to build a prototype capable of interacting with the 
student will be described. A small study of the state of the art of the main 
technologies for the creation of chatBots and the corresponding explanations in 
the use of Telegram's API, which has been chosen for the realization of this work, 
as well as other possible options or alternatives, will be made. 
The Project aims to implement a virtual assistant or chatBot to facilitate the 
search for data that are usually frequented and consulted by new students at 
the Polytechnic University of Madrid. This chatBot is specially implemented for 
first year students, although it has been considered that it is scalable in the 
future in case the rest of the courses are added. For the moment, only first year 
students will have all the necessary information about their subjects, professors, 
and topics of interest for this new stage in the University. 
The complete design of the project requires the design and structural 
development of both a database in which the necessary elements for the project 
will be stored (teachers, subjects, classrooms, schedules, percentages, etc.) and 
an API that serves as a controller and provides services between the database 
and the chatBot and future tools that may require it. 
In addition, a preliminary version of the chatBot has been developed to perform 
the necessary tests and thus consolidate the technologies and services to be 
used in this project. All possible scenarios will also be shown, as well as the 
architecture of the project. 
Finally, the final product will be shown, explaining how it works and showing 
the result through images and screenshots from the chat itself. 
 
 
 
iii 
Tabla de contenidos 
 
1 Introducción ......................................................................................1 
1.1 Motivación .......................................................................................... 2 
1.2 Objetivos ............................................................................................ 3 
1.3 Planificación ....................................................................................... 5 
1.4 Estructura de la Memoria ................................................................... 6 
2 Desarrollo ..........................................................................................7 
2.1 Estudio de las necesidades de los alumnos ........................................ 8 
2.1.1 Requisitos .................................................................................... 8 
2.2 Tecnologías empleadas ....................................................................... 9 
2.2.1 SQL ............................................................................................ 10 
2.2.2 MySQL Workbench (Gestor de Bases de Datos) .......................... 10 
2.2.3 API de Telegram ......................................................................... 11 
2.2.4 Conector de Python con Base de Datos ...................................... 13 
2.2.5 Threads de Python ..................................................................... 15 
3 Análisis y Diseño ............................................................................. 16 
3.1 Creación de la Base de Datos ........................................................... 17 
3.2 Inserción de los datos en la Base de Datos ....................................... 18 
3.3 Conexión entre Python y la Base de Datos ........................................ 20 
3.3.1 Creación de Bot con BotFather................................................... 21 
3.4 Código Python .................................................................................. 22 
4 Manual de usuario............................................................................ 27 
5 Resultados y conclusiones ............................................................... 42 
6 Análisis de Impacto ......................................................................... 43 
7 Bibliografía ...................................................................................... 45 
 
 
 
 
 
 
 
 
 
 
 
iv 
 
TABLA DE FIGURAS 
 
FIGURA 1 DIAGRAMA DE GANTT ...................................................................................... 5 
FIGURA 2. EJEMPLO DE EJECUCIÓN DE BUCLE INFINITO ...................................................... 9 
FIGURA 3. LOGO DE SQL ............................................................................................ 10 
FIGURA 4. LOGO DE MYSQL WORKBENCH ..................................................................... 10 
FIGURA 5. MÓDULOS DE TELEBOT ................................................................................ 11 
FIGURA 6. EFECTO DE FORCEREPLY ............................................................................. 11 
FIGURA 7. EFECTO DE REPLYKEYBOARDMARKUP ............................................................ 12 
FIGURA 8. EFECTO DE REPLYKEYBOARDREMOVE ............................................................ 12 
FIGURA 9. MÓDULO DE MYSQL CONNECTOR .................................................................. 13 
FIGURA 10. CÓDIGO DE CONEXIÓN A LA BASE DEDATOS ................................................... 13 
FIGURA 11 CÓDIGO DE SELECT .................................................................................. 14 
FIGURA 12 CÓDIGO DE UPDATE ................................................................................. 14 
FIGURA 13 CÓDIGO DE INSERT ................................................................................... 14 
FIGURA 14. MÓDULO DE THREADS EN PYTHON ................................................................ 15 
FIGURA 15. CÓDIGO DE EJEMPLO DE USO DE THREADS .................................................... 15 
FIGURA 16. ESTRUCTURA DEL PROYECTO ....................................................................... 16 
FIGURA 17. TABLAS DE LA BASE DE DATOS ..................................................................... 17 
FIGURA 18 EJEMPLO DE TABLA DE USUARIOS .................................................................. 18 
FIGURA 19 EJEMPLO DE TABLA TIENE_GRUPO ................................................................. 18 
FIGURA 20 EJEMPLO DE TABLA TABLA_ASIGNATURAS ........................................................ 19 
FIGURA 21 EJEMPLO DE TABLA AULAS ........................................................................... 19 
FIGURA 22 EJEMPLO DE TABLA GRUPO .......................................................................... 19 
FIGURA 23 EJEMPLO DE TABLA HORARIOS ...................................................................... 19 
FIGURA 24 EJEMPLO DE TABLA TIENE_PROFE .................................................................. 19 
FIGURA 25 EJEMPLO DE TABLA PORCENTAJE_ASIGNATURAS ............................................... 20 
FIGURA 26 MÓDULO DE CONECTOR SQL EN PYTHON........................................................ 20 
FIGURA 27 FUNCIONAMIENTO DE CONECTOR SQL ............................................................ 20 
FIGURA 28 GENERACIÓN DE BOT CON TOKEN EN PYTHON .................................................. 21 
FIGURA 29 EJEMPLO DE BOT EN LA APLICACIÓN DE TELEGRAM ........................................... 22 
FIGURA 30 MENÚ DE COMANDOS DESDE TELEGRAM ........................................................ 28 
FIGURA 31 CONVERSACIÓN PARA DARSE DE ALTA ............................................................. 29 
FIGURA 32 DADA DE ALTA ESTANDO REGISTRADO ............................................................ 29 
FIGURA 33 CAMBIO DE NOMBRE ................................................................................... 30 
FIGURA 34 RESULTADOS DE LLAMAR A /MI_INFO ............................................................. 30 
FIGURA 35 INTRODUCCIÓN DE CAMPO ERRÓNEO .............................................................. 31 
FIGURA 36 EJEMPLO DE CONVERSACIÓN CON BOTONES .................................................... 32 
FIGURA 37 LLAMADA A COMANDO DE /MIS_ASIGANTURAS .................................................. 33 
FIGURA 38 TECLADO PARA SELECCIONAR ASIGNATURA ...................................................... 33 
FIGURA 39 TECLADO CON OPCIONES DE INFORMACIÓN ...................................................... 34 
FIGURA 40 SOLICITUD DE INFORMACIÓN SOBRE PROFESOR DE ÁLGEBRA LINEAL .................... 34 
FIGURA 41 SOLICITUD DE INFORMACIÓN SOBRE HORARIO DE ÁLGEBRA LINEAL ...................... 35 
FIGURA 42 SOLICITUD DE INFORMACIÓN SOBRE COORDINADOR DE ÁLGEBRA LINEAL .............. 35 
FIGURA 43 SOLICITUD DE INFORMACIÓN COMPLETA DE ÁLGEBRA LINEAL ............................. 35 
FIGURA 44 TECLADO CON OPCIONES DE TASAS ................................................................ 36 
FIGURA 45 EJEMPLO DE TASAS DE UN AÑO CONCRETO ...................................................... 37 
FIGURA 46 MEDIA DE TASAS ........................................................................................ 37 
FIGURA 47 TASAS MÁXIMAS Y MÍNIMAS ........................................................................... 38 
FIGURA 48 SELECCIÓN DE CURSO PARA /TASAS_CURSO .................................................... 38 
FIGURA 49 SELECCIÓN DE CÁLCULO PARA /TASAS_CURSO ................................................. 39 
FIGURA 50 SELECCIÓN DE TASA PARA /TASAS_CURSO....................................................... 39 
FIGURA 51 OPCIONES DENTRO DEL COMANDO DE /FAQ .................................................... 39 
FIGURA 52 OPCIONES DENTRO DE TRÁMITES ................................................................... 40 
FIGURA 53 OPCIONES DENTRO DE RESERVAS .................................................................. 40 
FIGURA 54 RESULTADO AL SELECCIONAR OTRAS INSTALACIONES ........................................ 40 
file:///C:/Users/saras/Downloads/ChatBot%20Proyecto%20Mentor%20-%20Sara%20Sánchez%20(1).docx%23_Toc138172522
file:///C:/Users/saras/Downloads/ChatBot%20Proyecto%20Mentor%20-%20Sara%20Sánchez%20(1).docx%23_Toc138172523
file:///C:/Users/saras/Downloads/ChatBot%20Proyecto%20Mentor%20-%20Sara%20Sánchez%20(1).docx%23_Toc138172550
 
v 
FIGURA 55 MENSAJE DE CONFIRMACIÓN PARA ABRIR UN ENLACE ........................................ 41 
FIGURA 56 EJEMPLO DE PÁGINA WEB ABIERTA DESDE EL BOT ............................................ 41 
FIGURA 57 OPCIONES DE OTROS ................................................................................... 41 
 
 
 
 
1 
 
1 Introducción 
El termino bot es una abreviatura de la palabra robot en el ámbito de la 
informática. Los bots son programas informáticos que interactúan en la red 
simulando ser una persona. Los chatBots fueron uno de los primeros bots 
desarrollados, es un sistema que entiende el lenguaje natural y tiene 
inteligencia sobre un cierto contexto de forma que puede interactuar con el 
usuario para resolver un determinado problema. 
En otras palabras, un chatBot es un derivado de un buscador tradicional, con 
el que puedes comunicarte mediante mensajes de texto. Esta tecnología 
comenzó en la década de los años 60 con el objetivo de mostrar si estos sistemas 
eran capaces de exhibir un comportamiento inteligente. Hoy en día, son 
muchísimas las empresas que han introducido esta tecnología visto su potencial 
y beneficios. Uno de los puntos clave en la creciente popularidad de los chatBots, 
ha sido la importancia con la que actualmente cuentan las aplicaciones de 
mensajería, puesto que concentran la mayor cantidad de usuarios activos en 
Internet. Con la ayuda de estos los usuarios no tienen que buscar la información 
o preguntar, si no que pueden interactuar directamente con ellos por el canal 
preferido, escribiendo mensajes directos para llevar a cabo pedidos, compras, 
cambios de reserva y muchísimas otras operaciones [1]. 
Las tareas que desempeñan los chatBots son variadas, los hay que prestan 
soporte a los usuarios resolviendo dudas, brindando información, realizando 
acciones por ellos, o recopilando información. Sus aplicaciones son casi 
ilimitadas. Los chatBots en un principio eran simples, a menudo se limitaban a 
ventanas emergentes del navegador web y solo podían enviar saludos directos a 
los visitantes del sitio web, pero gracias a las innovaciones en el área de la 
inteligencia artificial, las tecnologías cognitivas y procesado de lenguaje natural 
cada vez son más capaces de desempeñar funciones de mayor complejidad y 
comprender mejor el lenguaje natural. Lo que al principio podía parecer una 
moda pasajera o una estrategia de marketing, se está convirtiendo en una 
necesidad real, debido a que los chatBots tienen potencial para automatizar 
tareas que consumen mucho tiempo, dinero y mano de obra. Además, 
proporcionan interfaces de lenguaje natural que están transformando la forma 
en la que interactuamos con la tecnología, cambiando la experiencia del usuario 
y la forma de consumir los contenidos, haciendo que la interacción sea más 
simple y eficiente. Prueba de ello es que los usuarios de smartphones se 
descargan cada vez menos aplicaciones y tienden apasar más tiempo en 
aplicaciones de mensajería instantánea. Podría decirse que las conversaciones 
son la nueva interfaz de usuario, y los bots son las nuevas aplicaciones [2] [3]. 
Sin embargo, la reputación que acompaña los chatBots no siempre es positiva, 
ya que muchos de ellos se emplean con fines poco éticos, como, por ejemplo, 
automatizar la propaganda, extraer la información delicada del usuario, 
descifrar las contraseñas de entradas a páginas web, crear perfiles falsos en las 
redes sociales para conseguir likes o ganar sorteos, etc., nada que ver con lo 
que se pretende hacer en este proyecto. Por otro lado, creaciones como Siri, 
Cortana, Alexa o Google Now han hecho recuperar la confianza de los usuarios 
y nos han dado una idea de cómo sería comunicarse directamente con las 
máquinas y las ventajas que pueden proporcionar en un futuro cercano. 
 
 
 
2 
 
Por toda su utilidad y eficiencia se ha querido desarrollar uno de ellos para el 
Proyecto Mentor que tiene como finalidad acoger, integrar y orientar a los 
alumnos de nuevo ingreso desde el inicio de sus estudios. Dicha labor la suelen 
llevar a cabo alumnos de cursos superiores desde el Proyecto Inicio, y continua 
a través de reuniones periódicas a lo largo del primer cuatrimestre. Temas que 
pueden resultar de interés a los nuevos alumnos son abordados por los 
mentores, quienes a su vez están coordinados por la Subdirección de Alumnos. 
La intención de este Trabajo de Fin de Grado no es sustituir a esa idea si no 
servirle de apoyo y ayuda, ya que la relación entre alumno y mentor la veo 
“obligatoria” para la bienvenida a los alumnos que lo deseen (no todos entran a 
través del Proyecto Mentor) y hay algunos factores que el ser humano echaría 
de menos a la hora de comunicarse con el chat, aunque este chat también es 
usable por aquellos alumnos que no se han unido al Proyecto Mentor, la única 
condición para usar el chatBot en cuestión es estar en primero de carrera. El 
hecho de tener a una persona de referencia te ayuda más a un nivel emocional 
y humano, así como opiniones que son subjetivas, esta faceta no la tendrá el 
chatBot, es por ello por lo que ambas serán necesarias [4]. 
 
 
1.1 Motivación 
Este trabajo de fin de grado surge del deseo de ayudar e informar a los alumnos 
sobre la cantidad de dudas que pueden surgir cuando eres un estudiante de 
nuevo ingreso que empieza una nueva etapa, donde puede ser de gran utilidad 
y ayuda el hecho de tener un chat habilitado que resuelva tus dudas y te de la 
información en la que estés interesado. También surge por la propia experiencia 
de haber sido una nueva alumna en la universidad, me hubiera gustado tener 
un chatBot como este que me diera la información al momento sobre las 
cuestiones de interés. 
En este caso, la idea es crear un asistente virtual. El objetivo del trabajo a 
realizar es el desarrollo de un chatBot, el cual permita a los nuevos alumnos 
conocer más acerca de la Universidad y del Grado que vayan a cursar. Pretende 
ser parecido a un guía, quien acoge, integra y orienta a los alumnos de nuevo 
ingreso, pero cumpliendo solo con la función de orientación. 
El Bot permitirá a los alumnos obtener la información relevante de las 
asignaturas en las que este matriculado, como el porcentaje de aprobados, 
profesores que las cursan, aulas en la que se imparten, etc. También, dará a 
conocer los servicios que ofrece la universidad como reservas de aulas de 
estudio, préstamo de libros y otros materiales, conexión a VPN y Wifi de la 
universidad, horario de bibliotecas, etc. El número de créditos se pretendió 
meter en la base de datos, pero finalmente no se ha añadido dado que en 
primero de carrera todas las asignaturas tienen el mismo número de créditos y 
todas son Obligatorias. Así mismo, dará a conocer la información sobre las 
becas disponibles en la universidad (ayudas oficiales para el alumno, de 
investigación, para la movilidad académica y laboral o bolsas de viaje). 
De esta forma, el objetivo es dar a conocer la información relevante a tus 
intereses y asignaturas de una forma más independiente, sin la necesidad de 
recurrir a las páginas web de la universidad cada vez que se necesite, ya que se 
ve mucho más práctico y rápido el hecho de tener un asistente virtual que te 
pueda resolver las dudas en el momento y de una manera interactiva. 
 
 
3 
 
La idea de hacer un chatBot me parecía muy interesante ya que despiertan el 
interés en cualquier usuario debido a las numerosas ventajas que conllevan su 
uso. Algunas de ellas: 
 
- Son muy accesibles, no hace falta ni si quiera descargarlo como las 
aplicaciones, ni actualizarlas, además de no ocupar espacio en la 
memoria del dispositivo desde el que vaya a ser utilizado. El usuario 
tampoco precisa de ser autenticado, pueden usarse directamente desde 
la plataforma del chat. 
- La disponibilidad de estos es de veinticuatro horas del día y durante 
todos los días del año. 
- Permiten notificar a los usuarios por medio de los chats sin esperar a que 
ellos inicien la conversación. 
- Son muy escalables, pueden atender a varios usuarios al mismo tiempo, 
la respuesta es proporcionada en un breve periodo de tiempo. 
- Muchas empresas se ahorran dinero ya que puede ahorrar costes en el 
trabajo humano. 
- Los alumnos de nuestra facultad además hacen uso de las tecnologías 
de manera casi experta, por lo que les resultará muy fácil y cómodo de 
utilizar. 
 
También existen algunas desventajas ya que según The Information los 
chatBots solo pueden cumplir un 30% de lo que se requiere sin la intervención 
humana [5]. Y en muchos casos esto es una desventaja. Aun sabiendo esto, el 
caso del chatBot enfocado al Proyecto Mentor es una herramienta de apoyo para 
la universidad y el alumno y cumplirá con la mayoría de los objetivos previstos 
que se comentarán a continuación. 
 
1.2 Objetivos 
El objetivo principal del proyecto consiste en reducir el tiempo de búsqueda que 
un usuario tarda en encontrar una página dentro de la web de la facultad de 
informática, ya que, especialmente para un usuario nuevo en la web, le puede 
llevar tiempo encontrar exactamente lo que busca. De esta otra forma, será muy 
rápida la búsqueda y en cuánto hayas usado un par de veces el chatBot tendrás 
el dominio completo de este. 
También uno de los objetivos es cumplir con la mayoría de las necesidades de 
los alumnos, para ello, se ha optado por la experiencia propia además de 
preguntar a compañeros de la universidad para orientar y decidir cuál sería la 
información más relevante, y la que trataremos durante el desarrollo del chatBot. 
 
Los objetivos con los que el chatBot tiene que cumplir: 
 
• Se quiere producir una interacción usuario-chatBot con una lista de 
comandos a poder usar, de manera que el usuario pueda accionar dichos 
comandos, y el chatBot responda con la información necesaria. 
 
 
 
4 
 
• Para otro tipo de preguntas, el objetivo es que el chatBot sea capaz de 
redirigir al usuario hacia el contexto de la facultad, ya que no está 
diseñado para ser un chatBot con el que conversar sobre todos los temas 
relacionados con la universidad, como bien son las becas, programas de 
intercambio, reserva de aulas o de libros... 
 
• Esto será además una evolución del buscador ya existente en la facultad, 
se ha comprobado que muchas de las páginas no están registradas. 
 
• Ofrecer al usuario la mejor experiencia posible durante la interacción con 
el chat, tanto en el manejo como en las respuestas. 
 
 
En segundo lugar, como objetivos necesarios para el desarrollo del proyecto, 
podemos destacar: 
 
• Diseño y desarrollo de la arquitectura de la base de datos del proyecto. 
• Familiarización con lenguaje de programación Python. 
• Introducción a los sistemas de diálogo. 
• Familiarización con la API de Telegram. 
• Integración de la API con la base de datos. 
• Implementación del prototipo. 
• Aprendizaje de la gestión del proyecto software.• Evaluación de los resultados: dificultades, ventajas y desventajas 
encontrados durante la fase de análisis e implementación. 
 
Y por último añadir los beneficios y ventajas que nos va a proporcionar el 
chatBot: 
 
- Ahorro de tiempo en búsquedas en las páginas de la universidad. 
 
- Mejora la visibilidad de los alumnos frente a las asignaturas y a los 
profesores. 
 
- Facilita la búsqueda de formas de contacto con los coordinadores y 
profesores. 
 
- Ayuda para que hagan un balance del esfuerzo a emplear en cada 
asignatura de acuerdo con los porcentajes de éxito, rendimiento y 
absentismo que presenta cada una de ellas. 
 
- Mejora la accesibilidad a las páginas de reservas de recursos y solicitudes 
de información. 
 
- Sirve de soporte al mentor para que este no tenga que conocer de 
memoria toda la información relacionada con el curso. 
 
 
5 
 
1.3 Planificación 
En la Ilustración I se muestra como se ha definido el plan de trabajo, además de 
listar numéricamente las tareas necesarias para el desarrollo e implementación 
del chatBot: 
T01. Estudio de la API de Telegram para la creación de Bots 
T02. Investigación sobre herramientas alternativas para la creación de Bots 
T03. Estudio de Python o posibles opciones 
T04. Estudio de control de versiones de Git 
T05. Creación de la base de datos 
T06. Analizar y diseñar una solución fácil para que sea accesible a todos los 
alumnos de nuevo ingreso 
T07. Analizar requisitos del usuario 
T08. Analizar requisitos del sistema 
T09. Desarrollo del chatBot y análisis de su implementación 
T10. Conectar código y base de datos para poder desarrollar funcionalidades 
T11. Testear chatBot 
T12. Estudio de las posibles mejoras 
T13. Realización de la Memoria Final y Presentación Final 
 
 
 
Figura 1 Diagrama de Gantt 
 
 
 
 
 
6 
 
1.4 Estructura de la Memoria 
La memoria de este proyecto se divide en 5 capítulos diferentes. 
Los capítulos son los siguientes: 
 
1. Introducción. Se presenta una introducción general al documento y se 
expone de forma breve las motivaciones y objetivos del trabajo realizado. 
 
2. Desarrollo del chatBot. Este capítulo muestra todo el trabajo realizado 
desde el inicio y en orden cronológico. Además, se explica brevemente las 
diferentes tecnologías utilizadas en cada etapa. 
 
3. Análisis y Diseño. En este otro capítulo se explicará todo lo relacionado 
con la implementación del código, así como de la creación de la base de 
datos y la conexión entre ambas. 
 
4. Conclusiones. Donde se presentará el resumen de los resultados 
obtenidos y de los aspectos más destacables durante la realización del 
proyecto. Así como ver si se ha cumplido con los objetivos propuestos 
antes de la realización del trabajo. 
 
5. Análisis del impacto. Se analizará el impacto causado en los alumnos 
de nuevo ingreso que puede tener la solución desarrollada en esta 
memoria. Así como las posibles mejoras futuras. 
 
6. Bibliografía. En este último capítulo se incluirán todos los enlaces a las 
páginas de interés que se han utilizado durante el desarrollo de la 
Memoria Final del Proyecto de Fin de Grado. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7 
 
 
2 Desarrollo 
Un chatBot es un programa informático especialmente utilizado como apoyo a 
páginas web basados normalmente en inteligencias artificiales qué simulan 
conversaciones humanas [6]. 
Puede haber chatBot de forma sencilla, respondiendo a cuestionarios con 
conversaciones sencillas o adquiriendo una mayor complejidad en el que el 
chatBot pueda aprender y evolucionar para ofrecer un mejor servicio. Hay 
distintos tipos de chatBot: 
- Orientado a tareas: programas de un solo propósito, se centran en 
realizar una función en concreto. Suelen ser respuestas automatizadas 
pese a seguir las conversaciones de los usuarios. 
- Basados en datos y predictivos: son mucho más complejos debido a una 
interacción más realista y de personalidad más completa. Suelen ser 
asistentes virtuales o digitales. 
 
Existe un marco básico que describe las tres funciones principales que se 
esperan de estos: 
- Agente de diálogo, este debe captar la petición del mensaje del usuario. 
- Agente racional, este debe tener acceso a la base de datos externa de 
manera que pueda responder y almacenar adecuadamente a las 
preguntas e información de los usuarios. 
- Agente personificado, el lenguaje del bot debe ser lo más natural y real 
posible. 
 
A continuación, se explicarán de forma breve algunos de los chatBots más 
famosos en la actualidad: 
- Siri (Apple): asistente virtual de Apple con la idea de imitar la 
conversación con un amigo y ayudar a realizar tareas que pueden 
resultar complicadas o tediosas en la configuración. 
- Cortana (Windows): asistente virtual de Windows, ayuda a configurar un 
ordenador, a organizar el calendario con todas las entradas que se 
necesiten o abrir aplicaciones. 
- Alexa (Amazon): servicio de voz de la nube de Amazon. Se pueden crear 
conversaciones de voz naturales para que los clientes menos 
acostumbrados puedan interactuar con la tecnología a diario. 
 
 
 
 
 
 
 
 
 
8 
 
 
2.1 Estudio de las necesidades de los alumnos 
Este chatBot va dirigido a todos los alumnos de primer curso como se ha 
mencionado anteriormente, únicamente deberán tener acceso a la plataforma 
de Telegram. Actualmente, el cien por cien de los alumnos de Ingeniería 
Informática disponen de un móvil u ordenador para poder hacer uso del chatBot 
y de esta forma que les sirva de ayuda. Está únicamente implementado en 
español. 
En mis años de universidad se ha usado chatBots por el estilo para las paradas 
de buses con los correspondientes autobuses y horarios de salida y para conocer 
la opinión de las optativas de los alumnos que anteriormente la hubieran 
cursado (este último en Discord). Todos ellos muy útiles y usados entre los 
alumnos de la facultad y con muy buena reputación. Se ha visto que estos 
chatBots son útiles dentro del ámbito de la facultad de Ingeniería Informática. 
 
2.1.1 Requisitos 
El chatBot debe estar siempre a la espera de nuevas órdenes por parte de los 
usuarios, es decir, en escucha activa. 
También el chatBot deberá proporcionar los comandos que tiene a su 
disposición para hacer un uso correcto de este. Se intentará hacer todo lo más 
interactivo posible, para hacerle al usuario de esta experiencia, algo de uso fácil 
a lo que recurrir en caso de necesitarlo. Además de facilitarle al usuario las 
ayudas necesarias para un correcto uso de este, hay algún caso en el que 
importará la forma en la que sea escrita, para estos casos, se le brindará al 
usuario en cuestión una lista de respuestas a modo comandos para que no dé 
lugar a errores. Por ejemplo, las clases son: 1M, 1M-B, 2M y 2M-B, como veis 
se puede escribir tanto en mayúsculas, como minúsculas, separado o junto… y 
es por eso por lo que se deciden dar las opciones para hacer más sencillo el 
desarrollo del bot. 
Este chatBot ha de tener una base de datos externa en la que se guardarán 
todos los datos relaciones con los usuarios de Telegram que hagan uso del Bot, 
como de la información necesaria para poder resolver todas las cuestiones que 
serán planteadas. Más adelante en este capítulo, vendrá toda la información 
sobre la base de datos explicada, así como los comandos disponibles. 
 
 
 
 
 
 
 
 
 
9 
 
2.2 Tecnologías empleadas 
Nuestro chatBot va a hacer de usuario autónomo el cual va a poder ser también 
controlado por botones interactivos además de secuencias de texto. 
La API para desarrollar Bots de Telegram está disponible en la mayoría de los 
lenguajes principales de la programación, por lo cual le permite el uso a 
cualquiera que tenga unos conocimientos básicos sobre la programación para 
la creación de su propio Bot. 
Telegram Messenger es un servicio de mensajería por internet desarrollado 
desde el año 2013 por unos hermanos, enfocado ala gestión de la mensajería 
de texto y multimedia. Inicialmente fue únicamente diseñado para móviles, pero 
al año siguiente ya lo hicieron para multiplataforma. Además, existen muchas 
ventajas para la creación de un chatBot en esta plataforma y hay un montón de 
documentación y guías para hacerlo, es de los más comunes para esto. También 
es accesible por todos los alumnos y es de las plataformas de mensajería con 
más seguridad que existe, debido a su cifrado de extremo a extremo. 
El sistema operativo en el que se ha decidido trabajar ha sido en Windows 11, 
que es el que usado durante toda la carrera. La elección de este sistema 
operativo ha sido por comodidad ya que es el que tengo instalado en el 
ordenador y no tengo partición de disco, y es el que mejor domino. De este modo, 
el modo de trabajo ha sido de forma local por lo que la realización y la 
depuración del código ha sido en mi ordenador personal. Como inconveniente, 
el sistema funciona mediante un bucle infinito que debe estar ejecutándose 
continuamente. Esto sería un aspecto a tener en cuenta a la hora de poner este 
trabajo en producción ya que habría que utilizar diferentes tecnologías que 
permitieran ejecutar el código en un servidor. 
 
Figura 2. Ejemplo de ejecución de bucle infinito 
Una de las grandes ventajas que hay para desarrollar chatBots son las APIs, en 
este caso se usó apiTelegram [7], en mi caso desarrollado con el lenguaje Python. 
Python es un lenguaje de alto nivel de programación interpretado cuya filosofía 
hace hincapié en la legibilidad de su código, se utiliza para desarrollar 
aplicaciones de todo tipo. Es un lenguaje interpretado, dinámico y 
multiplataforma y de los más populares. Es un lenguaje que no había visto a lo 
largo de la carrera y que tenía interés por él y resulto serme muy útil y práctico. 
En el mundo del bot de Telegram, suele ser el más usado, lo que me ha facilitado 
la búsqueda de ejemplos de funcionamientos de chatBots y a encontrar 
respuesta a todas las dudas que me han surgido a lo largo del desarrollo, hay 
una gran comunidad de desarrolladores implementando chatBots de Telegram 
con Python que están dispuestos a ayudar. 
Se ha utilizado Pycharm como entorno de desarrollo. Es un IDE multiplataforma 
utilizado en programación informática, concretamente para el lenguaje de 
programación Python. Esta desarrollada por la empresa checa JetBrains. 
Proporciona análisis de código, un depurador gráfico, un probador de unidades 
integrado, integración con sistemas de control de versiones (VCS), y soporta el 
desarrollo web con Django, así como la ciencia de datos con Anaconda. 
 
 
10 
 
2.2.1 SQL 
Es un lenguaje de dominio especifico, diseñado para administrar, y recuperar 
información de sistemas de gestión de bases de datos relacionales y es también 
la que se ha utilizado para nuestra base de datos. Este paso a ser el estándar 
el Instituto Nacional Estadounidense de Estándares (ANSI) y de la Organización 
Internacional de Normalización (ISO). 
Esta parte es esencial para realizar todas las consultas que demande el usuario 
final desde el bot de Telegram. Se ha querido utilizar este lenguaje de gestión de 
bases de datos ya que durante mis estudios en el grado en multitud de 
asignaturas ha sido una herramienta de referencia. 
 
 
Figura 3. Logo de SQL 
 
2.2.2 MySQL Workbench (Gestor de Bases de Datos) 
Decidí decantarme por este programa ya que es el que utilizamos en la 
asignatura de base de datos en la universidad, por lo que no tuve que aprender 
a utilizarlo de nuevo. 
Se trata de una herramienta visual de diseño de bases de datos que integra 
desarrollo de software, administración de base de datos, gestión y 
mantenimiento para el sistema de base de datos de MySQL. Desde su 
introducción, MySQL Workbench se ha hecho popular dentro de la comunidad 
MySQL. Desde 2010, ahora es el segundo producto más descargado del sitio 
web de MySQL con más de 250.000 descargas al mes. Me ha resultado muy útil 
para el manejo e inserción de datos [8]. 
 
 
Figura 4. Logo de MySQL Workbench 
 
 
11 
 
2.2.3 API de Telegram 
A la hora de hacer uso de los servicios que ofrece Telegram, es necesario 
establecer una conexión con una API que nos permita de forma sencilla 
controlar las diferentes funcionalidades de Telegram y crear nuestro bot. Por 
ello, se ha decidido utilizar una API llamada Telebot desarrollada 
específicamente para el lenguaje de programación Python ya que nos permite 
de forma muy intuitiva y sencilla realizar la tarea deseada. 
 
Se ha decidido utilizar tres módulos de esta API que nos permiten controlar el 
flujo de la conversación entre el usuario y el bot. A continuación, se muestran 
dichos módulos: 
- ForceReply: al recibir un mensaje con esta opción seleccionada, el 
próximo mensaje enviado por los usuarios de Telegram será forzado a ser 
la respuesta del último mensaje enviado por el Bot. (actúa como si el 
usuario hubiera seleccionado el mensaje del bot y tocado “responder”). 
Muestra la interfaz de respuesta al usuario. El valor predeterminado es 
TRUE. 
 
- ReplyKeyboardMarkup: Telegram permite al desarrollador crear 
teclados con opciones personalizadas de respuesta. Para ello, se debe 
crear un objeto ReplyKeyboardMarkup con los siguientes parámetros. 
 
o one_time_keyboard: en caso de estar asignado un True en esta 
opción, una vez el usuario marque una respuesta, Telegram 
cambiará al teclado por defecto. 
o input_field_placeholder: el mensaje que acompaña a las 
diferentes opciones de teclado personalizado. 
o resize_keyboard: en caso de estar asignado un True en esta otra 
opción, será Telegram el encargado de establecer la disposición de 
las diferentes opciones de teclado. 
 
Una vez creado el objeto, invocando el argumento add se deben introducir 
las opciones que aparecerán en el teclado personalizado. 
Figura 5. Módulos de Telebot 
 
Figura 6. Efecto de ForceReply 
 
 
12 
 
 
Figura 7. Efecto de ReplyKeyboardMarkup 
 
En Figura 7 se puede observar un teclado personalizado que facilitara al 
alumno la selección del curso en el que se encuentra. Con esto 
minimizaremos los posibles errores que puede introducir el usuario 
controlando al cien por cien todas las opciones. 
 
- ReplyKeyboardRemove: al recibir un mensaje con este objeto, los 
usuarios de Telegram eliminaran el teclado personalizado actual y 
mostraran el teclado de letras predeterminado. Los teclados 
personalizados se muestran hasta que un bot envía uno de nuevo. Se 
hace una excepción para los teclados de un solo uso que se ocultan 
inmediatamente después de que el usuario presiona un botón. 
Telegram almacena de forma temporal todos los teclados que se han 
creado mediante ReplyKeyboardMarkup. Es necesario que los usuarios 
no puedan volver a abrir teclados que fueron creados para ser utilizados 
una única vez. La opción ReplyKeyboardRemove elimina el ultimo teclado 
creado impidiendo que el usuario pueda volver a hacer uso de él. Manejar 
correctamente las opciones ReplyKeyboardMarkup y 
ReplyKeyboardRemove dotara al chatBot un gran dinamismo haciendo 
que la interacción con él sea mucho más sencilla, pero aumenta 
considerablemente la complejidad del desarrollo. 
 
 
Figura 8. Efecto de ReplyKeyboardRemove 
 
En la Figura 8 se puede ver indicado con una flecha azul el icono que 
almacenara los teclados personalizados para el usuario. Al hacer uso de 
ReplyKeyboardRemove este icono desaparece eliminando a su vez el 
ultimo teclado personalizado. Esta funcionalidad es esencial ya que 
durante el transcurso de las diferentes conversaciones el bot es capaz de 
ofrecer multitud de teclados con respuestas personalizadas. El valor 
predeterminado es TRUE. 
 
 
 
13 
 
2.2.4 Conector de Python con Base de Datos 
Para poder realizar todas las operaciones SQL a la base de datos desde Pycharm 
se ha utilizado el lenguaje Python. Esto va a ser de gran ayuda a la hora de 
utilizar la base de datos y la APIde Telegram de forma conjunta. 
 
 
Figura 9. Módulo de MySQL Connector 
 
Se ha creado la base de datos por un lado y el bot de Telegram es un programa 
de Python, pero gracias a la conexión que establecemos desde el chatBot a la 
base de datos podremos realizar todas las operaciones a la base de datos desde 
Pycharm. 
Básicamente, este conector de Python nos va a permitir hacer los SELECT, 
UPDATE, DELETE o INSERT de manera conjunta [9]. 
En la Figura 10 se puede ver un ejemplo básico sobre el uso del conector de 
Python para establecer una conexión a la base de datos. En primer lugar, se ha 
de establecer mediante el metodo connect() los siguientes parámetros: 
- Host: ubicación de la base de datos, en el caso de este proyecto es la 
maquina local. 
- Database: nombre de la base de datos a la que hacemos referencia. 
- User: nombre de usuario, en el caso de este proyecto se ha utilizado root 
para simplificar el proceso ya que el producto no esta en produccion. 
- Password: contraseña de acceso a la base de datos. 
 
Una vez introducidos estos parametros de forma correcta se debe inicializar un 
cursor que sera el encargado de ejecutar las diferentes consultas a la base de 
datos. 
 
 
Figura 10. Código de conexión a la base de datos 
 
 
14 
 
 
A continuación, se va a explicar los comandos que hemos utilizado en este 
proyecto con el ejemplo correspondiente del código [9]: 
- SELECT: mostrando datos de una tabla. 
 
 
 
Figura 11 Código de SELECT 
 
 Esta query por ejemplo nos saca toda la información relevante a la tabla 
 porcentaje asignaturas en función de la asignatura. 
 
- UPDATE: cambiando datos de una tabla. 
 
 
Figura 12 Código de UPDATE 
 
En esta query se va a actualizar dependiendo de si el usuario ya está en 
la base de datos, si está, la información relevante a dicho alumno será 
actualizada con la nueva que le pasará el propio alumno usuario. 
 
- INSERT: insertar datos en una tabla. 
 
 
Figura 13 Código de INSERT 
Esta query es parecida a la anterior pero este caso trata la situación de 
que el alumno no esté en la base de datos y haya que insertarlo de cero. 
 
 
15 
 
 
2.2.5 Threads de Python 
Para ejecutar el bot se ha hecho uso de los llamados threads de Python. Esta 
herramienta nos permite paralelizar procesos de forma sencilla. Con el propósito 
de evitar que el bucle infinito del programa principal se ejecute en primer plano 
se ha tomado la decisión de iniciar dicho método en un hilo propio para poder 
realizar otras tareas. 
 
 
Figura 14. Módulo de threads en Python 
 
 
Figura 15. Código de ejemplo de uso de threads 
 
 
 
 
 
 
 
 
 
 
 
16 
 
3 Análisis y Diseño 
 
Para que el chatBot funcione constantemente tendría que estar en un servidor 
para que estuviera ejecutándose continuamente. 
Una vez que hemos visto todos los requisitos que necesitamos podemos 
presentar el caso de uso nominal que podrá tener un usuario con este bot: 
 
 
Figura 16. Estructura del proyecto 
En la Figura 16 se puede observar la estructura del proyecto junto con los 
elementos principales. Como se puede observar el trabajo consta de las 
siguientes partes: 
 
- Base de datos: esta parte contiene toda la información necesaria para 
realizar los cálculos que se explicaran en apartados posteriores además 
de la información sobre los usuarios que se registren en el chatBot. 
- Servidor local: esta parte contiene todos los códigos que hacen 
consultas a la base de datos, realizan cálculos y se comunican con el 
usuario final. 
- API Telegram: esta parte hace referencia a un servicio externo al que 
realizaremos todas peticiones necesarias para poder ofrecer un correcto 
funcionamiento del bot al usuario final [10]. 
- Usuario final: esta parte se corresponde con el dispositivo ya sea móvil, 
tablet u ordenador personal, mediante el cual el usuario (alumno) puede 
interactuar de forma sencilla y sin conocimientos informáticos del 
servicio ofrecido. 
 
Cada vez que un usuario hable al chat de Telegram le va a preguntar la 
matricula que es la forma que tenemos de comprobar que el usuario ya exista 
en la base de datos y en caso de que no, registrarle en la base de datos para 
empezar a usar las funcionalidades del chatBot. 
 
 
17 
 
3.1 Creación de la Base de Datos 
 
En este apartado se va a explicar cómo se ha creado y estructura la base de 
datos que usa el chatBot. 
A la hora de crear la base de datos podemos distinguir entre dos tipos de tablas: 
 
- Tablas de almacenamiento: estas tablas hacen referencia a aquellas que 
únicamente contienen información fija que no varía con el tiempo. Estas 
tablas son utilizadas para realizar consultas y hacer los cálculos que 
sean necesarios. 
- Tablas dinámicas: en este grupo se encuentra la tabla usuarios la cual 
contiene información sobre el alumno que se registra en el servicio. La 
forma de introducir datos en esta tabla es mediante una conversación 
desde el propio bot de Telegram. 
 
 
 
Figura 17. Tablas de la base de datos 
 
Las tablas que se han pensado son las que se ven en la Figura 17. El contenido 
de las tablas es el siguiente: 
 
Nombre Contenido 
Asignaturas Contiene información básica sobre 
las asignaturas del primer año 
Aulas Contiene información sobre las aulas 
en las que se imparten las diferentes 
asignaturas de forma física 
Grupo Contiene información sobre los 
grupos que se forman en el primer 
año 
Horarios Contiene información sobre los 
horarios de cada asignatura 
Porcentaje_Asignaturas Contiene múltiples métricas de 
rendimiento sobre las asignaturas 
(tasas de rendimiento, éxito y 
absentismo) 
 
 
18 
 
Profe Contiene información sobre cada 
profesor, como su email o su 
despacho 
Tabla_horarios Esta tabla no se utiliza, fue sustituida 
por la tabla horarios 
Tiene_grupo Esta tabla relaciona las asignaturas, 
los grupos, los horarios y los usuarios 
Usuarios Contiene información de cada 
usuario en el momento en el que se 
dan de alta en Telegram, incluyendo 
su identificador único 
Tabla 1 Detalles de las tablas de la base de datos 
 
3.2 Inserción de los datos en la Base de Datos 
 
A continuación, se observa más en profundidad los atributos y variables de las 
tablas: 
• Tabla usuarios: esta tabla irá siendo actualizada según el número de 
alumnos que hagan uso de chatBot de Telegram. Todos ellos tendrán un 
id_chat_telegram que los identificará y les hará únicos, de esta forma 
obtendremos toda la información relacionada con el alumno. 
 
 
Figura 18 Ejemplo de tabla de usuarios 
 
• Tabla tiene_grupo: esta tabla simplemente relaciona los diferentes ids 
de las otras tablas. No se adjunta toda la tabla ya que esta esta 
simplemente conformada por números identificativos de otras tablas de 
la base de datos. 
 
 
Figura 19 Ejemplo de tabla tiene_grupo 
 
• Tabla asignaturas: esta tabla contiene toda la información relacionada 
con la asignatura como se puede observar en la imagen adjunta. Durante 
el desarrollo del proyecto se ha visto útil el horario de las tutorías y ha 
sido añadido a posteriori. 
 
 
 
19 
 
 
Figura 20 Ejemplo de tabla tabla_asignaturas 
 
 
• Tabla aulas y Tabla grupo: estas tablas son las más sencillas que hay 
en la base de datos, ya que su única función es dar nombre a las clases 
y a los grupos y relacionarlos entre sí. 
 
 
Figura 21 Ejemplo de tabla aulas 
 
Figura 22Ejemplo de tabla grupo 
 
 
• Tabla horarios: esta tabla la conforman diferentes campos que 
posteriormente en el código del chatBot serán parseados para darle esta 
información al usuario de la manera más clara posible (ej.: L:10-12h y 
M:12-14h) relacionada a la asignatura en cuestión. Tampoco se 
adjuntará la tabla entera ya que sigue la misma estructura que como se 
ve en la imagen. 
 
 
 
19 
 
 
Figura 23 Ejemplo de tabla horarios 
 
• Tabla profe: esta tabla contiene toda la información relacionada con los 
profesores y estánasociados a un grupo en concreto. El resto de esta 
tabla sigue la misma estructura. 
 
 
Figura 24 Ejemplo de tabla tiene_profe 
 
Hay profesores que no disponen de despacho, el chatBot se ha diseñado para 
cuando entrara un 0 como numero de despacho, envíe en mensaje al usuario 
que no tiene despacho. 
 
 
• Tabla porcenaje_asignaturas: en esta tabla se ha obtenido todas las 
tasas de todas las asignaturas en los últimos tres cursos (2021-2022, 
2020-2021, 2019-2020). Así como el número de aprobados, matriculados, 
de presentados y no presentados. En la imagen solo se adjunta del último 
curso. 
 
 
 
20 
 
 
Figura 25 Ejemplo de tabla porcentaje_asignaturas 
 
3.3 Conexión entre Python y la Base de Datos 
 
En la Figura 27 se muestra anteriormente se ve como se envía una solicitud de 
conexión al conector Python de MySQL, cómo se acepta en la base de datos y 
como se ejecuta el cursor con los datos de resultados. 
 
 
Figura 26 Módulo de conector SQL en Python 
 
 
Figura 27 Funcionamiento de conector SQL 
 
Existe un método dentro del módulo mysql.connector que será el que establezca 
la conexión entre la base de datos y el código de Python. 
Importante a mencionar respecto a esta conexión, se va a explicar brevemente 
a continuación los métodos del módulo y variables importantes: 
- mysql.connector permite que los programas de Python accedan a bases 
de datos MySQL. 
 
- El método connect() de la clase MySQL Connector con los argumentos se 
conectará a MySQL y devolverá un objeto MySQLConnection si la 
conexión se establece correctamente. 
 
 
 
21 
 
- user = “nombredeusuario”, debe ser el mismo nombre de usuario que 
configuró durante la instalación de MySQL. 
 
- contraseña = “contraseña”, debe ser la misma contraseña que 
estableciste durante la instalación de MySQL. 
 
- cursor() se usa para ejecutar las declaraciones SQL en Python. 
 
- El método execute() se usa para compilar una declaración SQL. 
 
A modo resumen de los pasos a seguir para conectarnos a la base de datos y 
ejecutar cualquier consulta: 
1. Abrir la conexión como hemos explicado y crear un puntero. 
2. Ejecutar la consulta que queremos. 
3. Traer los resultados (si es un SELECT) o hacer efectiva la escritura 
(INSERT, UPDATE, DELETE). 
4. Cerrar el puntero y la conexión creada previamente. 
 
3.3.1 Creación de Bot con BotFather 
Telegram dispone de un chat llamado BotFather, un bot oficial que la plataforma 
pone a disposición de todos sus usuarios y que sirve precisamente para generar 
nuevos bots. De ahí su nombre. Este se inicia con un comando y a continuación 
pondremos el nombre que le queremos dar a nuestro chatBot. 
Nos ofrecerá un token de autenticación único para cada chatBot, asignado por 
el sistema, es necesario para poder acceder a la API de Telegram Bot. 
 
 
Figura 28 Generación de bot con token en Python 
 
En la Figura 29 se puede observar el usuario que habría sido creado 
directamente en la aplicación de Telegram. El propio servicio de Telegram se 
ocupa de configurar la interfaz y las animaciones de la aplicación. Además, 
comunicándose con BotFather es posible también cambiar la descripción del 
bot, la foto de perfil, si puede ser unido a grupos o no… 
 
 
 
 
22 
 
 
Figura 29 Ejemplo de bot en la aplicación de Telegram 
 
 
3.4 Código Python 
 
En este apartado se va a explicar brevemente la parte del programa 
implementado en Python asociado a Telegram, el cuál detecta que comando 
seleccionado y dependiendo de cuál se ejecutarán los métodos y funciones 
correspondientes. 
 
Se ha realizado un diagrama que se muestra en la Figura 30 con toda la 
información sobre los métodos auxiliares, las funciones correspondientes a cada 
comando, además de los teclados personalizables que saldrán para el usuario 
en Telegram. Algunos de estos métodos harán consultas a la base de datos bien 
sea para obtener información o actualizarla. 
Para mucho de los métodos se tuvieron que declarar varios diccionarios que nos 
permitieran manejar la opción seleccionada por el usuario y dependiendo de 
esta, darle la información adecuada. Los diccionarios que han sido necesarios 
han sido: 
- dic["lista_asignaturas"]: contiene todas las asignaturas asociadas al 
alumno según al grupo que pertenezca. 
- dic["lista_profesores"]: contiene todos los profesores correspondientes al 
grupo al que pertenezca el alumno. 
- dic["lista_correos_profesores"]: contiene los respectivos correos de los 
profesores. 
- dic["lista_despachos_profesores"]: contiene todos los despachos de los 
profesores. Aquellos que no tienen despacho también vienen indicados. 
- dic["lista_coordinadores"]: contiene los diferentes coordinadores de cada 
asignatura correspondientes al grupo al que pertenezca el alumno. 
 
 
23 
 
- dic["lista__correos_coordinadores"]: contiene los respectivos correos de 
los coordinadores. 
- dic["lista__despachos_coordinadores"]: contiene todos los despachos de 
los coordinadores. Igualmente viene indicado en caso de no tener 
despacho. 
- dic["lista_hora_ini"]: contiene todas las horas de inicio de las asignaturas 
en cuestión. 
- dic["lista_hora_fin"]: contiene todas las horas de finalización de las 
asignaturas en cuestión. 
- dic["lista_dia"]: contiene todos los días de la semana en los que se 
imparten las asignaturas del alumno. 
 
Del mismo modo se tuvieron que declarar otros diccionarios adicionales para 
facilitar el manejo de la opción elegida por el usuario: 
- usuarios {}: contendrá todos los usuarios que ya se han dado de alta en 
el sistema 
- selected_infoasignatura {}: diccionario para almacenar la asignatura que 
elegia el user en /tasas_asignaturas 
- selected_infocurso {}: diccionario para almacenar información sobre el 
curso que elige user en comando /tasas_curso 
- selected_opciontasa {}: diccionario para almacenar la opción de tasa en 
comando /tasas_curso 
- selected_seccion {}: diccionario para el manejo de la opción de sección en 
comando /faq 
 
Posteriormente se definen todas las funciones que interactúan con la BD de 
MySQL y el bot de Telegram. Los métodos que realizan consultas a la base de 
datos vienen señalados en el diagrama como viene indicado en la . A 
continuación, se explicará cada uno de ellos brevemente: 
- buscar_usuario(cursor, id_chat): función que realiza una consulta en 
la base de datos para verificar si existe un usuario con un ID de chat 
dado 
- insertar_usuario(cursor, nombre, apellidos, matricula, grupo, 
id_chat): función que inserta la información del usuario en la base de 
datos 
 
- actualizar_datos(cursor, nombre, apellidos, matricula, grupo, 
id_chat): función que realiza una actualización de la BD para modificar 
los datos de un usuario existente 
 
- get_asignatura_profe(cursor, id_chat_telegram): función para obtener 
información sobre asignaturas, coordinador y profesores asociados con 
el grupo de usuario de Telegram 
 
- tasas_asginaturas_metodoaux(cursor, asignatura): función para 
obtener las respectivas tasas de la asignatura elegida 
 
- tasas_curso_metodoaux(cursor, curso): función para obtener las 
respectivas tasas del curso seleccionado 
 
 
 
24 
 
Por otro lado, tenemos los controladores de mensajes del bot de Telegram, se 
ejecutan cuando se invoca al comando en cuestión o cuando se reciben ciertos 
mensajes, estos son: /start, /help y /ayuda. simplemente envía un mensaje 
para que el usuario se dé de alta en el sistema ya que si no se da de alta no 
podrá hacer un uso corrector del chatBot. 
 
En el siguiente Figura 30. Diagrama chatBot Telegram, se ha querido mostrar 
el funcionamiento entero del chatBot de Telegram. El usuario desde el chatBot 
elegirá uno de los comandos, siendo el primero /alta. Cuando el usuario 
empiece a hacer uso del chatBot bien sea por texto o por los comandos /start, 
/help o /ayuda, se le recomendará darse de alta en el sistema para poder usar 
el resto de los comandos. 
 
Una vez dado dealta en el sistema podrá utilizar cualquiera de los comandos 
que vienen en el diagrama y que se explicaran más adelante con mayor 
detenimiento. En cada comando del diagrama se mostrarán los métodos 
implementados para cada uno de ellos, así como si tiene teclado personalizable 
para el usuario. 
 
Adjunto el enlace al repositorio que contiene la implementación del código: 
https://costa.ls.fi.upm.es/gitlab/tfg-groman/tfg-ssm-2223/-
/blob/main/UPMalumnos_bot.py 
 
https://costa.ls.fi.upm.es/gitlab/tfg-groman/tfg-ssm-2223/-/blob/main/UPMalumnos_bot.py
https://costa.ls.fi.upm.es/gitlab/tfg-groman/tfg-ssm-2223/-/blob/main/UPMalumnos_bot.py
 
 
25 
 
 
 
 
26 
 
Figura 30. Diagrama chatBot Telegram 
 
 
 
Figura 31. Leyenda diagrama Telegram 
 
 
 
27 
 
4 Manual de usuario 
 
El diseño de cualquier proyecto software es una parte muy importante y 
fundamental en el desarrollo, tanto como la implementación del código. Se han 
desarrollado una serie de comandos, pensando en todos los nuevos alumnos 
que ingresan en la facultad cada año, que ofrecen ayuda de la forma más 
eficiente posible a los problemas más comunes como, por ejemplo, conocer la 
localización de los despachos de los profes, o información detallada de cada 
asignatura. 
Los comandos que han sido implementados son: 
 
- /start: Sirve para dar la bienvenida. 
 
- /alta: Sirve para dar de alta a un alumno, muy importante ya que con 
esta información trabajara el chatBot para distinguir entre clases, 
profesores, etc. Y dar la información apropiada y correspondiente para el 
alumno que esté utilizando el chatBot. Las funciones personalizadas 
funcionan a nivel de grupo en la universidad. 
 
- /mi_info: Sirve para mostrar los datos del alumno en que solicite dicha 
información. 
 
- /actualiza_info: se pensó para los casos en los que los alumnos 
introdujeran mal sus datos ya que el bot no es capaz de detectar ciertas 
cosas, por ejemplo, si te has confundido al escribir tu apellido, un 
nombre propio. Esto da la opción de actualizar esa información 
correctamente. De este modo, no es necesario acceder a la base de datos 
en ningún caso. 
 
 
- /mis_asignaturas: muestra un listado de todas las asignaturas de 
primer curso, con el profesor incluido. Gracias al comando /alta en el 
que obtendremos el grupo, ya que de este dependerá el profesor y el 
horario que tenga el alumno. 
 
 
- /info_asignatura: obtienes la información detallada acerca de la 
asignatura que elijas entre las opciones que dará el chatBot. 
 
- /tasas_asignatura: para conseguir las tasas de los últimos tres años 
sobre las asignaturas en las que esté interesado el alumno, para así 
poder hacer una comparativa y poder hacerse a la idea de lo que va a ser 
la asignatura en cuestión. Una vez ejecutado el comando saldrá un 
desplegable con las siguientes opciones: las tasas por curso, la media de 
las tasas o el máximo y mínimo de cada tasa. 
 
- /tasas_curso: parecido al comando anterior con la diferencia de que 
anteriormente veíamos las tasas por asignatura y este comando nos 
permitirá hacerlo por curso. Una vez que se selecciona el comando, igual 
 
 
28 
 
que el anterior saldrá un desplegable con los distintos cursos sobre los 
que podemos obtener las tasas. 
 
 
- /faq: comando dedicado a responder con los hipervínculos a la página 
web de la universidad con los temas que no los cubre el resto de los 
comandos. Dentro de este comando habrá varias opciones: trámites, 
reservas y otros. Dentro de trámites encontraremos lo relacionado a: las 
actividades acreditables, la acreditación del nivel de inglés B2, las becas 
y ayudas que ofrece la universidad, los recursos de información y la 
información referente al cambio de grupo. En la siguiente sección de 
reservas encontraremos: reserva de aulas informáticas, reserva de los 
recursos de la biblioteca, y reserva en otras instalaciones. Por último, en 
“otros” veremos lo relacionado a la matriculación, al carnet universitario, 
los documentos de la UPM, preguntas frecuentes UPM e información 
adicional. 
 
 
Figura 32 Menú de comandos desde Telegram 
 
Lo primero que tendrá que hacer el usuario es darse de alta en el sistema para 
que el chatBot pueda recoger la información necesaria de la base de datos para 
brindar al alumno de los datos que esté interesado en conocer. Antes de esto, 
tenemos que ejecutar el comando /start para iniciar el bot y posteriormente 
será este el que te dirija al siguiente y primer comando a usar. 
Como se puede ver en la Figura 33, el propio chatbot no te dejara hacer otra 
cosa hasta que no se haya dado de alta el usuario en el sistema. 
 
 
 
29 
 
 
Figura 33 Conversación para darse de alta 
El sistema de dado de alta es rápido y eficaz. El objetivo es que un nuevo 
alumno no pierda mucho tiempo en esta sección para poder empezar cuanto 
antes a resolver sus dudas. 
De lo contrario, si el usuario ya se hadado de alta e intenta volver a hacerlo, le 
saldrá el siguiente mensaje, ofreciéndole cambiar sus datos con el comando 
correspondiente: 
 
 
Figura 34 Dada de alta estando registrado 
Lo único que el usuario querría hacer al darse de alta sería cambiar y/o 
actualizar algún dato ya sea por un error al introducir alguno de los campos 
pedidos o por un cambio de grupo u otras circunstancias, como se puede ver 
en la Figura 35. 
 
 
 
30 
 
 
 
 
Para obtener nuestra información se ha creado un comando llamado /mi_info 
que nos dará los datos que anteriormente hayamos introducido: 
 
 
Figura 36 Resultados de llamar a /mi_info 
 
Además, como se puede ver en la Figura 36, la matricula es un entero de 6 
dígitos por lo que si algún alumno introduce de otra forma este dato se le enviará 
un mensaje para que el usuario sepa cómo escribirlo correctamente para el uso 
apropiado. Además, es importante mencionar que se ha optado por darle un 
formato en el que se resalte el nombre del campo en mayúsculas y azul para 
hacer más llamativo el mensaje. 
A continuación, se muestra un ejemplo actualizando mi información con una 
matrícula de formato erróneo. Al igual que si ya te has dado de alta en el sistema 
e intentas volver a hacerlo, el chatBot te aconsejara con otro mensaje que 
comando utilizar, ya que en este caso lo que va a pretender el alumno es 
actualizar alguno de los datos, el comando /actualiza_info obliga al alumno a 
introducir todos los datos otra vez, aunque solo sea uno de ellos el que quisiera 
cambiar. 
 
Figura 35 Cambio de nombre 
 
 
31 
 
 
Figura 37 Introducción de campo erróneo 
 
Como se puede observar existe una gestión de errores que evita cualquier fallo 
en el sistema. 
 
Se han introducido en varias ocasiones botones como las posibles opciones a 
algunas respuestas. Ya que como se ha comentado hay alguna información que 
se requiere de una forma en específico, por ejemplo, el grupo tiene que ser 
obligatoriamente en mayúsculas y con guión en caso de ser M-B, de otra forma 
el chatBot no reconocerá dicho valor y por tanto no se ofrecerá el 
comportamiento esperado. 
 
 
 
32 
 
 
Figura 38 Ejemplo de conversación con botones 
 
Esto además de hacer que la forma de introducir datos sea mucho más rápida, 
la usabilidad mejora considerablemente ya que el usuario tiene menos dudas a 
la hora de introducir los datos. Otra ventaja es que Telegram es una plataforma 
ya implantada en el mercado, por lo que la posición de teclado con botones y su 
funcionamiento es algo con lo que muchos usuarios están familiarizados, 
aumentando la comodidad de estos a la hora de usar el bot. 
Una vez se tienen los datos pedidos al darse de alta, ya con esto, se puede 
trabajar y obtener cualquier información. En función del grupo del usuario se 
tendra unos profesores u otros, en el caso de primero de carrera todos los 
alumnos tienen las mismas asignaturas. Al ser escalable esto vendrá bien para 
cursos superiores cuándo empiezan a elegir optativas y tener cada vez másasignaturas el comando de /mis_asignaturas les será de gran ayuda. A los de 
primero les ayudará sobre todo para acordarse de los profesores que tienen en 
cada una de ellas, entre otras cosas. 
 
 
 
33 
 
 
Figura 39 Llamada a comando de /mis_asiganturas 
 
También se puede obtener toda la información relevante al profesor y a la 
asignatura en cuestión. Con el comando /info_asignatura, les saldrá un menú 
con las 10 asignaturas de primero de grado a elegir una. 
 
 
Figura 40 Teclado para seleccionar asignatura 
 
 
 
34 
 
Posteriormente le preguntará al alumno que información desea obtener, 
mediante las siguientes opciones: 
 
 
Figura 41 Teclado con opciones de información 
 
Si la opción elegida es la del profesor, vendrán con él su correo y su despacho 
en caso de querer pedirle una tutoría o querer localizarle. Esto evitará en 
muchas ocasiones el acceso a las guías de cada asignatura para encontrar esta 
información. 
 
 
Figura 42 Solicitud de información sobre profesor de Álgebra Lineal 
 
 
 
 
 
35 
 
Por otro lado, el horario que como su nombre bien indica nos permitirá saber 
que días y que horarios tienen en dicha asignatura. Como se observa es todo 
bastante intuitivo y útil, que ahorrara mucho tiempo a los alumnos. 
 
 
Figura 43 Solicitud de información sobre horario de Álgebra Lineal 
 
En caso de que la información que se desea obtener sea la del coordinador de 
la asignatura en vez de la del profesor, también podrá ser recogida por el 
alumno: 
 
 
Figura 44 Solicitud de información sobre coordinador de Álgebra Lineal 
 
Por último, si la opción elegida es la de obtener toda la información, se le enviará 
de forma organizada en un mensaje la misma información que hemos visto que 
se puede obtener de forma separada en un solo mensaje. 
 
 
Figura 45 Solicitud de información completa de Álgebra Lineal 
 
 
36 
 
El siguiente comando, según los usuarios que han testado el chatBot, es de las 
funcionalidades más interesantes y prácticas. Todos los alumnos están 
interesados en ver cuáles son las tasas de las asignaturas para poder hacer una 
previsión del esfuerzo que tendrán que realizar en cada una de las asignaturas, 
siendo conscientes que cada alumno es diferente y a cada uno se le da mejor 
ciertas asignaturas y les motivan otras, podría variar en el caso particular, a 
modo orientación es cómo hay que procesar la información que recibiremos con 
este comando. 
Al igual que con el comando anterior al ejecutarlo nos listará todas las 
asignaturas para que elijamos de cuál de ellas queremos obtener sus tasas de 
rendimiento. Dentro de las tasas de rendimiento, nos encontramos con tres 
tipos de tasas: 
- Tasa de rendimiento: se define como la relación porcentual entre el 
número total de créditos ordinarios superados por los estudiantes en un 
determinado curso académico y el número total de créditos ordinarios 
matriculados por los mismos. 
- Tasa de éxito: se define como la relación porcentual entre el número 
total de créditos superados por los alumnos en un estudio y el número 
total de créditos presentados al examen. 
- Tasa de absentismo: se define como la relación porcentual entre el 
número total de créditos matriculados menos los créditos presentados, 
entre el número total de créditos ordinarios matriculados de los mismos. 
Y las opciones que nos ofrece este comando son: 
 
 
Figura 46 Teclado con opciones de tasas 
 
Una vez recibidos los porcentajes, en el mismo mensaje, vendrá explicado 
brevemente cuál es el significado de cada una de las tasas como se puede ver 
en las próximas figuras. 
Cada vez que se quiera obtener los porcentajes habrá que ejecutar el comando, 
no se podrá pedir a la vez el rendimiento máximo y mínimo con la media de las 
tasas, por ejemplo, para cada calculo es necesario la ejecución del comando 
indicado. En un futuro se implementará para que, de toda la información de 
golpe, se hizo así por el tamaño del mensaje. 
 
 
 
37 
 
Cada opción corresponde a: 
- Tasas por año: donde en tasas de rendimiento por año, nos dará las tres 
tasas explicadas previamente de la asignatura elegida. 
 
 
Figura 47 Ejemplo de tasas de un año concreto 
 
- Media de tasas: directamente obtendremos las medias del curso actual 
en cada tasa en la asignatura correspondiente. 
 
 
 
Figura 48 Media de tasas 
 
 
 
 
38 
 
- Tasas máximas y mínimas: en esta última opción veremos las tasas 
máximas y mínimas de cada una de las tres tasas de la respectiva 
asignatura. 
 
 
Figura 49 Tasas máximas y mínimas 
 
Por otro lado, tenemos otro comando parecido al anterior con la diferencia de 
que previamente adquiríamos la información según la asignatura y esta vez será 
por curso. De igual modo que el comando /tasas_asignaturas ayuda a hacer la 
comparativa entre las asignaturas del primer curso, el comando de 
/tasas_curso nos ayudará a ver la evolución de la asignatura en la que estemos 
interesados por año. Estas son las opciones del comando: 
A continuación, se muestran unas figuras con las opciones de teclado que se 
muestran al invocar al comando mencionado: 
 
Figura 50 Selección de curso para /tasas_curso 
 
 
39 
 
 
Figura 51 Selección de cálculo para /tasas_curso 
 
 
Figura 52 Selección de tasa para /tasas_curso 
 
Por último, el comando /faq es el típico comando o ayuda que se encuentra 
en muchas webs. Este comando, va a englobar los asuntos restantes 
relacionados a la universidad. Este comando se encargará a redirigir al alumno 
a la página correspondiente de la universidad según lo que hayan pedido, hay 
ciertos casos en los que en vez de un redireccionamiento se encontrarán con 
varios. Se ha separado por secciones para facilitar la búsqueda. Estas 
secciones son: 
 
 
Figura 53 Opciones dentro del comando de /faq 
 
 
 
 
40 
 
Dentro de trámites encontraremos: 
 
 
Figura 54 Opciones dentro de trámites 
 
Dentro de reservas obtendremos el siguiente menú: 
 
 
Figura 55 Opciones dentro de reservas 
 
La forma en la que se muestran los datos es mediante unos botones en el propio 
chat que al pulsarlos redirigen automáticamente a la web con la información 
correspondiente. 
 
 
Figura 56 Resultado al seleccionar Otras instalaciones 
 
 
41 
 
Al pulsar un botón Telegram, por seguridad, muestra el siguiente mensaje. 
 
 
Figura 57 Mensaje de confirmación para abrir un enlace 
 
 
Figura 58 Ejemplo de página web abierta desde el Bot 
 
Y dentro de otros estará todo aquello que no ha podido ser clasificado ni como 
reserva ni como tramite: 
 
 
Figura 59 Opciones de otros 
 
 
42 
 
5 Resultados y conclusiones 
 
Tras haber explicado en detalle cómo se ha desarrollado el chatBot y las 
distintas tareas que se han llevado a cabo en este trabajo de fin de grado, es la 
hora de sacar las conclusiones de este. 
Desde que conocí el mundo de Telegram y la gran variedad de chatBots que 
posee, siempre tuve la curiosidad por saber cómo se hacía uno y gracias a este 
trabajo de fin de grado que me brindo la oportunidad de conocer más a fondo 
este mundo y poder crear el mío propio. La funcionalidad de este bot es algo que 
no existe actualmente en la universidad y que puede servir de gran utilidad. 
He aprendido un nuevo lenguaje de programación, en este caso ha sido Python, 
con el cual me he encontrado muy cómoda trabajando y he ampliado mis 
conocimientos. 
La base de datos ha sido creada para que en un futuro se puedan añadir 
nuevas funcionalidades y sea escalable para otros cursos y alumnos. Dejando 
abierta la posibilidad como trabajo futuro de seguir mejorando y trabajando en 
el bot, sobre todo en el aspecto de abarcar a un mayor número de alumnos. 
Se ha conseguido crear un chatBot desde cero y que responde a la mayoría de 
las peticiones acerca de la facultad de informática ante un usuario que 
busque ayuda. También es cierto que no ha sido diseñado para mantenerconversaciones con el usuario. 
Algunas de las mejoras que podrían ser implementadas son: 
- Añadir voz y audio al chatBot. De esta forma les proporcionaríamos 
acceso a personas que tienen algún tipo de disfunción visual o no 
dominan la lectura/escritura. 
- Implementarlo en inglés también para así llegar a posibles alumnos de 
otros países. 
- Añadir inteligencia artificial para mantener conversaciones más 
humanas. 
- Añadir los horarios de tutorías o el número de créditos, aunque en el 
caso del primer curso todas las asignaturas tienen los mismos. 
Para concluir me gustaría dar una reflexión más personal sobre lo que me ha 
aportado realizar este Trabajo de Fin de Grado ya que le puede servir de 
motivación a otros estudiantes que quieran indagar en el mundo de los chatBots, 
muy interesante y amplio. Además, hay muchísima documentación en internet. 
De hecho, actualmente existen muchas maneras de implementar un chatBot 
sin la necesidad de programar, en mi caso no quería eso. 
Por otro lado, personalmente me ha servido en mi crecimiento como ingeniera, 
ya que es interesante crear un proyecto desde cero, y realizar desde su 
planificación en el tiempo que se tiene, hasta el desarrollo, pruebas e 
implementación y la documentación que le acompaña. He reforzado mis 
conocimientos adquiridos durante el grado como en ingeniería de software, 
bases de datos y programación. Como aspecto mejorable durante este proceso 
haría una mejor gestión del tiempo puesto que no lo logré los primeros meses 
compaginando estudios, trabajo y TFG. 
 
 
 
43 
 
 
6 Análisis de Impacto 
 
En este capítulo se destacarán también aquellas decisiones tomadas a lo largo 
del trabajo que tienen como base la consideración del impacto. En todo 
desarrollo, hay un impacto en diferentes contextos: personal, empresarial, 
social… todo depende del enfoque que se le dé al servicio prestado. 
A continuación, proporciono un análisis del potencial impacto de tu proyecto en 
los diferentes contextos: 
1. Personal: puede ayudar a los estudiantes a resolver dudas y a orientarse 
en cuanto a los temas relacionados con la universidad, lo que puede 
mejorar su experiencia académica y reducir el estrés y la ansiedad. 
Además, el chatBot les puede ayudar a sentirse más conectados con la 
universidad y con otros estudiantes. 
2. Empresarial: podría ser útil para la universidad para hacer uso de el para 
los posteriores cursos y quizás podría ser útil para las empresas que 
deseen contratar a nuevos graduados de esta universidad, ya que estos 
estudiantes tendrían una mejor experiencia académica y podrían estar 
mejor preparados para trabajar en su sector. 
3. Social: podría ayudar a reducir la brecha educativa, especialmente entre 
los estudiantes universitarios de primer año que tienen más dificultades 
para orientarse en cuanto a los temas relacionados con la universidad. 
Además, podría ayudar a mejorar la calidad de la educación superior y a 
aumentar la participación en la universidad. 
4. Económico: podría ayudar a reducir la tasa de abandono en los primeros 
años de la universidad, lo que a su vez podría ayudar a mejorar la 
retención de estudiantes y aumentar el número de graduados. Además, 
podría ser beneficioso para la economía en general, ya que los graduados 
con una mejor educación suelen tener mayores oportunidades laborales 
y ganar salarios más altos. 
5. Medioambiental: no tendría un impacto directo en el medio ambiente, 
pero podría ayudar a promover prácticas más sostenibles en la 
universidad y en la sociedad en general si se incluyen mensajes o 
sugerencias al respecto. 
6. Cultural: podría ayudar a los estudiantes a sentirse más cómodos y a 
entender mejor la cultura y el ambiente universitario, lo que podría ser 
beneficioso para su integración y adaptación en la comunidad 
universitaria. 
 
En cuanto a los Objetivos de Desarrollo Sostenible (ODS) de la Agenda 2030, el 
proyecto podría tener un impacto positivo en varios de ellos, como la educación 
de calidad (ODS 4), el trabajo decente y el crecimiento económico (ODS 8), de 
industria, innovación e infraestructura (ODS 9), la reducción de las 
desigualdades (ODS 10), la producción y consumo responsables (ODS 12) y el 
de paz, justicia e instituciones sólidas (ODS 16) [11]. 
 
 
44 
 
En primer lugar, en cuanto al ODS 4 de educación de calidad, el chatBot 
desarrollado puede tener un impacto positivo al facilitar a los estudiantes 
universitarios de primer año el acceso a información precisa y actualizada sobre 
los temas relacionados con la universidad, como los profesores, las asignaturas, 
los datos más importantes de estas, etc. De esta manera, el chatBot puede 
ayudar a mejorar la calidad de la educación superior, al proporcionar una 
fuente de información confiable y accesible que pueda complementar la 
formación académica de los estudiantes. 
Además, en cuanto al ODS 8 de trabajo decente y crecimiento económico, el 
chatBot puede tener un impacto positivo al ayudar a reducir la tasa de 
abandono en los primeros años de la universidad, lo que a su vez puede 
aumentar la retención de estudiantes y el número de graduados. Al tener una 
educación de calidad y completar sus estudios, los estudiantes pueden estar 
mejor preparados para el mercado laboral y tener mayores oportunidades de 
trabajo y de crecimiento económico. 
En tercer lugar, en cuanto al ODS 10 de reducción de las desigualdades, el 
chatBot puede ayudar a disminuir la brecha educativa entre los estudiantes 
universitarios de primer año que tienen más dificultades para orientarse en 
cuanto a los temas relacionados con la universidad. Al proporcionar 
información relevante y accesible, el chatBot puede ayudar a nivelar las 
oportunidades de éxito académico y a reducir la desigualdad en el acceso a la 
información. 
Cuarto lugar, el ODS 9 de industria, innovación e infraestructura, podría verse 
favorecido por este proyecto, ya que la implementación de chatBots en la 
educación podría ser considerada una innovación tecnológica en el sector 
educativo. 
El ODS 12 de producción y consumo responsables también podría verse 
impactado, ya que el uso de chatBots para proporcionar información sobre la 
universidad podría reducir el uso de papel y otros materiales que podrían ser 
considerados desperdicio en la producción de material impreso. 
Por último, el ODS 16 de paz, justicia e instituciones sólidas también podría 
verse impactado positivamente, ya que el proyecto de chatBot puede ayudar a 
promover la transparencia y la rendición de cuentas al proporcionar 
información objetiva y confiable sobre la universidad. 
En resumen, este proyecto puede contribuir de manera significativa a los 
Objetivos de Desarrollo Sostenible de la Agenda 2030, y puede tener un impacto 
positivo en la educación de calidad, la reducción de las desigualdades y el 
trabajo decente y el crecimiento económico. Es importante tener en cuenta este 
impacto positivo de cara a evaluar el valor del proyecto y considerar las posibles 
aplicaciones que puede tener en otros contextos. 
 
 
45 
 
7 Bibliografía 
 
[1] Futurizable, «Estado del arte en el desarrollo de chatbots a nivel mundial», 
Futurizable | Sngular, sep. 2017, [En línea]. Disponible en: 
https://futurizable.com/chatbot/ 
[2] Fi, «Trabajo de Fin de Grado-ETS de Ingenieros Informáticos (UPM)». 
https://www.etsiinf.upm.es/?pagina=1835 
[3] Fi, «Recomendaciones sobre el contenido y formato de la Memoria Final-ETS 
de Ingenieros Inform ticos (UPM)». 
https://www.fi.upm.es/?pagina=1475 
[4] Fi, «Proyecto Mentor-ETS de Ingenieros Informáticos (UPM)». 
https://www.fi.upm.es/?id=proyectomentor 
[5] I. Corporativa, «Chatbots, una nueva forma de atender a los clientes», 
Iberdrola. https://www.iberdrola.com/innovacion/que-es-un-
chatbot 
[6] A. L. B. Asenjo, «Los clientes prefieren personas en vez de bots 
personalizados», linkedin.com, [En línea]. Disponible en: 
https://linkedin.com/pulse/los-clientes-prefieren-personas-en-

Continuar navegando

Materiales relacionados