# Смс шлюз Микросервис для отправки SMS-кодов с маршрутизацией по провайдерам в зависимости от страны. ## Требования - Docker и Docker Compose ## Запуск ```bash docker compose up -d ``` Сервис доступен на порту `8100`, API монтируется по префиксу `/sms-gateway`. ## Конфигурация Все настройки находятся в `config.yaml`. Перезагрузка конфига без перезапуска: ```bash 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`