mirror of
https://github.com/openmax-server/server.git
synced 2026-06-19 01:11:06 +03:00
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` |