Главная › Библиотека › Сообщения

Сообщения

Прямое общение между пользователями объекта с файлами и ответами.

Обзор

Модуль сообщений обеспечивает защищённую систему обмена сообщениями между пользователями объекта (владельцами, арендаторами и их агентами). Пользователи могут отправлять прямые сообщения, прикреплять файлы и отвечать на предыдущие сообщения в стиле Telegram.

Прямые сообщения

Отправляйте приватные сообщения один на один между пользователями объекта. Сообщения видны только отправителю и получателю.

Прикрепление файлов

Прикрепляйте до 10 файлов на сообщение (изображения, документы, архивы). Максимум 10 МБ на файл.

Ответы на сообщения

Отвечайте на конкретные сообщения с визуальной ссылкой на оригинал, как в Telegram.

Вставка из буфера

Вставляйте изображения прямо из буфера обмена (Ctrl+V) для быстрого прикрепления скриншотов.

Уведомления

Глобальный бейдж показывает количество непрочитанных. Выпадающее меню отображает последние сообщения.

Email-уведомления

Получайте email-уведомления о новых сообщениях, когда вы не на сайте.

Типы файлов

Поддерживаются следующие форматы файлов:

Изображения

JPG, JPEG, PNG, GIF, WebP, BMP, SVG

Документы

PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, ODS, ODP, TXT, RTF, CSV

Архивы

ZIP, RAR, 7Z, TAR, GZ

Ограничения:
  • Максимальный размер файла: 10 МБ
  • Максимум файлов на сообщение: 10
  • Максимальная длина сообщения: 1000 символов

Хранение файлов

Файлы хранятся на защищённом облачном хранилище S3 по следующему пути:

messages_chat/{message_id}/{file_hash}.{extension}

Файлы доступны только участникам переписки через защищённые ссылки.

Как это работает

Процесс обмена сообщениями состоит из следующих шагов:

1

Выбор получателя

Выберите пользователя объекта из списка контактов для начала переписки.

2

Написание сообщения

Введите текст сообщения и при необходимости прикрепите файлы или вставьте изображения из буфера обмена.

3

Отправка

Нажмите кнопку отправки. Сообщение будет доставлено мгновенно, а получатель получит email-уведомление.

4

Получение ответа

Получайте ответы в реальном времени. Страница обновляется автоматически каждые 30 секунд.

Права доступа

Доступ к сообщениям регулируется следующими правилами:

Действие Кто может
Отправить сообщение Любой пользователь объекта
Просматривать сообщения Только отправитель и получатель
Прикреплять файлы Любой пользователь объекта
Редактировать / Удалять Запрещено для всех пользователей

REST API

REST API позволяет интегрировать систему сообщений с вашими приложениями. Используйте эндпоинты ниже для получения и отправки сообщений.

Примечание уровня сервиса

GET  /api/v1/messages/unread-count                    - Получить количество непрочитанных
GET  /api/v1/messages/recent                          - Получить последние сообщения
GET  /api/v1/properties/{id}/messages                 - Список сообщений
POST /api/v1/properties/{id}/messages                 - Создать сообщение
GET  /api/v1/properties/{id}/messages/{mid}           - Получить детали сообщения
POST /api/v1/properties/{id}/messages/{mid}/read      - Пометить сообщение как прочитанное
GET  /api/v1/properties/{id}/messages/unread-count    - Получить непрочитанные сообщения для объекта

Пример создания сообщения

Для создания сообщения отправьте POST-запрос с JSON-телом, содержащим ID получателя и текст сообщения.

POST /api/v1/properties/019fe131-6b2a-7c41-9d8e-3f5a2c7b1e04/messages
Content-Type: multipart/form-data

recipient_id: 019fe131-7a3d-7e52-8c19-4b6d3e9f2a15
message: Hello, please find the attached documents.
reply_to_id: 019fe131-8b4c-7f63-9a2d-5c7e4f1a3b26  (optional)
files[]: document.pdf
files[]: photo.jpg

Пример ответа

{
  "id": 456,
  "message": "Hello, please find the attached documents.",
  "createdAt": "2026-01-19T14:30:00+00:00",
  "readAt": null,
  "sender": {
    "id": 8,
    "name": "Owner Name",
    "email": "[email protected]"
  },
  "recipient": {
    "id": 15,
    "name": "Tenant Name",
    "email": "[email protected]"
  },
  "property": {
    "id": 5,
    "name": "Apartment #12"
  },
  "replyTo": {
    "id": 123,
    "publicId": "019fe131-8b4c-7f63-9a2d-5c7e4f1a3b26",
    "message": "Previous message text...",
    "sender": {"id": 15, "name": "Tenant Name"}
  },
  "hasFiles": true,
  "filesCount": 2,
  "files": [
    {
      "id": 1,
      "originalName": "document.pdf",
      "mimeType": "application/pdf",
      "fileSize": 102400,
      "fileSizeFormatted": "100 KB",
      "isImage": false,
      "isDocument": true,
      "isArchive": false,
      "url": "https://s3.example.com/messages_chat/456/abc123.pdf",
      "createdAt": "2026-01-19T14:30:00+00:00"
    },
    {
      "id": 2,
      "originalName": "photo.jpg",
      "mimeType": "image/jpeg",
      "fileSize": 256000,
      "fileSizeFormatted": "250 KB",
      "isImage": true,
      "isDocument": false,
      "isArchive": false,
      "url": "https://s3.example.com/messages_chat/456/def456.jpg",
      "createdAt": "2026-01-19T14:30:00+00:00"
    }
  ]
}

reply_to_id of a following message is filled with replyTo.publicId above — the numeric id in the response is kept only for polling (client-side last_id comparison), not for addressing.

Swagger / OpenAPI

Полная документация API доступна в Swagger /api/v1/doc