Wiadomości
Bezpośrednia komunikacja między użytkownikami nieruchomości z plikami i odpowiedziami.
Przegląd
Moduł wiadomości zapewnia bezpieczny system komunikacji między użytkownikami nieruchomości (właścicielami, najemcami i ich agentami). Użytkownicy mogą wysyłać bezpośrednie wiadomości, załączać pliki i odpowiadać na poprzednie wiadomości w stylu Telegram.
Wiadomości bezpośrednie
Wysyłaj prywatne wiadomości jeden na jeden między użytkownikami nieruchomości. Wiadomości są widoczne tylko dla nadawcy i odbiorcy.
Załączniki
Załączaj do 10 plików na wiadomość (obrazy, dokumenty, archiwa). Maksymalnie 10 MB na plik.
Odpowiedzi na wiadomości
Odpowiadaj na konkretne wiadomości z wizualnym linkiem do oryginału, jak w Telegramie.
Wklej ze schowka
Wklejaj obrazy bezpośrednio ze schowka (Ctrl+V) aby szybko załączyć zrzuty ekranu.
Powiadomienia
Globalny znaczek pokazuje liczbę nieprzeczytanych. Menu rozwijane wyświetla ostatnie wiadomości.
Powiadomienia e-mail
Otrzymuj powiadomienia e-mail o nowych wiadomościach, gdy nie jesteś aktywnie na stronie.
Typy plików
Obsługiwane są następujące formaty plików:
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
- Maksymalny rozmiar pliku: 10 MB
- Maksymalna liczba plików na wiadomość: 10
- Maksymalna długość wiadomości: 1000 znaków
Przechowywanie plików
Pliki są przechowywane w bezpiecznym magazynie chmurowym S3 pod następującą ścieżką:
messages_chat/{message_id}/{file_hash}.{extension}
Pliki są dostępne tylko dla uczestników rozmowy przez bezpieczne linki.
Jak to działa
Proces wymiany wiadomości składa się z następujących kroków:
Wybór odbiorcy
Wybierz użytkownika nieruchomości z listy kontaktów, aby rozpocząć rozmowę.
Napisz wiadomość
Wprowadź tekst wiadomości i opcjonalnie załącz pliki lub wklej obrazy ze schowka.
Wyślij
Kliknij przycisk wysyłania. Wiadomość zostanie dostarczona natychmiast, a odbiorca otrzyma powiadomienie e-mail.
Otrzymaj odpowiedź
Otrzymuj odpowiedzi w czasie rzeczywistym. Strona aktualizuje się automatycznie co 30 sekund.
Uprawnienia
Dostęp do wiadomości regulują następujące zasady:
| Akcja | Kto może |
|---|---|
| Wyślij wiadomość | Każdy użytkownik nieruchomości |
| Przeglądaj wiadomości | Tylko nadawca i odbiorca |
| Załącz pliki | Każdy użytkownik nieruchomości |
| Edytuj / Usuń | Zabronione dla wszystkich użytkowników |
REST API
REST API pozwala zintegrować system wiadomości z aplikacjami. Użyj poniższych endpointów do odbierania i wysyłania wiadomości.
Uwaga dotycząca warstwy usługowej
GET /api/v1/messages/unread-count - Pobierz liczbę nieprzeczytanych
GET /api/v1/messages/recent - Pobierz ostatnie wiadomości
GET /api/v1/properties/{id}/messages - Lista wiadomości
POST /api/v1/properties/{id}/messages - Utwórz wiadomość
GET /api/v1/properties/{id}/messages/{mid} - Pobierz szczegóły wiadomości
POST /api/v1/properties/{id}/messages/{mid}/read - Oznacz wiadomość jako przeczytaną
GET /api/v1/properties/{id}/messages/unread-count - Pobierz nieprzeczytane wiadomości dla nieruchomości
Przykład tworzenia wiadomości
Aby utworzyć wiadomość, wyślij żądanie POST z treścią JSON zawierającą ID odbiorcy i tekst wiadomości.
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
Przykładowa odpowiedź
{
"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
Pełna dokumentacja API jest dostępna w Swagger /api/v1/doc