From c5ebe3beb58a0339c8f3b492cc6efecc9deafe1f Mon Sep 17 00:00:00 2001 From: Erik Hernandez Date: Tue, 22 Oct 2024 22:05:11 -0600 Subject: [PATCH 01/14] add README --- README.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 From 0cd7d993a0fbbda87862bc4b775df54686573bc6 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Thu, 24 Oct 2024 21:47:17 -0600 Subject: [PATCH 02/14] Update README.md --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index e69de29..3705a57 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,11 @@ +
+

+ TelegramBot-ChatGPTAPI "PROYECTO FINAL" +

+ "Grupo 4" +
+ + +![cover](https://github.com/user-attachments/assets/c96bcc75-a81b-4916-9c4a-10ccb9efef9d) + +![180712585-14300708-28c6-4a47-bf35-2a3e496169fb](https://user-images.githubusercontent.com/26189854/180832395-d0bd4d8f-cb59-4153-aa30-74280abd6fba.png) From 537d3194276ca2be8612b6e0ed48d58544c7827d Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Thu, 24 Oct 2024 22:19:48 -0600 Subject: [PATCH 03/14] Update README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3705a57..6c18089 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,11 @@ + ![cover](https://github.com/user-attachments/assets/c96bcc75-a81b-4916-9c4a-10ccb9efef9d) -![180712585-14300708-28c6-4a47-bf35-2a3e496169fb](https://user-images.githubusercontent.com/26189854/180832395-d0bd4d8f-cb59-4153-aa30-74280abd6fba.png) +# VER ONLINE: [:arrow_right: PREVIEW :arrow_left:](https://airman-project.vercel.app/) + + + + Nuestro proyecto es una aplicación innovadora que integra la API de ChatGPT con la funcionalidad de un bot de Telegram, utilizando BootFather, MySQL, Lombok, Spring Boot, Swagger y Maven como herramientas clave. Este sistema permite una interacción fluida con el usuario mediante Telegram, brindando respuestas inteligentes y automatizadas a través de ChatGPT. Desarrollado en un stack backend robusto, el proyecto ofrece una experiencia intuitiva y segura, ideal para quienes buscan soluciones de interacción con IA en aplicaciones de mensajería. From a5e0481eef11e8209a009c6b40281d019ab8944b Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Thu, 24 Oct 2024 22:46:11 -0600 Subject: [PATCH 04/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6c18089..dce3e31 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ -![cover](https://github.com/user-attachments/assets/c96bcc75-a81b-4916-9c4a-10ccb9efef9d) +![cover](https://github.com/user-attachments/assets/9e61c141-7162-4856-8e49-e5032c4c1474) # VER ONLINE: [:arrow_right: PREVIEW :arrow_left:](https://airman-project.vercel.app/) From 4c3f735e3391d215ff14698c8b1edb491eed6d97 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Thu, 24 Oct 2024 23:46:11 -0600 Subject: [PATCH 05/14] Update README.md --- README.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/README.md b/README.md index dce3e31..0c89f74 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,69 @@ Nuestro proyecto es una aplicación innovadora que integra la API de ChatGPT con la funcionalidad de un bot de Telegram, utilizando BootFather, MySQL, Lombok, Spring Boot, Swagger y Maven como herramientas clave. Este sistema permite una interacción fluida con el usuario mediante Telegram, brindando respuestas inteligentes y automatizadas a través de ChatGPT. Desarrollado en un stack backend robusto, el proyecto ofrece una experiencia intuitiva y segura, ideal para quienes buscan soluciones de interacción con IA en aplicaciones de mensajería. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ + Go + + + + Bash + + + + + +
+ + + + + + Bash + + + + + +
From 4b2704922ac6c5c7169a084b0e008b30b87396a0 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Fri, 25 Oct 2024 00:04:22 -0600 Subject: [PATCH 06/14] Update README.md --- README.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README.md b/README.md index 0c89f74..2fe135f 100644 --- a/README.md +++ b/README.md @@ -80,3 +80,39 @@ + + + + +# Nuestro Equipo + +A continuación se presenta el equipo de desarrollo: + + + + + + + +
+ Erick +
+ Erick +
+ LinkedIn | + Twitter +
+ kimberly +
+ kimberly villeda +
+ LinkedIn | + GitHub +
+ paolo +
+ paolo +
+ LinkedIn | + Instagram +
From 678fdb368df3398bf216a8043bfef3b334075be3 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Fri, 25 Oct 2024 00:11:05 -0600 Subject: [PATCH 07/14] Update README.md --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 2fe135f..4a58ee8 100644 --- a/README.md +++ b/README.md @@ -116,3 +116,16 @@ A continuación se presenta el equipo de desarrollo: + + +## Estos fueron los procesos a realizar en nuestro proyecto + +1. **Investigación Inicial**: Analizamos los requisitos y realizamos una investigación para definir los objetivos del proyecto. +2. **Planificación**: Diseñamos la arquitectura del sistema y definimos el stack de tecnologías que utilizaríamos. +3. **Desarrollo de API**: Implementamos la API utilizando Spring Boot y la conectamos a MySQL para manejar los datos. +4. **Integración de ChatGPT y Telegram**: Configuramos y probamos la integración entre la API de ChatGPT y Telegram utilizando BootFather. +5. **Documentación con Swagger**: Añadimos documentación a nuestra API con Swagger para facilitar el uso y las pruebas. +6. **Pruebas y Depuración**: Realizamos pruebas unitarias y de integración para asegurar el funcionamiento correcto de cada módulo. +7. **Implementación Final**: Desplegamos el proyecto y verificamos la funcionalidad completa. + +Estos pasos nos permitieron estructurar y completar el proyecto de manera organizada y efectiva. From 394e1265eeba1adbcc52d68d9e1ecbec0642ed62 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Sun, 27 Oct 2024 23:48:39 -0600 Subject: [PATCH 08/14] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4a58ee8..9d79d4f 100644 --- a/README.md +++ b/README.md @@ -91,15 +91,15 @@ A continuación se presenta el equipo de desarrollo:
- Erick + Erick Hernandez
Erick
LinkedIn | - Twitter + Twitter
- kimberly + Kimberly Villeda
kimberly villeda
@@ -107,7 +107,7 @@ A continuación se presenta el equipo de desarrollo: GitHub
- paolo + Paolo Sanchez
paolo
From dde0d2b8ec842498f6ed9e0d1f06839f16cec9f2 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Sun, 27 Oct 2024 23:59:30 -0600 Subject: [PATCH 09/14] Update README.md --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 9d79d4f..0eca259 100644 --- a/README.md +++ b/README.md @@ -93,26 +93,26 @@ A continuación se presenta el equipo de desarrollo:
Erick Hernandez
- Erick + Erick Hernandez
- LinkedIn | - Twitter + GitHub| +
Kimberly Villeda
kimberly villeda
- LinkedIn | + GitHub
Paolo Sanchez
- paolo + Paolo Sanchez
- LinkedIn | - Instagram + GitHub| +
From e7c20f4de58d96da342ebda0c697bf3d54606651 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Mon, 28 Oct 2024 00:14:23 -0600 Subject: [PATCH 10/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0eca259..ec3953e 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ A continuación se presenta el equipo de desarrollo: GitHub - Paolo Sanchez + Paolo Sanchez
Paolo Sanchez
From c6deb29b8382ed44053cacb47755275454041755 Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Mon, 28 Oct 2024 17:32:50 -0600 Subject: [PATCH 11/14] Update README.md --- README.md | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index ec3953e..877dc51 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ # Nuestro Equipo -A continuación se presenta el equipo de desarrollo: + @@ -118,14 +118,44 @@ A continuación se presenta el equipo de desarrollo:
-## Estos fueron los procesos a realizar en nuestro proyecto +Guía para Integrar un Bot de Telegram en Spring Boot + +1. Seleccionamos la tecnología adecuada +Para integrar un bot en nuestra aplicación, decidimos usar la API de bots de Telegram. Esta opción nos pareció confiable y tiene una documentación detallada. Nos aseguramos de revisarla bien para entender sus capacidades y requisitos técnicos; pueden verla https://core.telegram.org/bots + +2 . Agregamos la dependencia de Telegram Bots en nuestro proyecto +Para que nuestra aplicación de Spring Boot se comunique con Telegram, incluimos una dependencia en el archivo pom.xml. Esta dependencia (telegrambots) contiene las herramientas necesarias para que el bot funcione con Telegram. La configuración es la siguiente: + + + + org.telegram + telegrambots + 6.9.7.1 + + +3. Creamos un paquete llamado service en el proyecto +Para mantener el código organizado, creamos un paquete llamado service, donde incluimos la clase principal de integración del bot. Esta clase gestiona la lógica de interacción con Telegram, y decidimos llamarla TelegramBotService, aunque cualquier otro nombre claro también hubiera funcionado. + +4. Extendimos la clase TelegramLongPollingBot +En la clase TelegramBotService, la hicimos extender TelegramLongPollingBot, una clase de la API que se encarga de recibir y procesar los mensajes. Esta herencia simplifica nuestro desarrollo, permitiéndonos enfocarnos en definir las respuestas que queremos que dé el bot. + +public class TelegramBotService extends TelegramLongPollingBot { + // Aquí va la implementación del bot +} +5. Sobrescribimos los métodos clave para configurar el bot +Para que el bot funcionara correctamente, sobrescribimos los métodos getBotUsername y getBotToken. getBotUsername devuelve el nombre del bot, y getBotToken contiene el token de autenticación. Configuramos estos métodos para devolver el nombre y el token específicos de nuestro bot: +@Override +public String getBotUsername() { + return "nombre_de_nuestro_bot"; // Sustituido con el nombre real del bot +} + +@Override +public String getBotToken() { + return "nuestro_apikey"; // Sustituido con el token proporcionado por BotFather +} +6. Creamos el bot en Telegram usando BotFather +Para obtener el nombre y el token necesarios, utilizamos BotFather, el bot oficial de Telegram para gestionar bots. En Telegram, buscamos @BotFather, iniciamos una conversación y usamos el comando /newbot para crear uno nuevo. Asignamos un nombre que termina en "bot", como lo exige Telegram, y BotFather nos proporcionó un token de API. Luego, pegamos este token en el método getBotToken y añadimos el nombre en getBotUsername. -1. **Investigación Inicial**: Analizamos los requisitos y realizamos una investigación para definir los objetivos del proyecto. -2. **Planificación**: Diseñamos la arquitectura del sistema y definimos el stack de tecnologías que utilizaríamos. -3. **Desarrollo de API**: Implementamos la API utilizando Spring Boot y la conectamos a MySQL para manejar los datos. -4. **Integración de ChatGPT y Telegram**: Configuramos y probamos la integración entre la API de ChatGPT y Telegram utilizando BootFather. -5. **Documentación con Swagger**: Añadimos documentación a nuestra API con Swagger para facilitar el uso y las pruebas. -6. **Pruebas y Depuración**: Realizamos pruebas unitarias y de integración para asegurar el funcionamiento correcto de cada módulo. -7. **Implementación Final**: Desplegamos el proyecto y verificamos la funcionalidad completa. +7. Activamos el bot en Telegram +Finalmente, abrimos el bot en Telegram y presionamos START para activarlo. Con esto, nuestro bot ya quedó listo para interactuar con los usuarios en Telegram. -Estos pasos nos permitieron estructurar y completar el proyecto de manera organizada y efectiva. From 469b714680ca54c6d22270a0151cabce1680809e Mon Sep 17 00:00:00 2001 From: Kimberly villeda <114280564+kvilledar1@users.noreply.github.com> Date: Mon, 28 Oct 2024 17:43:36 -0600 Subject: [PATCH 12/14] Update README.md --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 877dc51..a3f5dc0 100644 --- a/README.md +++ b/README.md @@ -118,11 +118,16 @@ -Guía para Integrar un Bot de Telegram en Spring Boot + + Guía de Integración del Bot de Telegram + + 1. Seleccionamos la tecnología adecuada Para integrar un bot en nuestra aplicación, decidimos usar la API de bots de Telegram. Esta opción nos pareció confiable y tiene una documentación detallada. Nos aseguramos de revisarla bien para entender sus capacidades y requisitos técnicos; pueden verla https://core.telegram.org/bots + + 2 . Agregamos la dependencia de Telegram Bots en nuestro proyecto Para que nuestra aplicación de Spring Boot se comunique con Telegram, incluimos una dependencia en el archivo pom.xml. Esta dependencia (telegrambots) contiene las herramientas necesarias para que el bot funcione con Telegram. La configuración es la siguiente: @@ -136,12 +141,14 @@ Para que nuestra aplicación de Spring Boot se comunique con Telegram, incluimos 3. Creamos un paquete llamado service en el proyecto Para mantener el código organizado, creamos un paquete llamado service, donde incluimos la clase principal de integración del bot. Esta clase gestiona la lógica de interacción con Telegram, y decidimos llamarla TelegramBotService, aunque cualquier otro nombre claro también hubiera funcionado. + 4. Extendimos la clase TelegramLongPollingBot En la clase TelegramBotService, la hicimos extender TelegramLongPollingBot, una clase de la API que se encarga de recibir y procesar los mensajes. Esta herencia simplifica nuestro desarrollo, permitiéndonos enfocarnos en definir las respuestas que queremos que dé el bot. public class TelegramBotService extends TelegramLongPollingBot { // Aquí va la implementación del bot } + 5. Sobrescribimos los métodos clave para configurar el bot Para que el bot funcionara correctamente, sobrescribimos los métodos getBotUsername y getBotToken. getBotUsername devuelve el nombre del bot, y getBotToken contiene el token de autenticación. Configuramos estos métodos para devolver el nombre y el token específicos de nuestro bot: @Override From cded79c9a36d6a53b72c2edb9a36395341aea0b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Hern=C3=A1ndez=20L=C3=B3pez?= Date: Mon, 28 Oct 2024 19:18:58 -0600 Subject: [PATCH 13/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a3f5dc0..bbc0e25 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ![cover](https://github.com/user-attachments/assets/9e61c141-7162-4856-8e49-e5032c4c1474) -# VER ONLINE: [:arrow_right: PREVIEW :arrow_left:](https://airman-project.vercel.app/) + From 8ad25ca866b1b96bda2871f4072fd8802b790c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Hern=C3=A1ndez=20L=C3=B3pez?= Date: Tue, 29 Oct 2024 19:00:37 -0600 Subject: [PATCH 14/14] Update README.md add image Redis --- README.md | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bbc0e25..12c1c0f 100644 --- a/README.md +++ b/README.md @@ -52,9 +52,10 @@ - + + @@ -166,3 +167,39 @@ Para obtener el nombre y el token necesarios, utilizamos BotFather, el bot ofici 7. Activamos el bot en Telegram Finalmente, abrimos el bot en Telegram y presionamos START para activarlo. Con esto, nuestro bot ya quedó listo para interactuar con los usuarios en Telegram. + +# Documentación del Servicio OpenAIService + +## Descripción General + +El `OpenAIService` es un componente del proyecto desarrollado en Spring Boot, diseñado para gestionar las interacciones con la API de OpenAI. Este servicio permite el envío de mensajes al modelo de OpenAI y realiza el almacenamiento tanto de las solicitudes como de las respuestas en una base de datos Redis. Este enfoque facilita el almacenamiento y la recuperación de datos, proporcionando una solución eficiente y escalable para las consultas de los usuarios. + +## Requisitos Previos + +En el desarrollo del servicio, el equipo consideró ciertos requisitos previos que garantizan su correcto funcionamiento: + +- Se partió de un proyecto Spring Boot previamente configurado. +- Se utilizó una clave API de OpenAI válida para las solicitudes. +- Redis fue implementado como solución de almacenamiento, estando operativo localmente o en un servidor accesible. +- Las credenciales para OpenAI y Redis fueron configuradas adecuadamente en el archivo `application.properties` del proyecto. + +## Configuración + +### Archivo `application.properties` + +En el archivo de configuración `application.properties`, se añadieron las siguientes propiedades para establecer las credenciales necesarias: + +```properties +# Clave de la API de OpenAI +openai.api.key=TU_CLAVE_API_DE_OPENAI + +# Configuración de Redis +spring.redis.host=localhost +spring.redis.port=6379``` + + + + + + +