Admin Panel
Веб-панель /admin — альтернативный интерфейс для команды поддержки. Менеджеры работают в браузере вместо Telegram-группы. Построена на Filament 3.
Доступ
Адрес панели: https://<your-domain>/admin
Для входа нужна учётная запись из таблицы users.
Создать нового пользователя через artisan:
docker exec pet php artisan app:create-admin-userРазделы панели
Диалоги
Маршрут: /admin/conversations
Основной раздел для обработки обращений. Показывает список всех пользователей, написавших боту.
| Колонка | Описание |
|---|---|
| Chat ID | Идентификатор пользователя в его платформе |
| Платформа | telegram, vk или внешний источник |
| Последнее сообщение | Дата и время последнего сообщения |
Фильтры: по платформе (telegram / vk). Сортировка по умолчанию: по дате обновления, новые сверху.
Страница диалога
Показывает историю переписки с конкретным пользователем. Входящие и исходящие сообщения отображаются в хронологическом порядке.
В режиме admin_panel доступна форма ответа. Порядок отправки:
- Введите текст в поле «Сообщение».
- Нажмите кнопку отправки.
- Ответ сохраняется в БД и отправляется пользователю через очередь.
TIP
Форма ответа скрыта, если панель открыта в режиме telegram_group.
Чаты
Маршрут: /admin/bot-users
Список всех зарегистрированных пользователей бота с возможностью блокировки.
| Действие | Описание |
|---|---|
| Заблокировать | Устанавливает is_banned = true. Пользователь получит уведомление о блокировке вместо ответа |
| Разблокировать | Снимает блокировку (is_banned = false) |
External Sources
Маршрут: /admin/external-sources
INFO
Раздел доступен только администраторам (role = admin).
Управление внешними источниками, интегрированными через REST API.
Создание источника:
- Нажмите «New External Source».
- Укажите название и (опционально) «Webhook URL» — адрес, на который будут отправляться ответы.
- Сохраните — токен доступа генерируется автоматически.
WARNING
При сохранении существующего источника токен обновляется автоматически. Все интеграции, использующие старый токен, перестанут работать — обновите токен на стороне клиента.
Получить текущий токен источника:
docker exec pet php artisan tinker --execute="echo \App\Models\ExternalSource::find(1)->accessToken->token;"Пользователи
Маршрут: /admin/users (группа «Настройки»)
INFO
Раздел доступен только администраторам (role = admin).
Управление учётными записями для входа в /admin.
| Роль | Что доступно |
|---|---|
manager | Диалоги, Чаты |
admin | Всё, включая Пользователи и External Sources |
Создание пользователя через панель:
- Перейдите в «Настройки → Пользователи».
- Нажмите «New Пользователь».
- Заполните имя, email, пароль (минимум 8 символов) и роль.
Создание через artisan:
docker exec pet php artisan app:create-admin-userTIP
Команда создаёт пользователя с ролью по умолчанию. Роль можно изменить в панели.
Поведение в разных режимах
| Функция | admin_panel | telegram_group |
|---|---|---|
Просмотр сообщений в /admin | Да | Да (read-only) |
Форма ответа в /admin | Да | Скрыта |
| Создание форум-топиков в Telegram | Нет | Да |
| Новые сообщения сохраняются в БД | Да | Да |
Частые вопросы
Не вижу форму ответа.
Проверьте, что в .env задан MANAGER_INTERFACE=admin_panel и контейнер перезапущен. Убедиться в текущем значении:
docker exec pet php artisan tinker --execute="echo config('app.manager_interface');"Новые сообщения не появляются.
Страница обновляется каждые 5 секунд. Если сообщения не появляются после 10 и более секунд — проверьте, работает ли очередь:
docker compose psПользователь заблокирован, но продолжает писать.
При блокировке через панель уведомление о блокировке отправляется через очередь. Убедитесь, что worker запущен.