|
|
||
|---|---|---|
| .. | ||
| app | ||
| Dockerfile | ||
| README.md | ||
| config.yaml | ||
| docker-compose.yml | ||
| requirements.txt | ||
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