TFG Eva Marti Paredes

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 112

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

Y SISTEMAS DE TELECOMUNICACIÓN

PROYECTO FIN DE GRADO

TÍTULO: Creación de una aplicación basada en la inteligencia


artificial “chatbot” para el LMS Moodle

AUTOR: Eva Martí Paredes

TITULACIÓN: Grado en Ingeniería Electrónica de Comunicaciones

DIRECTOR: Juan José Moreno López


TUTOR: Fernando Pescador del Oso

DEPARTAMENTO: Ingeniería Telemática y Electrónica

VºBº

Miembros del Tribunal Calificador:

PRESIDENTE: Juana Sendra Pons

TUTOR: Fernando Pescador del Oso

SECRETARIO: Sara Lana Serrano

Fecha de lectura: 23 de junio de 2021

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.

Para el despliegue de un menú contextual con botones se desarrolla lo que en el chatbot se


denomina una conversación. En una conversación el chatbot queda a la espera de una determinada
respuesta por parte del usuario. Esta será de forma interactiva en el caso de pulsar un botón o bien
otras palabras clave distintas a las mapeadas, en función de cómo se desarrollen los métodos de la
conversación en curso.

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.

Si se prefiere realizar una pregunta directamente, el chatbot creado se ha denominado Chatina,


cuenta con respuesta para más de 40 consultas habituales sobre la plataforma Moodle y sus
funcionalidades.

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.

The chatbot, based on artificial intelligence models, is programmed to answer questions in a


specific way depending on how you want to act. Of the many types of Chatbot that exist, two are
best suited for the current requirements of the application. One based on questions through a set of
buttons that standardizes the usual queries, in combination with another one based on AIML
(Artificial Intelligence Markup Language) that allows a response to be given by means of pattern
recognition.

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

Figura 1. Página de Moodle para un perfil de estudiante (14). .......................................................... 17


Figura 2. Menú de administración, recurso y actividad para el perfil de profesor. ........................... 18
Figura 3. Enlaces a preguntas frecuentes. .......................................................................................... 19
Figura 4. Enlaces a tutoriales y guías. ................................................................................................ 19
Figura 5. Logotipo BotKit (19). ......................................................................................................... 21
Figura 6. Logotipo Bot framework (21)............................................................................................. 21
Figura 7. Logotipo Dialogflow (24). .................................................................................................. 22
Figura 8. Logotipo Bot Libre (26). .................................................................................................... 22
Figura 9. Logotipo Botman (28). ....................................................................................................... 22
Figura 10. Modelo - Vista – Controlador (33). .................................................................................. 29
Figura 11. Ciclo de vida de la petición en Laravel (36). .................................................................... 31
Figura 12. Ciclo de la petición del usuario (38). ................................................................................ 33
Figura 13. Conversación inicial en el chat. ........................................................................................ 37
Figura 14. Fin de conversación inicial en el chat. .............................................................................. 37
Figura 15. Menú profesores y alumnos. ............................................................................................. 38
Figura 16. Pregunta para finalizar menú contextual. ......................................................................... 38
Figura 17. Ventana del chat con un video. ......................................................................................... 39
Figura 18. Ventana para escribir la pregunta. .................................................................................... 40
Figura 19. Pregunta sobre alta de curso. ............................................................................................ 41
Figura 20. Pregunta sobre añadir asignaturas. ................................................................................... 42
Figura 21. Pregunta sobre creación y baja de asignatura. .................................................................. 42
Figura 22. Fragmento del fichero RouteServiceProvider.php. .......................................................... 45
Figura 23. Conversación para creación de asignaturas. ..................................................................... 47
Figura 24. Opciones finales del menú. ............................................................................................... 47
Figura 25. Middleware script para Rasa. ........................................................................................... 48
Figura 26. Icono del chatwidget en la parte inferior. ......................................................................... 49
Figura 27. Instalación de botman. ...................................................................................................... 50
Figura 28. Arranque del servidor. ...................................................................................................... 50
Figura 29. Conversación de prueba.................................................................................................... 51
Figura 30. Comandos para habilitar Tinker. ...................................................................................... 51
Figura 31. Despliegue en la web. ....................................................................................................... 52
Figura 32. Script para comenzar la conversación. ............................................................................. 52
Figura 33. Script de arranque del servidor. ........................................................................................ 57
Figura 34. Menú de botones para alumnos. ....................................................................................... 59
Figura 35. Menú de botones para profesores. .................................................................................... 60
Figura 36. Submenú de botones para profesores. .............................................................................. 61
Figura 37. Submenú 2 de botones para profesores. ........................................................................... 62
Figura 38. Submenú 3 de botones para profesores. ........................................................................... 63
Figura 39. Chatbot basado en menú contextual. ................................................................................ 64

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
7
23 de junio de 2021

Figura 40. Chatbot basado en Markup Language. ............................................................................. 64


Figura 41. Estructura de ficheros del chatbot. ................................................................................. 107
Figura 42. Función del menú principal del profesor. ....................................................................... 108
Figura 43. Función de documentos generales. ................................................................................. 109
Figura 44. Función que genera botones en la pregunta.................................................................... 109
Figura 45. Función que activa la respuesta con botones. ................................................................. 110
Figura 46. Entrada de palabras clave. .............................................................................................. 110
Figura 47. Función con el método de la respuesta de la AIML. ...................................................... 111
Figura 48. Función para el envío de un adjunto. .............................................................................. 111
Figura 49. Función para crear una nueva conversación. .................................................................. 111

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

Tabla 1. Ubicación carpetas del modelo MVC. ................................................................................. 30


Tabla 2. Ficheros que componen la aplicación. ................................................................................. 34
Tabla 3. Palabras clave para “Solicitud de alta en curso”. ................................................................. 41
Tabla 4. Altas, bajas y cambios de asignaturas o cursos.................................................................... 43
Tabla 5. Actividades, recursos y materiales. ...................................................................................... 43
Tabla 6. Participantes. ........................................................................................................................ 43
Tabla 7. Otras peticiones o sugerencias. ............................................................................................ 44
Tabla 8. Acceso a la Plataforma......................................................................................................... 44
Tabla 9. Asignaturas y cursos. ........................................................................................................... 44
Tabla 10. Otras peticiones o sugerencias. .......................................................................................... 45
Tabla 11. Presupuesto de la aplicación. ............................................................................................. 67

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

API Application Programming Interface o Interfaz de Programación de Aplicaciones.

CAU Centro de Atención de Usuarios.

UPM Universidad Politécnica de Madrid.

IA Inteligencia Artificial.

php Hypertext Pre-Processor o Pre-Procesador de Hipertexto.

CSS Cascading Style Sheets u Hojas de Estilo en Cascada.

pdf Portable Document Format o Formato de Documento Portátil.

GATE Gabinete de Telenseñanza de la UPM.

FAQ Frequently Asked Questions o Preguntas Frecuentes.

NLP Natural Language Processing o Procesamiento del Lenguaje Natural.

LMS Learning Management System o Sistema de Gestión de Aprendizaje.

MIT Massachusetts Institute of Technology o Instituto de Tecnología de Massachusetts.

ML Machine Learning o Aprendizaje de Máquinas.

Webwidget Web window-gadget o gadget de ventana web.

Xampp X (para cualquiera de los diferentes sistemas operativos), Apache,


MariaDB/MySQL, php, Perl.
npm Node Package Manager o Gestor de Paquetes de Node.js

AIML Artificial Intelligence Markup Language o Lenguaje de Marcado de Inteligencia


Artificial.
JSON JavaScript Object Notation o Notación de Objeto de JavaScript.

url Uniform Resource Locator o Identificador de Recursos Uniforme.

html HyperText Markup Language o Lenguaje de Marcado de Hipertexto.

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
10
23 de junio de 2021

SMS Short Message Service o Servicio de Mensajes Cortos.

CSRF Cross-Site Request Forgery o Falsificación de Petición en Sitios Cruzados.

PIP Pip Installs Packages o Pip Instalador de Paquetes.

CDN (Content Delivery Network o Red de Distribución de Contenido).

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

 Especificaciones y restricciones de diseño. El chatbot a desarrollar debe cumplir una serie


de condiciones que se tienen que definir con precisión. Para ello se parte de la base de
analizar las consultas recibidas hasta ahora por parte de los usuarios y a continuación se
centra el análisis en la búsqueda de un framework adecuado a nuestro proyecto. Realizando
una comparativa entre diferentes opciones, se enfoca el trabajo hacia la elección de la
solución más adecuada.

 Descripción de la solución propuesta. Se describen las distintas partes que integran el


chatbot profundizando más en detalle acerca de aspectos más técnicos. Comenzando por el
framework php empleado como base y las librerías necesarias, describiendo las dos partes
del chatbot en profundidad y el funcionamiento de cada una de ellas.

 Resultados. Aquí se expone todo lo relacionado con la solución propuesta. Es una


continuación del apartado anterior pero ahora especificando cómo se ha procedido a
implementar el chatbot y reportar el nivel alcanzado en el cumplimiento de los objetivos
perseguidos. Recoge todas las infraestructuras, tecnologías, recursos y pruebas llevadas a
cabo en el proceso.

 Presupuesto. Se indica el coste asociado al hardware del que es necesario disponer,


asimismo se considera el personal técnico o administrativo que se precisa para poner en
marcha y mantener el chatbot en funcionamiento.

 Conclusiones. Se hace una valoración general del proyecto y se proponen algunas


posibilidades de desarrollo futuro.

 Lista de Referencias. Aquí se incluyen las referencias de las fuentes empleadas en la


realización de este proyecto fin de grado.

 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:

 Estudio del funcionamiento general de Moodle.

 Análisis de las consultas recibidas.

 Estudio del CAU actual.

 Diseño de la aplicación php.

 Realizar pruebas en entorno real.

 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

2 Estado del Arte

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

2.1 Tipos de chatbot


Existen varias clasificaciones posibles, siendo común las tres que se enumeran a continuación.
Comenzando por la forma en la que se interactúa con el usuario las posibilidades son:

 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:

 Servicio atención al cliente 24x7.


 Preguntas frecuentes.
 Mejora operativa de procesos, para reducir el tiempo en operaciones de uso común.
 Comunicación o marketing.
 Captación de clientes potenciales, sustituyendo los clásicos formularios.

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

2.2 Funcionamiento general de Moodle.


Actualmente la plataforma de telenseñanza LMS Moodle es el medio por excelencia para compartir
contenido educacional en las universidades españolas. Esta permite realizar infinidad de gestiones
facilitando el uso diario de la plataforma, permitiendo a los profesores compartir contenido con sus
estudiantes, agruparlos en función de sus clases, laboratorios u otros muchos parámetros.

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.

Figura 1. Página de Moodle para un perfil de estudiante [14].

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.

Figura 2. Menú de administración, recurso y actividad para el perfil de profesor.

Al entrar en una actividad, el mismo icono desplegará su correspondiente menú de administración


