Skip to content

riskpy/risk-sms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Risk SMS Gateway

risk-sms es una herramienta desarrollada en Java para el envío y recepción de mensajes SMS, diseñada como parte del ecosistema risk y pensada para ser integrada de forma nativa con su módulo de Mensajería.

Además, gracias a su arquitectura modular, puede adaptarse fácilmente a otros entornos o sistemas que requieran funcionalidades similares.

Utiliza la librería Cloudhopper SMPP para la comunicación con gateways de SMS mediante el protocolo SMPP, y HikariCP para la gestión eficiente de conexiones a base de datos Oracle.


🚀 Funcionalidades principales

  • 📤Envío de mensajes SMS a través de múltiples servicios SMPP.
  • 📩Recepción de mensajes entrantes (MO - Mobile Originated).
  • 📬Procesamiento de acuses de entrega (DLR - Delivery Receipt).
  • 🗃️Lectura y escritura desde/hacia una base de datos Oracle.
  • ⚙️Configuración externa y desacoplada para entornos productivos.

🧱 Requisitos

  • Java 17 o superior
  • Maven 3.6+
  • Acceso a un gateway SMPP válido
  • Base de datos Oracle accesible, con las siguientes tablas disponibles:
    • t_mensajes: utilizada para almacenar y procesar los mensajes pendientes de envío.
    • t_mensajes_recibidos: utilizada para guardar los mensajes entrantes (MO).

📦 Estructura del proyecto

risk-sms/
├── config/
│   ├── risk-sms.yml.example     # Archivo de configuración ejemplo
│   └── risk-sms.yml             # Archivo real (no versionado)
├── src/                         # Código fuente
├── target/                      # Archivos compilados y .jar
├── pom.xml                      # Configuración Maven
├── LICENCE                      # Detalles de la licencia
├── .gitignore
└── README.md

⚙️ Configuración

El archivo de configuración inicialmente está preparado para configurar una conexión a base de datos, y múltiples conexiones a SMPP.

Está ubicado en config/risk-sms.yml, pero no debe versionarse porque puede contener credenciales. En su lugar, se incluye un archivo de ejemplo:

cp config/risk-sms.yml.example config/risk-sms.yml

Edita el archivo config/risk-sms.yml con los valores adecuados para tu entorno:

# Ejemplo: config/risk-sms.yml
# Conexion a la base de datos
datasource:
  serverName: serverName.com.py
  port: 1521
  serviceName: serviceName
  user: user
  password: password
  maximumPoolSize: 50
  minimumIdle: 5
  idleTimeout: 30000
  connectionTimeout: 10000

# Configuraciones de negocio para el envio de SMS
sms:
  - nombre: TEL-OTP
    telefonia: TEL                       # Operadora telefonica. Opcional
    clasificacion: OTP                   # Clasificacion: OTP, AVISO, PROMOCION (u otros). Opcional
    cantidadMaximaPorLote: 100           # Cantidad maxima de SMS a enviar por lote. Opcional. Por defecto 100
    modoEnvioLote: secuencial_espaciado  # Modo de envío: paralelo, paralelo_espaciado, secuencial_espaciado, secuencial_espaciado_async
    intervaloEntreLotesMs: 10000         # Tiempo de espera entre lotes de SMS a enviar (en milisegundos)
    maximoIntentos: 5                    # Número máximo de intentos de envío permitidos de SMS. Opcional. Por defecto 5
    # Conexion al Gateway
    smpp:
      host: host.com.py
      port: 54321
      systemId: systemId
      password: password
      sourceAddress: 09751000000
      sendDelayMs: 50  # Tiempo de espera entre envíos consecutivos de SMS (en milisegundos). Util para cumplir con límites del proveedor SMPP o evitar sobrecarga. Por defecto 500

  - nombre: TEL-AVISO
    telefonia: TEL
    clasificacion: AVISO
    cantidadMaximaPorLote: 100
    modoEnvioLote: secuencial_espaciado
    intervaloEntreLotesMs: 10000
    maximoIntentos: 5
    # Conexion al Gateway
    smpp:
      host: host.com.py
      port: 54321
      systemId: systemId
      password: password
      sourceAddress: 09751000000
      sendDelayMs: 50

⚠️ Importante: No compartas ni subas el archivo risk-sms.yml real al repositorio.


🛠️ Compilación

Para compilar y generar el JAR ejecutable con todas las dependencias (desde el directorio raíz del proyecto):

mvn clean install

El JAR final estará en:

target/risk-sms.jar

▶️ Ejecución

Para ejecutar el JAR:

java -Xms500M -Xmx500M -XX:MaxDirectMemorySize=250M -server -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=500 -jar target/risk-sms.jar

Por defecto, busca el archivo config/risk-sms.yml.

También podés especificar otro archivo:

java -Xms500M -Xmx500M -XX:MaxDirectMemorySize=250M -server -XX:+UseG1GC -XX:+ExplicitGCInvokesConcurrent -XX:MaxGCPauseMillis=500 -jar target/risk-sms.jar path/a/otro-risk-sms.yml

🧪 Testing

Podés agregar mensajes de prueba en la tabla t_mensajes de tu base de datos y verificar que se procesen correctamente, tanto el envío como la recepción.


🪵 Logging

  • Se utiliza Log4j2 para los logs.
  • La configuración puede personalizarse en el archivo log4j2.xml.

🙋‍♂️ Sugerencias

Si tenés dudas, encontraste un error o querés proponer una mejora en el código o la documentación, no dudes en crear un issue.
Estaremos atentos para ayudarte o recibir tus aportes.


🤝 Contribuciones

Las contribuciones son siempre bienvenidas.
Si querés corregir un error, mejorar el rendimiento o incorporar una nueva funcionalidad:

  1. Creá una rama con tus cambios.
  2. Enviá un pull request con una breve descripción.

¡Gracias por ayudar a mejorar risk-sms!


📄 Licencia

El Proyecto risk-sms está licenciado bajo la licencia MIT. Ver el archivo LICENSE para más detalles.

MIT © 2025 – DamyGenius


About

Risk SMS Gateway

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages