Чат (Диалоги)
Единый inbox всех диалогов подключённых сообществ: переписка с подписчиками в реальном времени, перехват диалога у бота менеджером и возврат боту.
Раскладка
Три колонки: список диалогов (320px) | лента переписки | карточка подписчика (на широких экранах).
Список диалогов
- Поиск по имени; кнопки-фильтры: «Открытые» | «Непрочит.» | «Мои» | «Без ответ.» | «Все»; тумблер «Скрыть заблокированных»; бесконечная прокрутка.
- В каждой строке: аватар с зелёным индикатором «онлайн», имя (или
id{vkUserId}), время и превью последнего сообщения, бейдж непрочитанных, сообщество, назначенный менеджер, пометка «бот выкл» — если бот на паузе у этого подписчика.
Лента переписки
- Пузыри: входящие белые, исходящие голубые; цитата-ответ (reply) с подписью отправителя.
- Подпись отправителя у исходящих: «🤖 бот», «👤
{имя менеджера}», «системное»; пометка «не доставлено» у ошибочных. - Read-only отрисовка VK-клавиатуры бота с цветами кнопок.
- Ховер-действия на сообщении: Ответить | Выбрать | Удалить (удалять можно только исходящие); режим множественного выбора с панелью «Выбрано: N» и удалением.
- Кнопка прокрутки вниз появляется при отступе более 200px от низа.
- Открытие диалога отправляет в VK отметку «прочитано» (markAsRead).
Статусы доставки сообщения: pending | sent | delivered | read | failed.
Перехват диалога оператором
В шапке диалога:
- «Взять» — назначить диалог на себя (тост «Диалог назначен на вас»). Когда менеджер берёт диалог, бот для этого подписчика ставится на паузу.
- «Включить бота» / «Выключить бота» — ручная пауза автосценария для подписчика.
- Поиск по переписке (поле + счётчик «X совп.»), ссылка на профиль VK, онлайн-статус («В сети» / «Был(а)
{время}»), город.
Авто-возврат диалога боту (через N часов) настраивается в настройках бота в редакторе.
Вложения и голосовые
Композер поддерживает:
- прикрепление картинки и файла — две кнопки и две drag-and-drop зоны «Бросьте фото» / «Бросьте файл»; превью прикреплённого — чипсами с удалением;
- эмодзи-пикер;
- запись голосового сообщения: кнопка микрофона, счётчик длительности, остановка по ▣. Голосовые пишутся через MediaRecorder (WebM/Opus) и отправляются в VK как audio_message.
Лимиты загрузки: до 30 МБ на файл, до 10 файлов за раз (загружаются последовательно).
24-часовое окно
Если последнее входящее сообщение было почти 24 часа назад, над композером появляется янтарный баннер: «Прошло почти 24 часа… VK может отказаться доставлять». Вне 24-часового окна доставка ограничена правилами VK — для массовых сообщений используйте Рассылки в режиме intent.
Живые обновления
- Новые сообщения дописываются в открытый диалог по WebSocket; список и счётчики непрочитанных обновляются автоматически.
- Бейдж непрочитанных на пункте «Чат» в сайдбаре: опрос каждые 20 секунд + инвалидация по WebSocket.
- Онлайн-статусы подписчиков обновляются раз в 60 секунд.
Карточка подписчика
Справа: имя, ссылка «Открыть карточку» (ведёт в раздел Подписчики), город, последний вход, теги.