del recurso en cuestión. Desde el menú de administración es posible agregar un nuevo curso,
importar alumnos o bien reiniciar un curso anterior eliminando los alumnos de esa convocatoria
para agregar posteriormente los nuevos. Se puede editar también accediendo desde el mismo icono,
pero dentro de una actividad llevará a un menú distinto del anterior, un menú de edición para dicha
actividad. En el que se permite tanto la gestión de grupo o usuarios como creación de copias de
seguridad o cambio de roles.

Para disponer de todo esto es necesario un constante mantenimiento y actualización de las


funciones, junto con la creación de manuales para dar una pequeña ayuda al usuario para
comprender cómo hacer un buen uso de todas ellas. A través del GATE de la UPM que gestiona el
mantenimiento de esta plataforma, se ofrece información para varias de las utilidades a través de
guías, vídeos o en apartados de FAQ.

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

2.3 Funcionamiento del Centro de Atención de Usuarios (CAU)


Actualmente para dar soporte a las dudas de los usuarios se ofrece a través de la web del GATE y
de Moodle una serie de recursos como guías y video tutoriales para facilitar su uso. Pero a pesar de
todos estos recursos disponibles continúan apareciendo dudas al usuario que debe terminar
resolviendo un agente humano a través del servicio de Skype o de correo electrónico.

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.

Figura 3. Enlaces a preguntas frecuentes.

La otra ubicación donde se encuentran se localiza en el menú del margen derecho una vez
registrado dentro de Moodle.

Figura 4. Enlaces a tutoriales y guías.

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

3 Especificaciones y restricciones de diseño

Referente a las tecnológicas:

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.

Con respecto la funcionalidad:

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.

3.1 Lenguaje php


Este lenguaje de programación de código abierto es especialmente adecuado para el desarrollo web
permitiendo ser incrustado en html [15].

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

3.2 Framework compatible


La restricción del diseño de ser implementado en php limita las opciones disponibles, entre los
chatbots más ampliamente utilizados se encuentran los siguientes.

Figura 5. Logotipo BotKit [18].

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.

Figura 6. Logotipo Bot framework [20].

Bot Framework de Microsoft ofrece un paquete completo para la creación de chatbots en un


entorno de programación de código abierto. Está disponible para su descarga en el paquete Bot
Framework Composer con un entorno visual para la creación y en el paquete SDK Bot Framework
para la creación del chatbot mediante código [21]. Este último paquete permite múltiples opciones
en cuanto al lenguaje de programación, puede desarrollarse en C#, JavaScript o Python.

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

Figura 7. Logotipo Dialogflow [23].

Dialogflow de Google, dispone de un entorno amigable y sencillo para la creación de bots.


Mediante la creación de agentes y el entrenamiento de estos es posible crear interacciones naturales
y ricas con los usuarios. Permite la integración en varios canales pudiendo trabajar con el chatbot
tanto por texto como por voz. Dispone de una API (Application Programming Interface) de
JavaScript con un Node.js con las librerías para el cliente. La realización de chatbots inicialmente
es gratuita pero no su uso. El coste varía en función de las consultas realizadas. Se puede mejorar
con HPC (High-Performance Computing) servicio que también incrementa el coste de este servicio
[24].

Figura 8. Logotipo Bot Libre [25].

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.

Figura 9. Logotipo Botman [27].

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

3.3 Estudio de las consultas recibidas


Como se indicó con anterioridad existen ya varias cuestiones habituales desglosadas en aparatados
de ayuda que se enumeran a continuación.

Dentro de las preguntas frecuentes de Moodle de alumnos.

 Acceso a Moodle desde la App


 Acceso y contenido de las plataformas
 Alumnos con beca Séneca o Erasmus
 Cambio de la fotografía
 Obtención de cuenta de correo institucional de alumno
 Olvido de cuenta de correo
 Olvido del PIN
 Olvido o cambio de contraseña
 Página en blanco tras acceder
 Restricción de acceso a la plataforma de Punto de Inicio
 Aparecen asignaturas de cursos pasados
 Conocer una nota
 Contacto con los profesores
 El sistema pide una clave de acceso
 No aparecen asignaturas en las que estoy matriculado
 Consulta por videoconferencia sobre la Plataforma de Telenseñanza (Moodle)
 Otras peticiones o sugerencias

En las preguntas frecuentes de Moodle de profesores.

 No encuentro mi asignatura en el formulario de solicitud de asignaturas oficiales


 Solicitudes de altas y bajas de asignaturas o cursos en la Plataforma de Telenseñanza
 Gestión de las calificaciones
 Importar preguntas a un cuestionario
 No puedo reproducir un vídeo o un programa Java dentro de Moodle
 Problema con el editor de texto
 Alumnos con beca Séneca o Erasmus
 Alumnos de asignaturas impartidas en los dos semestres
 Añadir alumnos o profesores
 Carga masiva de alumnos
 Fotografía del profesor
 Fotografías de los alumnos
 Limitar el acceso a una actividad o recurso para un conjunto de alumnos

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

 No aparecen todos mis alumnos


 Reinicio y borrado masivo de alumnos del curso anterior
 Consulta por videoconferencia sobre la Plataforma de Telenseñanza (Moodle)
 Otras peticiones o sugerencias

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.

En la Ayuda y documentación Alumnos.


 Documentos Generales
 Dudas habituales y miniguías
 UPM[3Dlabs] - Laboratorios Virtuales de la UPM

Dentro de Documentos Generales.


 Tablón de anuncios
 Preguntas frecuentes
 Pautas para la creación y publicación de material audiovisual en las universidades. Guía para
estudiantes (REBIUN)
 Preguntas frecuentes sobre propiedad intelectual
 Acceso desde la App de Moodle
 Avisos

En Dudas habituales y miniguías.


 ¿Por qué no puedo acceder a mi asignatura?
 ¿Cómo utilizar el Foro?
 ¿Cómo funcionan los Cuestionarios?
 ¿Cómo funcionan las Tareas?
 Cambio de foto de perfil Moodle
 Videotutorial Moodle: Foros
 Videotutorial Moodle: Calificaciones
 Videotutorial Moodle: Tareas
 Videotutorial Moodle: Cuestionarios
 Videotutorial Moodle: Mensajes
 Videotutorial Moodle: Perfil de usuario
 Videotutorial Moodle: Área Personal
 Videotutorial Moodle: Wikis
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
24
Especificaciones y restricciones de diseño
23 de junio de 2021

Seguidamente, la Ayuda y documentación de profesores.


 Documentos Generales
 Guías Metodológicas
 Dudas habituales y miniguías

Dentro del primero Documentos Generales.


 Novedades de Moodle 3.5
 Manual completo de Moodle 3.5
 Guía de reinicio
 Preguntas frecuentes sobre propiedad intelectual
 Pautas para la creación y publicación de material audiovisual en las universidades. Guía para
estudiantes (REBIUN)
 Acceso desde la App de Moodle
 Cursos sobre Moodle ofrecidos por el GATE
 Otros servicios

En el siguiente Guías Metodológicas.


 INFOGRAFÍA - Herramientas de Moodle para la clase invertida (Flipped classroom)
 INFOGRAFÍA - Herramientas de Moodle para la gamificación
 Guía de gamificación para Moodle
 Buenas prácticas en la telenseñanza
 Presentación de la plataforma Moodle
 Guía técnico-pedagógica del uso de la plataforma de telenseñanza de la UPM
 Guía introductoria para la implantación de una asignatura en Moodle
 Guía de uso para la implementación del móvil en el aula

Para finalizar, el tercero con Dudas habituales y miniguías.


 Nuevas miniguías
 Revisión de originalidad de trabajos y documentos (Turnitin)
 Cuestiones básicas de funcionamiento
 Gestión de alumnos y profesores
 Calificaciones
 Contenido
 Actividades, cuestionarios y preguntas
 Comunicación en la asignatura

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

Dentro de Nuevas miniguías.


 Arrastrar y soltar sobre imagen: Pregunta en la que el usuario debe colocar textos o
imágenes sobre casillas en una imagen.
 Arrastrar y soltar marcadores: Pregunta en la que los usuarios arrastran y sueltan las
respuestas sobre una imagen. El usuario no puede ver las zonas predefinidas en la imagen.
 Arrastrar y soltar sobre texto: El estudiante debe arrastrar y soltar, encajando las palabras o
textos sobre huecos definidos en un párrafo.
 Seleccionar palabras faltantes: En este tipo de pregunta aparecen huecos con menús
desplegables dentro de un texto, donde se debe seleccionar la opción correcta.
 Emparejar: Estas preguntas plantean un enunciado en el que el alumno debe asociar dos
conceptos de tal forma que queden emparejados.

El siguiente Revisión de originalidad de trabajos y documentos.


 ¿Cómo interpretar un informe de similitud? (Profesor)
 ¿Cómo interpretar un informe de similitud? (Estudiantes)
 ¿Cómo añadir una actividad de revisión de originalidad (Turnitin) en Moodle?
 Guía del servicio web de Turnitin (revisión de originalidad)

Para Cuestiones básicas de funcionamiento.


 ¿Cómo configurar una clave de acceso a la asignatura?
 ¿Cómo dar acceso a los alumnos a mi asignatura?
 ¿Cómo accede el alumnado a las asignaturas?
 ¿Cómo realizar una copia de seguridad de una asignatura?

Gestión de alumnos y profesores.


 ¿Cómo registrar y calificar la asistencia a clase desde Moodle?
 ¿Cómo crear grupos de clase por autoinscripción?
 ¿Cómo hacer que un recurso o una actividad sea vista sólo por un conjunto determinado de
alumnos?
 ¿Cómo dar de alta/baja a profesores, alumnos y becarios en mi asignatura?

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

Actividades, cuestionarios y preguntas.


 ¿Cómo utilizar el editor pdf?
 Apertura de un cuestionario para uno o varios alumnos
 ¿Cómo importar preguntas a una asignatura o crear preguntas de forma rápida?
 ¿Cómo escribir fórmulas en las preguntas de tipo Calculada?

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

4 Descripción de la solución Propuesta

Se ha desarrollado una aplicación de chatbot a partir de Botman, un framework agnóstico que


incluye Laravel y que contiene las dependencias necesarias para la gestión de la comunicación de
forma segura con la aplicación desarrollada. A partir de éste se diseña la solución adaptada a los
requisitos de funcionamiento para la atención a usuarios de la universidad.

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.

4.1 Servidor y gestor de dependencias de php


Es necesario preparar el entorno para desarrollar la aplicación en php por lo que varios pasos
previos son necesarios para la instalación del framework. Inicialmente se requiere un servidor capaz
de interpretar lenguaje php, por lo que se opta por un servidor web Apache que cuente con un gestor
de bases de datos MySQL3 que será capaz de interpretar los scripts php necesarios para el
funcionamiento del sistema.

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.

Figura 10. Modelo - Vista – Controlador [32].

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].

Tabla 1. Ubicación carpetas del modelo MVC.

Modelo Controlador Vista


