Sobre el proyecto
httpSMS es un servicio que te permite usar un teléfono Android como pasarela SMS. Se llama a una API HTTP simple y la solicitud hace que el teléfono Android envíe un SMS. Los mensajes recibidos en el teléfono pueden reenviarse a un endpoint de webhook que proporciones. El proyecto se creó porque los números de teléfono virtuales no están disponibles en muchos países, y el autor quería una forma automatizada y basada en API de enviar y recibir SMS a través de un teléfono móvil real.
Componentes
- Interfaz web: una aplicación de página única creada con Nuxt y Vuetify, alojada en Firebase; el código fuente está en el directorio web.
- API: creada con Go y Fiber, usando CockroachDB, y diseñada para ejecutarse sin servidor en Google Cloud Run. La documentación de la API se publica por separado.
- Aplicación Android: una aplicación nativa en Kotlin que debe instalarse en el teléfono antes de que se puedan enviar o recibir mensajes. Se distribuye como APK y mediante las versiones de GitHub.
Características
- Cifrado de extremo a extremo: los mensajes pueden cifrarse con AES-256, con la clave almacenada solo en el teléfono, de modo que el servidor no puede leer el contenido de los mensajes.
- Webhooks: los mensajes SMS recibidos pueden reenviarse a una URL de callback para crear integraciones.
- Contrapresión: un límite de tasa configurable (por ejemplo, tres mensajes por minuto) evita saturar la API de SMS del teléfono incluso cuando hay muchos destinatarios en cola.
- Expiración de mensajes: se puede establecer un tiempo de espera para la validez del mensaje, y se te notifica si un mensaje expira antes de ser enviado.
Clientes de API
Se enumeran bibliotecas cliente oficiales para Go y JavaScript/TypeScript.
Flujo de envío
Una solicitud al endpoint de envío se acepta con HTTP 202, se programa y entrega una notificación push a la aplicación Android, la aplicación obtiene el mensaje, lo envía a través de la API de SMS de Android y reporta de forma asíncrona el resultado del envío y el informe de entrega a la API.
Autoalojamiento con Docker
El README documenta una ruta de autoalojamiento basada en Docker: crear un proyecto de Firebase y la configuración del SDK web, habilitar el inicio de sesión con correo electrónico/contraseña (con un workaround indicado para la protección contra enumeración de correos electrónicos), generar credenciales de cuenta de servicio de Firebase y un google-services.json de Android, configurar un servicio de correo SMTP, configurar un widget de Cloudflare Turnstile para proteger la ruta de búsqueda de mensajes, clonar el repositorio, copiar los archivos .env.docker proporcionados para web y api, completar las variables de entorno y luego ejecutar docker compose up --build. La interfaz web queda accesible en el puerto 3000 y la API en el puerto 8000. Se debe insertar un usuario del sistema en la tabla users con un id y api_key que coincidan con la configuración de la cola de eventos, y reiniciar el contenedor de la API después. La aplicación Android debe compilarse en Android Studio con el google-services.json reemplazado para que funcione la mensajería push.
Pruebas y licencia
Las pruebas de integración de extremo a extremo ejecutan todo el stack (API, PostgreSQL, Redis) en Docker con un emulador de teléfono que simula un dispositivo Android, y también se ejecutan en CI en pushes y pull requests a main. El proyecto está licenciado bajo la GNU Affero General Public License v3.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.