Full text
Red de apoyo local Autores Adrián Córdoba Clapés Carlos Ambrona Palacios Carlos Perdomo Fernández Marta Huertas Smolis Yelim Kim Director Carlos Gregorio Rodríguez 31 de mayo de 2019
Autores Adrián Córdoba Clapés Grado en Ingeniería de Computadores Carlos Ambrona Palacios Grado en Ingeniería de Computadores Carlos Manuel Perdomo Fernández Grado en Ingeniería de Computadores Marta Huertas Smolis Grado en Ingeniería de Software Yelim Kim Grado en Ingeniería de Software May 31, 2019 2
3 Resumen Las redes sociales suelen estar constituidas por los miembros de la familia nuclear, amigos y amigas, vecinos y vecinas, compañeros y compañeras de trabajo y personas conocidas en la comunidad. Estos vínculos se convierten en sistemas de apoyo social, los cuales constituyen un elemento indispensable para la salud, ajuste y bienestar del individuo. El aspecto importante de las redes de apoyo es que son personas emocionalmente significativas para la persona en el caso que nos concierne y son quienes potencialmente brindan el apoyo social. Es decir estas redes sociales cumplen la función de proveer apoyo social, el cual genera herramientas necesarias para la persona dentro de su contexto cotidiano. Teniendo en cuenta esto, las nuevas tecnologías nos brindan una buena herramienta para facilitar a personas con este deseo de buscar compañía de otra persona en situaciones de temor o ansiedad la posibilidad de establecer un proceso de comparación social, a través del cual se puede obtener información acerca de la situación estresante (lo que permite reducir la incertidumbre) y validar las propias reacciones (comparando sentimientos y conductas). En esta memoria, detallaremos las herramientas que se van a poner a disposición de las usuarias de nuestra red de apoyo local.
4 Abstract Social networks are usually made up of members of the nuclear family, friends, neighbours, coworkers and acquaintances of the community. These links become social support systems, which are an essential element for the health, adjustment and well-being of the individual. The important aspect of support networks is that they are emotionally significant persons for the individual in the case that concerns us and are those who potentially provide social support. In other words, these social networks fulfill the function of providing social support, which generates necessary tools for the person within their daily context. Taking into account the above-mentioned point, Telegram and more specifically, the Telegram bots provide us with a good tool to facilitate people with this desire to seek the company of another person in situations of fear or anxiety the possibility of establishing a process of social comparison, through which you can obtain information about the situation stressful (which reduces uncertainty) and validate one’s own reactions (comparing feelings and behaviors). In this report, we will detail the tools that will be made available to the user.
5 −Palabras clave –Bot –Telegram –Python –Red –Mujeres –Ayuda –Violencia de género –Mensajería −Keywords –Bot –Telegram –Python –NetWork –Women –Help –Gender violence –Messenger
Índice general Índice general 6 Índice de figuras 8 1 Introducción 9 1.1 Motivación............................ 9 2 Estructuras 11 2.1 Estructura del equipo . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Estructura de la memoria . . . . . . . . . . . . . . . . . . . 12 3 Metodología 15 3.1 Reunión en la UNED . . . . . . . . . . . . . . . . . . . . . . 16 4 Descripción del sistema 19 4.1 Objetivos ............................ 19 5 Estudio de las tecnologías 23 5.1 Aplicaciones de mensajería . . . . . . . . . . . . . . . . . . . 23 5.2 Lenguajes de programación . . . . . . . . . . . . . . . . . . 28 5.3 Basesdedatos.......................... 30 5.4 Herramientas de desarrollo . . . . . . . . . . . . . . . . . . . 32 6 Arquitectura del sistema 35 6.1 Estructura de BBDD . . . . . . . . . . . . . . . . . . . . . . 35 7 Desarrollo del sistema 37 7.1 Implementación del bot . . . . . . . . . . . . . . . . . . . . . 37 7.2 Diagrama de secuencia . . . . . . . . . . . . . . . . . . . . . 39 6
ÍNDICE GENERAL 7 7.3 Experiencia de usuario - Primer uso . . . . . . . . . . . . . . 41 8 Puntos críticos del proyecto 51 9 Conclusiones del proyecto 55 10 Ampliaciones futuras 57 10.1Botóndepánico......................... 57 10.2 Puntuación de usuarios . . . . . . . . . . . . . . . . . . . . . 57 10.3 Ampliación de zonas de chats . . . . . . . . . . . . . . . . . 58 10.4 Inteligencia artificial . . . . . . . . . . . . . . . . . . . . . . 58 11 Aportaciones personales 59 11.1 Adrián Córdoba Clapés . . . . . . . . . . . . . . . . . . . . . 59 11.2 Carlos Ambrona Palacios . . . . . . . . . . . . . . . . . . . . 61 11.3 Carlos Manuel Perdomo Fernández . . . . . . . . . . . . . . 63 11.4 Marta Huertas Smolis . . . . . . . . . . . . . . . . . . . . . 65 11.5YelimKim............................ 66 Bibliografía 69
Índice de figuras 2.1 Diagrama de la estructura del equipo . . . . . . . . . . . . . . . 12 3.1 Tablero de organización del equipo . . . . . . . . . . . . . . . . 16 7.1 Diagrama de flujo del Bot . . . . . . . . . . . . . . . . . . . . . 40 7.2 Ejemplo de primera conversación con el bot . . . . . . . . . . . 44 7.3 El mensaje que muestra el bot en el caso de rechazar el . . . . . 45 7.4 Conversación desde el rol Andrea . . . . . . . . . . . . . . . . . 46 7.5 Conversación desde el rol red . . . . . . . . . . . . . . . . . . . 47 7.6 Diferentes opciones que permite el bot desde el rol Andrea . . . 48 7.7 Diferentes opciones que permite el bot desde el rol Red . . . . . 49 8.1 Imagen de la herramienta de diseño . . . . . . . . . . . . . . . . 51 8
Capítulo 1 Introducción En este primer capítulo, se describen nuestras motivaciones a la hora de elegir este proyecto como trabajo de fin de Grado, cómo nos podemos beneficiar de las aplicaciones de mensajería en la actualidad y cómo se está focalizando el mundo de la tecnología en este sector. La tecnología ha evolucionado de tal manera, que como anunció Luis Miguel Gilpérez (presidente de Telefónica España), “en el año 2016, el Smartphone se coronó como el principal dispositivo a través del cual los españoles entran en Internet, superando por primera vez al ordenador.” [2] Esto es debido, en gran medida, al uso de las redes sociales y aplicaciones de mensajería como medio de comunicación. Las tecnologías se adaptan a los usuarios, y ésta en concreto, cada vez integra más servicios. 1.1 Motivación Como estudiantes de la Universidad Complutense de Madrid (UCM), para la realización de nuestro trabajo final de grado, nos surgió la oportunidad de realizar una idea pensada por profesores y directores de la Universidad Nacional de Educación a Distancia (UNED), con la que estamos totalmente en consonancia, ayudar a mujeres en peligro de violencia machista mediante una red de apoyo local virtual. 9
16 CAPÍTULO 3. METODOLOGÍA añadir en un futuro. Gracias a esta reunión se creó el backlog, que consiste en una lista priorizada de requisitos de alto nivel o historias de usuario donde se puede ver en qué tarea se está trabajando actualmente, cuáles se han finalizado y cuáles están pendientes de hacer. Para la gestión de tareas se ha utilizado Trello como se puede apreciar en la figura 3.1. Se trata de un tablón virtual en el que se pueden colgar ideas, tareas, imágenes o enlaces. Aplica el sistema Kanban para el registro de actividades con tarjetas virtuales. En la organización de tareas permite agregar listas, adjuntar archivos, etiquetar eventos, agregar comentarios y compartir dichos tableros. Figura 3.1: Tablero de organización del equipo Este código está modulado para favorecer futuras mejoras e implementaciones, además lo hemos integrado con una base de datos, de la que posteriormente hablaremos, y que, apoyándonos en el servidor propio de Telegram, soporta vídeos, archivos y ubicación. Además, para todo esto era interesante el uso de una metodología ágil, lo cual era nuevo para algunos de los miembros, y realizar de manera más eficiente el proyecto. 3.1 Reunión en la UNED El día 26 de marzo se organizó una reunión con todas las personas involucradas en este proyecto, en la cual se llevó a cabo una demostración delante del grupo promotor y un grupo de consulta (constituido por personas expertas en violencia machista y personas expertas en informática).
3.1. REUNIÓN EN LA UNED 17 Durante la demostración, para la cual se utilizó al web Moqups, se mostraron las posibles funcionalidades que se podrían desarrollar en el bot de Telegram. En esta reunión se redefinieron los requisitos y se llegó a un acuerdo común sobre las funcionalidades que eran prioritarias, así como un análisis de cómo desarrollarlas dentro de la herramienta. Se definieron tres metas a alcanzar para nuestra red: •Confianza: personas con las que poder hablar y que ofrezcan apoyo. •Acompañamiento: personas que acompañen en la resolución de problemas tales como trámites, consultas, alternativas, etc. Así como la posibilidad de realizar un acompañamiento físico en tareas diarias como llevar a los niños al colegio, hacer la compra, etc. Se entiende que esto se crea una vez exista una red de confianza. •Acción: para tareas extraordinarias de un enfoque más político, como puede ser organizar una manifestación. Así mismo, esta función estará enfocada a que las personas pasen a la acción involucrándose directamente contra la violencia machista. Además se debatieron y analizaron los temas relacionados con la seguridad de la víctima, llegando a la conclusión de que sería necesario verificar a todas las personas que entrasen dentro de la red, para lo que se contará con la ayuda de Asociaciones de Violencia de Género. Dichas asociaciones serán las administradoras de la red, cuyo rol se define en el siguiente punto de este documento. La verificación se realizará en dos pasos, el primero mediante el envío de un vídeo al bot y el segundo de forma presencial en alguna de las asociaciones colaboradoras. Finalmente se definieron los roles de todas las personas que formarán parte de la red, los cuales se explicaran en detalle en el siguiente apartado.
Capítulo 4 Descripción del sistema En este apartado se describe el funcionamiento del sistema, sus aplicaciones y los requisitos como cliente y servidor. Además, se analiza detalladamente la aplicación. 4.1 Objetivos Para concretar los requisitos que debía cumplir nuestra red virtual se organizó una reunión los autores de este TFG y el director en conjunto con los organismos de la UNED que pusieron en marcha esta idea, la cual se ha descrito en el punto anterior. A continuación, puntualizamos las funcionalidades principales que se definieron. Estructura Para el correcto funcionamiento de la red social se ha definido la siguiente estructura, la cual está dividida en una jerarquía de roles. Dentro de ellos, y descritos más adelante, encontramos: Administradora/s y usuarias. En este último grupo, podemos diferenciar entre ayudantes y ayudadas y localizado dentro de ayudantes, verificadas o sin verificar. Gestión de usuarios Para acceder al bot solamente es necesario ser usuario de Telegram, sin embargo se solicitarán ciertos datos por temas de seguridad. 19
20 CAPÍTULO 4. DESCRIPCIÓN DEL SISTEMA En el caso de ser una Red, tiene que subir un vídeo de presentación corta y una foto del DNI, de esta forma podremos verificar si es una mujer o un hombre, así como la posibilidad de confirmar que no sea una persona peligrosa. Las personas pertenecientes a la red Verde que quieran subir su categoría, para ser parte de la red Violeta y poder ayudar, tendrán que acudir al centro más cercano indicado por el bot para validar su identificación, de esta forma se comprobará si tiene intención real de ayudar a las víctimas. En cuanto su categoría se actualice, pasarán a pertenecer a la red Violeta automáticamente y tendrán permisos para interactuar con otras personas dentro de la red. Roles Tras una serie de preguntas, el bot solicita el rol que desea tener el usuario. Tenemos dos roles principales y existirá la posibilidad de pasar de uno a otro: •Andrea: se pertenece a la red de voluntarias. Tiene que elegir el género de los vídeos de los ayudantes que le gustaría ver. Se mostrará el vídeo de presentación al azar. Hay tres opciones: Aceptar, Rechazar, y Denunciar el ayudante. Si rechaza o denuncia el ayudante ya no mostrará el vídeo. Si lo acepta, se guarda el vídeo elegido en el registro. •Red: se solicita ayuda. La red tiene varias capas. –Red Verde: Las personas no certificadas. Son las que han subido un vídeo de presentación de duración 15 segundos más o menos y una foto del DNI. El bot indicará el centro cercando para que la Red Verde acuda y realizar validaciones. –Red Violeta: Las personas certificadas. Son las que ya se han validado por los administradores. –Red Coral: Las personas administradoras. Son las que pueden actualizar las categorías de las Redes, manejar los usuarios denunciados y tener el control en los grupos del chat.
4.1. OBJETIVOS 21 Otras funcionalidades En la primera interacción con el bot el usuario o usuaria deberá leer un texto con la Ley de Protección de Datos, para poder continuar utilizando el bot deberá pulsar sobre el botón aceptar, en caso contrario el bot dejará de responder. Tras la aceptación del usuario o usuaria se guardarán sus datos en la base de datos, teniendo la posibilidad de acceder a ellos siempre que lo desee, pudiendo consultarlos o solicitar que se eliminen. Muchas de las preguntas realizadas por el bot se podrán contestar mediante el uso de botones. En caso de que el usuario use Telegram Desktop, cuando se le solicite la ubicación deberá facilitar su código postal ya que la aplicación no deja mandar ubicaciones. De forma alternativa podrá utilizar Telegram Web. La ubicación se utilizará para clasificar a los usuarios por zona, de esta forma se les facilitarán los enlaces a los grupos que sean de su zona, donde podrán ayudar a quienes lo soliciten. Todas las preguntas tendrán la opción de cancelar, así se puede acabar la conversación cuando se desee. Para volver a empezar la conversación el usuario tendrá que introducir el comando /start.
Capítulo 5 Estudio de las tecnologías En este capítulo se comentan los distintos estudios realizados de las tecnologías disponibles y cuáles son los más apropiados para Andrea. 5.1 Aplicaciones de mensajería Como se ha comentado anteriormente en esta memoria, se decide utilizar una aplicación de mensajería para la implementación de una red de apoyo ya que son aplicaciones que el gran porcentaje de usuarios de un Smartphone tiene instalada en su móvil, por lo que nos evitamos un primer paso con el que perderíamos muchos usuarios inicialmente. De esta manera el usuario de la red de apoyo, solo tiene que dirigirse al chat de Andrea y comenzar el proceso de registro. De entre las aplicaciones de mensajería que permiten la programación de bots, las mejores opciones son Facebook Messenger y Telegram: Facebook Messenger Facebook Messenger [9] es una aplicación de mensajería que fue lanzada por la red social Facebook, disponible para Android, iOS y Windows Phone. Su gran ventaja es que permite chatear con sus contactos de Facebook. Esta aplicación también ha decidido apostar por la integración de bot. Además, los bots actúan gracias a la inteligencia artificial de Facebook. Los bots de Facebook Messenger sirven para ayudar a los usuarios a 23
24 CAPÍTULO 5. ESTUDIO DE LAS TECNOLOGÍAS realizar compras en línea, hacer reservas, jugar a juegos online, consultar información. KIK Messenger KIK [11] es una aplicación de mensajería instantánea gratuita para dispositivos móviles, lanzada por la empresa canadiense KIK Interactive. Esta disponible tanto para dispositivos Android como para dispositivos iOS. Uno de sus puntos fuertes es que es totalmente anónima, ya que no requiere de número de teléfono para registrarse. Al igual que las demás aplicaciones, Kik Messenger también utiliza o permite el uso de bots en su plataforma. Empezaron con bots muy sencillos donde marcas lanzaban ofertas para los usuarios dependiendo del genero, país y dispositivo móvil. Más adelante desarrollaron bots desde el cual podias adquirir comida o productos varios. Por último, añadieron funcionalidad al bot para que pudiera estar en grupos e interactuar con el, asi como compartir o reenviar información y links de otros bots a un chat privado o a un grupo. Whatsapp Messenger (QeuBot) Whatsapp es una aplicación de mensajería instantánea gratuita multiplataforma, tanto dispositivo móvil como portátil o sobremesa, lanzada en 2009 por un desarrollador ucraniano y posteriormente comprada por Facebook. Su punto fuerte es la gran cantidad de usuarios que la utiliza y su coste gratuito. Al igual que las demás aplicaciones, Whatsapp permite el uso de un bot en su plataforma. Por ahora las funciones del bot son muy básicas pero abre la puerta a futuros bots con infinidad de posibilidades y funcionalidades. QeuBot [5] tiene entre otras funciones consultar en la Wikipedia, buscar noticias, ejercer de calculadora, buscar imágenes, informar sobre la situación meteorológica o leer el horóscopo. Telegram Telegram es una aplicación de mensajería instantánea gratuita, privada y accesible, que fue desarrollada en el año 2013 pero hasta el 2014 no tuvo
5.1. APLICACIONES DE MENSAJERÍA 25 una acogida mediática. Desde aquel momento es una de las aplicaciones con mayor número de descargas. Se puede utilizar en teléfonos, tabletas y ordenadores. Además, se encuentra disponible para más de 10 sistemas operativos: Android, IOs, macOS, Windows, GNU/Linux o navegadores web. Telegram está logrando hacerse su propio hueco gracias a que cada vez se diferencia más de su principal competidor, WhatsApp. Una de las diferencias principales es que Telegram utiliza la arquitectura propia MTProto, con almacenamiento en la nube para los mensajes, bot, canales y supergrupos. El usuario es el que decide si quiere descargar las fotos, vídeos y archivos en el dispositivo para ahorrar memoria o almacenarlos en la nube. Otra característica que le diferencia de WhatsApp es que al ser de código abierto, los desarrolladores pueden crear sus propias aplicaciones dentro de Telegram. Otro tipo de servicio que ofrece es la mensajería masiva en grupos y en los canales. Se puede llegar a tener un supergrupo con más de 10000 integrantes, los cuales todos los usuarios pueden interactuar entre ellos mandando mensajes de vídeo, animaciones gif, sticker. Los canales son espacios de difusión unilateral para compartir contenido a una cantidad ilimitada de usuarios. Uno de los puntos fuertes de esta aplicación que lo diferencia del resto es el poder desarrollar un bot: es un programa con el que se puede interactuar dentro de la aplicación Telegram como si fuese una persona. Existen los bots que emulan conversaciones normales y los bots interactivos. En estos últimos se pueden tener conversaciones mediante botones o comandos.
32 CAPÍTULO 5. ESTUDIO DE LAS TECNOLOGÍAS 5.4 Herramientas de desarrollo En este apartado se van a comentar todas las herramientas de desarrollo utilizadas en el proyecto. Overleaf Overleaf [6] es un editor de L A TEXonline gratuito, previamente llamado ShareLaTeX. Este editor, al ser online, nos permite tener guardado todo nuestro trabajo en la nube, sin tener la preocupación de pérdida de información. Podemos editar o completar la memoria desde cualquier navegador, con conexión a internet mediante una URL y tener siempre la última versión de la memoria. Incluye un control de versiones, por si en algún momento fuese necesario volver a un punto anterior. Permite que varios usuario estén modificando el contenido al mismo tiempo y poder ver y compilar los cambios realizados en tiempo real. A parte de tener una opción de descarga de PDF del documento que estas haciendo. Git Git es un software de control de versiones de código. Fue creado pensando en la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones. Git te brinda un entorno donde alojar tu software y poder ir evolucionándolo en equipo, ya que te ofrece un control de versiones por si en algún momento se detecta algún fallo, poder recuperar una versión anterior. Al ser un repositorio online, puede colaborar mas de un desarrollador y partir todos de la ultima versión. En nuestro caso ha sido muy útil, por la dificultad de cuadrar horarios para reunirnos de forma presencial. Gracias a Git tenemos organizado el código y hemos llevado un control de versiones del código de manera eficiente. IntelliJ IDEA IntelliJ [4] es un entorno de desarrollo integrado para el desarrollo de programas informáticos. Tiene compatibilidad tanto para Windows, Mac o Linux. Tiene versión gratuita, la cual es muy completa y nos permite
5.4. HERRAMIENTAS DE DESARROLLO 33 desarrollar el Trabajo Fin de Grado sin ninguna limitación. Compatible con la mayoría de los lenguajes de programación, entre ellos Python. Intellij [10] es muy potente porque tiene conversión de código entre varios lenguajes, a parte de poder trabajar sin problemas con Git, ya que en la parte inferior del interfaz, viene una terminal donde puedes ejecutar los comandos necesarios para actualizarte a la última versión, o con el simple gesto de pinchar en el proyecto con botón derecho y seleccionar la opción Git, te ofrece un gran abanico de posibilidades de comandos como push, pull o resolver conflictos de merge. Google Drive Google Drive [3] es un servicio de alojamiento de archivos centralizado en la nube, que permite tener sincronizado todos tus documentos en todo momento desde cualquier dispositivo con acceso a la red. Todo esto nos dio la facilidad de apuntar las ideas o los puntos a tratar que íbamos comentando en las reuniones, de manera que aunque no pudieras asistir a la reunión en tiempo real veías las modificaciones o avances. También guardábamos avances de la memoria, enlaces de interés o errores que nos aparecían al desarrollar código por si a otro compañero le había pasado antes. Moqups Bien sea para empezar a crear los primeros bocetos del diseño de una web o hasta para hacer un mockup de una aplicación móvil, siempre es necesario tener a la mano una herramienta de maquetación fácil de usar, minimalista, funcional, completa y preferiblemente gratuita. Eso es moqups que además suma a tales características su funcionamiento en HTML5. Visual Studio Code Es un editor de código fuente desarrollado por Microsoft para Windows, Linux y macOS. Es compatible con varios lenguajes de programación [12]. Para el proyecto, era necesario descargar la extensión del Python en el Marketplace.
34 CAPÍTULO 5. ESTUDIO DE LAS TECNOLOGÍAS PyCharm Es un IDE para programar en el lenguaje Python. Es de la empresa JetBrains que es la misma empresa que la de IntelliJ. PyCharm es compatible con Windows, Mac y Linux. Ya que el trabajo fin de Grado se realizaba en Python era conveniente usar este IDE Anaconda Es una distribución libre y abierta de los lenguajes Python y R. Para poder programar en Python, era necesario descargar Anaconda [8] primero y luego asignar el intérprete del código al Python. Python Telegram Bot API El Bot API es una interfaz basada en HTTP creada para desarrolladores interesados en crear bots para Telegram. La librería que hemos usado proporciona una interfaz Python pura para la API de Telegram Bot [7]. Además de la implementación de API pura, esta librería presenta una serie de clases de alto nivel para hacer que el desarrollo de bots sea fácil y directo. Estas clases están contenidas en el submódulo telegram.ext. Para poder usar las funciones de esta librería, es imprescindible lanzar el comando pip install python-telegram-bot==12.0.0b1 –upgrade DB Browser for SQLite Es un sistema de gestión de bases de datos relacional. Se ha utilizado para visualizar los datos guardados a través del chat con el bot. Al iniciar la conversación, se crean varias tablas y luego hay que importar el fichero creado, que es la BBDD, al programa.
Capítulo 6 Arquitectura del sistema Después de realizar un análisis exhaustivo de los requisitos de nuestro sistema, se concretó la arquitectura del sistema de la siguiente manera: 6.1 Estructura de BBDD Las tablas necesarias para el bot son: •andreas: se guardan los usuarios del rol Andrea. Andrea puede rechazar y aceptar varios vídeos. –andrea_username (text): el usuario que se usa en el Telegram. –videos_rejected (text): el usuario del vídeo que ha rechazado Andrea. –videos_accepted (text): el usuario del vídeo que ha denunciado Andrea. •centers: tiene las localizaciones de los centros para poder validar las identidades. –postal_code (INTEGER): el código postal del centro. –address (text): la dirección completa del centro. –name (text): el nombre del centro. •redes: los datos de redes. 35
36 CAPÍTULO 6. ARQUITECTURA DEL SISTEMA –red_id (INTEGER): el ID del usuario con el rol Red. –red_username (text): el usuario del Telegram con el rol Red. –category (text): la categoría de una Red. Puede ser Verde, Violeta, o Coral. –vídeo: NULL si no ha subido nada, 1 si ha subido algo. –photo: NULL si no ha subido nada, 1 si ha subido algo. –gender: el género de la Red. Es necesario para que luego el usuario de Andrea pueda elegir el género para los vídeos. •reports: se inserta los datos cuando Andrea denuncia un vídeo de una Red. –red_username (text): el usuario de la Red denunciado. –andrea_username (text): el usuario de la Andrea que ha denunciado. •users: se guarda los datos de todos los usuarios. –id (INTEGER): el ID de todos los usuarios. –username (text): el usuario del Telegram de todos los usuarios. –gender (text): el sexo de los usuarios. –user_role (text): el rol del usuario. Puede ser Red o Andrea. –postal_code (text): el código postal de la ubicación del usuario. •groups: se guarda los datos de todos los grupos del chat. –id (INTEGER): el ID / código postal de cada grupo . –enlace (text): el enlace generado para la invitación de grupo.
Capítulo 7 Desarrollo del sistema A continuación se comentará la implementación del bot, sus funcionalidades y como sería la experiencia de usuario. 7.1 Implementación del bot Durante la ejecución del bot podremos diferenciar entre dos roles distintos, Red y Andrea, y a su vez dentro del primer grupo, podremos disgregar en tres tipos de redes diferentes: Coral, Violeta y Verde. Andrea Andrea esta pensada para usuarias cuya situación personal sea difícil, personas que necesiten ayuda por sufrir violencia machista y quieran cambiar su vida. Para ello, y tras unos pasos iniciales, podrán elegir conversar con un grupo de mujeres en su misma situación o personas incluidas dentro de la Red que estén en un entorno cercano geográficamente hablando. La idea es que, una vez eliminen la falta de confianza, o mejor dicho, aumente ésta, podrán llevar la relación al siguiente nivel para que, estas personas que comentábamos antes ya sean Andrea o Red, les acompañen en sus tareas diarias, para así reducir el temor de sentirse solas en el día a día. 37
38 CAPÍTULO 7. DESARROLLO DEL SISTEMA Red Pertenecen a la Red aquel grupo de personas que quiera participar en la ayuda al grupo Andrea. Para ello, se han marcado una serie de requisitos, aconsejados por las colaboradoras del Bot de la UNED, para aumentar la seguridad y fiabilidad de la herramienta. Red Verde Cualquier persona que interactúe con el bot pasará a formar parte de la Red Verde, pero no podrá tener contacto con una Andrea hasta que no sea validado por parte de una Red Coral. Antes de que estas personas sean verificadas deberán enviar un vídeo y una foto del DNI, posteriormente deberán dirigirse a la Asociación de Violencia de Género más cercana para que se pueda confirmar que es la misma persona y que además no es peligrosa. Las personas sin verificar no aparecerán en la lista de personas que pueden ayudar a una Andrea, de esta forma siempre estarán protegidas ante posibles agresores o personas que simplemente quieran hacer mal uso del bot. Así mismo, con este método de verificación hacemos que sea fácil para cualquier persona colaborar y ayudar, ya que el proceso no es excesivamente tedioso. Red Violeta Dentro de la Red Violeta se encuentran aquellas personas verificadas por una de las asociaciones de mujeres adscritas al proyecto y por tanto, las que ya pueden interactuar con aquellas usuarias de tipo Andrea. Red Coral La Red Coral está formada por aquellas usuarias encargadas de la administración del bot, no a nivel técnico si no a nivel de gestión de usuarias. Serán las personas encargadas de promover a una usuaria de la red verde a la red violeta, de crear los diferentes grupos de Telegram en caso de que fuese necesario hacer uno nuevo. Esto último es una limitación de los bots en esta aplicación y por eso es necesaria la intervención de una persona.
7.2. DIAGRAMA DE SECUENCIA 39 7.2 Diagrama de secuencia A continuación, se muestra el diagrama de flujo del bot @red_Andrea_bot, en el cual podemos ver los pasos que debe seguir cada usuario o usuaria del bot, dependiendo del rol que tenga, y las accione del bot en función de los botones pulsados o acciones realizadas.
40 CAPÍTULO 7. DESARROLLO DEL SISTEMA Figura 7.1: Diagrama de flujo del Bot
7.3. EXPERIENCIA DE USUARIO - PRIMER USO 41 7.3 Experiencia de usuario - Primer uso Como podemos apreciar en la imagen 7.2 esto sería lo que podemos esperar del bot. En un primer momento tenemos la opción de /start para iniciar la conversación con el bot. Nada mas iniciarla recibimos una breve introducción del bot y acto seguido un documento de la ley de protección de datos (LOPD), hay que leer el documento y posteriormente aceptarlo mediante un botón en el teclado (ACEPTAR). En el caso de rechazarlo, se muestra como la imagen 7.3. El siguiente punto es una valoración de la usuaria, que a su vez es una capa de seguridad para intentar paliar el intrusismo, deberá responder una serie de preguntas para validar que es ella realmente y poder valorar el grado de ayuda que necesita. Una vez contestadas todas las preguntas se solicitara la ubicación actual. Esto ayudará para poder ofrecer el grupo mas cercano, siempre y cuando la usuaria quiera entrar en algún grupo. En todo momento la usuaria tiene el control del entorno que maneja dentro del bot. Si lo desea, puede borrar todos sus datos y desinstalarlo. Si no se desea enviar tu ubicación exacta por algún motivo, no pasa nada, ya que simplemente se puede indicar el código postal y con ello, se determinará que redes de apoyo tienes cerca. El siguiente dato a cumplimentar será saber si la persona se trata de un hombre o una mujer, ya que más adelante se utilizará para poder filtrar cuando se precise ayuda o simplemente se desee mantener una conversación, pudiendo elegir entre tu mismo sexo o el contrario. Una vez contestadas todas las preguntas necesarias para el registro y validar la autenticación de la usuaria, procedemos a explicar las diferentes redes de las que dispone le bot, y cuales son los objetivos para permanecer en ellas. Andrea Andrea está pensada para usuarias que necesiten ayuda, conversar con alguien o que les acompañen a cualquier sitio. Pensada para personas que están en riesgo o creen que puedan estarlo. Una vez elegida la red a la que quieres pertenecer, te saldrán distintas opciones, en este caso como estamos con el rol Andrea 7.4, las opciones son las siguientes.
48 CAPÍTULO 7. DESARROLLO DEL SISTEMA Figura 7.6: Diferentes opciones que permite el bot desde el rol Andrea
7.3. EXPERIENCIA DE USUARIO - PRIMER USO 49 Figura 7.7: Diferentes opciones que permite el bot desde el rol Red
Capítulo 8 Puntos críticos del proyecto En este apartado, vamos a exponer los puntos en los que los miembros del equipo nos hemos encontrado con mas dificultades. Requisitos Figura 8.1: Imagen de la herramienta de diseño Al inicio del TFG tuvimos dudas de como enfocar el proyecto ya que no conocíamos por completo las características y funcionalidades que se tenían pensadas. Se realizó una pequeña demo utilizando la aplicación web Moqups mediante la cuál pudimos mostrar a los representantes de la UNED nuestra idea de una red de apoyo enfocada a Telegram. De esta manera se 51
52 CAPÍTULO 8. PUNTOS CRÍTICOS DEL PROYECTO pudo aclarar que ideas eran buenas y que ideas había que repensar de una mejor forma. A partir de este punto el equipo ya tuvo mucho más claro por donde se podía empezar a desarrollar el bot. Git Al ser un equipo de trabajo de tamaño medio, era necesaria la utilización de un repositorio para poder trabajar sobre el mismo proyecto sin problemas de sobreescrituras. Todos los cambios son reflejados en el documento final. La experiencia del equipo con Git se basaba en pulls de repositorios, pero para trabajar en equipo necesitábamos tener un mayor control sobre todas las funcionalidades que ofrece Git, por lo que durante las primeras semanas nuestro director nos dio acceso a un repositorio ubicado en un servidor de la Universidad Complutense de Madrid para que realizáramos pequeños ejercicios sobre él. Al acabar este proceso de aprendizaje, ya fuimos capaces de empezar a desarrollar módulos del bot sobre el mismo proyecto. Aplicación de la Ley Orgánica de Protección de Datos (LOPD) Esta sección es un punto candente dentro del desarrollo del bot, ya que, toda esta información de carácter personal y según la nueva y vigente ley, hay que tratarla de manera segura. Para ello, la usuaria tiene que poder tener acceso en cualquier momento a qué datos tiene el bot sobre ella y derecho al olvido, es decir, a poder eliminarlos completamente si lo desea. Lo primero que se planteó respecto a este tema, fue saber que datos iban a ser totalmente necesarios para la ejecución del bot. Una vez este aspecto fue definido en la reunión que se mantuvo con los representantes de la UNED, se decidió enviar, en los primeros pasos dentro del registro en el bot, un documento / “disclaimer” informando sobre lo que se iba a hacer con la información personal que estaban compartiendo. Con ello, y únicamente aceptando los términos y condiciones de uso, se da paso a continuar con el uso de Andrea.
53 Python Al igual que con Git, ninguno de los miembros del equipo tenía experiencia con Python, siendo el lenguaje que habíamos elegido para desarrollar el bot. Python se creó con el objetivo de hacer un lenguaje de programación ágil y sencillo, con una curva de aprendizaje muy corta. Encontramos muchos ejemplos iniciales en internet de bots desarrollados con Python, así que fue fácil empezar a crear nuestros bots "hola mundo". Cada miembro del equipo realizó un bot con alguna funcionalidad sencilla, algunos ejemplos son un bot calculadora, que tenía funciones sencillas como calcular una sucesión de Fibonacci o averiguar si un número es par o impar; un bot “adivino"que contestaba Si, No o Quizás de manera aleatoria; un bot mayúscula, que pasaba las palabras que recibía del usuario a mayúsculas Disminución del número de personas del grupo Tras un periodo de tiempo trascurrido tras el comienzo del proyecto, y a posteriori de haber fijado levemente los requisitos y la carga de trabajo de cada uno, una de las integrantes del equipo, dejó de contestar a los mensajes del grupo, de venir a las reuniones,... por lo que se dio a entender que había abandonado el trabajo. Esto causó que, toda esa carga que le había sido asignada, tuviéramos que asumirla entre los demás integrantes.
Capítulo 9 Conclusiones del proyecto A lo largo del desarrollo de este TFG, hemos podido participar en una de las ramas de la informática que mas crece en la actualidad, los bots y la Inteligencia artificial, además de poder ayudar a una causa, desgraciadamente a la orden del día, mediante ello. Por otro lado, como algunos ya estamos acostumbrados al mundo laboral, somos conscientes de que hay que adaptarse al uso de nuevas herramientas cada día, esto nos ha ocurrido durante todo el desarrollo de Andrea. Hemos tenido que invertir tiempo en el aprendizaje de herramientas y lenguajes de programación, pero esto ha hecho que mejore el proyecto y que mejoren nuestras propias skills. La propuesta de proyecto inicial nos pareció atractiva ya de por si, por su candencia en el mercado tecnológico actual. A esto se añadió el poder enfocarlo hacia algo con una utilidad real y social como es una red de apoyo local, nos pareció muy interesante poder ayudar a personas en riesgo de violencia con los conocimientos adquiridos durante el grado. A la hora de comenzar a investigar sobre bots de Telegram nos dimos cuenta de la amplia comunidad que hay detrás de ello, esto nos fue de mucha ayuda para comenzar. También cabe destacar la API de python que nos ayudó a consumir de los servicios de Telegram con mayor facilidad, llamada telegram-python-bot con licencia LGPLv3 de software libre. Durante los años en el grado hemos adquirido conocimiento y experiencia, pero el desarrollo de este TFG ha sido una gran prueba a nivel colectivo. Todas las pruebas, reuniones, investigación y desarrollo nos han valido para estar preparados para situaciones que vivimos y viviremos en el mundo laboral. 55
56 CAPÍTULO 9. CONCLUSIONES DEL PROYECTO Con el paso de los meses hemos ido viendo como nuestro bot iba cogiendo forma y esperamos y deseamos que tenga una utilidad real para muchos usuarios y usuarias. Throughout the development of this end-of-degree project, we have been able to participate in one of the most growing branches of computing today, bots and artificial intelligence, as well as being able to help a cause, unfortunately the order of the day, through it. On the other hand, as some of us are already accustomed to the world of work, we are aware that we must adapt to the use of new tools every day, this has happened to us throughout Andrea’s development. We have had to invest time in learning programming tools and languages, but this has made the project better and improve our own skills. The initial project proposal seemed attractive to us already, due to its presence in the current technological market. To this was added the power to focus on something with a real and social utility as is a local support network, we found it very interesting to be able to help people at risk of violence with the knowledge acquired during the degree. At the time of beginning to investigate about bots of Telegram we realized the wide community that is behind it, this was very helpful to start. Also noteworthy is the python API that helped us consume the Telegram services more easily, called telegram-python-bot with LGPLv3 free software license. Par During the years in the degree we have acquired knowledge and experience, but the development of this TFG has been a great test at a collective level. All the tests, meetings, research and development have enabled us to be prepared for situations that we live and will live in the workplace. Over the months we have been seeing how our bot was taking shape and we hope and wish that it has a real use for many users.
Capítulo 10 Ampliaciones futuras En este capitulo se van a describir las funcionalidades que por tiempo y complejidad se han podido desarrollar antes de esta exposición, pero que nos comprometemos a continuar una vez acabado el TFG. 10.1 Botón de pánico En la reunión que se realizó con las distintas autoridades de la UNED, se comentó en varias ocasiones la inclusión de un botón del pánico dentro del propio chat con Andrea. Este botón borraría los mensajes de conversaciones involucradas con Andrea, compartiría ubicación en directo con los miembros de la red Violeta de la usuaria, y también cabría la posibilidad de que llamara a la policía. 10.2 Puntuación de usuarios En las reuniones que mantuvimos, se comentó el desarrollo de un sistema de puntuación de cada usuaria, basado en la experiencia del resto de usuarias. Así aumentaríamos la confiabilidad del resto de personas que pertenecieran a la red y, en parte, ayudaríamos en la decisión de seleccionar a aquellas personas de la Red Violeta que se comentaba anteriormente. 57
64 CAPÍTULO 11. APORTACIONES PERSONALES y escritura son muy rápidas para la base de datos SQLite, en donde es casi un 35 % más rápido que el sistema de archivos. Otro factor es que solo carga los datos que se necesitan, en lugar de leer todo el archivo y mantenerlo en la memoria, así como también si se edita una parte pequeña, solo sobrescribirá las partes del archivo que se modificó y no en su totalidad. Otra ventaja es que SQLite es totalmente accesible a través de una amplia variedad de herramientas de terceros como por ejemplo DB Browser, la cual hemos utilizado en el desarrollo de nuestro bot. Cabe destacar también la parte de investigación en esta memoria, decidiendo crearla con L A TEXpor su estabilidad y su capacidad multiplataforma. A través de distintas clases de documento y de su conjunto de macros, LaTeX posibilita escribir textos dividiéndolos en capítulos, secciones, subsecciones, controlando en todo momento la numeración y las referencias cruzadas. Construye índices de contenidos, tablas o figuras. Ajusta los tamaños y tipos de letras según la parte del documento en que se hallen. Otro punto a tener en cuenta en mi investigación relacionado con L A TEXes Overleaf. Overleaf es un editor colaborativo que publica en línea utilizando L A TEX. Conocimos esta herramienta buscando en internet como sincronizar mediante un repositorio git un fichero L A TEX. Entonces encontramos esta alternativa, la cual nos ha facilitado muchísimo la realización de la memoria, ya que nos ha dado la posibilidad de editar a todos los miembros del equipo sobre el mismo fichero .tex pudiendo ver el resultado al momento, también ofrece la opción de ver en que lugar del fichero esta cada usuario, así como el chat que incorpora la aplicación para facilitar la comunicación. Y otro punto muy importante, es gratis. El único inconveniente es que cuando compilas el código, también se refresca el resultado final a los compañeros, lo cual puede llegar a confundir, aún así, Overleaf nos ha dado muchas facilidades.
11.4. MARTA HUERTAS SMOLIS 65 11.4 Marta Huertas Smolis Conocimientos Cuando vi la lista de proyectos propuestos me llamó la atención este proyecto por ser un bot de Telegram, ya que es algo que siempre he querido aprender pero nunca había tenido ocasión para hacerlo. Una vez había solicitado formar parte del equipo, Carlos, nuestro director del Trabajo de Fin de Grado, me envió toda la información sobre el propósito de dicho bot, lo cual me resultó muy interesante a la vez que útil. Al poco tiempo de comenzar el curso tuvimos una reunión todos los miembros del equipo junto con el director, en dicha reunión cada uno expuso su situación y disponibilidad, así como su opinión sobre el proyecto que íbamos a llevar a cabo. Tras esta reunión me empecé a plantear qué funciones podrían ser útiles para una persona que sufre violencia machista y quiere utilizar nuestro bot, así junto con las ideas de los demás compañeros y las funcionalidades que ya habían solicitado los responsables del proyecto nos dispusimos a analizar y plantear el diseño del bot, para a continuación buscar información y estudiar la viabilidad de desarrollar dichas funciones. Durante el desarrollo de este trabajo he ampliado mis conocimientos de Python, ya que tenía una base gracias a una asignatura optativa pero no era suficiente para el desarrollo de un bot de Telegram como este. Además, he aprendido más sobre la integración con bases de datos y el uso de librerías, como ha sido Telegram-Python-Bot en este caso. Otra parte importante ha sido la de la gestión del proyecto y la organización de todos los miembros, ya que a pesar de haber trabajado en grupo a lo largo de la carrera, en este caso hemos tenido que hacer un esfuerzo extra para analizar los requisitos y, entre todos, decidir cuáles eran las mejores opciones para poder cumplirlos. Sim embargo, lo que más me ha marcado en este proyecto ha sido descubrir la realidad de las mujeres que sufren violencia machista, ya que es difícil ponerse en una situación que no has vivido. Personalmente creo que tras este proyecto todos tendremos más empatía hacia las personas que sufren violencia, especialmente las mujeres, y tendremos en cuenta todos los estragos psicológicos que esto causa. Este punto es importante porque es necesario comprender a la otra persona para poder ayudarla.
66 CAPÍTULO 11. APORTACIONES PERSONALES Por otro lado, me llevo una muy buena experiencia tras haber tenido la reunión con los profesores y expertos de la UNED, he podido ver cómo piensan, los diferentes puntos de vista respecto a este problema y las diferentes ideas para abordarlo. Investigación Una vez que tuvimos la primera reunión todos los compañeros y el director, el primer paso fue analizar todo lo que las personas impulsoras de este proyecto querían que cubriese nuestro bot, para dicho análisis tuvimos que investigar a fondo las APIs de Telegram, meditar sobre la manera de utilizar dichas APIs para el desarrollo de las funcionalidades requeridas, y en muchos casos buscar una alternativa para compensar las limitaciones de la herramienta. Durante el proceso de investigación encontré muchas páginas, foros y repositorios de Github con ejemplos que nos resultaron útiles para la implementación de nuestro bot. Entre ellos se encuentra un bot para compartir paraguas [1], éste bot crea una red de personas que se encuentran en la misma zona en un momento dado, si comienza a llover y alguien no tiene paraguas puede solicitarlo en la aplicación enviando su ubicación para que una persona con paraguas acuda en su ayuda. Dentro de las funcionalidades que deseábamos añadir, pero que resultaron no ser viables, estaban la posibilidad de añadir y eliminar usuarios de un grupo, así como la creación automática de grupos. En estos casos deberán ser los propios usuarios de la red los que gestionen los grupos, lo cual dependerá de sus roles. En algunas ocasiones ha sido difícil hallar una respuesta ya que la documentación no estaba clara o no era fácilmente accesible. 11.5 Yelim Kim Conocimientos He aprendido mucho de Python, lenguaje que nunca había utilizado y siempre había querido aprender. Es un lenguaje que se utiliza cada vez más debido a su simplicidad y rapidez, elegancia y flexibilidad. Me daba miedo hacer un proyecto en un lenguaje que desconocía pero, al final, he
11.5. YELIM KIM 67 podido aprender por mi cuenta y gracias a ello conseguimos que el bot funcionara. Me gustaría ampliar mis conocimientos sobre este lenguaje de programación en otros proyectos. Para la base de datos utilizamos SQLite que es parecido a MySQL, con una sintaxis un poco diferente. Al ser similar a lo que he aprendido en el grado no me ha costado mucho entenderla, salvo la parte de concurrencia (hilos) que me costó un poco más. Anteriormente había utilizado Git pero, solo para mis proyectos y no había tenido que generar clave ssh para acceder al repositorio, por lo que para el proyecto sí que tuve que buscar en Internet cómo hacerlo. Como equipo inicialmente decidimos utilizar Git, pero finalmente decidimos utilizar Google drive porque teníamos mayores conocimientos. Fue una suerte que decidiésemos cambiar el sistema de control de versiones ya que con esto pudimos evitar la pérdida de tiempo intentando aprender el funcionamiento de Git. También he aprendido hacer un proyecto entero con un buen equipo. Por ejemplo, tuvimos que afrontar la marcha de un miembro del equipo, debido a ello tuvimos que reorganizar parte del trabajo que nos quedaba por hacer. Construir el proyecto desde cero fue un desafío. Siempre he trabajado con las plantillas que ofrecían los profesores y seguir sus indicaciones. Sin embargo, esta vez tuvimos que planificar (tiempo de desarrollo de las funcionalidades) y buscar toda la información necesaria para el desarrollo del proyecto (lenguaje de programación, sistema de control de versiones, librerías e información sobre protección de datos entre otras cosas). Investigación Me llamó la atención al ver este proyecto en la página web de la Universidad Complutense de Madrid porque el proyecto consistía en hacer un bot de Telegram, ya que utilizo Telegram y diferentes bots y canales todos los días. Además, la intención del bot era interesante, ya que es un problema actual; La violencia de género es un problema que lamentablemente escuchamos a menudo en nuestro país y en el mundo. Con este proyecto vi la oportunidad de aportar mi ayuda para atajar esta situación. Tuvimos que buscar primero las funcionalidades que nos permitía implementar el bot de Telegram y buscar soluciones ante las restricciones
68 CAPÍTULO 11. APORTACIONES PERSONALES de la API. A partir de ese punto empezamos a concretar las funcionalidades del bot. Después de tener la reunión con los expertos de la Universidad Nacional de Educación a Distancia nos dimos cuenta de que anteriormente solo estábamos enfocando las funcionalidades a nivel técnico, es decir, no teníamos en cuenta las funcionalidades necesarias para las víctimas. Por lo que tras la reunión aprendimos la realidad de este problema y las funcionalidades que necesitan y ayudarán a las víctimas. Deseo que nuestro bot sirva como una ayuda para las mujeres que han sufrido violencia de género.
Bibliografía [1] Free Code Camp. I built a serverless Telegram bot over the weekend. Here’s what I learned. url: https://medium.freecodecamp.org/how-to-build-a-serverless-telegram-bot-227f842f4706. [2] Luis Miguel Gilpérez. El móvil supera por primera vez al ordenador para acceder a Internet.url:https://www.elmundo.es/sociedad/ 2016/04/04/57026219e2704e90048b465e.html. [3] Google. Google Drive.url: https://www.google.com/intl/es_ALL/drive/. [4] Intellij Idea. Intellij Idea.url: https://www.jetbrains.com/idea/. [5] El Androide Libre. WhatsApp también tiene bots, éste se llama qeuBot.url: https://elandroidelibre.elespanol.com/2017/01/bot-parawhatsapp-qeubot.html. [6] Overleaf. Overleaf.url:https://es.overleaf.com. [7] Telegram Developer Team. API Telegram Bot.url: https://core.telegram.org/bots/api. [8] Wikipedia. Anaconda.url:https://es.wikipedia.org/wiki/ Anaconda_(distribuci%C3%B3_de_Python). [9] Wikipedia. Facebook Messenger.url: https://es.wikipedia.org/wiki/Facebook_Messenger. [10] Wikipedia. Intellij Idea.url: https://es.wikipedia.org/wiki/IntelliJ_IDEA. [11] Wikipedia. KIK Messenger.url: https://es.wikipedia.org/wiki/Kik. 69
70 BIBLIOGRAFÍA [12] Wikipedia. Visual Studio Code.url: https://es.wikipedia.org/wiki/Visual_Studio_Code.