/app /app/Http/Controllers /resources/views

La estructura de carpetas completa del proyecto en Laravel se muestra a continuación. Donde se


describe brevemente el funcionamiento de cada una de sus partes [34].

 Bootstrap: Caché, autoload, y aplicaciones bootstrap.


 Config: Configuración de aplicaciones.
 Database: Factory, migraciones y semillas.
 Public: JavaScript, CSS, fuentes e imágenes.
 Resources: Vistas, SASS/LESS y localización.
 Routes: Ficheros de rutas de la aplicación.
 Storage: Carpetas para apps, frameworks y logs.
 Tests: Pruebas empleando la unidad de php.
 Vendor: Dependencias de Composer.

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.

El siguiente paso se produce en el núcleo de la aplicación. El archivo /app/Http/kernel.php se


encarga de dar una respuesta cada vez que recibe una petición. Los bootstrapers definidos en el
núcleo se encargan de configurar el manejo de errores, configurar los logs, detectar entornos y otras
tareas más previas a que se gestione la petición. También se define aquí todo el middleware que
interviene previo a que la petición sea gestionada por la aplicación, como la comprobación entre
otras del CSRF4 token.
Todos estos módulos necesarios para el correcto funcionamiento de la aplicación se configuran en
el fichero /config/app.php. Laravel recorre este fichero de forma iterativa instanciando cada uno de
ellos, posteriormente los registra y arranca.

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

Uno de los módulos proveedores de servicio más importantes de la aplicación es el


/App/Providers/RouteServiceProvider, aquí se definen las rutas de la aplicación creada. El Router
envía la petición a donde corresponda; la puede pasar al controlador o bien a un middleware o ruta
que se defina. Estas rutas se definen en los ficheros de la carpeta /app/routes que se crean para la
aplicación del chatbot.

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.

La vista creada en la carpeta /resources/views envía la respuesta transformando la información en


una respuesta http que se envía al usuario.

Usuario Servidor Apache public/index.php

bootstrap/autoload.php bootstrap/start.php bootstrap/app.php

Registro de Proveedores Arranque de


app/Http/Kernel.php
de Servicio Proveedores de Servicio

Envío de petición Router Controlador

Vista Usuario

Figura 11. Ciclo de vida de la petición en Laravel [35].

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.

Consulta iniciada por el 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.

Cuando se detecta un mensaje en la entrada, es capaz de diferenciar si es una respuesta de una


conversación en curso, o se trata de una entrada nueva que deba gestionar. Este nuevo mensaje no
ha de ser necesariamente una entrada de texto. Puede recibir un mensaje interactivo por ejemplo
como ocurre tras pulsar un botón dentro de una conversación, o incluso recibir algunos tipos de
ficheros que el usuario carga como respuesta a peticiones como sería una foto de usuario o un
documento de identidad.

Si se trata de este caso y se encuentra en el trascurso de una conversación, simplemente lo redirige a


ella para continuar con el siguiente paso programado. Si no es el caso, pasa a comprobar en el
fichero de Routes las palabras mapeadas con el proveedor de servicios de ruta. Esto es posible a
partir de los métodos hears incluidos en la librería, donde entra en funcionamiento la parte del
Markup Languaje que gestiona la IA. Cuando encuentra una coincidencia entre las palabras clave,
llama al controlador para que gestione el método implementado para cada función. Este podrá
devolver una respuesta directamente o bien lanzar una nueva conversación cuando se requieran
acciones posteriores por parte del usuario como se muestra a continuación.

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

Figura 12. Ciclo de la petición del usuario [36].

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.

Tabla 2. Ficheros que componen la aplicación.

Routers Controladores Modelos


botmanStudent.php BotManController.php ConversationWho.php
botmanTeacher.php StudentController.php StudentMenu.php
TeacherController.php TeacherMenu.php
PlatformsAccess.php
SubjectConversation.php

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

Entremedias de estos pasos, en el flujo de las interacciones entre el usuario y la aplicación, se


permite la inclusión de middleware o drivers que gestionen y preparen los mensajes recibidos para
el formato del modelo del chatbot o de servicios externos.

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.

Las partes que se gestionan desde el controlador principal se describen a continuación.

Almacenamiento de usuario

Se ha habilitado un espacio de almacenamiento destinado a los datos del usuario. Al inicializarlo


con el controlador se generará un fichero JSON en donde quedan almacenados los datos. En el
userStorage queda guardada la id de sesión. Esta id está asociada a las cookies de la sesión y es
distinta para cada nueva conexión.

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.

En el momento en el que se supera el límite FALLBACKMAX, el controlador principal lanza un


mensaje con el email de contacto del GATE para este tipo de cuestiones que no se han planteado
previamente y por tanto no están codificadas entre las respuestas. Posteriormente se vuelve a poner
a cero el contador para continuar a la escucha de la entrada.

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.

Consulta del rol

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

4.5 Asignación de rol


Toda la aplicación se ha dividido para dar respuesta de forma diferenciada a dos colectivos. Será
por tanto esta la primera cuestión que deberá resolver el chatbot para poder decidir el camino a
seguir una vez dada la bienvenida (figura 13).

Figura 13. Conversación inicial en el chat.

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.

Figura 14. Fin de conversación inicial en el chat.

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

4.6 Chatbot basado en menú contextual


Como ya se indicó existen varias guías de uso y otros canales de información como pueden ser
videos o enlaces a páginas externas. Estos recursos ofrecidos desde Moodle a profesores y alumnos
en el apartado de Ayuda y Documentación son las cuestiones que el chatbot oferta en su menú
inicial. Así, sí la consulta que deseaba realizar corresponde con uno de los procedimientos más
habituales se logra evitar que el usuario escriba, mejorando el tiempo de respuesta en las cuestiones
más consultadas.

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.

Figura 15. Menú profesores y alumnos.

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.

Figura 16. Pregunta para finalizar menú contextual.

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.

Figura 17. Ventana del chat con un video.

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

4.7 Chatbot basado en AIML


Cuando ninguna de las opciones ofertadas en los menús contextuales mostrados por el momento
finaliza con la consulta de forma satisfactoria, se permite al usuario a través de una ventana de texto
preguntar al chatbot.

Figura 18. Ventana para escribir la pregunta.

Como ya se ha mostrado se comienza dando la bienvenida y realizando la consulta necesaria para


poder continuar con respuestas a las preguntas que realice el usuario.

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.

Clasificación de las palabras clave

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

Tabla 3. Palabras clave para “Solicitud de alta en curso”.

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.

Figura 19. Pregunta sobre alta de curso.

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

Figura 20. Pregunta sobre añadir asignaturas.

Figura 21. Pregunta sobre creación y baja de asignatura.

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 4. Altas, bajas y cambios de asignaturas o cursos.

Solicitudes de altas y bajas de asignaturas o cursos en la Plataforma de Telenseñanza


alta|baja|cambio|modificar| asignatura|curso
crear|añadir|agregar
No encuentro mi asignatura en el formulario de solicitud de asignaturas oficiales
no (localizo|encuentro) asignatura

Tabla 5. Actividades, recursos y materiales.

Gestión de las calificaciones


gestion|gestionar calificaciones|notas
Importar preguntas a un cuestionario
importar|subir|añadir|crear pregunta cuestionario|examen
No puedo reproducir un vídeo o un programa Java dentro de Moodle
no(deja|ver|ve|veo|ven video|programa|java
|reproduce|reproducir)
Problema con el editor de texto
no(va|funciona) problema|fallo|falla|error editor texto

Tabla 6. Participantes.

Alumnos con beca Séneca o Erasmus


participante|alumno seneca|erasmus
Alumnos de asignaturas impartidas en los dos semestres
asignatura dos|2 semestre
Añadir alumnos o profesores
añadir|agregar profesor|alumno
Carga masiva de alumnos
carga|subir|añadir masiva|en masa alumno
Fotografía del profesor
foto|fotografia cambio|cambiar|sustituir profesor
Fotografías de los alumnos
foto|fotografia cambio|cambiar|sustituir alumno
Limitar el acceso a una actividad o recurso para un conjunto de alumnos
limitar|impedir|bloquear acceso|acceda|acceder actividad|recurso
No aparecen todos mis alumnos
alumno no(esta|aparece|se ve|veo) falta
Reinicio y borrado masivo de alumnos del curso anterior
reiniciar|eliminar|borrar alumno
Consulta por videoconferencia sobre la Plataforma de Telenseñanza (Moodle)
video video video

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

Tabla 7. Otras peticiones o sugerencias.

Otras peticiones o sugerencias


peticion|sugerencia peticion|sugerencia peticion|sugerencia

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.

Tabla 8. Acceso a la Plataforma.

Acceso a Moodle desde la App


acceso|acceder|entrar app|aplicacion|movil|android
Acceso y contenido de las plataformas
acceso|acceder|entrar|contenido plataforma
Alumnos con beca Séneca o Erasmus
acceso|acceder|entrar seneca|erasmus
Cambio de la fotografía
cambio|cambiar|sustituir foto|fotografia
Obtención de cuenta de correo institucional de alumno
obtener|crear|hacer cuenta|correo|email
Olvido de cuenta de correo
no(acuerdo|se|recuerdo|conozco) olvido|olvidado cuenta|correo|email
Olvido del PIN
no(acuerdo|se|recuerdo|conozco) PIN
Olvido o cambio de contraseña
no(acuerdo|se|recuerdo|conozco) (cambiar|cambio) contraseña

Tabla 9. Asignaturas y cursos.

Aparecen asignaturas de cursos pasados


aparecen|veo|estan|siguen| continuan asignatura curso pasado|anterior

Conocer una nota


conocer|saber nota|calificacion
Contacto con los profesores
contacto|comunicar profesor|docente
El sistema pide una clave de acceso
sistema clave acceso
No aparecen asignaturas en las que estoy matriculado
no (aparecen|se ven|veo) asignatura matriculado
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
44
Descripción de la solución Propuesta
23 de junio de 2021

No visualizo el contenido de una asignatura o curso


no (aparecen|se ven|veo) contenido asignatura|curso
Consulta por videoconferencia sobre la Plataforma de Telenseñanza (Moodle)
video (conferencia|llamada)
Otras peticiones o sugerencias
peticion|sugerencia

Tabla 10. Otras peticiones o sugerencias.

Otras peticiones o sugerencias


peticion|sugerencia

Mapeo de palabras clave

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();
}

Figura 22. Fragmento del fichero RouteServiceProvider.php.

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.

Para gestionar desde el controlador de profesores la intención “No encuentro mi asignatura en el


formulario de solicitud de asignaturas oficiales” se ha creado una conversación
SubjectConversation.php. Donde va mostrando poco a poco en varios mensajes de texto en la
ventana del chat las instrucciones para crear un espacio virtual de asignaturas en preparación.

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

Figura 23. Conversación para creación de asignaturas.

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.

Figura 24. Opciones finales del menú.

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

4.8 Rasa NLU (Natural Language Understanding)


