90 lines
2.9 KiB
Markdown
90 lines
2.9 KiB
Markdown
# Смс шлюз
|
||
|
||
Микросервис для отправки 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` |