152 lines
5.5 KiB
Markdown
152 lines
5.5 KiB
Markdown
# 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 аккаунтами без пересоздания
|
||
|
||
Бот полностью готов к эксплуатации. |