Con el objetivo de que el chatbot esté listo para futuras modificaciones o ampliación de las
cuestiones a las que da respuesta, se ha dejado preparado un middleware obtenido del Github de
Botman que puede trabajar con los diccionarios de NLU [37] proporcionados por Rasa [38]. Una
plataforma de código libre que contiene diccionarios en varios idiomas creados por la comunidad
[39]. Sometida a un proceso de mejora continua ya ha logrado tener una respuesta muy buena para
la interpretación de intenciones cuando se emplea el inglés, y dispone de algunos diccionarios en
castellano para descargar.

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].

public function handle(Message &$message, DriverInterface $driver)


{
[…]

$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

4.9 Chat widget


De las múltiples funcionalidades que se pueden añadir al chatbot se instala también un widget
(window-gadget). Esta posibilidad se ofrece gracias a javascript permitiendo que se pueda incluir en
la página web en la que se integra. El chatbot se diseña para ser empleado en distintas páginas web
y con el widget se facilita la implantación en cualquiera de ellas.

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.

Figura 26. Icono del chatwidget en la parte inferior.

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

5.1 Instalación del chatbot


Para comenzar con la primera prueba se requiere la instalación de un servidor Apache, el cual se
realiza sobre en un entorno Windows 10. Se comienza instalando xampp-windows-x64-7.4.2-0-
VC15 [44] que incluye php 7.4.2. Sobre este se instala el gestor de dependencias para php
Composer.exe [45] con el cual ya se puede proceder desde la ventana de comandos de Windows a
la descarga del instalador y todos los paquetes.

Figura 27. Instalación de botman.

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.

composer create-project --prefer-dist Botman/Studio Chatina

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.

Figura 28. Arranque del servidor.

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.

Figura 29. Conversación de prueba.

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.

Figura 30. Comandos para habilitar Tinker.

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
51
Resultados
23 de junio de 2021

5.2 Prueba en entorno real


Comprobadas las distintas partes del chatbot se diseña una página web en html para realizar pruebas
simulando la puesta en funcionamiento en la web del GATE o Moodle. El fichero index.blade.php
adjunto en el anexo será la Vista de la aplicación desarrollada, sustituyendo así la consola de
comandos de Laravel. Este fichero php desarrollado en html contiene la hoja que se muestra en la
página principal. Ubicado en \resources\views se carga desde el fichero \routes\web.php donde se
registran las rutas web de la aplicación. Estas rutas son cargadas por el fichero \public\index.php
cuando se realiza una petición al servidor.

Figura 31. Despliegue en la web.

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.

<br><br>. Para comenzar pulsa <a href="#" onclick="botmanChatWidget


whisper('Hola');return false;">aquí</a>
<br><br>O prueba diciendo "Hola"&hellip;
Figura 32. Script para comenzar la conversación.

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:

 Título, con el nombre que se bautiza a la aplicación “Chatina”.


 Marcador de posición, las palabras que aparecen en la ventana para escribir.
 Avatar, la imagen que aparece en el icono antes de desplegar la ventana.
 Enlace sobre el servicio, que aloja la aplicación del chatbot y redirige a su web.
 Texto sobre quién proporciona el servicio.

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.

Métodos de prueba de la aplicación desarrollada

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.

Test de prueba de entrada del método hears para alumnos

//Acceso a Moodle desde la App


No puedo entrar a la aplicación
Quiero acceder con mi móvil
Para entrar con Android qué hago

//Acceso y contenido de las plataformas


No tengo acceso a la plataforma
Cómo puedo entrar a la plataforma

//Alumnos con beca Séneca o Erasmus


Cómo hago para entrar si soy erasmus
Para acceder si solo tengo el séneca

//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

//Obtención de cuenta de correo institucional de alumno


Cómo puedo obtener un email
Hay alguna forma de hacer una cuenta
Me quiero crear un correo

//Olvido de cuenta de correo


Se me ha olvidado el correo
No recuerdo cuál es mi email
No sé cuál es mi cuenta

//Olvido del PIN


No recuerdo mi pin
Se me olvidó el pin

//Olvido o cambio de contraseña


No me acuerdo de mi contraseña, qué hago
Para cambiar la contraseña a dónde voy

//Página en blanco tras acceder


Todo se ve blanco
Cuando entro todo sale blanco

//Restricción de acceso a la plataforma de Punto de Inicio


Me da error al entrar en punto de inicio
No tengo acceso al punto de inicio

//Aparecen asignaturas de cursos pasados


Veo asignaturas de otro curso
Me aparecen asignaturas de un curso anterior

//Conocer una nota


Me gustaría conocer una nota
Cómo puedo saber la calificación que tengo en cálculo

//Contacto con los profesores


Cómo me pongo en contacto con un profesor
¿Es posible comunicarme con un docente?

//El sistema pide una clave de acceso


El sistema me está pidiendo la clave de acceso
Me indica el sistema que necesito una clave de acceso

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
54
Resultados
23 de junio de 2021

//No aparecen asignaturas en las que estoy matriculado


No veo una asignatura en la que estoy matriculado
Cómo se ven las asignaturas que he matriculado

//No visualizo el contenido de una asignatura o curso


No veo el contenido del curso de programación
No me aparece el contenido de la asignatura de redes

//Consulta por videoconferencia sobre la Plataforma de Telenseñanza (Moodle)


¿Se puede hacer una videollamada?
Me gustaría que me ayudaran por video conferencia

//Otras peticiones o sugerencias


Tengo una petición que realizar

Test de prueba de entrada del método hears de profesor

//Alta, baja de asignaturas


Me gustaría dar de alta un curso
Quiero añadir una asignatura
Cómo se pueden modificar las asignaturas

//No encuentro una asignatura


No puedo encontrar una asignatura
No localizo la asignatura de gestión

//Gestión de calificaciones
Necesito realizar una gestión con una nota
Cómo podría gestionar unas calificaciones de mi grupo

//Importar, crear peguntas en un cuestionario


Necesito importar preguntas a un cuestionario
Cómo se pueden crear preguntas de examen

//No se pueden reproducir los videos


No me deja ver un video
No puedo reproducir java

//No va el editor de texto


Tengo un problema con el editor de texto
Sale error en el editor de texto

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
55
Resultados
23 de junio de 2021

//Alumnos con beca o erasmus


Tengo un alumno de erasmus que no aparece
Necesito agregar un participante de séneca

//Alumnos de asignaturas impartidas en los dos semestres


Tengo asignaturas de dos semestres
Algunos alumnos repiten asignatura en el 2 semestre

//Añadir alumnos o profesores


Quiero añadir más alumnos, cómo lo hago
¿Se pueden agregar profesores?

//Carga masiva de alumnos


Sería posible añadir en masa varios alumnos
Quiero hacer la carga masiva de alumnos, cómo funciona

//Fotografía del profesor


Quiero cambiar la fotografía del profesor
Necesito sustituir la foto de profesor

//Fotografías de los alumnos


Cómo se cambia la foto de un alumno

//Limitar el acceso a una actividad o recurso para un conjunto de alumnos


Cómo se bloquea el acceso para una actividad para un alumno
Cómo se impide el acceso a un recurso a un alumno

//No aparecen todos mis alumnos


Me faltan alumnos en la lista
No se ven todos los alumnos

//Reinicio y borrado masivo de alumnos del curso anterior


Deseo realizar un borrado de varios alumnos
Para reiniciar la lista de alumnos cómo puedo hacer

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.

Script de arranque del servidor dentro de la máquina virtual

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.

Su contenido se detalla aquí.

@rem Script for PHP server Start


cd c:\Chatina
php artisan serve
Figura 33. Script de arranque del servidor.

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

6.1 Menú contextual de alumnos

Documentos Dudas habituales


3D Labs UPM
Generales y miniguías

¿Porqué no puedo acceder a


Preguntas frecuentes mi asignatura?

Pautas para la creación y


publicación de material ¿Cómo utilizar el Foro?
audiovisual en las
universidades

¿Cómo funcionan los


Preguntas frecuentes sobre Cuestionarios?
propiedad intelectual

¿Cómo funcionan las


Acceso desde la App de Tareas?
Moodle

Cambio de foto de perfil


Moodle

Videotutorial Moodle: Foros

Videotutorial Moodle:
Calificaciones

Videotutorial Moodle:
Tareas

Videotutorial Moodle:
Cuestionarios

Videotutorial Moodle:
Mensajes

Videotutorial Moodle: Perfil


de usuario

Videotutorial Moodle: Área


personal

Videotutorial Moodle:
Wikis

Figura 34. Menú de botones para alumnos.

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
59
Planos
23 de junio de 2021

6.2 Menú contextual de profesores

Documentos Dudas habituales y


Guías Metodológicas
Generales miniguías

INFOGRAFÍA -
Herramientas de Moodle para
Novedades de Moodle 3.5 Nuevas miniguías
la clase invertida (Flipped
classroom)

INFOGRAFÍA - Revisión de originalidad de


Manual completo de Moodle
Herramientas de Moodle para trabajos y documentos
3.5
la gamificación (Turnitin)

Guía de gamificación para Cuestiones básicas de


Guía de reinicio del curso
Moodle funcionamiento

Preguntas frecuentes sobre Presentación de la plataforma Gestión de alumnos y


propiedad intelectual Moodle profesorestiones

Pautas para la creación y


Guía técnico-pedagógica del
publicación de material
uso de la plataforma de Calificaciones
audiovisual en las
telenseñanza de la UPM
universidades.

Guía introductoria para la


Acceso desde la App de
implantación de una Contenido
Moodle
asignatura en Moodle

Cursos sobre Moodle


ofrecidos por el GATE Guía de uso para la
Actividades, cuestionarios y
implementación del móvil en
• Curso básico online preguntas
el aula
• Cursos presenciales

Otros servicios Comunicación en la


• FAQs y guías sobre asignatura
propiedad intelectual
(REBIUN)
• Carta de servicios del
GATE
• Protocolo de
administración de cuentas
provisionales para alumnos
de intercambio

Figura 35. Menú de botones para profesores.

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 ¿Cómo configurar una


Arrastrar y soltar sobre
trabajo de similitud? clave de acceso a la
imagen
(Profesores) asignatura?

¿Cómo interpretar un
Arrastrar y soltar ¿Cómo dar acceso a los
trabajo de similitud?
marcadores alumnos a mi asignatura?
(Estudiantes)

¿Cómo añadir una ¿Cómo accede el


Arrastrar y soltar sobre
actividad de revisión de alumnado a las
texto
originalidad? asignaturas?

Guía del servicio web de ¿Cómo realizar una copia


Seleccionar palabras
Turnitin (revisión de de seguridad de una
faltantes
originalidad) asignatura?

Emparejar

Figura 36. Submenú de botones para profesores.

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

¿Cómo trabajar con


¿Cómo registrar y calificar calificaciones ¿Cómo añadir un vídeo de
la asistencia a clase desde condicionales? Convertir Youtube en nuestro
Moodle? en 0 una calificación que Moodle?
no llega a un mínimo

¿Cómo trasladar contenido


¿Cómo crear grupos de ¿Cómo subir notas a de una asignatura de una
clase por autoinscripción? Moodle desde un fichero? plataforma Moodle a otra
distinta?

¿Cómo hacer que un


¿Cómo gestionar las
recurso o una actividad sea Guía para grabar tus
calificaciones?¿Cómo
vista sólo por un conjunto propios vídeos educativos
calcular la nota final?
determinado de alumnos?

¿Cómo dar de alta/baja a Videotutorial para grabar


profesores, alumnos y tus propios videos
becarios en mi asignatura? educativos

Figura 37. Submenú 2 de botones para profesores.

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
62
Planos
23 de junio de 2021

Actividades, cuestionarios Comunicación en la


y preguntas asignatura

¿Cómo añadir un post


¿Cómo utilizar el
de Facebook en
editor PDF?
nuestro Moodle?

Apertura de un ¿Cómo sincronizar el


cuestionario para uno calendario de Google
o varios alumnos con el de Moodle?

¿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?

Figura 38. Submenú 3 de botones para profesores.

Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
63
Planos
23 de junio de 2021

6.3 Flujo del chatbot basado en menú contextual

ChatinaController.php

ConversationWho.php userData Fallback listen

TeacherMenu.php

StudentMenu.php

Figura 39. Chatbot basado en menú contextual.

6.4 Flujo del chatbot basado en AIML

isRoleStudent

chatinaStudent.php StudentController.php

isRoleTeacher

chatinaTeacher.php TeacherController.php SujectConversation.php

Figura 40. Chatbot basado en Markup Language.

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.

A continuación, se desglosa más detalladamente la procedencia de cada coste relacionado con el


proyecto para cada uno de estos tres bloques.

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

Tabla 11. Presupuesto de la aplicación.

Concepto Importe (€)

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

Coste Seguridad Social (Empresa)


4361,88€
30% sobre 14539,60€

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.

La mayor parte de los chatbots desarrollados que se encuentran en la actualidad funcionan en


JavaScript. Ha resultado una ardua tarea el desarrollo de un chatbot con un diseño íntegramente en
lenguaje php (requisito para el diseño en Moodle). Esta limitación y las actualizaciones constantes
de la versión de php empleada hacen que se requiera un mantenimiento frecuente para un correcto
funcionamiento con actualizaciones y mejoras. A diferencia de la mayor parte de chatbots que
disponen de una interfaz gráfica, éste requiere tener un buen conocimiento de varios lenguajes de
programación implicados y soltura con los paquetes de frameworks que necesita para funcionar.

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

[1] Moodle, “Preguntas frecuentes de Moodle”. [En línea]. Disponible en:


https://moodle.upm.es/titulaciones/oficiales/login/login.php. [Consultado: 14/04/2020].

[2] Laravel, “The PHP Framework for Web Artisans”. [En línea]. Disponible en:
https://laravel.com. [Consultado: 7/05/2021].

[3] Laravel, “Laravel Guide”. [En línea]. Disponible en: https://laravel-


guide.readthedocs.io/en/latest/license/. [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

[13] Moodle, “Manual Moodle 3.5”. [En línea]. Disponible en:


http://oa.UPM.es/53507/1/Manual_Moodle_3-5.pdf. [Consultado: 15/04/2020].

[14] Moodle, “Moodle UPM”. [En línea]. Disponible en:


https://moodle.upm.es/titulaciones/oficiales/login/login.php. [Consultado: 10/05/2021].

[15] “Manual de php”, Anon, 2021. [En línea]. Disponible en:


https://www.PHP.net/manual/es/intro-whatis. [Consultado: 10/05/2021].

[16] Wikipedia, “PHP”. [En línea]. Disponible en: https://es.wikipedia.org/wiki/PHP. [Consultado:


09/05/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].

[50] Wikipedia, “Daemon”. [En línea]. Disponible en:


https://es.wikipedia.org/wiki/Daemon_(inform%C3%A1tica). [Consultado: 09/05/2021].

[18] Botkit, “Logotipo botkit”. [En línea]. Disponible en: http://mediollena.com/wp-


content/uploads/2017/07/BOTKIT-LOGO.png. [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].

[23] Dialogflow, “Logotipo Dialogflow”. [En línea]. Disponible en:


https://static.dialogflow.com/common/favicon.png. [Consultado: 09/05/2021].

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].

