Сообщения
Прямое общение между пользователями объекта с файлами и ответами.
Обзор
Модуль сообщений обеспечивает защищённую систему обмена сообщениями между пользователями объекта (владельцами, арендаторами и их агентами). Пользователи могут отправлять прямые сообщения, прикреплять файлы и отвечать на предыдущие сообщения в стиле 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}
Файлы доступны только участникам переписки через защищённые ссылки.
Как это работает
Процесс обмена сообщениями состоит из следующих шагов:
Выбор получателя
Выберите пользователя объекта из списка контактов для начала переписки.
Написание сообщения
Введите текст сообщения и при необходимости прикрепите файлы или вставьте изображения из буфера обмена.
Отправка
Нажмите кнопку отправки. Сообщение будет доставлено мгновенно, а получатель получит email-уведомление.
Получение ответа
Получайте ответы в реальном времени. Страница обновляется автоматически каждые 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