TFG Eva Marti Paredes
TFG Eva Marti Paredes
TFG Eva Marti Paredes
Y SISTEMAS DE TELECOMUNICACIÓN
VºBº
Calificación:
El Secretario,
Resumen
23 de junio de 2021
Resumen
El propósito principal para el desarrollo del proyecto es el de ofrecer información específica frente a
dudas que se plantee el usuario con el uso de la plataforma de telenseñanza Moodle [1]. Dudas
frecuentes que a pesar de estar ya recogidas en manuales y otros recursos de ayuda, el usuario es
incapaz de localizar justo en el momento que las necesita.
La plataforma principal a la que va a ser destinado el chatbot es Moodle, pero además se pretende
que esté disponible para la web del GATE y en un futuro próximo para otras páginas web de la
UPM. Todas ellas están desarrolladas en php por lo que este es también el lenguaje con que se
desarrolla el chatbot, buscando con esto la implementación de la solución a partir de un framework
de código abierto, requisito imprescindible para estas plataformas pertenecientes al campo de la
enseñanza.
A la vista de todos estos requisitos o limitaciones se opta por implementar el diseño del chatbot
sobre el framework de Laravel [2] basado en php que emplea la licencia MIT (Massachusetts
Institute of Technology) [3] Sobre un servidor Apache [4] creado mediante Xampp se instala el
citado framework que permite el desarrollo de la aplicación del chatbot.
El chatbot basado en modelos de inteligencia artificial se programa para responder las cuestiones en
la forma determinada que se quiere que actúe. De los muchos tipos de chatbot que existen, son dos
los que mejor se adaptan al destino actual de la aplicación: el basado en preguntas mediante botones
en combinación con el basado en AIML (Artificial Intelligence Markup Language).
En el primero se estandarizan las consultas habituales en botones que el usuario podrá pulsar, el
segundo permite al usuario escribir su pregunta que a través del reconocimiento de patrones
gestionará para dar una respuesta. Para el desarrollo de la aplicación se instala a continuación
Botman [5], una librería agnóstica de php para la creación de chatbot también bajo licencia MIT
con el fin de facilitar el mantenimiento del mismo una vez la aplicación esté ya implementada.
Con todos los requisitos que necesita la aplicación instalados en el servidor, se desarrollan los
métodos que el chatbot mapea para estar a la escucha de las palabras clave y/o patrones. Cuando un
usuario escribe en la ventana de texto una de las palabras marcadas, el controlador del chatbot,
donde se ubica la lógica principal, deberá decidir cómo actuar.
Para poder diferenciar de forma sencilla entradas para los dos colectivos a los que se destina la
aplicación, profesores y alumnos, se han agrupado en distintos ficheros que además facilita su
posterior mantenimiento. Por ello, además del controlador principal se desarrolla también otro para
cada colectivo TeacherController.php y StudentController.php. Siendo estas las únicas funciones
de las que se podrá hacer uso mediante los métodos implementados en los ficheros de entrada, para
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
1
Resumen
23 de junio de 2021
hacer de este modo que el código sea más seguro frente al acceso externo y por tanto frente a
ataques.
Con todas las partes del chatbot definidas a continuación se necesita un servicio de mensajería para
poder interactuar. Botman provee un driver web que en combinación con un widget codificado en
Javascript permite su uso a través de un navegador de Internet. El widget va incrustado en el código
html de la página o páginas en las que se realiza la implantación, mostrándose un icono en la
esquina inferior que despliega el chat al pulsarlo.
El resultado final se puede ver al abrir la ventana y comenzar la comunicación con el chatbot, lo
primero que realiza es preguntar si se trata de un docente o un alumno. Una vez determinado el rol,
se ofrece mediante un menú una serie de guías disponibles organizadas por temas, así como
distintos recursos de la Universidad Politécnica.
Se puede concluir que la aplicación desarrollada cumple con los objetivos que se plantearon.
Desarrollado en php, el chatbot es capaz de solventar las dudas que planteen los usuarios en tiempo
real, siendo además capaz de diferenciar entre alumnos y profesores para solventar esas cuestiones,
para lo que posee un código diferenciado en ambos colectivos.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
2
Abstract
23 de junio de 2021
Abstract
The aim of this project is to develop a tool capable of relaying specific information and answering
the frequently asked questions that may arise during the use of the Moodle E-learning Platform.
This same information is included in manuals and other existing resources but may not be easy to
locate, for the average user, when most needed.
The objective with this initial implementation of the chatbot is for its inclusion in the Moodle
environment, but its design aims to be expandable on to additional platforms in the future, such as
the GATE website and other UPM webpages. All these pages have been developed in php, and as
such, this has been the programming language chosen for the development of the Chatbot. Seeking
with this the implementation of a solution based on an open-source framework, an essential
requirement for any platform in the field of Education.
Considering all these requirements and limitations, it was decided to implement the chatbot in the
Laravel framework, which is based on php that uses the MIT license. The aforementioned
framework is installed on a php server created by using Xampp, allowing the development of the
desired chatbot application.
In the first, the usual queries are standardized in buttons that the user can press. The second allows
the user to write a question and through pattern recognition, gives an answer. The Next step to
develop the application consists of the installation of Botman (5), an agnostic php library for
chatbots development also under the MIT license, in order to facilitate maintenance once the
application has finished being implemented.
With all the requirements that the application needs installed on the server, we proceed to develop
the methods that are mapped by the chatbot to listen for keywords and patterns. When a user writes
one of the marked words in the text window, the chatbot controller, where the main logic of the bot
is located, must decide how to answer.
In order to easily differentiate between the two groups for which the application is intended,
teachers and students, entries have been grouped into different files which also facilitates their
subsequent maintenance. For this reason, in addition to the main controller, another one is also
developed for each group TeacherController.php and StudentController.php. These two are the
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
3
Abstract
23 de junio de 2021
only functions that can be used through the methods implemented in the input files, in order to
make the code more secure against external access and therefore against different kinds of attack.
For the deployment of a contextual menu with buttons, a conversation, as is called in bot
development, is created. In a conversation, the chatbot, after displaying a message waits for a
certain response from the user. This action will be interactive, in the case of pressing a button, or
other keywords different than those mapped, depending on how the methods of the conversation in
progress are developed.
With all the modules of the chatbot defined below, a messaging service is needed to interact with
the user. Botman provides a web driver that, in combination with a JavaScript-encoded widget,
allows its use through an Internet browser. The widget is embedded in the html code of the page or
pages where the implementation has been carried out, showing an icon on the lower right corner
that displays the chat when pressed.
The final result can be seen by opening the window and beginning a conversation with the chatbot,
the first thing it performs is to ask if the person writing is a teacher or a student. Once the role has
been determined, a series of available guides organized by topics are offered through a menu, as
well as different resources of the Polytechnic University.
If you prefer to ask a question directly, the Chatina bot has answers for more than 40 frequently
asked questions about the Moodle platform and its functions.
It can be concluded that the developed application meets the objectives that were set. Developed in
php, the chatbot is capable of solving the questions posed by users in real time. It is also able to
differentiate between students and teachers to solve both kind of issues, for which it has a
differentiated code for each group.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
4
Contenido
23 de junio de 2021
Contenido
Resumen ............................................................................................................................................... 1
Abstract ................................................................................................................................................ 3
Contenido ............................................................................................................................................. 5
Índice de figuras ................................................................................................................................... 7
Índice de tablas..................................................................................................................................... 9
Lista de acrónimos ............................................................................................................................. 10
1 Introducción ............................................................................................................................... 12
1.1 Contexto .............................................................................................................................. 12
1.2 Estructura............................................................................................................................. 12
1.3 Objetivos ............................................................................................................................. 14
2 Estado del Arte ........................................................................................................................... 15
2.1 Tipos de chatbot .................................................................................................................. 16
2.2 Funcionamiento general de Moodle. ................................................................................... 17
2.3 Funcionamiento del Centro de Atención de Usuarios (CAU) ............................................. 19
3 Especificaciones y restricciones de diseño ................................................................................ 20
3.1 Lenguaje php ....................................................................................................................... 20
3.2 Framework compatible........................................................................................................ 21
3.3 Estudio de las consultas recibidas ....................................................................................... 23
4 Descripción de la solución Propuesta ........................................................................................ 28
4.1 Servidor y gestor de dependencias de php .......................................................................... 28
4.2 Laravel ................................................................................................................................. 29
4.3 Botman ................................................................................................................................ 32
4.4 Controlador .......................................................................................................................... 35
Almacenamiento de usuario ....................................................................................................... 35
Función Fallback ....................................................................................................................... 35
Inicio de la App .......................................................................................................................... 36
Consulta del rol .......................................................................................................................... 36
4.5 Asignación de rol................................................................................................................. 37
4.6 Chatbot basado en menú contextual .................................................................................... 38
4.7 Chatbot basado en AIML ..................................................................................................... 40
Clasificación de las palabras clave............................................................................................. 40
Mapeo de palabras clave ............................................................................................................ 45
4.8 Rasa NLU (Natural Language Understanding) .................................................................. 48
4.9 Chat widget .......................................................................................................................... 49
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
5
Contenido
23 de junio de 2021
5 Resultados .................................................................................................................................. 50
5.1 Instalación del chatbot......................................................................................................... 50
5.2 Prueba en entorno real ......................................................................................................... 52
Métodos de prueba de la aplicación desarrollada ...................................................................... 53
5.3 Creación de una máquina virtual para alojar el servidor del chatbot .................................. 57
Script de arranque del servidor dentro de la máquina virtual .................................................... 57
6 Planos ......................................................................................................................................... 58
6.1 Menú contextual de alumnos ............................................................................................... 59
6.2 Menú contextual de profesores............................................................................................ 60
6.3 Flujo del chatbot basado en menú contextual ..................................................................... 64
6.4 Flujo del chatbot basado en AIML ...................................................................................... 64
7 Presupuesto ................................................................................................................................ 65
8 Conclusiones .............................................................................................................................. 68
9 Referencias ................................................................................................................................. 69
Anexo ................................................................................................................................................. 74
1 Funciones menú contextual alumnos ......................................................................................... 74
2 Funciones menú contextual profesores ...................................................................................... 78
3 Funciones Markup Language Alumnos ..................................................................................... 92
4 Funciones Markup Language Profesores ................................................................................... 97
5 Index.blade.php ........................................................................................................................ 106
6 Manual de usuario para el programador .................................................................................. 107
6.1 Modificación del menú de botones ................................................................................... 107
6.2 Modificación de las palabras clave ................................................................................... 110
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
6
Índice de figuras
23 de junio de 2021
Índice de figuras
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
7
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
8
Índice de tablas
23 de junio de 2021
Índice de tablas
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
9
Lista de acrónimos
23 de junio de 2021
Lista de acrónimos
IA Inteligencia Artificial.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
10
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
11
Introducción
23 de junio de 2021
1 Introducción
1.1 Contexto
La plataforma de telenseñanza LMS (Learning Management System) Moodle, se emplea
actualmente en múltiples centros de enseñanza y se ha llegado a convertir en un imprescindible en
la docencia a distancia.
Con el uso de la misma han ido apareciendo múltiples dudas tanto en el manejo como en las
utilidades que ofrece lo que motiva el desarrollo del siguiente chatbot que actuará como asistente
personal ante estas situaciones.
Todas estas dudas en la actualidad vienen siendo gestionadas por el equipo del GATE a través de
Skype o por email, repitiéndose en muchas ocasiones las consultas. Esto requiere de una dedicación
y un tiempo del que no siempre se puede disponer dado que las funciones del equipo van mucho
más lejos que atender únicamente dudas de usuarios.
Por ello el lugar de designar una persona para atender en exclusiva esa tarea, se decide crear un
agente personalizado destinado a informar y atender a los usuarios y que además lo pueda hacer de
forma instantánea. Esta posibilidad de atención en tiempo real es muy demandada hoy en día y
puede ser implementada fácilmente mediante el uso de un chatbot.
1.2 Estructura
El contenido del presente proyecto de fin de grado se ha estructurado en varios apartados que
responden al siguiente esquema:
Resumen. Se realiza una breve exposición del objetivo y contenido de este trabajo.
Introducción. Dentro de este apartado se realiza una visión general del contexto actual
relacionado con el proyecto, unas notas esquemáticas referidas a cómo está estructurado el
trabajo y se plantean los objetivos que se pretenden conseguir.
Estado del arte. Se mencionan una serie de antecedentes que desembocan en la situación
actual en el desarrollo de chatbots para entender el proceso que ha seguido en su avance esta
tecnología. Se presenta una panorámica acerca de los tipos principales de chatbots. Todo
ello se enmarca en la implementación dentro del funcionamiento general de la plataforma
Moodle en la que se va a integrar para pasar finalmente a hacer referencia al funcionamiento
del CAU (Centro de Atención de usuarios) de la UPM y su relación con este proyecto.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
12
Introducción
23 de junio de 2021
Anexos. Se incluyen los manuales y guías necesarios para consulta del usuario y para el
mantenimiento del chatbot y sus posibles desarrollos futuros.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
13
Introducción
23 de junio de 2021
1.3 Objetivos
El objetivo principal de este Proyecto Fin de Grado es diseñar una aplicación web de un chatbot
para la resolución de preguntas frecuentes sobre la plataforma Moodle. Para este propósito se busca
cumplir los siguientes objetivos:
Documentar el proyecto.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
14
Estado del Arte
23 de junio de 2021
Los chatbots vienen apareciendo de forma exponencial en las empresas en los últimos años, dada la
necesidad de reducir costes y el crecimiento cada día más eficiente de esta tecnología. Cómo su
traducción del inglés sugiere es una máquina la cual dispone de un software que la permite
mantener una conversación de forma coherente con un humano.
El primer bot [6] aparece en 1966, conocido como Eliza es desarrollado en el MIT para IBM. A
partir de etiquetas es capaz de comprender un texto y clasificarlo según los valores almacenados y
con ello proporcionar una respuesta al usuario [7]. Su objetivo era proporcionar un servicio de
asistencia psicológica, para lo que al reconocer una palabra clave disponía de una serie de frases
hechas con las que respondía [8].
Sin embargo, no es hasta la década de los 90 cuando comienzan a resurgir su uso. Con la aparición
de ALICE (Artificial Linguistic Internet Computer Entity) creado por Pandora Bots. Desarrollado en
Java, emplea AIML para procesar las entradas del usuario y buscar en su base de datos la respuesta
oportuna [9].
La necesidad de lograr una interacción humana hace que comiencen a aparecer los primeros bots
conversacionales ahora ya alcanzado el siglo XXI. Cuando se está imponiendo el uso de los chatbot
en las plataformas más importantes a modo de asistente personal. Como ejemplo Alexa de la
empresa Amazon o bien Ok Google, que tratan de asistir en las cuestiones diarias y disponen ya de
grandes motores conversacionales que continúan mejorando día a día.
Pero también existen conceptos erróneos sobre los mismos, se espera en muchas ocasiones que un
chatbot sea capaz de mantener la conversación tal y cómo se realizaría entre dos personas. Sin
embargo, aunque lleva buen ritmo, aún no se ha logrado llegar a crear dicho propósito a día de hoy
[10]. Otro concepto erróneo muy extendido es pensar que un chatbot únicamente puede
comunicarse mediante voz o texto cuando hay disponibles múltiples entornos de desarrollo gráfico
destinados a personalizar los interfaces del canal de comunicación donde se emplee como pueden
ser Facebook, WeChat o Kik.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
15
Estado del Arte
23 de junio de 2021
Vía texto.
Combinación de texto con botones e imágenes.
Por mensajes de voz.
Aunque lo más habitual suele ser separarlos según su funcionalidad [11] las cuales pueden ser muy
numerosas por lo que solo se enumeran unas pocas a continuación:
Si se clasifican según la tecnología empleada para su desarrollo se distinguen los siguientes cuya
complejidad va en aumento a la vez que sus funcionalidades:
Los basados en menús con botones, son los más sencillos que se pueden encontrar. En la
mayoría de los casos las decisiones se presentan al usuario en forma de botones. Son
capaces de resolver cerca del 80% de las dudas [12] planteadas en la FAQ (Frequently
Asked Questions).
Los que emplean el reconocimiento de palabras, son capaces de escuchar al usuario para dar
una respuesta lo más específica posible. Emplean el reconocimiento de palabras clave con
IA que sirve para dar la respuesta más apropiada al usuario.
Los chatbots contextuales, siendo los más avanzados de todos. Estos emplean ML (Machine
Learning) y además IA para así recordar conversaciones previas y crecer a lo largo del
tiempo, siendo capaces de improvisar con usuarios específicos de forma personalizada.
Por tanto, para decidir cuál es el más apropiado para la aplicación a desarrollar es necesario analizar
el tipo de preguntas para las que se necesita dar respuesta y de este modo implantar el más eficiente.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
16
Estado del Arte
23 de junio de 2021
Existen dos perfiles básicos de usuarios dentro de la plataforma [13], se puede acceder a la misma
como estudiante o como profesor, viniendo determinado por los permisos de la cuenta de usuario
institucional asociada a cada persona.
Si el acceso se realiza con un perfil de estudiante, se puede ver en la parte izquierda de la ventana
un menú con el contenido disponible para el alumno. Tales como área personal, calendario, además
de los cursos que tiene asignados. En la parte derecha existe otro menú con información actualizada
con las últimas publicaciones en foro u otros avisos, fechas próximas de eventos en el calendario y
una serie de enlaces con los cursos disponibles. Y una parte central donde se localiza la información
relativa al curso actual consultado, en la que el profesor responsable de la asignatura ofrecerá al
estudiante los recursos que considere necesarios para el correcto seguimiento de la asignatura en la
que se encuentre matriculado.
Cuando el usuario pertenece a este segundo colectivo de profesores con permisos de edición, tiene a
su alcance múltiples opciones para la configuración de su asignatura y otros cursos.
Es posible modificar los bloques de un curso cargando contenido de diversos tipos, se pueden subir
imágenes así cómo exámenes, o separar el contenido en función de grupos de laboratorio de teoría u
otros que se determinen. Permite la creación de exámenes a través de la plataforma con múltiples
versiones para evitar el plagio entre alumnos y la autocorrección de estos también desde la misma
pudiendo decidir horarios y otros.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
17
Estado del Arte
23 de junio de 2021
Cuando se accede con perfil de profesor las opciones puede parecer que no varían respecto del
anterior, cómo el menú izquierdo donde se ubican los cursos a los que se pertenece y el calendario.
Pero con este perfil en la parte superior derecha aparece un icono que permite desplegar el menú de
administración con el que acceder a la zona privada.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
18
Estado del Arte
23 de junio de 2021
Todas las cuestiones planteadas se han intentado poner a disposición del usuario diferenciando si se
trata de un alumno o un profesor. Recopiladas en dos ubicaciones en la página web de Moodle, una
sin requerir el registro en la página de acceso y otra con guías más extensas una vez se accede.
La primera, para la que no se requiere acceso mediante un usuario identificado, está localizada en
las preguntas frecuentes. Donde se disponen dos enlaces perfectamente diferenciados para llegar a
las preguntas de profesor o alumno.
La otra ubicación donde se encuentran se localiza en el menú del margen derecho una vez
registrado dentro de Moodle.
Aquí sólo es visible el enlace propio del grupo al que se pertenece impidiendo que un alumno tenga
acceso a una guía que contenga por ejemplo las instrucciones para dar de alta alumnos en un curso.
Estando limitado por tanto el acceso a los recursos del profesor si no se tienen los permisos propios.
También se viene dando soporte a través de guías de uso desarrolladas por el GATE donde se
detalla paso por paso los procedimientos para el uso de la plataforma Moodle. Además de haber
desarrollado varias video guías, también disponibles para su visualización a través de enlaces
direccionados desde Moodle en el apartado de ayuda.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
19
Especificaciones y restricciones de diseño
23 de junio de 2021
La plataforma LMS Moodle está desarrollada en lenguaje php y dado que es un lenguaje de
programación ampliamente utilizado la realización del proyecto se realiza en este mismo lenguaje
para así permitir un fácil mantenimiento cuando sean necesarias mejoras o ampliaciones para la
plataforma.
Como el objetivo de este proyecto es ofrecer una ayuda al usuario a partir de la IA, este chatbot
deberá ser capaz de resolver las dudas que los usuarios
se planteen durante el funcionamiento de la plataforma.
Creado en la década de los 90 cuando su nombre significaba Personal Home Page, ahora se conoce
por su acrónimo Hypertext Pre-Processor es decir Pre-Procesador de Hipertexto [16]. Su creador
Rasmus Lerdorf lo usaba originalmente para rastrear las visitas a su currículo. Una vez hizo público
el código, fue adquiriendo mejoras y nuevas funcionalidades gracias a las aportaciones de más
usuarios. A día de hoy es el lenguaje de programación más popular para la creación de aplicaciones
y sitios web.
Php es empleado principalmente en páginas web dinámicas cuyo contenido varía. Cuando un
usuario realiza una petición para mostrar una url (uniform resource location) desde el navegador y
esta página contiene por ejemplo una sección de noticias. Esta sección se va actualizando conforme
se necesita, para ello, el servidor donde está alojada la página realiza la consulta a la base de datos o
fuentes externas según se hubiera codificado previamente. Con esta información se devuelve al
usuario una página html como si fuera estática, de este modo los recursos para procesar la
información no son los del ordenador personal con que se accede a la web. Este trabajo se realiza en
el lado del servidor que, con su hardware más potente y su software especializado, garantiza los
recursos para la gestión de la petición. Por lo general esta información es procesada en el servidor
web [17] como un daemon1 que, con su hardware más potente y su software especializado,
garantiza los recursos para la gestión de la petición.
1 Daemon (Disk And Execution Monitor) es un proceso no iterativo que se ejecuta en segundo plano [50].
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
20
Especificaciones y restricciones de diseño
23 de junio de 2021
BotKit, es uno de los más utilizados actualmente ya que se trata de una herramienta de desarrollo
de código abierto para la creación de chatbots, aplicaciones e integraciones personalizables para la
mayoría de los servicios de mensajería [19]. Una parte de esta herramienta viene incluida en el
desarrollo de Microsoft Bot Framework. Se suministra junto con un entorno de desarrollo visual
para la creación de conversaciones que simplifica su uso. Permite además la integración del
procesamiento del lenguaje natural con LUIS.ai y la comunicación a través de un canal tal como
Slack y otros. Codificado en JavaScript requiere un Node.js2 siendo cada Botkit una aplicación del
nodo js. Sin embargo, está íntegramente realizado en javascript por lo que no es una solución válida
con los requisitos del diseño.
Proporciona además el Azure Bot Service [22], un servicio para el desarrollo de bots que posibilita
la conexión con distintos canales como: Teams, Slack, Cortana o Messenger. Permite integrar la
funcionalidad avanzada de inteligencia artificial con Azure Congnitive Services omitiendo la fase
de aprendizaje automático de los agentes del bot o añadiendo la comunicación por voz en las
consultas. Estos servicios prestados por Azure conllevan un coste que varía en función de los
mensajes entregados.
2
Entorno en tiempo de ejecución multiplataforma, de código abierto, para la capa del servidor basado en el lenguaje de
programación JavaScript.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
21
Especificaciones y restricciones de diseño
23 de junio de 2021
Bot Libre, es un chatbot de código abierto desarrollado en java/javascript en el que hace uso de
AIML [26]. También con la posibilidad de utilizar Self, es fácil de usar y entrenar con el
reconocimiento de vocabulario que utiliza para mejorar los agentes. Tiene soporte para Skype,
Slack, Facebook, Telegram, SMS (Short Message Service) y permite la integración con Alexa,
Google e IBM Watson. Como muchos otros bots que se anuncian como gratuitos termina teniendo
algunas partes que para poder ser usadas es necesaria una suscripción y pago.
Existen también algunas plataformas de chat que ya incluyen la posibilidad de crear tu propio bot
como Livechat, Drift o Userlike. Sin embargo, aunque inicialmente todas estas permiten la creación
del chatbot de forma gratuita. Su uso tiene un coste que varía en función de las consultas recibidas y
por tanto queda descartado en nuestro caso.
Como se desea que el bot esté incrustado tanto en la página de Moodle como en la página del
GATE es preferible no limitarlo a un único canal.
Finalmente se opta por realizar el chatbot con Botman, desarrollado de forma íntegra en php.
Requiere de un node.js únicamente para el despliegue del widget y va instalado sobre el framework
de Laravel y constituye una de las opciones empleadas más frecuentemente para el desarrollo de
aplicaciones en php.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
22
Especificaciones y restricciones de diseño
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
23
Especificaciones y restricciones de diseño
23 de junio de 2021
Hay por tanto entre profesores y alumnos 32 cuestiones con respuesta rápida que el chatbot debe ser
capaz de reconocer y diferenciar de forma unívoca. Será necesario clasificarlas según intenciones o
intents con el objetivo de dar una respuesta precisa.
También hay otras cuestiones que plantean los usuarios con respuestas más extensas que no es
posible responder con unas pocas líneas. Las guías, videoguías y otros apartados de ayuda
contenidos dentro de Moodle para usuarios registrados se clasifican como sigue.
Además, en este último algunos de los temas se pueden desglosar en cuestiones más concretas como
se indica a continuación.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
25
Especificaciones y restricciones de diseño
23 de junio de 2021
Calificaciones.
¿Cómo trabajar con calificaciones condicionales? Convertir en 0 una calificación que no
llega a un mínimo
¿Cómo subir notas a Moodle desde un fichero?
¿Cómo gestionar las calificaciones? ¿Cómo calcular la nota final?
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
26
Especificaciones y restricciones de diseño
23 de junio de 2021
Contenido.
¿Cómo añadir un vídeo de YouTube en nuestro Moodle?
¿Cómo trasladar contenido de una asignatura de una plataforma Moodle a otra distinta?
Guía para grabar tus propios vídeos educativos
Videotutorial para grabar tus propios videos educativos
Comunicación en la asignatura.
¿Cómo añadir un post de Facebook en nuestro Moodle?
¿Cómo sincronizar el calendario de Google con el de Moodle?
¿Cómo mandar mensajes a los alumnos?
¿Cómo realizar consultas a los alumnos (revisiones de exámenes, prácticas, etc.)
¿Cómo insertar mensajes de Twitter en una asignatura?
Con un total de más de 70 Guías entre alumnos y profesores esta será la otra parte del chatbot a
desarrollar.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
27
Descripción de la solución Propuesta
23 de junio de 2021
La clasificación de dudas generadas por los usuarios está dividida en dos categorías: preguntas
cortas y guías de mayor extensión. Se opta por el desarrollo de dos chatbots. Uno de ellos, será
capaz de ofrecer ayuda mediante un menú con botones y el otro responderá a las cuestiones breves
con una respuesta rápida.
Se implementa un menú a partir de botones, que clasificando las dudas por temas ofrece de forma
rápida las guías que hasta ahora únicamente eran accesibles al entrar como un usuario registrado en
la plataforma Moodle. En el caso en el que estas guías no solventen la duda consultada, se ofrecerá
la opción de realizar la misma consulta escribiendo al chatbot en la ventana de texto. Para dar la
respuesta adecuada, se hará uso de AIML para el reconocimiento de las palabras clave que
mostrarán al usuario el camino o pasos a seguir en cada caso.
El chatbot funciona sobre el framework php de Laravel el cual usa dependencias y librerías que
provienen de distintas fuentes que se pueden obtener fácilmente con un gestor de dependencias
como Composer [28]. Composer, permite instalar todas las dependencias de forma automática
facilitando el desarrollo en proyectos complejos de aplicaciones tales como el chatbot [29]. Este
gestor es comparable a Node Package Manager (NPM) para Node.js o Pip Installs Packages (PIP)
para Python, pero para lenguaje php facilitando así mucho la tarea.
En el framework de Laravel se incluye el archivo composer.json donde quedan definidas todas las
librerías que emplea así como el software necesario para la configuración automática del mismo. Al
ejecutarse, descarga en la carpeta elegida todas librerías requeridas por el proyecto, permitiendo con
la llamada a un fichero denominado autoload.php cargarlas sin necesidad de enumerarlas una por
una. Cabe destacar de entre las dependencias instaladas las pertenecientes al proyecto Symfony
3
Sistema de gestión de bases de datos relacional desarrollado bajo licencia dual: Licencia pública general/Licencia
comercial por Oracle Corporation.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
28
Descripción de la solución Propuesta
23 de junio de 2021
[30]. Un framework php de tipo full-stack para la creación de aplicaciones y sitios web de forma
rápida y segura.
Con Composer se procede a instalar el framework de Laravel que contiene métodos claros e
intuitivos indicados para el desarrollo de la aplicación facilitando así la codificación en php. Laravel
reutiliza componentes de diferentes frameworks, entre los cuales hay aproximadamente un 30% de
código perteneciente al framework de Symfony mencionado antes. Así como muchas otras
herramientas tales como Homestead, Valet, Lumen y Spark.
4.2 Laravel
Es actualmente uno de los mejores frameworks de código abierto para el desarrollo de aplicaciones
en php. Emplea un patrón de diseño denominado MVC (Model-View-Controller), que permite una
codificación sencilla para reducir el tiempo [31] de codificación en el desarrollo de aplicaciones. El
funcionamiento de este patrón de diseño sería el siguiente.
En este tipo de diseño MVC, el Modelo consistirá en el tipo de datos que maneja la aplicación. Para
el chatbot, los datos son las conversaciones que mantiene con el usuario.
El Controlador, se ocupa de interactuar con el Modelo. Cuando se recibe una petición se consulta la
información en el Modelo o se actualiza en el mismo si así se requiere. Aquí se encuentra ubicada
casi la totalidad de la lógica de la aplicación.
La Vista está compuesta por todos los componentes de la aplicación html. Esta plantilla puede ser
rellenada con el Modelo por el Controlador para así lograr dar respuesta a la petición de
información realizada por el usuario.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
29
Descripción de la solución Propuesta
23 de junio de 2021
En el proyecto desarrollado la ubicación en la que se almacena cada una de estas partes que
componen la aplicación sería la siguiente [33].
El funcionamiento de Laravel es un poco más complejo que el patrón MVC indicado. Cuando hay
una petición al servidor por parte del usuario ésta se recibe en el servidor Apache donde se está
ejecutando la aplicación. Desde el servidor es dirigido a /public/index.php y de allí parte todo el
framework.
Primeramente [35], se inicia con el archivo /Bootstrap/autoloader.php y carga todos los ficheros
generados por Composer. Continúa recuperando una instancia de la aplicación desarrollada con
Laravel mediante el script contenido en /Bootstrap/app.php.
4 CSRF (Cross-Site Request Forgery) evita la falsificación de petición en sitios cruzados [51].
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
30
Descripción de la solución Propuesta
23 de junio de 2021
Finalmente, si la petición coincide con uno de los métodos matching, se dirige la petición al método
implementado en la ruta o en el controlador de la aplicación ubicado en /app/controllers para
ejecutarlo y enviar los datos a la vista.
Vista Usuario
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
31
Descripción de la solución Propuesta
23 de junio de 2021
4.3 Botman
Para comenzar con la creación del bot se ha selccionado una librería de framework agnóstico sobre
php de código abierto denominada Botman Fuente especificada no válida.. Esta requiere de un
número de dependencias que se instalan automáticamente con Composer en la carpeta llamada
vendor, gracias a las cuales, es posible automatizar muchas de las funcionalidades necesarias para el
proyecto.
La lógica principal del chatbot se ubica en el controlador, que es el encargado de gestionar la acción
a realizar en función de la entrada recibida, cuando así se indica en el fichero denominado Routes.
Este controlador es indispensable para comunicarse con todas las partes que componen el chatbot.
Desde aquí se realiza la llamada inicial para que el chatbot permanezca a la escucha de las
peticiones del usuario. Una vez arranca el servidor, la aplicación realiza la llamada al método listen
con el controlador quedando a la espera de una entrada del usuario.
A continuación, se describe paso a paso cada uno de los saltos que puede dar un mensaje o consulta
introducido por el usuario, hasta que se recibe una respuesta automatizada por el sistema lógico del
chatbot. Para ayudar a comprenderlo se adjunta el ciclo de vida de la petición en la figura 12.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
32
Descripción de la solución Propuesta
23 de junio de 2021
Respuesta rápida
Se permite la respuesta rápida tanto desde las funciones codificadas en el fichero Router como
desde el controlador o las conversaciones mediante el método reply. Estos envían el mensaje
directamente a la vista para mostrar al usuario. Si se está en el transcurso de una conversación, se
permite también el uso del método say, en este caso no es necesaria ninguna petición previa al
servidor.
Conversaciones
Para que el chatbot permanezca a la espera de una respuesta del usuario se debe crear una
conversación. Para la creación de modelos existe el método startConversation, que genera a partir
de la clase que se defina a tal efecto. Como se mencionó en el flujo de los mensajes entrantes, tras
aplicar el middleware se comprueba si hay una conversación en curso para retomarla. Con estas se
permite dar una respuesta más precisa recopilando información para que procese el chatbot y no
estar simplemente a la escucha de unas pocas palabras clave.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
33
Descripción de la solución Propuesta
23 de junio de 2021
La estructura de ficheros php para la aplicación del chatbot destinado a las consultas de la
plataforma Moodle queda de la siguiente manera.
Todas las clases php creadas se describen en los capítulos posteriores, cada una en la parte del
chatbot en la que operan. Indicando su funcionalidad dentro de la aplicación. Asimismo, se crea una
vista provisional previo a la implantación en la plataforma en el fichero index.blade.php mostrado
en el apartado 5 del anexo.
Recepción de middleware
Si por ejemplo se desea que el canal que emplee el chatbot para la comunicación sea Facebook o
Slack, es necesario dar formato al modelo para que sea reconocido por estas plataformas y a la
inversa.
Con el uso del middleware es posible además usar motores externos para el procesamiento de
palabras conocido como Procesado del Lenguaje Natural (PLN). Estas unidades externas de
procesamiento gestionan las palabras o frases enviadas devolviendo a la aplicación una intención
concreta que el chatbot procesará para dar respuesta. Entre ellas están algunas muy conocidas como
IBM Watson o Dialogflow pero ninguna totalmente gratuita a no ser que se utilice a través de su
canal de mensajería.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
34
Descripción de la solución Propuesta
23 de junio de 2021
4.4 Controlador
La lógica principal de funcionamiento del chatbot queda codificada en los controladores. Se crea un
controlador principal BotManController.php que gestionará el método de escucha y el momento en
que debe entrar en funcionamiento cada parte del chatbot.
Las consultas documentadas por el CAU hasta el momento se encuentran subdivididas en dos
grandes grupos alumnos y profesores. Por tanto, así se dividirá la aplicación a desarrollar,
permitiendo tener mayor control sobre el código y facilitando su posterior modificación. Por este
motivo, es necesario crear dos controladores secundarios StudentController.php y
TeacherController.php destinados a manejar únicamente su correspondiente modelo, las preguntas
frecuentes de estudiantes o profesores respectivamente.
Almacenamiento de usuario
En el controlador principal, se inicializan las variables por defecto que el chatbot tendrá al
comenzar. En la ubicación /storage/botman se crea el fichero JSON con la id como nombre y con
los campos role_info y fall_count. A continuación, hay un ejemplo del contenido de un fichero
generado con nombre a8b8d77a3ac3f65a1ce7d2d8cc442633d98a3d49.json
{"role_info":"student","fall_count":0}
Este último campo fall_count servirá para contabilizar el número de intentos realizados para una
pregunta que no está incluida en el contexto del chatbot. El otro campo será el destinado a guardar
la información del estudiante o profesor. Por defecto, se inicializa el campo role_info con el valor
student. Siendo el objetivo lograr mayor seguridad frente a usuarios que eludan contestar la
pregunta.
Función Fallback
Para todas las cuestiones que se consulten al chatbot que no estén relacionadas con el tema para el
que se desarrolla la aplicación, el entorno de Moodle, se define la función fallback, que entra en
funcionamiento cada vez que la entrada escrita por el usuario no existe. En el caso de que esto
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
35
Descripción de la solución Propuesta
23 de junio de 2021
ocurra, primero lee del almacenamiento de usuario el contador fall_count, e incrementa este antes
de compararlo con el límite máximo definido en FALLBACKMAX.
Si no se ha alcanzó aún el límite, se almacena el nuevo valor de contador y se despliega un mensaje
indicando que no comprende la entrada, ya que también se lanza este método en caso de simples
erratas que el usuario puede corregir y realizar de nuevo la consulta.
Inicio de la App
Para determinar inicialmente a qué grupo se pertenece, alumnos o profesores, al clicar en el icono
de despliegue del chatbot, directamente se comienza con un mensaje de bienvenida y lanzando la
llamada a la conversación donde consulta este rol ConversationWho.php. Esta información
únicamente se debe consultar la primera vez que se despliega la ventana del chat. Para asegurarse
de esto, se ha dispuesto un marcador startcounter en el controlador de modo que esta pregunta solo
se realice en una ocasión.
Al finalizar, queda a la espera de una entrada del usuario con el método listen. Siendo a partir de
ahora el controlador propio de cada grupo el que determinará la acción del chatbot.
Como diferenciar el rol es requisito cuando el chatbot responda una pregunta, se han creado dos
métodos dentro del controlador que acceden a los datos del usuario para comprobar este campo. Las
funciones isRoleStudent e isRoleTeacher son accesibles desde los controladores secundarios y
brindan una respuesta cordial indicando que no se dispone de la información cuando el rol no
coincide con el almacenado. Este mensaje con el que responde el chatbot es distinto del respondido
tras realizar una consulta que no existe y por tanto no entra en funcionamiento la función fallback ni
tampoco se incrementa su contador.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
36
Descripción de la solución Propuesta
23 de junio de 2021
Esta pregunta con respuesta mediante botones se ha creado como una conversación inicial
denominada ConversationWho.php. Se lanza desde el controlador principal la primera vez que se
despliega la ventana del chat y limita las respuestas del usuario a las dos opciones disponibles con
valores: student o teacher.
Para poder mantener una conversación mediante respuestas interactivas (botones en este caso), es
necesario cargar los métodos definidos en Actions\Button además de Question y Answer. En ellos
aparece ya definida la Vista de cómo se ha de mostrar en la respuesta http que visualiza el usuario
en la ventana del chat.
Tras pulsar una de las opciones se almacena el valor en los datos del usuario actualizando el fichero
JSON generado al iniciar la aplicación. A continuación, se lanza una nueva conversación que
variará en función del rol. TeacherMenu.php o StudentMenu.php son las dos opciones posibles que
comenzarán con el despliegue de la primera parte del chatbot, el desarrollado mediante un menú
contextual con las guías.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
37
Descripción de la solución Propuesta
23 de junio de 2021
Por lo que una vez se conoce el rol, antes de que el usuario realice preguntas, ya se muestra este
índice a cada colectivo con las áreas temáticas de las guías y recursos.
Seleccionando cualquiera de estos primeros botones de temática aparece un nuevo listado, también
con la opción de pulsar sobre los mismos. Con las guías organizadas como se estudió en las
consultas recibidas título 3.3 y como se muestra de forma completa en el punto 1 del anexo para los
estudiantes y en el punto 2 del anexo para los profesores.
En estos submenús se ha implementado además un botón con la opción de ir atrás que permite
moverse entre las distintas áreas sin necesidad de finalizar el asistente de las guías y recursos. Una
vez finalizada la consulta de cualquiera de las guías, se pregunta de nuevo al usuario para continuar
mostrando el último menú o submenú expuesto. En caso de no continuar, pasa a funcionar la otra
parte del chatbot.
El uso de botones para realizar preguntas facilita en gran medida la capacidad de decisión del
chatbot, pero implica que el usuario va a tener la opción de pulsar o no pulsar dichos botones. Por
consiguiente, se debe contemplar la posibilidad de que continúe escribiendo ignorando la pregunta
si el tema que se le ofrece no resuelve su duda. Cuando esto suceda, la respuesta recibida no se
generará en forma interactiva. Por el contrario, esto dará lugar a que se finalice la función que
despliega la pregunta y el chatbot informará al usuario para que continúe.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
38
Descripción de la solución Propuesta
23 de junio de 2021
Esto requiere que se debe finalizar la conversación actual para que la entrada pase a ser gestionada
por el controlador AIML del chatbot. Para ello una vez enviada la pregunta queda a la espera de una
entrada interactiva que presente uno de los valores ofrecidos y si esto no sucede, retorna de la
función dando paso a la otra parte del chatbot.
Cuando se escoge una de las opciones del submenú, la información puede venir dada simplemente
por unas pocas frases de texto. En ese caso el chatbot hablará por la ventana del chat dando las
indicaciones oportunas igualmente mediante texto. Sin embargo, la mayor parte de la información
contenida en los recursos viene dada por enlaces a documentos externos alojados en servidores de la
UPM. Pueden ser tanto ficheros de texto o como videos con estas instrucciones.
Cuando la respuesta del chatbot sea un video, audio o documento es necesario crear un adjunto y
empaquetarlo con la respuesta al generar el mensaje saliente. En la ventana del chat se mostrará este
recurso permitiendo su reproducción o descarga tal como se muestra en la figura siguiente.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
39
Descripción de la solución Propuesta
23 de junio de 2021
Una vez se ha almacenado el valor del rol que determina si el usuario es un profesor o un
estudiante, se pueden comparar las palabras clave que dispone cada uno de estos grupos. Es ahora
cuando se requiere el uso de la AIML del chatbot.
Las preguntas a las que el chatbot responde son únicamente las relacionadas con los campos de
conocimiento que abarca la plataforma Moodle, divididas según el rol. A partir de las cuestiones
incluidas en las FAQ de Moodle (desglosadas en el apartado 3.3) se determinan las siguientes
entradas a las que se deberá dar respuesta de forma individual a cada cuestión. Se logra así
proporcionar una atención personalizada para los distintos problemas que puedan consultarse.
Cada pregunta que el usuario puede realizar tiene una intención, y para cada una de ellas se ha
implementar un método que solvente la duda del usuario de forma satisfactoria.
Las intenciones de cada una de las cuestiones será lo que el chatbot deba ser capaz de diferenciar
por lo que se buscan distintas formas y combinaciones de expresar las mismas ideas. Además de
coincidir con la descripción exacta, debe ser capaz de distinguir otras expresiones habituales para la
misma consulta y así determinar la información necesaria de cada entrada del usuario para presentar
la respuesta adecuada.
A continuación, se muestra un ejemplo (tabla 3) con detalle de los incluidos en la tabla 4 con las
funciones que se lanzan desde el controlador TeacherController.php. Siguiendo las pautas recién
descritas se analizan las consultas comenzando con la primera intención indicada en la tabla, que
lleva al resultado de “Solicitudes de altas y bajas de asignaturas o cursos en la Plataforma de
Telenseñanza”. De ella se tratan de extraer las intenciones identificando los verbos, sujetos y
adjetivos.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
40
Descripción de la solución Propuesta
23 de junio de 2021
Solicitud
Alta / Baja Acción
Asignatura / Curso Objeto
Plataforma de Telenseñanza
Escogiendo únicamente las palabras relevantes para el resultado necesario, es posible descartar
parte del mensaje que introducirá el usuario y mostrarle la respuesta solo conociendo la acción que
quiere realizar y a qué objeto quiere aplicarla. A partir de esto se logra que, independientemente de
las conjunciones y otras palabras intermedias que contenga la frase, se pueda ofrecer una respuesta.
Una de las acciones a realizar en el ejemplo es “alta”, en un lenguaje coloquial como el que va a
emplearse en la comunicación con el chatbot hay que valorar otras formas de expresar la misma
intención de realizar la acción. Por lo que se buscan sinónimos: crear, inscribir, añadir o agregar que
para el objeto al que se aplicarían tienen similar significado. Esta acción que realizar sobre un
objeto o intención del usuario ha de definirse de forma inequívoca confirmando qué intenciones que
se codifiquen posteriormente no se asemejen y hagan que el chatbot responda con ambos
resultados.
Definiendo de este modo las palabras clave que el chatbot reconocerá, se puede con preguntas
completamente diferentes, hacer que el chatbot devuelva la misma respuesta.
Con el estudio detallado de las palabras clave que indican la intención del usuario, es posible con la
lógica del chatbot, ofrecer una ayuda instantánea. Como se ve en estas tres preguntas (figuras 19, 20
y 21) realizadas al chatbot que siendo completamente diferentes entre ellas comparten una
intención, la de realizar cambios en cursos de Moodle.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
41
Descripción de la solución Propuesta
23 de junio de 2021
A continuación, organizado en tablas se analiza cada una de estas cuestiones buscando la mejor
forma de captarla.
Comenzando con las preguntas frecuentes de profesores se muestra la intención en primera línea, y
bajo la misma, las palabras a usar con Markup Languaje.
Estas palabras cuando se encuentran en la misma casilla separadas por | implica que se
aceptará cualquiera de las opciones.
Cuando para una misma intención se desglosan sus palabras en más de una casilla es
requisito que contenga al menos una por cada casilla.
En caso de palabras rodeadas por ( ) se tomarán dos, la palabra que acompañe fuera del
paréntesis junto con la de dentro.
Puede contener otras palabras entre cualquiera de las casillas, así como al principio y final.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
42
Descripción de la solución Propuesta
23 de junio de 2021
Tabla 6. Participantes.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
43
Descripción de la solución Propuesta
23 de junio de 2021
También en el apartado 3 del anexo se encuentran las funciones para el Markup Language de las
preguntas frecuentes de alumnos que emplean las mismas reglas indicadas para la tabla de palabras
clave explicadas.
Estas palabras son empleadas en los métodos hears implementados en los ficheros de entrada
contenidos en la carpeta routes. Estos ficheros actúan como un puntero único para el
reconocimiento de palabras del chatbot. Nuevamente se requiere que estas entradas estén separadas
en los dos colectivos que reconoce el sistema: profesores y alumnos. Así se crean nuevos ficheros
uno destinado a profesores BotmanTeacher.php y otro distinto para los alumnos
BotmanStudent.php.
Para localizar y comparar las entradas, se modifica el fichero de origen en el que las busca. Estas
palabras clave a las que el chatbot debe estar atento son mapeadas inicialmente con la primera carga
y quedan definidas en el archivo RouteServiceProvider.php ubicado en /app/Providers.
/**
* Define the routes for the application.
* @return void */
public function map(){
$this->mapApiRoutes();
$this->mapWebRoutes();
$this->mapBotManTeacherCommands();
$this->mapBotManStudentCommands();
}
Estos serán los únicos “comandos” a los que el chatbot responda pues por seguridad el usuario no
tiene acceso a ninguna capa del código.
La respuesta a cada una de las combinaciones que se han determinado se realiza con un método
distinto en cada una. Haciendo uso de los controladores secundarios StudentController.php y
TeacherController.php.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
45
Descripción de la solución Propuesta
23 de junio de 2021
Al darse una coincidencia en las palabras de entrada, se lanza la llamada a la función del
controlador correspondiente. En el controlador la primera acción a realizar es comprobar que el rol
se corresponde con el autorizado a realizar esa consulta. Haciendo uso de la función definida en el
controlador principal isRoleStudent o isRoleTeacher se comprueba, y solo continuará dando la
información si el valor retornado es true.
A diferencia de la parte del chatbot que contenía las guías y tenía una gran cantidad de recursos en
archivos externos, la mayor parte de preguntas a las que puede responder se puede mostrar con unas
pocas líneas de texto en la ventana del chat. Se definen por tanto dentro del propio controlador
secundario mejorando la velocidad de procesamiento al mostrar la respuesta. Siendo en ocasiones la
respuesta unas instrucciones o bien enlaces a páginas externas, así como ficheros pdf o incluso
videos con estas instrucciones. Para todos estos casos la respuesta se envía directamente desde este
controlador sin acceder a otros contenidos.
Por tanto, todas las cuestiones que por su longitud de caracteres no se puedan mostrar en una
pequeña ventana de chat. Y asimismo todas las cuestiones que requieran una acción por parte del
usuario, serán dirigidas a conversaciones fuera del controlador siguiendo el modelo que requiera
cada una.
En caso de que la respuesta requiera de alguna acción más para completar la información que le
brinda el chatbot, se inicia una conversación. Con esto se permite que el chatbot esté a la escucha
del canal, pero no a través del método hears ya mapeado, sino que la entrada que reciba del usuario,
la gestionará volviendo a la conversación actual en la línea donde se había desplegado la consulta.
El controlador destinado a solventar las cuestiones de los alumnos recoge las funciones llamadas
desde botmanStudent.php. A diferencia de las del profesor, estas únicamente deben dar respuestas
sencillas en forma de indicaciones o enlaces por lo que no requiere la creación de otros modelos de
conversaciones.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
46
Descripción de la solución Propuesta
23 de junio de 2021
Posteriormente se ofrece en un menú con botones la posibilidad de acceder a los formularios para
“Asignaturas de enseñanzas oficiales” o “Cursos de estudios propios” junto la opción de terminar
esa conversación sin mostrar ninguno de ellos.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
47
Descripción de la solución Propuesta
23 de junio de 2021
Procesa los mensajes entrantes en un proceso denominado canalización, donde los separa en
intenciones y entidades que la aplicación pueda reconocer [40]. Sin embargo, es necesario entrenar
al motor con preguntas para ser capaz de diferenciar cada una de ellas.
El manejo aplicado al chatbot es el mismo que para otras fuentes de procesamiento del lenguaje
como Dialogflow o IBMWatson. Para adaptar el chatbot actual en un futuro únicamente es
necesario habilitar el middleware para enviar y recibir los mensajes de esta fuente. De este modo al
recibir un mensaje entrante el chatbot no emplea la AIML para el reconocimiento de palabras clave,
sino que antes de aplicar los métodos para reconocer estas palabras se envía el mensaje completo al
motor externo de Rasa NLU. El Procesamiento Natural del Lenguaje que Rasa aplica, devolverá el
mensaje entrante cambiando el lenguaje humano por datos estructurados [41] adaptados a la
aplicación del chatbot. Por tanto, mediante campos adicionales al mensaje entrante Rasa deja
separada la intención, acción, repuesta u otros. Y serán estos campos los que activen las funciones
codificadas para las respuestas.
En el fragmento del middleware para Rasa mostrado a continuación, se puede apreciar la nueva
estructura que la aplicación gestionará [42].
$reply = isset($response->result->speech) ?
$response->result-> speech : '';
$action = isset($response->result->action) ?
$response->result-> action : '';
$intent = isset($response->result->metadata->intentName) ?
$response->result->metadata->intentName : '';
$parameters = isset($response->result->parameters) ?
(array) $response->result->parameters : [];
$message->addExtras('apiReply', $reply);
$message->addExtras('apiAction', $intent);
$message->addExtras('apiIntent', $intent);
$message->addExtras('apiParameters', $parameters);
}
Figura 25. Middleware script para Rasa.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
48
Descripción de la solución Propuesta
23 de junio de 2021
Un widget es una pequeña aplicación [43] que se puede incrustar en la página web. Al pulsar sobre
el icono (figura 26) para desplegarlo muestra por encima de la propia página una ventana de chat
con la que interactuar. A diferencia de php el javascript se ejecuta en el lado del cliente y permite
integrar otras funcionalidades como características interactivas en la web.
El chatbot va a resolver cuestiones de una página web por lo que se determina que se pueda lanzar
directamente a través del WebWidget. El widget cuenta además con una API capaz de recibir
mensajes enviados desde la web a partir de lenguaje html. Dispone de unos métodos específicos
para el widget que permiten el envío de mensajes por parte del chatbot o del usuario, así como la
posibilidad de abrir o cerrar la ventana.
De entre las posibilidades que ofrece se encuentra el método whisper. Esta función en la que se
“susurra” al chatbot como si un usuario escribiera en la ventana de texto resulta muy útil para
ampliar información dentro de Moodle. Se puede programar cualquier enlace html de la web donde
esté incrustado para que además de realizar la función codificada propia de Moodle active el
método whisper. Si por ejemplo se habilita para que al pulsar susurre “alta de asignatura” la ventana
del chatbot se abre directamente dando esa información sin necesidad de escribir texto alguno.
Además de estos métodos, también es posible customizar vía CSS varios de los parámetros iniciales
previos a la carga del widget codificado en javascript. Se puede determinar el color, tamaño, fondo
y muchas más características para personalizarlo y customizarlo.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
49
Resultados
23 de junio de 2021
5 Resultados
Una vez descargado en el servidor se crea una carpeta para contener el proyecto. En la carpeta
Chatina, nombre con que se bautiza a la versión Beta del chatbot, se procede a la instalación de la
aplicación. El proyecto se genera empleando la última versión de Botman Studio v1.5 que ya
incluye las dependencias necesarias de Laravel permitiendo la instalación sin necesidad de incluir
archivos no destinados al chatbot. En la captura de la instalación se pueden ver los paquetes de
Symfony necesarios y algunos más de otros servicios necesarios para esta aplicación.
Se continua con la creación de la aplicación con la instrucción indicada arriba, una vez terminado el
proceso, se arranca el servidor que aloja el bot para la prueba inicial.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
50
Resultados
23 de junio de 2021
Accediendo a través de un navegador web a la dirección y puerto local indicados se puede ver la
página de inicio por defecto desde donde comenzar a usar el chat. En esta página codificada en
html, el desarrollador da acceso a varios enlaces de los que destaca Tinker [46], una consola de
comandos proporcionada por Laravel que permite desde el primer momento la comunicación con el
chatbot. Esta consola facilita la realización de pruebas dado que no necesita la integración en el
servidor de un servicio de mensajería. Incluye también los drivers web para poder usarlo desde el
navegador.
Mediante el servicio de Tinker se comienza con la prueba del reconocimiento de palabras clave.
Saludando con “Hi” responde “Hello”.
Cuando se solicita comenzar con la conversación inicial de prueba mediante “Start conversation”,
se despliega una pregunta con dos posibilidades de respuesta. Mostrando ambas opciones con
botones que parecen no responder al pulsar sobre ellos.
Tras varias pruebas se determina que ni la versión de php 7.4 ni la 7.3 son compatibles con el
despliegue de los botones de las preguntas por lo que se realiza un downgrade a la versión 7.2 ya
verificada como estable [47] para el uso de Botman 2.0. Finalmente se opta por instalar la versión
7.2.3 de php ya que es la más novedosa de las verificadas. Para ello se desinstala la versión de
Xampp inicial y se descarga un nuevo instalador para xampp-windows-x64-7.2.30-0-VC15 [48]
para repetir posteriormente el proceso de instalación descrito de Composer y Botman Studio. Con
esto se soluciona el problema de activación de los botones.
A partir de aquí ya queda listo el chatbot para comenzar con la codificación de las funciones
descritas. Es posible deshabilitar Tinker una vez finalizadas las pruebas eliminando la ruta en el
fichero routes/web.php.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
51
Resultados
23 de junio de 2021
Hace uso de html, lenguaje de programación habitual en la realización de páginas web. En esta vista
implementada se incluye en la cabecera el título junto con las fuentes y colores a emplear en el
cuerpo. También, se incluye una breve descripción de la aplicación con enlaces directos a las FAQ
de Moodle y un enlace que permite desplegar la ventana de mensajería con el chatbot.
Uno de los requisitos del proyecto se basa en que hay que partir de un primer paso que consiste en
preguntar al usuario cuál es su relación de pertenencia a uno u otro grupo y a partir de ahí el chatbot
va a recurrir a las preguntas realizadas con anterioridad para proporcionar las respuestas pertinentes.
Para poder implementar esta acción al inicio, ha sido necesario incluir una función previa a la carga
del chatbot de la web, ya que por sí solo únicamente es capaz de responder a cuestiones
previamente realizadas por el usuario. Así se ha resuelto a partir de una palabra inicial “Hola” que
activa la conversación del chat.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
52
Resultados
23 de junio de 2021
En el mismo cuerpo del fichero se incluyen los parámetros iniciales para la configuración del
widget. Para esta prueba únicamente se configuran algunos de ellos:
Una vez se cargan todos los parámetros iniciales se incrusta en la página la llamada al widget
alojado por el autor de Botman en JSDelivr [49] un CDN (Content Delivery Network o Red de
Distribución de Contenido) gratuito y de código abierto que permite mejorar el tiempo de latencia.
Una CDN es una red de servidores repartidos por distintos puntos del planeta que cargan el
contenido solo desde el servidor más rápido y cercano al usuario final. Esto permite acceder
directamente al widget del servidor que mejor tiempo de latencia provee en función de nuestra
ubicación al acceder a la página web, acelerando la velocidad de respuesta del chatbot.
Con el widget operativo listo para mantener una conversación con Chatina, se comprueba que
funcionan todas las partes de este. Tanto los botones del menú contextual como distintas formas de
realizar consultas. Para esta última se configuró una prueba con las frases detalladas a continuación.
//Cambio de la fotografía
Me gustaría cambiar mi foto
Quiero cambio de la fotografía de Moodle
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
53
Resultados
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
54
Resultados
23 de junio de 2021
//Gestión de calificaciones
Necesito realizar una gestión con una nota
Cómo podría gestionar unas calificaciones de mi grupo
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
55
Resultados
23 de junio de 2021
Tras probar el chatbot con todas estas cuestiones se amplió el vocabulario que es capaz de
reconocer, mejorando su capacidad de respuesta principalmente con el uso del lenguaje coloquial.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
56
Resultados
23 de junio de 2021
5.3 Creación de una máquina virtual para alojar el servidor del chatbot
Con el objetivo de exportar con facilidad la aplicación y poder alojarla en cualquier ubicación se
decide generar con Virtual Box una máquina virtual con Windows y dejar instalados todos los
componentes que se detallaron en apartados anteriores. Se crea durante la instalación un usuario con
permiso de administrador y contraseña tfg.
Tras iniciar la máquina creada se precisa la instalación de Xampp como se citó anteriormente, que
incluye un servidor Apache capaz de interpretar php. Finalizado este paso se copian los ficheros de
la aplicación creada y en la ventana de comandos se actualiza mediante el comando composer
update.
A través de una ventana del explorador y accediendo a la ruta del servidor local
http://127.0.0.1:8000 se puede ver la página principal creada y el widget que inicia la aplicación del
chatbot.
En el fichero StartBotServer.bat se han creado unos comandos para la consola que inician el
servidor de Artisan solo con hacer doble clic sobre el icono del escritorio. Así puede ser iniciado
por cualquier persona, aunque no tenga conocimientos de programación.
Con este programa en unas sencillas líneas, se logra abrir una ventana con el símbolo del sistema,
que de forma automática cambia la ruta actual por la del chatbot instalado. Una vez en ella, arranca
el servidor que gestiona el chatbot creado Chatina.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
57
Planos
23 de junio de 2021
6 Planos
El proyecto realizado se puede desglosar en varias partes que se describen a continuación con el fin
de facilitar el manejo diario y poder realizar futuras modificaciones de forma sencilla y ordenada.
Comenzando por el chatbot basado en menú contextual mediante botones con las cuestiones
planteadas con mayor frecuencia. En primer lugar, se muestra el correspondiente al rol de alumnos,
quedando desglosado su menú contextual en el punto 6.1. En primera fila se ven las tres áreas
temáticas disponibles para este colectivo, de la que parten las cuestiones para las que tiene una
respuesta rápida.
A continuación, el menú contextual para profesores en el punto 6.2. Este menú contiene, además de
las cuestiones que parten de las áreas del índice inicial, otros submenús principalmente del apartado
de “dudas habituales y miniguías”.
También se incluye el flujo que siguen las conversaciones una vez queda definido y almacenado el
rol. Diferenciando el perteneciente al chatbot de menú contextual (apartado 4.6) y el de AIML
(apartado 4.7), permiten comprender mejor el funcionamiento del chatbot cuando se realizan
llamadas a funciones de distintos ficheros empleados por la aplicación.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
58
Planos
23 de junio de 2021
Videotutorial Moodle:
Calificaciones
Videotutorial Moodle:
Tareas
Videotutorial Moodle:
Cuestionarios
Videotutorial Moodle:
Mensajes
Videotutorial Moodle:
Wikis
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
59
Planos
23 de junio de 2021
INFOGRAFÍA -
Herramientas de Moodle para
Novedades de Moodle 3.5 Nuevas miniguías
la clase invertida (Flipped
classroom)
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
60
Planos
23 de junio de 2021
Revisión de originalidad
Preguntas de Cuestiones básicas de
de trabajos y documentos
cuestionarios Moodle funcionamiento
(Turnitin)
¿Cómo interpretar un
Arrastrar y soltar ¿Cómo dar acceso a los
trabajo de similitud?
marcadores alumnos a mi asignatura?
(Estudiantes)
Emparejar
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
61
Planos
23 de junio de 2021
Gestión de alumnos y
Calificaciones Contenido
profesores
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
62
Planos
23 de junio de 2021
¿Cómo importar
preguntas a una ¿Cómo mandar
asignatura o crear mensajes a los
preguntas de forma alumnos?
rápida?
¿Cómo realizar
¿Cómo escribir
consultas a los
fórmulas en las
alumnos (revisiones de
preguntas de tipo
exámenes, prácticas,
Calculada?
etc.)?
¿Cómo insertar
mensajes de Twitter en
una asignatura?
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
63
Planos
23 de junio de 2021
ChatinaController.php
TeacherMenu.php
StudentMenu.php
isRoleStudent
chatinaStudent.php StudentController.php
isRoleTeacher
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
64
Presupuesto
23 de junio de 2021
7 Presupuesto
La elaboración de un proyecto como el que se aborda aquí exige tener en cuenta qué presupuesto se
va a necesitar para llevarlo a cabo. Con este objetivo se contemplan a continuación una serie de
parámetros que se consideran pertinentes para ello.
En este caso se trata de desarrollar una aplicación con una finalidad no comercial; el chatbot es
producto de este proyecto de investigación académica y su carácter es servir a la comunidad
educativa. Por este motivo se han buscado el máximo de opciones disponibles que empleen
licencias libres de código abierto. Con ello se pretende optimizar el resultado persiguiendo la
máxima eficiencia con el presupuesto lo más ajustado que sea posible.
Con el fin de poder dar una cifra factible en cuanto a costes se ha realizado un análisis de los
diferentes elementos que deberán tenerse en cuenta y que consisten esencialmente en tres grandes
bloques: personal, hardware y software.
Recursos Humanos
El personal necesario tanto para la implementación del chatbot como para su mantenimiento deberá
ser seleccionado y contratado de acuerdo con la normativa recogida por la legislación aplicable al
personal al servicio de las Administraciones Públicas mediante la fórmula que la UPM considere
más adecuada en este caso. O bien se podrá integrar dentro del servicio ya existente (GATE), lo que
requerirá como mínimo un nivel salarial B2.
Para poder presentar aquí un coste evaluable numéricamente, vamos a considerar la cantidad de
horas de trabajo que deberán emplearse en el desarrollo del chatbot, de su integración en Moodle y
de su mantenimiento. La estimación que se ha previsto es de cuatro meses para la implementación y
después, aparte el tiempo de mantenimiento que será una labor a tiempo parcial. Se proponen unas
300 horas para realizar un cálculo aproximado y poder tener un punto de partida.
A los costes resultantes, se añade la cotización a la Seguridad Social de dichos empleados que se
estima ascenderá a un 30% aproximadamente de sus sueldos brutos.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
65
Presupuesto
23 de junio de 2021
Hardware
Los costes de los equipos hardware necesarios para el desarrollo y el servidor que alojará la
aplicación. En el que este último dependerá de la cantidad de consultas máximas concentradas en un
mismo momento, en el que se haga mayor uso del procesador.
El objetivo de la aplicación es que pueda ir alojada en el mismo servidor que la página web del
GATE y la plataforma Moodle que ya tienen previsto un flujo elevado de usuarios y recursos
destinados a tal fin. Por lo que en este sentido no tendrá un coste directo asociado para su
implementación.
Para la fase de desarrollo no es necesario un equipo de gran potencia, pero sí que al menos permita
virtualizar para la creación de máquinas virtuales. Para una instalación realizada en Windows 10
con 1Gb y un núcleo se puede tener integrado el chatbot. El tamaño asignado en el disco duro
dependerá principalmente del tamaño del servidor php que se instale, siendo más ligero en
distribuciones de Linux. La aplicación del chatbot con todas las funcionalidades no alcanza el
tamaño de 50Mb lo cual permite la posibilidad de poder ser instalado en cualquier ordenador,
aunque se recomienda dar al menos 100Mb para permitir futuras ampliaciones.
Software
Coste derivado de las licencias de los programas software y de los consumibles que se han
utilizado. Puesto que el objetivo de esta aplicación es el uso en un centro de enseñanza público, se
buscó en todo momento que los componentes de software empleados no requiriesen la adquisición
de licencia por su uso. Todos los componentes empleados en este proyecto son por tanto de
distribución libre y gratuita. Así se permite hacer todas las modificaciones necesarias que se
requieran para su mantenimiento o configuración.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
66
Presupuesto
23 de junio de 2021
Diseño
7849,60€
704 horas * 11,15€/h (4 meses)
Implantación
3345,00€
300 horas * 11,15€/h
Mantenimiento y actualizaciones
3345,00€
300 horas * 11,15€/h
Total 18901,48€
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
67
Conclusiones
23 de junio de 2021
8 Conclusiones
La filosofía actual se está orientando a la creación de agentes para la resolución de consultas que
puede utilizar cualquier persona sin conocimientos previos. Se crea un agente para cada intención
que se entrena con consultas recibidas y mejora cuanto más se aumente su base de datos.
Empleando motores de IA como Dialogflow o IBM Watson hay que pagar unas cantidades que se
pueden disparar si crece el número de consultas realizadas pues que factura en función del total
estas. Con lo que, para la implantación actual y los requisitos de la aplicación en la plataforma de
telenseñanza que únicamente responden cuestiones relacionadas con esta, resulta más eficiente
emplear AIML.
Se ha logrado crear un chatbot para dar respuesta a las consultas de Moodle que existen en la
actualidad. Para esto se hace uso de dos de los tipos de chatbot que se indicaban al comenzar, el
basado en menú contextual y el basado en AIML. Comienza con un despliegue por áreas de las
guías disponibles para consultar para lo que primero se consulta el rol del usuario que activa la
aplicación. Cuando en estas guías no se encuentre la respuesta, el chatbot pasa a permitir la
realización de las preguntas breves.
De cara al futuro, está preparado para cuando se desee ampliar añadiendo un motor de NLU. Todos
los métodos implementados son válidos para cualquier motor externo y bastará con hacer coincidir
las palabras del Mark Up Language con los intents y objects que devuelva el motor. De este modo y
simplemente cambiando su activación para que sea a través del middleware, el chatbot pasará a
analizar las consultas con el diccionario habilitado en lugar de hacerlo a través de las palabras clave.
Dada la trayectoria en alza que están teniendo los asistentes virtuales, en cuestión de muy poco
tiempo los motores gratuitos para NLU como Rasa tendrán diccionarios amplios y probados
también para el castellano.
Con esta aplicación desarrollada se abre a la plataforma educativa una posibilidad de mejora
permitiendo destinar los recursos, ahora parados en solventar dudas, para avanzar en otras áreas de
la plataforma.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
68
Referencias
23 de junio de 2021
9 Referencias
[2] Laravel, “The PHP Framework for Web Artisans”. [En línea]. Disponible en:
https://laravel.com. [Consultado: 7/05/2021].
[4] “Apache HTTP Server Project”, The Apache Software Foundation, 2021. [En línea]. Disponible
en: https://httpd.apache.org/. [Consultado: 7/05/2021].
[5] Pociot, M. “BotMan - The PHP messaging and chatbot library”, Botman.io, 2020. [En línea].
Disponible en: https://botman.io/. [Consultado: 03/05/2020].
[6] “La sorprendente y poco conocida historia de Eliza, el primer bot conversacional de la historia -
BBC News Mundo”, BBC News Mundo, 2018. [En línea]. Disponible en:
https://www.bbc.com/mundo/noticias-44290222. [Consultado: 02/09/2020].
[7] “Evolución de los Chatbots”, Medium, 2017. [En línea]. Disponible en:
https://planetachatbot.com/evoluci%C3%B3n-de-los-chatbots-48ff7d670201. [Consultado:
02/09/2020].
[8] Fernández, Y. “Así era ELIZA, el primer bot conversacional de la historia”, Xataka.com, 2017.
[En línea]. Disponible en: https://www.xataka.com/historia-tecnologica/asi-era-eliza-el-primer-bot-
conversacional-de-la-historia. [Consultado: 02/09/2020].
[9] “AIML Docs”, Aiml foundation, 2018. [En línea]. Disponible en:
http://www.aiml.foundation/doc.html. [Consultado: 12/05/2020].
[10] “What is a Chatbot? All you need to know about Chatbots Botpress”, Botpress.com, 2020. [En
línea]. Disponible en: https://botpress.com/learn/what-is-a-chatbot. [Consultado: 26/04/2020].
[11] “¿Qué tipos de chatbots existen?”, Medium, 2017. [En línea]. Disponible en:
https://planetachatbot.com/tipos-de-chatbots-40682128324. [Consultado: 26/04/2020].
[12] Phillips, C. “The 3 Types of Chatbots & How to Determine the Right One for Your
Needs”, Medium, 2018. [En línea]. Disponible en: https://chatbotsmagazine.com/the-3-types-of-
chatbots-how-to-determine-the-right-one-for-your-needs-a4df8c69ec4c. [Consultado: 26/04/2020].
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
69
Referencias
23 de junio de 2021
[17] González, E. “¿Qué es PHP? y ¿Para qué sirve? Un potente lenguaje de programación para
crear páginas web. (CU00803B)”, Aprenderaprogramar.com, 2021. [En línea]. Disponible en:
https://www.aprenderaprogramar.com/index.PHP?option=com_content&view=article&id=492:ique
-es-PHP-y-ipara-que-sirve-un-potente-lenguaje-de-programacion-para-crear-paginas-web-
cu00803b&catid=70&Itemid=193. [Consultado: 09/05/2021].
[19] “Botkit: Building Blocks for Building Bots | Botkit Documentation”, Botkit.ai, 2019. [En
línea]. Disponible en: https://botkit.ai/docs/v4/. [Consultado: 28/04/2020].
[20] Bot Framework, “Logotipo Bot Framework”. [En línea]. Disponible en:
https://www.esterea.com/wp-content/uploads/2018/05/microsoft-bot-framework-300x131.png.
[Consultado: 09/05/2021].
[21] Microsoft Build, “Bot Framework Composer documentation”. [En línea]. Disponible en:
https://docs.microsoft.com/en-us/composer. [Consultado: 28/04/2020].
[22] “Tutorial para crear un servicio bot-bot básico - Bot Service”, Docs.microsoft.com, 2020. [En
línea]. Disponible en: https://docs.microsoft.com/es-es/azure/bot-service/bot-builder-tutorial-create-
basic-bot?view=azure-bot-service-4.0&tabs=csharp%2Cvs. [Consultado: 10/12/2020].
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
70
Referencias
23 de junio de 2021
[24] Google Cloud, “Building and deploying a chatbot by using Dialogflow (overview)”. [En línea].
Disponible en: https://cloud.google.com/solutions/building-and-deploying-chatbot-dialogflow.
[Consultado: 05/01/2021].
[25] Bot Libre, “Logotipo bot libre”. [En línea]. Disponible en:
http://es.botlibre.com/images/banner.png. [Consultado: 09/05/2021].
[26] Botlibre, “Bot Libre - El código Abierto chatbot e inteligencia artificial de la plataforma”. [En
línea]. Disponible en: http://es.botlibre.com/. [Consultado: 05/01/2021].
[27] Botman.io, “Logotipo Botman”. [En línea]. Disponible en: https://botman.io/. [Consultado:
09/05/2021].
[29] “Qué es Composer y cómo usarlo”, Styde.net, 2019. [En línea]. Disponible en:
https://styde.net/que-es-composer-y-como-usarlo/. [Consultado: 20/12/2020].
[31] “Laravel vs Symfony ¿Cuál es mejor para mi organización?”, ITDO Desarrollo web y APPs,
Barcelona, 2021. [En línea]. Disponible en: https://www.itdo.com/blog/Laravel-vs-symfony-cual-
es-mejor-para-mi-organizacion. [Consultado: 20/12/2020].
[32] Cloud Savvy IT, “Esquema Modelo Vista controlador”. [En línea]. Disponible en:
https://www.cloudsavvyit.com/p/uploads/2019/08/3b3431f3-9.png. [Consultado: 20/12/2020].
[33] Heddings, A. “What Is Laravel, And How Do You Get Started with It?”, Cloudsavvyit.com,
2020. [En línea]. Disponible en: https://www.cloudsavvyit.com/1535/what-is-Laravel-and-how-do-
you-get-started-with-it/. [Consultado: 20/12/2020].
[34] Monteiro, F. “Hands-On Full Stack Web Development with Angular 6 and Laravel 5”, Packt
Publishing, 2018. [En línea]. Disponible en:
https://subscription.packtpub.com/book/web_development/9781788833912/1/ch01lvl1sec11/the-
basic-architecture-of-laravel-applications. [Consultado: 05/01/2021].
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
71
Referencias
23 de junio de 2021
[38] Rasa, “Rasa Docs”. [En línea]. Disponible en: https://rasa.com/docs/rasa/. [Consultado:
22/01/2021].
[39] Greyling, C. “Cómo crear una API NLU de código abierto con Rasa”, Medium, 2020. [en
línea]. Disponible en: https://planetachatbot.com/como-crear-api-nlu-de-codigo-abierto-con-rasa-
24ec4b0c7507. [Consultado: 20/12/2020].
[40] Rasa, “Open source conversational AI”. [En línea]. Disponible en: https://rasa.com/.
[Consultado: 05/01/2021].
[42] “RasaNLU middleware for BotMan”, Gist, 2021. [En línea]. Disponible en:
https://gist.github.com/mpociot/9cceede99361570b371665bdc35ff158. [Consultado: 05/01/2021].
[46] “Tinker, la consola de comandos de Laravel”, Styde.net, 2015. [En línea]. Disponible en:
https://styde.net/Tinker-consola-de-comandos-en-Laravel/. [Consultado: 05/01/2021].
[47] “Interactive Message buttons not working · Issue #50 · botman/driver-slack”, GitHub, 2019.
[En línea]. Disponible en: https://github.com/Botman/driver-slack/issues/50. [Consultado:
05/01/2021].
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
72
Referencias
23 de junio de 2021
[49] Jsdelivr, “A free CDN for Open Source”. [En línea]. Disponible en: https://www.jsdelivr.com/.
[Consultado: 09/05/2021].
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
73
Anexo
23 de junio de 2021
Anexo
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
74
Funciones menú contextual alumnos
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
75
Funciones menú contextual alumnos
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
76
Funciones menú contextual alumnos
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
77
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
78
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
79
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
80
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
81
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
82
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
83
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
84
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
85
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
86
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
87
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
89
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
90
Funciones menú contextual profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
91
Funciones Markup Language Alumnos
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
92
Funciones Markup Language Alumnos
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
93
Funciones Markup Language Alumnos
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
94
Funciones Markup Language Alumnos
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
95
Funciones Markup Language Alumnos
23 de junio de 2021
Alumnos:
En Politécnica Virtual: Formación \ Moodle\ Ayuda
Directamente en:
https://www.UPM.es/politecnica_virtual/login.UPM?c=1692A
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
96
Funciones Markup Language Profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
97
Funciones Markup Language Profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
98
Funciones Markup Language Profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
99
Funciones Markup Language Profesores
23 de junio de 2021
Tema Participantes
Función alumnoErasmus()
Consulta Alumnos de intercambio (SÉNECA / ERASMUS ...)
Activación participante|alumno seneca|erasmus
Respuesta Los alumnos de intercambio (SÉNECA / ERASMUS etc) deben
solicitar su cuenta institucional de correo en la dirección
http://www.UPM.es/institucional/Estudiantes/Servicios_Red/email/Ge
stioncorreo
Tema Participantes
Función asignaturaDosSemestes()
Consulta Alumnos de asignaturas impartidas en los dos semestres
Activación asignatura dos|2 semestre
Respuesta Existen dos posibilidades:
1. Si desea que los dos grupos de alumnos del primer y del segundo
semestres compartan el mismo espacio, comunique al GATE, el grupo
de matrícula perteneciente al 2º semestre, mediante solicitud
disponible en Politécnica Virtual (Docencia_Formación / Docencia /
Mis solicitudes académicas / Servicio de Telenseñanza) o,
directamente, en
https://www.UPM.es/politecnica_virtual/login.UPM?c=2007DJ
2. Si desea que los dos grupos de alumnos no compartan el mismo
espacio solicite un espacio nuevo para el segundo semestre, indicando
en observaciones que desea una asignatura que se imparte en dos
semestres y quiere que cada semestre posea un espacio distinto.
https://www.UPM.es/politecnica_virtual/login.UPM?c=2007DJ
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
100
Funciones Markup Language Profesores
23 de junio de 2021
Tema Participantes
Función agregarProfeAlum()
Consulta Añadir alumnos o profesores
Activación añadir|agregar profesor|alumno
Respuesta Si Vd. está registrado en el espacio virtual de la asignatura como
profesor y desea agregar participantes determinados, puede seguir los
pasos que se describen en la miniguía Cómo dar de alta/baja a
profesores, alumnos y becarios.
Si desea agregar un conjunto de alumnos, puede facilitarles una
contraseña de acceso que el sistema les requerirá únicamente en su
primera conexión.
A tal fin, en el bloque de Administración / Administración del curso /
Usuarios /Métodos de matriculación, pulse el icono de "Editar" en la
opción de "Auto-matriculación (Estudiante)" e introduzca la clave en
el campo "Clave de matriculación", y, por último, pulse en "Guardar
cambios".
http://serviciosGATE.UPM.es/docs/Moodle/ComoDarDeAlta-
BajaEnMiAsignatura.pdf
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
101
Funciones Markup Language Profesores
23 de junio de 2021
Tema Participantes
Función fotoProfesor()
Consulta Fotografía del profesor
Activación foto|fotografia cambio|cambiar| profesor
sustituir
Respuesta La petición de cambio de fotografía del profesor en la Plataforma de
Telenseñanza deberá realizarse a través de Politécnica Virtual (\
Docencia _Formación \ Docencia\ Mis solicitudes académicas \
Servicio de Telenseñanza) o, directamente, en:
https://www.UPM.es/politecnica_virtual/login.UPM?c=2007DJ
Tema Participantes
Función fotoAlumno()
Consulta Fotografía de los alumnos
Activación Foto|fotografía cambio|cambiar|sustit alumno
uir
Respuesta Los miembros de la comunidad universitaria deben incorporar su
fotografía a través de Politécnica Virtual (Mis datos / Tarjeta
Universitaria / Mi foto)
Se aconseja la lectura de las Instrucciones de solicitud del carné
universitario e incorporación de fotografía
http://www.UPM.es/Estudiantes/OrdenacionAcademica/CarneUniversi
tario?prefmt=articulo&fmt=detail&id=3f73eeac43372210VgnVCM10
000009c7648a____
Tema Participantes
Función limitarAccesoAlumno()
Consulta Limitar el acceso a una actividad o recurso para un conjunto de
alumnos
Activación limitar|impedir|bloque acceso|acceda|acceder actividad|recurso
ar
Respuesta En el espacio virtual de la plataforma de Titulaciones Oficiales
denominado "Ayuda y documentación para los profesores" encontrará
varias herramientas de ayuda. En este caso, consulte la miniguía:
"Cómo hacer que un recurso o actividad sea vista sólo por un conjunto
determinado de alumnos".
http://serviciosGATE.UPM.es/docs/Moodle/mg_restriccion-grupo.pdf
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
102
Funciones Markup Language Profesores
23 de junio de 2021
Tema Participantes
Función faltaAlumno()
Consulta No aparecen todos mis alumnos
Activación alumno no(esta|aparece|se falta
ve|veo)
Respuesta Póngase en contacto con nosotros indicando el correo institucional del
estudiante a través de Politécnica Virtual (Formación \ Moodle \ Ayuda
\ Otras peticiones)
En la lista de participantes sólo aparecen los estudiantes que tienen
correo de la UPM (acabado en @alumnos.UPM.es).
Si el alumno careciera de cuenta de correo puede solicitarla en:
http://www.UPM.es/institucional/Estudiantes/Servicios_Red/email/Ge
stioncorreo
Si el alumno matriculado en su asignatura dispusiera de correo
institucional (@alumnos.UPM.es) pero no pudiera acceder, él o Vd.,
indistintamente, puede comunicar esta incidencia a través de
Politécnica Virtual (Formación \ Moodle \ Ayuda \ Otras peticiones),
https://www.UPM.es/politécnica_virtual/login.UPM?c=1692A,
comunicando el DNI o el correo institucional del alumno.
https://www.UPM.es/polit%C3%A9cnica_virtual/login.UPM?c=1692
A
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
103
Funciones Markup Language Profesores
23 de junio de 2021
Tema Participantes
Función borradoMasivoAlumnos()
Consulta Reinicio y borrado masivo de alumnos del curso anterior
Activación reiniciar|eliminar|borr alumno
ar
Respuesta Operación crítica que sólo debe realizar tras los oportuno mensajes del
GATE, previos al comienzo del nuevo curso o del semestre
(normalmente, en los meses de julio y septiembre).
El reinicio de un curso consiste en el borrado de los alumnos del año
que termina junto con los envíos por ellos realizados para las tareas,
los resultados de los cuestionarios, las calificaciones y, si se quiere, las
intervenciones en los foros.
Antes de hacer el reinicio, puede realizar una copia de seguridad para
conservar esta información.
En el espacio virtual de "Ayudas y documentación para profesores" de
la plataforma de Títulaciones Oficiales se encuentra la Guía de reinicio
de curso, que detalla toda la operación.
http://serviciosGATE.UPM.es/docs/Moodle/guiareinicio.pdf
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
104
Funciones Markup Language Profesores
23 de junio de 2021
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
105
Index.blade.php
23 de junio de 2021
5 Index.blade.php
Este fichero muestra la Vista general que carga el chatbot y donde además se inicializan algunos
valores de este.
<!DOCTYPE html>
<html lang="es">
<head>
<title>Chatina</title>
<body>
<center><big><u><h1>ChatBot para el TFG</h1></u></big>
<p>Bienvenido a la página de prueba de Chatina
<br><br>Para comenzar pulsa <a href="#"
onclick="botmanChatWidget.whisper('Hola');return false;">aquí</a>
<br><br>O prueba diciendo "Hola"…
<br><br>Puede responder cualquier pregunta incluida en las FAQs de
<a
href="https://www.UPM.es/atencion_usuario/lista.UPM?grupos[]=50&grupos[]=52&grup
os[]=53&grupos[]=49" >profesores</a>
o en las de
<a
href="https://www.UPM.es/atencion_usuario/lista.UPM?grupos[]=43&grupos[]=46&grup
os[]=47&grupos[]=48&grupos[]=49" >estudiantes</a>
</p></center>
</body>
</html>
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
106
Manual de usuario para el programador
23 de junio de 2021
En la memoria se detalla, separando en función del chatbot que entra en funcionamiento, donde
quedan codificadas las llamadas y funciones de cada respuesta programada en el chatbot. Esta guía
pretende mostrar ejemplos reales de cómo sería realizar dichas modificaciones.
El chatbot se entrega en un paquete ready to use que permite fácilmente lograr el manejo de este.
Siendo posible también la instalación desde cero de un nuevo bot simplemente sobrescribiendo
parte de las carpetas con las correspondientes al chatbot creado.
Al entrar en la carpeta donde está instalado debería mostrar una estructura de carpetas similar a la
de la siguiente figura.
Para conocer cuáles son los ficheros que se van a modificar y sus carpetas se muestran varios
ejemplos a continuación en función de la parte del chatbot a la que afecte la modificación a realizar.
Para conocer mejor donde se modifica cada parte es interesante recordar el apartado 4.2 Laravel que
describe la dinámica general del funcionamiento ayudando a comprender los pasos que se explican
a continuación. También es preciso recordar la ubicación de las partes principales del modelo
empleado MVC indicado en la tabla 1.
Suponiendo que se desea realizar la actualización del “Manual Completo de Moodle 3.5” al
aparecer una nueva versión. Hay que modificar por tanto para el perfil del profesor la
Documentación General mostrada en el menú y el enlace que lleva a este documento. Tal y como se
indica en el apartado 4.3 Botman, y en la tabla 2, con los ficheros que componen la aplicación.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
107
Manual de usuario para el programador
23 de junio de 2021
Como es el rol de profesor el que se debe modificar se editará el fichero TeacherMenu.php ubicado
en la carpeta app/conversations. Dentro de este fichero se ha creado una función distinta para cada
menú o submenú que se muestra en el rol elegido. Así inicialmente, el fichero comienza con la
pregunta mostrada en la figura siguiente correspondiente al menú inicial de botones una vez
seleccionado el rol.
Con ayuda de la figura 35 en el apartado 6.2 con los planos del menú del profesor, se debe buscar
dentro de que tema se encuentra esta guía. Una vez localizado su pertenencia a documentos
generales se comprueba que valor o value se le ha dado en la aplicación: generalDoc. Y la función
que lanza este submenú: displayTeachGeneralDoc.
Otro modo de localizar la función que se debe modificar es mediante las fichas de las funciones
desglosadas en el apartado 2 del anexo para el rol de profesor (1 del anexo para un estudiante).
Comprobando el recurso que se desea modificar se puede ver en la ficha a qué área pertenece y el
nombre definido para la llamada a la función.
$message = OutgoingMessage::create($answer->getText())
->withAttachment($attachment);
$this->bot->reply($message);
$this->displayTeachAgain();
}
return;
});
}
Figura 43. Función de documentos generales.
Para el ejemplo en cuestión se modifican las partes subrayadas en amarillo sustituyendo los campos
deseados por la nueva versión.
Si en lugar de realizar una modificación se desea añadir nuevos documentos u otra información con
botones, bastará con añadir nuevos campos con el método indicado a continuación.
->addButtons([
Button::create('Documentos Generales')
->value('generalDoc'),
Figura 44. Función que genera botones en la pregunta.
Estos botones con un valor asignado será lo que evalúe el chatbot para dar el siguiente paso, por lo
que se debe añadir un valor más en el switch o la función condicionante que se emplee para evaluar
la respuesta tal y como se muestra en la figura 45.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
109
Manual de usuario para el programador
23 de junio de 2021
case 'moodleman':
$answer = 'http://oa.upm.es/53507/';
break;
Figura 45. Función que activa la respuesta con botones.
Para modificar el funcionamiento del chatbot basado en AIML es necesario realizar cambios en
varios ficheros. Se deben separar las palabras que espera escuchar y la respuesta que da en distintos
ficheros, como quedó explicado en el apartado 4.7 chatbot basado en AIML.
Las palabras que el chatbot es capaz de reconocer se encuentran separadas en dos ficheros distintos
en función del rol, y se ubican en:
\routes\botmanStudent.php
\routes\botmanTeacher.php
Las palabras indicadas en estos ficheros se mapean al iniciar el chatbot junto con otros servicios de
la aplicación indicados en el fichero:
\app\Providers\RouteServiceProvider.php
Suponiendo que se desea añadir una nueva consulta a la que debe ser capaz de responder en un
perfil de alumno. Situándose en el fichero botmanStudent.php se agrega una nueva entrada con las
palabras clave extraídas de la consulta como se indica en la siguiente figura.
Las funciones que se ocupan de dar respuesta a las consultas de la AIML se localizan en los distintos
controladores, todos ellos ubicados en app/Http/Controllers.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
110
Manual de usuario para el programador
23 de junio de 2021
Si además se requiere el envío de un pdf, imagen o video se debe generar un adjunto para enviar
junto con la respuesta en texto.
Cuando la información que ofrezca el chatbot no sea solo una respuesta “rápida”, sino que requiera
de una interacción por parte del usuario es necesario generar una nueva conversación. Con ello el
chatbot queda a la espera y cuando se pulsa un botón o se recibe otro mensaje le devuelve a la
conversación en curso.
Se deben llamar desde dentro del controlador o bien desde otra conversación, nunca desde la
entrada de palabras mapeadas en botmanStudent.php o botmanTeacher.php.
$bot->startConversation(new CustomConversation());
Figura 49. Función para crear una nueva conversación.
Para otras cuestiones no desarrolladas en esta guía existe una documentación oficial que se puede
consultar en https://botman.io/.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
111