← Volver a Back.API

TelegramController

Controlador para gestión y pruebas de notificaciones a través de Telegram

📊 Resumen del Controlador

2
Servicios Inyectados
7
Endpoints Totales
4
Tipos de Mensajes
326
Líneas de Código

El TelegramController es un controlador especializado del sistema RestMaster encargado de gestionar las notificaciones y alertas a través de Telegram. Este controlador proporciona una API completa para enviar diferentes tipos de mensajes y realizar pruebas del sistema de notificaciones.

🎯 Funcionalidades Principales

  • Verificación de Estado: Comprobación de disponibilidad del servicio Telegram (1 endpoint)
  • Mensajes de Información: Envío de mensajes informativos de prueba (1 endpoint)
  • Mensajes de Error: Envío de mensajes de error de prueba (1 endpoint)
  • Mensajes de Éxito: Envío de mensajes de éxito de prueba (1 endpoint)
  • Mensajes Personalizados: Envío de mensajes con formato personalizado (1 endpoint)
  • Pruebas de Middleware: Simulación de errores para probar notificaciones (2 endpoints)
  • Modo de Producción: Funcionalidad limitada en modo DEBUG
  • Documentación Swagger: Documentación completa con ejemplos curl

🔧 Servicios Utilizados

Servicios Inyectados por Constructor:

  • ITelegramService - Servicio principal de Telegram
  • ILogger<TelegramController> - Logging de errores y eventos

📊 Métodos del ITelegramService

  • IsServiceAvailableAsync() - Verifica disponibilidad del servicio
  • SendMessageAsync(string) - Envía mensaje informativo
  • SendErrorMessageAsync(string) - Envía mensaje de error
  • SendSuccessMessageAsync(string) - Envía mensaje de éxito
  • SendCustomMessageAsync(string, string?) - Envía mensaje personalizado

⚠️ Configuración Requerida

El controlador requiere la siguiente configuración:

  • Bot Token de Telegram (string, requerido): Token del bot de Telegram
  • Chat ID (string, requerido): ID del chat donde enviar mensajes
  • Configuración de Producción (bool): Solo funciona en modo producción

📋 Categorías de Endpoints

🔍 Verificación de Estado

Comprobación de disponibilidad del servicio Telegram
Status
Monitoring

Endpoints: 1 método

  • GET /api/telegram/status
Ver detalles →

📨 Mensajes de Prueba

Envío de diferentes tipos de mensajes de prueba
Testing
Messages

Endpoints: 3 métodos

  • POST /api/telegram/test-info
  • POST /api/telegram/test-error
  • POST /api/telegram/test-success
Ver detalles →

🎨 Mensajes Personalizados

Envío de mensajes con formato personalizado
Custom
Formatting

Endpoints: 1 método

  • POST /api/telegram/custom
Ver detalles →

🧪 Pruebas de Middleware

Simulación de errores para probar notificaciones
Testing
Middleware

Endpoints: 2 métodos

  • GET /api/telegram/test-error-handling
  • GET /api/telegram/test-exception
Ver detalles →

🔗 Estructura de Rutas

Ruta Base: /api/telegram

El controlador utiliza la ruta /api/telegram siguiendo las convenciones de ASP.NET Core para APIs RESTful.

Patrones de URL por Categoría:

📊 Códigos de Respuesta

✅ 200 - OK

Operación exitosa, mensaje enviado correctamente
{ "success": true, "message": "Info message sent successfully", "timestamp": "2024-01-15T10:30:00Z" }

❌ 400 - Bad Request

Error en el envío del mensaje o parámetros inválidos
{ "success": false, "message": "Failed to send info message", "timestamp": "2024-01-15T10:30:00Z" }

❌ 500 - Internal Server Error

Error interno del servidor o excepción no controlada
{ "message": "This is a test exception to verify Telegram error notifications are working" }

🔍 Características Técnicas

🎯 Características del Controlador

  • Constructor Injection: Inyección de dependencias por constructor
  • Async/Await: Operaciones asíncronas para mejor rendimiento
  • Error Handling: Manejo robusto de errores con logging
  • Swagger Documentation: Documentación completa con ejemplos curl
  • Production Mode: Funcionalidad limitada en modo DEBUG
  • Structured Logging: Logging detallado de errores y eventos
  • Response Types: Tipos de respuesta específicos para Swagger
  • Custom Models: Modelos personalizados para requests

⚠️ Consideraciones de Seguridad

  • Los endpoints solo funcionan en modo producción (no DEBUG)
  • Se requiere configuración segura de tokens de Telegram
  • Los mensajes se envían a chats configurados previamente
  • Se recomienda limitar el acceso a estos endpoints en producción

📝 Patrones de Diseño Utilizados

  • Dependency Injection: Inversión de control para servicios
  • Service Pattern: Abstracción del servicio de Telegram
  • Async/Await Pattern: Programación asíncrona
  • Error Handling Pattern: Manejo centralizado de errores
  • RESTful API Design: Diseño de API REST estándar

📈 Estadísticas Detalladas

326
Líneas de Código
7
Métodos Públicos
2
Verbos HTTP
1
Modelo Personalizado

Distribución de Métodos HTTP:

Distribución por Funcionalidad:

🔗 Integración con Otros Componentes

🎯 Componentes Relacionados

  • ITelegramService: Servicio principal de Telegram
  • ErrorHandlingMiddleware: Middleware de manejo de errores
  • GrafanaLoggingMiddleware: Logging de eventos
  • Swagger/OpenAPI: Documentación de la API
  • Telegram Bot API: API oficial de Telegram

📋 Casos de Uso

  • Notificaciones de Sistema: Alertas automáticas de errores y eventos
  • Monitoreo Remoto: Verificación del estado del sistema desde móvil
  • Pruebas de Integración: Verificación del funcionamiento de notificaciones
  • Alertas de Producción: Notificaciones críticas en tiempo real
  • Debugging Remoto: Información de errores en dispositivos móviles

📋 Modelos de Datos

📨 CustomMessageRequest

Modelo para mensajes personalizados
  • Message (string): Contenido del mensaje
  • ParseMode (string?): Modo de formato (html, markdown, markdownv2)

📊 Respuestas de Estado

Respuestas para verificación de estado
  • ServiceAvailable (bool): Disponibilidad del servicio
  • Timestamp (DateTime): Marca de tiempo
  • Message (string): Mensaje descriptivo

✅ Respuestas de Éxito

Respuestas para operaciones exitosas
  • Success (bool): Estado de la operación
  • Message (string): Mensaje de confirmación
  • Timestamp (DateTime): Marca de tiempo

❌ Respuestas de Error

Respuestas para operaciones fallidas
  • Success (bool): Estado de la operación (false)
  • Message (string): Mensaje de error
  • Timestamp (DateTime): Marca de tiempo