[28] Composer, “Composer”. [En línea]. Disponible en: https://getcomposer.org/. [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].

[30] “¿Qué es Symfony?”, symfony.es, 2021. [En línea]. Disponible en:


https://symfony.es/pagina/que-es-symfony/. [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].

[35] Laravel Docs, “Laravel 8 Lifecycle”. [En línea]. Disponible en:


https://laravel.com/docs/8.x/lifecycle. [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

[51] Wikipedia, “CSRF”. [En línea]. Disponible en: https://es.wikipedia.org/wiki/Cross-


site_request_forgery. [Consultado: 09/05/2021].

[36] Botman.oi, “Middleware”. [En línea]. Disponible en:


https://botman.io/img/middleware/lifecycle.png. [Consultado: 09/05/2021].

[37] Wikipedia, “NLU”. [En línea]. Disponible en: https://en.wikipedia.org/wiki/Natural-


language_understanding. [Consultado: 22/01/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].

[41] Rasa, “Open Source Natural Language Processing (NLP)”. https://rasa.com/solutions/open-


source-nlu-nlp/. [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].

[43] Wikipedia, “Widget”. [En línea]. Disponible en: https://es.wikipedia.org/wiki/Widget.


[Consultado: 10/12/2020].

[44] Xampp, “xampp-windows-x64-7.4.2-0-VC15.zip”. [En línea]. Disponible en:


https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.4.2/xampp-windows-x64-
7.4.2-0-VC15-installer.exe/download. [Consultado: 09/05/2021].

[45] Composer, “Composer.exe”. [En línea]. Disponible en: https://getcomposer.org/download/.


