Как устроена лента переписки, что такое составной chat_id, как привязывать и отвязывать чаты, что делать с очередью «Чаты без брони» и как работают deep links.
platform + external_chat_id + role + content + timestamp + booking_id. Роль: user (гость), bot (вы/бот), system (служебные события площадки).booking_chats (флаг is_active). Один чат активен только у одной брони; у брони может быть несколько чатов (разные платформы).платформа:external_chat_id (напр. avito:u2i-xxx, telegram:123456), иногда с профилем.avito_history_days, остальные — channel_history_days. Старые сообщения не подтягиваются и не отображаются как новые.Сюда попадают сообщения, для которых синхронизация не нашла бронь (нет external_ref, не совпал ID объекта, чат старше глубины). Элемент очереди: платформа, external_chat_id, имя отправителя, текст, время получения.
booking_id + platform + external_chat_id + force. Если на платформе у брони уже есть другой чат и force=false — вернётся 409 с existing_chat_id. С force=true — старый деактивируется./api/avito/unlinked-chats* ищут чаты с маркером «У вас новая бронь» за 30 дней; link-chat-manual привязывает по chat_id + booking_id.POST /api/booking/{id}/send (form: message + platform опционально). Без platform — уйдёт в первый активный чат.POST /api/v1/bookings/{id}/messages (JSON). Одинаковый текст в тот же чат чаще раза в 30 сек — 429 (анти-флуд).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/ — он появится здесь автоматическиПроект в бета-тестировании — пишите, поможем с подключением.