openmax-server/sms-gateway/README.md

90 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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