[Consultado: 09/05/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

[48] Sourceforge, “Xampp”. [En línea]. Disponible en:


https://sourceforge.net/projects/xampp/files/XAMPP%20Windows/7.2.30/. [Consultado:
09/05/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

1 Funciones menú contextual alumnos

Área Documentos Generales


Función displayGeneralDoc()
Recurso Preguntas frecuentes
Valor faq
Respuesta https://www.UPM.es/politecnica_virtual/login.UPM?c=1692A
Adjunto No tiene

Área Documentos Generales


Función displayGeneralDoc()
Recurso Pautas para la creación y publicación de material audiovisual en las
universidades. Guía para estudiantes (REBIUN)
Valor publiaudiovis
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/1399244/
mod_resource/content/2/estudiantes_%20pautas.pdf
Adjunto Fichero de texto

Área Documentos Generales


Función displayGeneralDoc()
Recurso Preguntas frecuentes sobre propiedad intelectual
Valor faqpropiedad
Respuesta http://serviciosGATE.UPM.es/docs/asesoramiento/FAQ_Propiedad_In
telectual.pdf
Adjunto Fichero de texto

Área Documentos Generales


Función displayGeneralDoc()
Recurso Acceso desde la App de Moodle
Valor accesoappMoodle
Respuesta accesoApp()
Adjunto No tiene

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

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso ¿Por qué no puedo acceder a mi asignatura?
Valor Guideaccesoasignatura
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/611752/m
od_resource/content/1/problemas_acceso2-Moodle2.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso ¿Cómo utilizar el Foro?
Valor Guideforo
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/611771/m
od_resource/content/2/El%20Foro-Moodle2.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso ¿Cómo funcionan los Cuestionarios?
Valor Guidecuestionarios
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/620485/m
od_resource/content/2/como%20funcionan%20los%20cuestionarios.pd
f
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso ¿Cómo funcionan las Tareas?
Valor Guidetareas
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/620486/m
od_resource/content/2/Tareas-alumnos.pdf
Adjunto Fichero de texto

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

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Cambio de foto de perfil Moodle
Valor Guidecambiofoto
Respuesta http://www.UPM.es/sfs/Rectorado/Vicerrectorado%20de%20Alumnos
/Informacion/Matricula/Documentos/2016_17_TarjetaUniversitariagui
aPV.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Foros
Valor videoforo
Respuesta https://youtu.be/4xXnL1l7agg
Adjunto Video

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Calificaciones
Valor videonotas
Respuesta https://youtu.be/F4v8Ffw_H3c
Adjunto Video

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Tareas
Valor videotareas
Respuesta https://youtu.be/XEZHlZ6BAFI
Adjunto Video

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Cuestionarios
Valor videocuestionario
Respuesta https://youtu.be/_kw4AWCtSyo
Adjunto Video

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

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Mensajes
Valor videomensaje
Respuesta https://youtu.be/zuwFvVwbPYQ
Adjunto Video

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Perfil de usuario
Valor videoperfil
Respuesta https://youtu.be/cVizZVfvvqQ
Adjunto Video

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Área Personal
Valor videopersonalarea
Respuesta https://youtu.be/OLI8zsQF_Vo
Adjunto Video

Área Dudas habituales y miniguías


Función displayTinyGuides ()
Recurso Videotutorial Moodle: Wikis
Valor videowikis
Respuesta https://youtu.be/W5M1rHV0EzM
Adjunto Video

Área UPM[3Dlabs] - Laboratorios Virtuales de la UPM


Función display3dLabs ()
Recurso Foro del Laboratorio de regulación y control
Valor 3dlabs
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/mod/forum/view.php?id=
525802
Adjunto No tiene

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

2 Funciones menú contextual profesores

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Novedades de Moodle 3.5
Valor novMoodle
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/novedades_Moodle3-
5.pdf
Adjunto Fichero de texto

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Manual completo de Moodle 3.5
Valor Moodleman
Respuesta http://oa.UPM.es/53507/
Adjunto No tiene

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Guía de reinicio del curso
Valor resetguide
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/guiareinicio.pdf
Adjunto Fichero de texto

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Preguntas frecuentes sobre propiedad intelectual
Valor faqpropiedad
Respuesta https://www.UPM.es/atencion_usuario/lista.UPM?grupos%5B%5D=5
0&grupos%5B%5D=52&grupos%5B%5D=53&grupos%5B%5D=49
Adjunto No tiene

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Pautas para la creación y publicación de material audiovisual en las
universidades. Guía para estudiantes (REBIUN)
Valor publi
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/1399251/
mod_resource/content/1/estudiantes_%20pautas.pdf
Adjunto Fichero de texto

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

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Acceso desde la App de Moodle
Valor appacces
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/mod/page/view.php?id=1
045478
Adjunto No tiene

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Cursos sobre Moodle ofrecidos por el GATE
Valor Moodlestud
Respuesta displayMoodleGATE()
Adjunto No tiene

Área Documentos Generales


Tema Cursos sobre Moodle ofrecidos por el GATE
Función displayMoodleGATE ()
Recurso Curso básico online de Moodle.
Valor Moodleonline
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/course/view.php?id=9106
Adjunto

Área Documentos Generales


Tema Cursos sobre Moodle ofrecidos por el GATE
Función displayMoodleGATE ()
Recurso Cursos presenciales: Básico, Evaluación continua, Comunicación,
Gestión de calificaciones, Trabajo colaborativo, Evaluación entre
estudiantes, Gestión de grupos, Gamificación y Revisión de
originalidad en trabajos académicos (Turnitin).
Valor presential
Respuesta http://serviciosGATE.UPM.es/GATE/cursos
Adjunto No tiene

Área Documentos Generales


Función displayTeachGeneralDoc ()
Recurso Otros servicios
Valor otherserv
Respuesta displayOtherServ()
Adjunto No tiene

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

Área Documentos Generales


Tema Otros servicios
Función displayOtherServ()
Recurso FAQs y guías sobre propiedad intelectual (REBIUN)
Valor faqmood
Respuesta https://www.UPM.es/propiedad_intelectual/
Adjunto

Área Documentos Generales


Tema Otros servicios
Función displayOtherServ()
Recurso Carta de servicios del GATE
Valor GATEserv
Respuesta http://serviciosGATE.UPM.es/docs/carta_de_servicios_GATE.pdf
Adjunto Fichero de texto

Área Documentos Generales


Tema Otros servicios
Función displayOtherServ()
Recurso Protocolo de administración de cuentas provisionales para alumnos de
intercambio
Valor provacount
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/cuentas_alumnos%20de%
20intercambio.pdf
Adjunto Fichero de texto

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso INFOGRAFÍA - Herramientas de Moodle para la clase invertida
(Flipped classroom)
Valor flippedclass
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/1375836/
mod_resource/content/4/flipped-classroom.png
Adjunto Imagen

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

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso INFOGRAFÍA - Herramientas de Moodle para la gamificación
Valor infogamifi
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/1375837/
mod_resource/content/4/gamificacion.png
Adjunto Imagen

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso Guía de gamificación para Moodle
Valor gamifi
Respuesta http://serviciosGATE.UPM.es/docs/asesoramiento/Gamificar_Moodle.
pdf
Adjunto Fichero de texto

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso Buenas prácticas en la telenseñanza
Valor goodpract
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/454708/m
od_resource/content/0/miniguias/01_basico/BUENAS_PRACTICA1.p
df
Adjunto Fichero de texto

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso Presentación de la plataforma Moodle
Valor Moodlepresn
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/presentacion_plataforma.p
df
Adjunto Fichero de texto

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

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso Guía técnico-pedagógica del uso de la plataforma de telenseñanza de la
UPM
Valor guidteleUPM
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/384944/m
od_resource/content/2/miniguias/01_basico/guia_%20t%C3%A9cnico
-pedag%C3%B3gica_150413.pdf
Adjunto Fichero de texto

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso Guía introductoria para la implantación de una asignatura en Moodle
Valor guidsubjMoodle
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/guia_plataforma_Moodle.
pdf
Adjunto Fichero de texto

Área Guías Metodológicas


Función displayMethodGuides ()
Recurso Guía de uso para la implementación del móvil en el aula
Valor mobileclass
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/686885/m
od_resource/content/1/Gu%C3%ADa%20de%20uso%20para%20la%2
0implementaci%C3%B3n%20del%20M%C3%B3vil%20en%20el%20
Aula.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Pregunta de cuestionario Moodle
Valor questMoodle
Respuesta displayVideotuto()
Adjunto No tiene

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

Área Dudas habituales y miniguías


Tema Pregunta de cuestionario Moodle
Función displayVideotuto ()
Recurso Arrastrar y soltar sobre imagen: Pregunta en la que el usuario debe
colocar textos o imágenes sobre casillas en una imagen.
Valor rollimage
Respuesta https://youtu.be/u08NvKOu_KE
Adjunto Video

Área Dudas habituales y miniguías


Tema Pregunta de cuestionario Moodle
Función displayVideotuto ()
Recurso Arrastrar y soltar marcadores: Pregunta en la que los usuarios arrastran
y sueltan las respuestas sobre una imagen. El usuario no puede ver las
zonas predefinidas en la imagen.
Valor rollmarkers
Respuesta https://youtu.be/lXWE5xWujcU
Adjunto Video

Área Dudas habituales y miniguías


Tema Pregunta de cuestionario Moodle
Función displayVideotuto ()
Recurso Arrastrar y soltar sobre texto: El estudiante debe arrastrar y soltar,
encajando las palabras o textos sobre huecos definidos en un párrafo.
Valor rolltext
Respuesta https://youtu.be/dVvpTIqbSQk
Adjunto Video

Área Dudas habituales y miniguías


Tema Pregunta de cuestionario Moodle
Función displayVideotuto ()
Recurso Seleccionar palabras faltantes: En este tipo de pregunta aparecen
huecos con menús desplegables dentro de un texto, donde se debe
seleccionar la opción correcta.
Valor selectwords
Respuesta https://youtu.be/vjkk6AnIAsQ
Adjunto Video

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

Área Dudas habituales y miniguías


Tema Pregunta de cuestionario Moodle
Función displayVideotuto ()
Recurso Emparejar: Estas preguntas plantean un enunciado en el que el alumno
debe asociar dos conceptos de tal forma que queden emparejados.
Valor join
Respuesta https://youtu.be/oYQiv16fq28
Adjunto Video

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Revisión de originalidad de trabajos y documentos (Turnitin)
Valor original
Respuesta displayTurnitin()
Adjunto No tiene

Área Dudas habituales y miniguías


Tema Revisión de originalidad de trabajos y documentos (Turnitin)
Función displayTurnitin ()
Recurso ¿Cómo interpretar un informe de similitud? (Profesor)
Valor simteacher
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/1577994/
mod_resource/content/2/Guia%20Rapida%20para%20profesor.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Revisión de originalidad de trabajos y documentos (Turnitin)
Función displayTurnitin ()
Recurso ¿Cómo interpretar un informe de similitud? (Estudiante)
Valor simstudent
Respuesta https://Moodle.UPM.es/titulaciones/oficiales/pluginfile.php/1577991/
mod_resource/content/7/Guia%20Rapida%20para%20estudiantes.pdf
Adjunto Fichero de texto

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

Área Dudas habituales y miniguías


Tema Revisión de originalidad de trabajos y documentos (Turnitin)
Función displayTurnitin ()
Recurso ¿Cómo añadir una actividad de revisión de originalidad (Turnitin) en
Moodle?
Valor originrev
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_turnitin.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Revisión de originalidad de trabajos y documentos (Turnitin)
Función displayTurnitin ()
Recurso Guía del servicio web de Turnitin (revisión de originalidad)
Valor guidturnitin
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/turnitin_web.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Cuestiones básicas de funcionamiento
Valor cuestionesbasicas
Respuesta displayBasicUse()
Adjunto No tiene

Área Dudas habituales y miniguías


Tema Cuestiones básicas de funcionamiento
Función displayBasicUse ()
Recurso ¿Cómo configurar una clave de acceso a la asignatura?
Valor accesskey
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_automatriculacion.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Cuestiones básicas de funcionamiento
Función displayBasicUse ()
Recurso ¿Cómo dar acceso a los alumnos a mi asignatura?
Valor attachment
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_acceso_alumnos.pdf
Adjunto Fichero de texto

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

Área Dudas habituales y miniguías


Tema Cuestiones básicas de funcionamiento
Función displayBasicUse ()
Recurso ¿Cómo accede el alumnado a las asignaturas?
Valor studentsubj
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/instruc_estudiantes.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Cuestiones básicas de funcionamiento
Función displayBasicUse ()
Recurso ¿Cómo realizar una copia de seguridad de una asignatura?
Valor securecopy
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/copia_seguridad.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Gestión de alumnos y profesores
Valor gestionalumnosprofe
Respuesta displayGestion()
Adjunto No tiene

Área Dudas habituales y miniguías


Tema Gestión de alumnos y profesores
Función displayGestion()
Recurso ¿Cómo registrar y calificar la asistencia a clase desde Moodle?
Valor assistance
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_asistencia.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Gestión de alumnos y profesores
Función displayGestion()
Recurso ¿Cómo crear grupos de clase por autoinscripción?
Valor autoinscription
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_eleccion_grupo.pdf
Adjunto Fichero de texto

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

Área Dudas habituales y miniguías


Tema Gestión de alumnos y profesores
Función displayGestion()
Recurso ¿Cómo hacer que un recurso o una actividad sea vista sólo por un
conjunto determinado de alumnos?
Valor recursolim
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_restriccion-grupo.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Gestión de alumnos y profesores
Función displayGestion()
Recurso ¿Cómo dar de alta/baja a profesores, alumnos y becarios en mi
asignatura?
Valor altasubj
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/ComoDarDeAlta-
BajaEnMiAsignatura.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Calificaciones
Valor Guidescalificaciones
Respuesta displayMarksGuide()
Adjunto No tiene

Área Dudas habituales y miniguías


Tema Calificaciones
Función displayMarksGuide ()
Recurso ¿Cómo trabajar con calificaciones condicionales? Convertir en 0 una
calificación que no llega a un mínimo
Valor minmarks
Respuesta https://apeiron2.blogspot.com/2012/04/implementacion-del-
condicional-en-el.html
Adjunto No tiene

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

Área Dudas habituales y miniguías


Tema Calificaciones
Función displayMarksGuide ()
Recurso ¿Cómo subir notas a Moodle desde un fichero?
Valor uploadmarks
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/subircalificaciones.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Calificaciones
Función displayMarksGuide ()
Recurso ¿Cómo gestionar las calificaciones?¿Cómo calcular la nota final?
Valor gestmarks
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_gestion-
calificaciones.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Contenido
Valor Guidescontenido
Respuesta displayContent()
Adjunto No tiene

Área Dudas habituales y miniguías


Tema Contenido
Función displayContent()
Recurso ¿Cómo añadir un vídeo de Youtube en nuestro Moodle?
Valor youtuveMoodle
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_youtube.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Contenido
Función displayContent()
Recurso ¿Cómo trasladar contenido de una asignatura de una plataforma
Moodle a otra distinta?
Valor trassubject
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_trasladar_contenido.p
df
Adjunto Fichero de texto
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
88
Funciones menú contextual profesores
23 de junio de 2021

Área Dudas habituales y miniguías


Tema Contenido
Función displayContent()
Recurso Guía para grabar tus propios vídeos educativos
Valor videorecordguide
Respuesta http://serviciosGATE.UPM.es/docs/audiovisuales/guia%20de%20auto
grabaciones.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Contenido
Función displayContent()
Recurso Videotutorial para grabar tus propios videos educativos
Valor rollimage
Respuesta http://mediateca.GATE.UPM.es/1314/UPM/screencast_v2.mp4
Adjunto Video

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Actividades, cuestionarios y preguntas
Valor Guideactividades
Respuesta displayQuest()
Adjunto No tiene

Área Dudas habituales y miniguías


Tema Actividades, cuestionarios y preguntas
Función displayQuest ()
Recurso ¿Cómo utilizar el editor PDF?
Valor pdfusage
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_PDF.pdf
Adjunto Fichero de texto

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

Área Dudas habituales y miniguías


Tema Actividades, cuestionarios y preguntas
Función displayQuest ()
Recurso Apertura de un cuestionario para uno o varios alumnos
Valor openquest
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_apertura_cuestionario.
pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Actividades, cuestionarios y preguntas
Función displayQuest ()
Recurso ¿Cómo importar preguntas a una asignatura o crear preguntas de forma
rápida?
Valor importquest
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/importar_preguntas.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Actividades, cuestionarios y preguntas
Función displayQuest ()
Recurso ¿Cómo escribir fórmulas en las preguntas de tipo Calculada?
Valor formulas
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/preguntas_calculadas.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Función displayTeachNewGuides ()
Recurso Comunicación en la asignatura
Valor Guidecomunicacion
Respuesta displayComm()
Adjunto No tiene

Área Dudas habituales y miniguías


Tema Comunicación en la asignatura
Función displayComm ()
Recurso ¿Cómo añadir un post de Facebook en nuestro Moodle?
Valor fbpost
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_facebook.pdf
Adjunto Fichero de texto

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

Área Dudas habituales y miniguías


Tema Comunicación en la asignatura
Función displayComm ()
Recurso ¿Cómo sincronizar el calendario de Google con el de Moodle?
Valor sindrocalendar
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_calendario.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Comunicación en la asignatura
Función displayComm ()
Recurso ¿Cómo mandar mensajes a los alumnos?
Valor sendmessage
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/mg_avisos.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Comunicación en la asignatura
Función displayComm ()
Recurso ¿Cómo realizar consultas a los alumnos (revisiones de exámenes,
prácticas, etc.)?
Valor askstudent
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/consultas.pdf
Adjunto Fichero de texto

Área Dudas habituales y miniguías


Tema Comunicación en la asignatura
Función displayComm ()
Recurso ¿Cómo insertar mensajes de Twitter en una asignatura?
Valor twitersubject
Respuesta http://serviciosGATE.UPM.es/docs/Moodle/Insertar_twitter_en_Mood
le.pdf
Adjunto Fichero de texto

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

3 Funciones Markup Language Alumnos

Tema Acceso a la Plataforma


Función accesoApp ()
Consulta Acceso a Moodle desde la App
Activación acceso|acceder|entrar app|aplicacion|movil|android
Respuesta Estos son los pasos a realizar desde el teléfono para acceder a Moodle
con la App oficial:
1. Descargar la aplicación Moodle Mobile:
Android:
https://play.google.com/store/apps/details?id=com.Moodle.Mo
odlemobile
IOS:https://itunes.apple.com/es/app/Moodle-
mobile/id633359593
Windows Phone: https://www.microsoft.com/es-
es/store/p/Moodlemobile/9wzdncrdk93x
2. Ejecutar la aplicación.
3. En "url del sitio" escribir la dirección del Moodle:
- Para titulaciones oficiales
http://Moodle.UPM.es/titulaciones/oficiales.
- Para titulaciones propias
http://Moodle.UPM.es/titulaciones/propias.
- Otros. Consultar la url en la barra de dirección del
navegador.
4. Pulsar “Añadir”.
5. Indicar usuario y contraseña y pulsar “Añadir”.

Tema Acceso a la Plataforma


Función accesoPlataforma()
Consulta Acceso y contenido de las plataformas
Activación acceso|acceder|entrar|contenido Plataforma|Moodle
Respuesta PlatformsAccess.php

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

Tema Acceso a la Plataforma


Función accesoErasmus()
Consulta Alumnos de intercambio (Séneca o Erasmus)
Activación acceso|acceder|entrar intercambio|seneca|erasmus
Respuesta Los alumnos ERASMUS / SÉNECA deben solicitar su cuenta
institucional de correo en la dirección
http://www.UPM.es/institucional/Estudiantes/Servicios_Red/email/Ge
stioncorreo. Si la tramitación de tu matrícula va a retrasarse, debes
ponerte en contacto con los servicios responsables de su Escuela o
Facultad en materia de becas de intercambio para la posible concesión
de una cuenta provisional de usuario. Seguidamente, debes solicitar de
los profesores que te inscriban manualmente, con dicha cuenta
provisional, en las asignaturas que estén en la plataforma de
telenseñanza.

Tema Acceso a la Plataforma


Función cambioFoto()
Consulta Cambio de la fotografía
Activación Cambio|cambiar|sustituir Foto|fotografía
Respuesta En la plataforma se carga automáticamente la misma fotografía que
tienes en el carnet universitario.
En la plataforma se carga automáticamente la misma fotografía que
tienes en el carnet universitario.
Si tu carnet carece de fotografía o deseas cambiarla, tienes que dirigirte
a la Secretaría de tu Centro.

Tema Acceso a la Plataforma


Función crearCuenta()
Consulta Obtención de cuenta de correo institucional de alumno
Activación Obtener|crear|hacer Cuenta|correo|email
Respuesta Si ya estás matriculado o inscrito en la UPM, sigue los pasos que se
indican tras pulsar en el siguiente enlace:
http://www.UPM.es/institucional/Estudiantes/Servicios_Red/email/Ge
stioncorreo. Necesitarás tu DNI o documento oficial y tu PIN.

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

Tema Acceso a la Plataforma


Función olvidoCuenta()
Consulta Olvido de cuenta de correo
Activación No (acuerdo|se|acuerdo| Olvido|olvidado
conozco)
Respuesta Accede a:
http://www.UPM.es/institucional/Estudiantes/Servicios_Red/email/Ge
stioncorreo y solicita una nueva cuenta de correo de alumno. Si ya
tenías una cuenta de correo, te la recordarán.

Tema Acceso a la Plataforma


Función olvidoPIN()
Consulta Olvido del PIN
Activación No(acuerdo|se|acuerdo| PIN
conozco)
Respuesta Pregunta en la Secretaría de tu Centro

Tema Acceso a la Plataforma


Función olvidoContrasena()
Consulta Olvido o cambio de contraseña
Activación No(acuerdo|se|acuerdo| cambiar|cambio
conozco)
Respuesta La contraseña para acceder a la plataforma es la misma contraseña
asociada a la cuenta de correo electrónico de la UPM.
Si la has olvidado o deseas cambiarla, dirígete a:
http://www.UPM.es/institucional/Estudiantes/Servicios_Red/email/Ge
stioncorreo. Tras cambiar la contraseña, pasarán unas horas hasta que
puedas acceder a Moodle con la nueva contraseña.

Tema Asignaturas y cursos


Función apareceCursoPasado()
Consulta Aparecen asignaturas de cursos pasados
Activación aparecen|veo|estan| asignatura curso Pasado|anterior
siguen| continuan
Respuesta La asignatura no ha sido reiniciada correctamente al comienzo del
curso. Comunícaselo al profesor.

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

Tema Asignaturas y cursos


Función conocerNota()
Consulta Conocer una nota
Activación Conocer|saber Nota|calificación
Respuesta En el caso de los Estudios Oficiales, se puede consultar la nota en el
expediente a través de Politécnica Virtual.
En el caso de Estudios Propios, ponte en contacto con el profesor o
responsable del curso.

Tema Asignaturas y cursos


Función contactoConProfesor()
Consulta Contacto con los profesores
Activación contacto|comunicar profesor|docente
Respuesta Puedes consultar su dirección de correo en el directorio de la UPM o
mandarles un mensaje directamente a través de Moodle. Puedes
realizar consultas al profesorado por correo electrónico, en la
dirección que encontrarás en "Participantes", o a través de los foros de
los cursos.

Tema Asignaturas y cursos


Función sistemaClaveAcceso()
Consulta El sistema pide una clave de acceso
Activación sistema clave acceso
Respuesta En primer lugar, confirma que estás matriculado en la asignatura y que
se ha iniciado el cuatrimestre correspondiente. Si así fuera, solicita del
profesor la clave de acceso que sólo necesitarás en la primera
conexión.

Tema Asignaturas y cursos


Función asignaturaMatriculado()
Consulta No aparecen asignaturas en las que estoy matriculado
Activación no(aparecen|se asignatura matriculado
ven|veo)
Respuesta Verifica con el profesor que:
1. La asignatura existe en esta plataforma (no todas las asignaturas
están presentes en ella).
2. No tiene restringido el acceso por contraseña
3. No la tiene oculta a los alumnos
En caso de que se cumplan las tres condiciones y no puedas acceder,
cumplimenta la solicitud “Otras peticiones o incidencias" en esta
misma aplicación indicando asignatura o asignaturas.

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

Tema Asignaturas y cursos


Función contenidoAsignatura()
Consulta No visualizo el contenido de una asignatura o curso
Activación no(aparecen|se contenido asignatura|curso
ven|veo)
Respuesta Los profesores pueden ir cargando o mostrando la documentación poco
a poco. Consulta con ellos.

Tema Otras peticiones y sugerencias


Función otrasPeticiones()
Consulta Otras peticiones o sugerencias
Activación peticion|sugerencia
Respuesta Las peticiones de servicio (altas, bajas y modificación de asignaturas
en la Plataforma de Telenseñanza, las peticiones de cuentas de
invitado, de cursos de formación sobre Moodle o de otra naturaleza)
deberán realizarse a través de Politécnica Virtual en las rutas que se
indican a continuación:
Profesores:
En Politécnica Virtual: Docencia _Formación \ Docencia\ Mis
solicitudes académicas \ Servicio de Telenseñanza
Directamente en:
https://www.UPM.es/politecnica_virtual/login.UPM?c=2007DJ

Alumnos:
En Politécnica Virtual: Formación \ Moodle\ Ayuda
Directamente en:
https://www.UPM.es/politecnica_virtual/login.UPM?c=1692A

Personal de Administración y Servicios:


En Politécnica Virtual: Gestión \ Docencia \ Mis solicitudes
académicas \ Servicio de Telenseñanza
Directamente en:
https://www.UPM.es/politecnica_virtual/login.UPM?c=2008FL

Si las respuestas anteriores no han resuelto su problema, puede ponerse


en contacto con nosotros utilizando el enlace que mejor se ajuste a su
pregunta.

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

4 Funciones Markup Language Profesores

Tema Altas, bajas y cambios de asignaturas y cursos en la Plataforma de


Telenseñanza
Función altabajaAsignatura()
Consulta Solicitudes de altas y bajas de asignaturas o cursos en la Plataforma de
Telenseñanza
Activación alta|baja|cambio| asignatura|curso
modificar|crear|
añadir|agregar
Respuesta Las peticiones de alta, baja o de modificación de asignaturas y cursos
en la Plataforma de Telenseñanza deberán 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

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

Tema Altas, bajas y cambios de asignaturas y cursos en la Plataforma de


Telenseñanza
Función ubicacionAsignatura()
Consulta No encuentro mi asignatura en el formulario de solicitud de
asignaturas oficiales
Activación no (localizo|encuentro) asignatura
Respuesta Las asignaturas van apareciendo en el formulario, según se van
cargando por AGORA-Universitas XXI. Pero si no desea esperar a que
se actualice dicha carga puede hacer las siguientes operaciones:
a) Cumplimentar la petición “Solicitud de alojamiento de otros
cursos”. El GATE crearía un espacio virtual en la categoría de
“Asignaturas en preparación”. De este modo, Vd. podría ir trabajando
y subiendo material.
b) Cuando fuese a impartir la asignatura, tendría que solicitar de
nuevo el espacio mediante la petición de “Solicitud de alojamiento de
asignaturas de enseñanzas oficiales” que encontrará en este mismo
CAU.
c) Realizaría una copia de seguridad con el contenido alojado en la
plataforma de “Asignaturas en preparación”.
d) Finalmente, restauraría la copia en el nuevo espacio de
asignaturas oficiales.
Para la ejecución de estos dos últimos pasos, se recomienda la consulta
de la miniguía: "Cómo trasladar contenido de una asignatura de una
plataforma Moodle a otra distinta", publicada en el Moodle de
Estudios Oficiales, en el espacio "Ayuda y documentación para
profesores.
En todo momento, contará con nuestra colaboración y soporte.
http://serviciosGATE.UPM.es/docs/Moodle/trasladar_contenido.pdf

