Files
mikopbxbot/README.md
2026-06-24 16:32:30 +03:00

152 lines
5.5 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.
# MikoPBX Public SIP Telephony Bot
Telegram-бот для публичной SIP-телефонии на базе MikoPBX.
## Основные возможности
### Для обычных пользователей
- Регистрация **строго 7-значного** номера
- **Один номер на одного пользователя** (ограничение)
- Выбор пароля: сгенерировать или ввести свой
- Получение **полных параметров подключения** (домен, сервер, порт, транспорт, outbound proxy, STUN и т.д.)
- Просмотр своих аккаунтов
### Для администраторов
- Полный список всех аккаунтов
- Смена номера / пароля
- Удаление аккаунтов
- **Привязка уже существующих номеров из MikoPBX** к Telegram ID пользователя
### Синхронизация с MikoPBX
- Полная двусторонняя синхронизация (создание, изменение номера, изменение пароля, удаление)
- Возможность привязывать уже существующие в MikoPBX аккаунты
---
## Настройка (.env)
```env
# MikoPBX
MIKOPBX_HOST=http://192.168.1.50:8081
MIKOPBX_ADMIN_LOGIN=admin
MIKOPBX_ADMIN_PASSWORD=твой_пароль
# Telegram
TELEGRAM_BOT_TOKEN=твой_токен
ADMIN_TELEGRAM_IDS=123456789,987654321
# SIP параметры (показываются пользователям)
DEFAULT_SIP_SERVER=sip.tvoyserver.ru
DEFAULT_SIP_PORT=5060
DEFAULT_SIP_DOMAIN=sip.tvoyserver.ru
DEFAULT_SIP_TRANSPORT=UDP
DEFAULT_SIP_OUTBOUND_PROXY=
DEFAULT_SIP_STUN=stun.l.google.com:19302
```
**Все параметры подключения настраиваются в `.env`** и автоматически подставляются в сообщение пользователю.
---
## Как работает регистрация номера
1. Пользователь нажимает **"Register new number"**
2. Вводит **ровно 7 цифр**
3. Вводит имя (опционально)
4. Выбирает способ получения пароля:
- Сгенерировать случайный
- Ввести свой пароль
5. Бот создаёт аккаунт в **MikoPBX** с указанным паролем
6. Выдаёт **полные параметры подключения**
**Ограничения:**
- Номер строго 7 цифр
- У одного Telegram-пользователя может быть только **один** номер
---
## Привязка существующих номеров MikoPBX (Админ)
Это одна из ключевых фич:
1. Админ → **Admin panel****Link existing MikoPBX number**
2. Вводит существующий 7-значный номер из MikoPBX
3. Вводит Telegram ID пользователя
4. Номер привязывается к пользователю
После этого пользователь может:
- Видеть свой номер в разделе "My accounts"
- Получать параметры подключения (если пароль был заранее известен)
**Полезно**, когда номера уже созданы в MikoPBX вручную.
---
## Полный список кнопок и команд
### Главное меню (для всех)
- `Register new number` — регистрация нового номера
- `My accounts` — мои аккаунты
- `Admin panel` — только для администраторов
### Админ-панель
- `All registered accounts` — список всех аккаунтов
- `Link existing MikoPBX number` — привязка существующего номера
- При просмотре аккаунта:
- `Change number`
- `Change password`
- `Delete account`
### Команды
- `/start` — главное меню
- `/cancel` — отмена текущего действия
---
## Пример сообщения с параметрами подключения
```
Your SIP account has been created!
Number: 1001001
Secret (password): MySuperPass2025
--- Full connection parameters ---
Domain: sip.tvoyserver.ru
Server / Outbound Proxy: sip.tvoyserver.ru
Port: 5060
Transport: UDP
Username / Auth ID: 1001001
Password: MySuperPass2025
Outbound Proxy:
STUN Server: stun.l.google.com:19302
Recommended clients: Zoiper, MicroSIP, Linphone, Bria
Use these credentials in your SIP client.
```
---
## Запуск и обновление
```bash
# Первый запуск
docker compose up -d --build
# Просмотр логов
docker compose logs -f mikopbx-bot
# Пересборка после изменений
docker compose up -d --build
```
---
## Важные замечания
- Номера строго 7 цифр (валидация на стороне бота)
- Один Telegram ID = один номер
- Все изменения (номер/пароль/удаление) выполняются и в MikoPBX, и в локальной БД
- Привязка существующих номеров позволяет работать с уже созданными в MikoPBX аккаунтами без пересоздания
Бот полностью готов к эксплуатации.