openmax-server/sms-gateway
zavolo 2d09f52c2e feat: 23 опкод для регистрации, смс шлюз, докер 2026-03-15 13:25:40 -04:00
..
app feat: 23 опкод для регистрации, смс шлюз, докер 2026-03-15 13:25:40 -04:00
Dockerfile feat: 23 опкод для регистрации, смс шлюз, докер 2026-03-15 13:25:40 -04:00
README.md feat: 23 опкод для регистрации, смс шлюз, докер 2026-03-15 13:25:40 -04:00
config.yaml feat: 23 опкод для регистрации, смс шлюз, докер 2026-03-15 13:25:40 -04:00
docker-compose.yml feat: 23 опкод для регистрации, смс шлюз, докер 2026-03-15 13:25:40 -04:00
requirements.txt feat: 23 опкод для регистрации, смс шлюз, докер 2026-03-15 13:25:40 -04:00

README.md

Смс шлюз

Микросервис для отправки SMS-кодов с маршрутизацией по провайдерам в зависимости от страны.

Требования

  • Docker и Docker Compose

Запуск

docker compose up -d

Сервис доступен на порту 8100, API монтируется по префиксу /sms-gateway.

Конфигурация

Все настройки находятся в config.yaml. Перезагрузка конфига без перезапуска:

curl -X POST http://localhost:8100/sms-gateway/admin/reload

Провайдеры

Два типа провайдеров:

sms_api — внешний HTTP-сервис, отправляет реальное SMS. Параметры:

  • base_url — базовый адрес сервиса
  • send_endpoint — эндпоинт отправки (по умолчанию /auth/code)
  • timeout — таймаут запроса в секундах

lk_api — внутренний провайдер, SMS не отправляет. Генерирует код и сохраняет его в Redis для отображения в личном кабинете.

Маршрутизация

Правила задаются в routing.rules. Для каждого правила указываются префиксы номеров, основной провайдер и опциональный fallback. Если ни одно правило не совпало — используется default_provider.

Пример: номера +7 идут через sms_api, при недоступности — через lk_api. Все остальные номера сразу через lk_api.

Rate limiting

Настраивается в settings.rate_limit:

  • max_attempts — максимум запросов с одного номера
  • window_seconds — окно в секундах

API

Отправка кода

POST /sms-gateway/sms/send
{"phone_number": "+79001234567"}

Личный кабинет

Получить все ожидающие коды:

GET /sms-gateway/lk/codes

Получить код по номеру:

GET /sms-gateway/lk/code?phone=+79001234567

Получить и удалить код (разовое считывание):

DELETE /sms-gateway/lk/code?phone=+79001234567

Администрирование

Проверить, какой провайдер выберется для номера:

GET /sms-gateway/admin/routing/resolve?phone=+79001234567

Список правил маршрутизации:

GET /sms-gateway/admin/routing/rules

Список активных провайдеров:

GET /sms-gateway/admin/providers

Swagger

Документация доступна по адресу: http://localhost:8100/sms-gateway/docs