Tema Actividades, recursos y materiales


Función gestionCalificaciones()
Consulta Gestión de las calificaciones
Activación gestion|gestionar calificaciones|notas
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 las miniguías:
"¿Cómo gestionar las calificaciones?" o "¿Cómo subir notas a Moodle
desde un fichero?".
http://serviciosGATE.UPM.es/docs/Moodle/mg_gestion-
calificaciones.pdf
http://serviciosGATE.UPM.es/docs/Moodle/subircalificaciones.pdf

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

Tema Actividades, recursos y materiales


Función importarPreguntas()
Consulta Importar preguntas a un cuestionario
Activación importar|subir|añadir| pregunta cuestionario|examen
crear
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 importar preguntas a una asignatura o crear preguntas de
forma rápida?".
http://serviciosGATE.UPM.es/docs/Moodle/importar_preguntas.pdf

Tema Actividades, recursos y materiales


Función novaVideoJava()
Consulta No puedo reproducir un vídeo o un programa Java dentro de Moodle
Activación no(deja|ver|ve|veo|ven video|programa|java
|reproduce|reproducir)
Respuesta Es posible que Java esté bloqueando la ejecución del vídeo o el
programa. Para solucionarlo en un ordenador Windows, siga los
siguientes pasos:
1. Pulse el botón "Inicio" y en "Todos los programas" seleccione
"Java" -> "Configure Java";
2. Vaya a la pestaña "Seguridad" y pulse el botón "Editar lista de
sitios...";
3. Pulse el botón "Agregar" y en la tabla "Ubicación" añada
"http://Moodle.UPM.es y https://Moodle.UPM.es"

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 Actividades, recursos y materiales


