Beta Проект в бета-тестировании
ГлавнаяФункцииWikiПланыКонтактыВойти →
Главная / Wiki / Входящие

Входящие и привязка чатов

Как устроена лента переписки, что такое составной chat_id, как привязывать и отвязывать чаты, что делать с очередью «Чаты без брони» и как работают deep links.

1. Модель данных

  • Каждое сообщение: platform + external_chat_id + role + content + timestamp + booking_id. Роль: user (гость), bot (вы/бот), system (служебные события площадки).
  • Связь чат→бронь хранится в booking_chats (флаг is_active). Один чат активен только у одной брони; у брони может быть несколько чатов (разные платформы).
  • Внутри кодовой базы чат адресуют составным ID платформа:external_chat_id (напр. avito:u2i-xxx, telegram:123456), иногда с профилем.
  • История фильтруется глубиной: Avito — avito_history_days, остальные — channel_history_days. Старые сообщения не подтягиваются и не отображаются как новые.

2. Очередь «Чаты без брони»

Сюда попадают сообщения, для которых синхронизация не нашла бронь (нет external_ref, не совпал ID объекта, чат старше глубины). Элемент очереди: платформа, external_chat_id, имя отправителя, текст, время получения.

Откройте «📥 Чаты без брони» (бейдж — число необработанных).
Найдите чат по имени/тексту/времени.
«Привязать» → выберите бронь (или создайте новую вручную) → чат и его история переедут в бронь.
Спам — «Удалить из очереди» (POST /api/delete-pending-message).
  • Привязать (POST /api/associate-chat): booking_id + platform + external_chat_id + force. Если на платформе у брони уже есть другой чат и force=false — вернётся 409 с existing_chat_id. С force=true — старый деактивируется.
  • Отвязать (POST /api/dissociate-chat): чат деактивируется, все сообщения этого чата в брони удаляются. Используйте окно «Управление каналами связи» (⚙️ в шапке чата).
  • Avito-особенность: инструменты /api/avito/unlinked-chats* ищут чаты с маркером «У вас новая бронь» за 30 дней; link-chat-manual привязывает по chat_id + booking_id.

4. Отправка сообщений

  • Панель: POST /api/booking/{id}/send (form: message + platform опционально). Без platform — уйдёт в первый активный чат.
  • Новый API: POST /api/v1/bookings/{id}/messages (JSON). Одинаковый текст в тот же чат чаще раза в 30 сек — 429 (анти-флуд).
  • Переключатель каналов в поле ввода показывает все активные чаты брони. Нет чатов — отправка невозможна, сначала нужен чат (гость написал или deep link).
  • Контакты гостя с Avito/Суточно могут быть скрыты правилами площадки (напр. бесплатная отмена) — панель покажет предупреждение.

GET /api/booking/{id}/deeplinks возвращает ссылки Telegram/MAX ботов с start_token брони. Шаблон сопроводительного текста: {deep_link} {booking_id} {guest_name} {property_name} {platform}. Кнопка «Отправить в чат» активна только при наличии чата/телефона. После перехода гостя по ссылке его чат привязывается автоматически.

📷 Скриншот: Окно переписки брониassets/screenshots/inbox-chat.pngПоложите файл с этим именем в папку web-landing/assets/screenshots/ — он появится здесь автоматически
Окно переписки: лента сообщений и выбор канала отправки
📷 Скриншот: Очередь «Чаты без брони»assets/screenshots/inbox-unlinked.pngПоложите файл с этим именем в папку web-landing/assets/screenshots/ — он появится здесь автоматически
Очередь непривязанных чатов с бейджем

Контакты

Проект в бета-тестировании — пишите, поможем с подключением.

Emailinfo@gostvchat.ruОтветим в течение рабочего дня
Telegramt.me/gostvchatБыстрые вопросы
Панельgostvchat.ru/workspace/Вход через Яндекс OAuth