Función novaEditorTexto()
Consulta Problema con el editor de texto
Activación no(va|funciona) problema|fallo|falla| editor texto
error
Respuesta Su navegador está bloqueando la ejecución del editor de texto. En la
parte superior del mismo, junto a la dirección de la página (a izquierda
o derecha, según cuál sea), aparece un icono similar a un escudo. Pulse
en él y seguidamente en la opción correspondiente para desbloquear o
permitir elementos "no seguros".

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

Tema Asignaturas y cursos


Función cargaMasivaAlumnos()
Consulta Carga masiva de alumnos
Activación carga|subir|añadir masiva|en masa alumno
Respuesta Cuando se crea un curso (mediante la petición "Solicitud de
alojamiento de asignaturas de enseñanzas oficiales"), se ha de decidir
si los alumnos accederán de modo automático o de forma manual.
En el caso del modo automático, la carga de los alumnos se realiza
automáticamenate al inicio del semestre, en función de los códigos de
asignatura y los grupos seleccionados por el profesor.
En el caso del modo de acceso manual o por contraseña, el profesor ha
de configurar la clave y facilitarla a los alumnos en clase. El alumno
sólo tiene que utilizarla la primera vez que intente acceder a la
asignatura. 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"

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

En el caso de que el proceso de matriculación se demorase o se deseara


permitir el acceso a otros usuarios con correo institucional, 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 Ajustes /
Administración del curso / Usuarios / Métodos de matriculación, pulse
el botón de "Editar" en la opción de "Auto-matriculación
(Estudiante)" e introduzca la clave de acceso.

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

Tema Otras peticiones y sugerencias


Función Videoconferencia()
Consulta Consulta por videoconferencia sobre la Plataforma de Telenseñanza
(Moodle)
Activación video video video
Respuesta El Gabinete de Tele-Educación (GATE) ha puesto en servicio una
nueva forma de atención de los usuarios por videoconferencia,
mediante la herramienta Skype de Microsoft, para la gestión de
cualquier incidencia o consulta relativas al uso de la Plataforma de
Telenseñanza (Moodle).
El usuario podrá compartir su pantalla y, opcionalmente, permitir su
control remoto por el personal del GATE. Este servicio puede
utilizarse tanto desde un PC como desde dispositivos móviles.
El servicio será atendido desde las 8:00 a 20:00 horas.

En este enlace puede hallar más información:


https://Moodle.UPM.es/titulaciones/oficiales/mod/page/view.php?id=8
56744

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

Tema Otras peticiones y sugerencias


Función otrasPeticiones()
Consulta Otras peticiones y sugerencias
Activación video video video
Respuesta Alumnos:
En Politécnica Virtual: Formación \ Moodle\ Ayuda
Directamente en:
https://www.UPM.es/politecnica_virtual/login.UPM?c=1692A

Personal de Administración y Servicios:


En Politécnica Virtual: Gestión \ Docencia \ Mis solicitudes
académicas \ Servicio de Telenseñanza
Directamente en:
https://www.UPM.es/politecnica_virtual/login.UPM?c=2008FL

Si las respuestas anteriores no han resuelto su problema, puede ponerse


en contacto con nosotros utilizando el enlace que mejor se ajuste a su
pregunta: Plantilla

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>

<!—- Styles -->


<style type="text/css">
body {
padding-top: 6em;
color: #08088A;
background-color: #81BEF7 }
</style>
</head>

<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"&hellip;
<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>

<!-- Define Bot Widget Initial Parameters -->


<script>
var botmanWidget = {
title: 'Chatina',
placeholderText: 'escriba aquí...',
bubbleAvatarUrl: 'https://blogs.UPM.es/liti/wp-
content/uploads/sites/477/2020/01/logo_GATE.jpg',
aboutLink: 'http://serviciosGATE.UPM.es/GATE/',
aboutText: 'Servicios GATE'
};
</script>

<script id="botmanWidget" src='https://cdn.jsdelivr.net/npm/botman-web-


widget@0/build/js/widget.js' ></script>

</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

6 Manual de usuario para el programador

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.

Figura 41. Estructura de ficheros del chatbot.

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.

6.1 Modificación del menú de botones

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.

public function displayTeacherTopics()


{
$question = Question::create("Dispone de guías de las siguientes
áreas:")
->fallback('Imposible desplegar índice de temas')
->callbackId('teacher_topics')
->addButtons([
Button::create('Documentos Generales')
->value('generalDoc'),
Button::create('Guías Metodológicas')
->value('metGuides'),
Button::create('Dudas habituales y miniguías')
->value('newGuides'),
]);

$this->ask($question, function (Answer $answer) {


if ($answer->isInteractiveMessageReply()) {
switch ($selectedValue = $answer->getValue()) {
case 'generalDoc':
$this->displayTeachGeneralDoc();
break;
case 'metGuides':
$this->displayMethodGuides();
break;
case 'newGuides':
$this->displayTeachNewGuides();
break;
}
}
return;
});
}
Figura 42. Función del menú principal del profesor.

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.

Una vez localizada la función displayTeachGeneralDoc que se muestra en la figura 43 se busca el


botón correspondiente al manual que se va a modificar. Se podrá modificar el texto que muestra el
botón, así como la dirección que enlaza o que contiene el archivo.
Creación de una aplicación basada en la inteligencia artificial chatbot para el LMS Moodle
108
Manual de usuario para el programador
23 de junio de 2021

public function displayTeachGeneralDoc()


{
$question = Question::create("Documentos generales:")
->fallback('Imposible desplegar índice de guías')
->callbackId('gen_doc')
->addButtons([
Button::create('Novedades de Moodle 3.5')
->value('novmoodle'),
Button::create('Manual completo de Moodle 3.5')
->value('moodleman'),
[…]
]);

$this->ask($question, function (Answer $answer) {


if ($answer->isInteractiveMessageReply()) {
switch ($selectedValue = $answer->getValue()) {
case 'novmoodle':
$attachment = new File
('http://serviciosgate.upm.es/docs/
moodle/novedades_moodle3-5.pdf',
['custom_payload' => true,]);
break;
case 'moodleman':
$answer = 'http://oa.upm.es/53507/';
break;
[…]
}

$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.

6.2 Modificación de las palabras clave

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.

$botman-> hears ('.*(acceso|acceder|entrar).*(app|aplicacion|movil|android).*',


StudentController::class.'@method');

Figura 46. Entrada de palabras clave.

Donde se sustituyen las palabras del ejemplo por las deseadas.


 Puede emplearse | como o.
 Se permite el uso de paréntesis entre palabras.
 Al emplear .* se indica que puede contener cualquier otro texto.

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.

El controlador podrá ser el principal Botmancontroller.php o bien StudentController.php o


TeacherController.php. Se recomienda no emplear el controlador principal Botmancontroller.php
para dar respuesta a cuestiones de un determinado colectivo, se deben emplear los controladores
secundarios destinados a ese uso.

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

Se continúa desarrollando la entrada dentro del fichero de este ejemplo StudentController.php.


Sustituyendo method, con el nombre del método codificado para dar respuesta en el controlador
correspondiente.

public function method(BotMan $bot)


{
if($this->isRoleStudent($bot)){
$bot->reply('Debes preguntar en la Secretaría de tu Centro');
}
}
Figura 47. Función con el método de la respuesta de la AIML.

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.

$attachment = new File ('http://file-url.pdf', ['custom_payload' => true,]);


$attachment = new Image ('http://image-url.jpg', ['custom_payload' => true,]);
$attachment = new Video ('http://video-url.mp4', ['custom_payload' => true,]);

$message = OutgoingMessage::create('Guía')-> withAttachment($attachment);


$bot->reply($message);

Figura 48. Función para el envío de un adjunto.

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.

En la que se ha de sustituir CustomConversation por el nuevo nombre definido. La ubicación


general para almacenar los ficheros de estas entradas está en \app\Conversations.

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

También podría gustarte