
Język 🇵🇱 Polski
Pierwsze kroki
Konfiguracja
Personalizacja
Zaawansowane
FastComments Image Chat umożliwia interaktywne dyskusje na obrazach, pozwalając użytkownikom klikać w dowolne miejsce na obrazie, aby tworzyć punkty dyskusji. Użytkownicy mogą klikać w konkretne części obrazów, aby rozpocząć rozmowy o tych obszarach, tworząc wizualne znaczniki, które pokazują, gdzie toczą się dyskusje.
Ta funkcja jest idealna do opinii dotyczących projektów, recenzji produktów, materiałów edukacyjnych z diagramami, galerii zdjęć z komentarzami oraz wszelkich scenariuszy, w których chcesz prowadzić kontekstowe dyskusje powiązane z konkretnymi miejscami na obrazie.
Pierwsze kroki 
Przypadki użycia
Image Chat sprawdza się doskonale przy opiniowaniu projektów, gdy zespoły muszą omawiać konkretne elementy w makietach lub zrzutach ekranu. Serwisy z recenzjami produktów mogą pozwolić klientom dyskutować o konkretnych cechach widocznych na zdjęciach produktów. Platformy edukacyjne mogą wykorzystywać go do omawiania diagramów, map lub obrazów naukowych. Galerie zdjęć mogą stać się interaktywne dzięki komentarzom przypisanym do określonych miejsc. Serwisy nieruchomości mogą pozwolić widzom dyskutować o konkretnych cechach widocznych na zdjęciach nieruchomości.
Szybki start
Rozpoczęcie pracy z Image Chat jest proste. Potrzebujesz skryptu FastComments Image Chat, elementu obrazu lub kontenera z obrazem oraz obiektu konfiguracji z Twoim Tenant ID.
Instalacja
Dodaj skrypt Image Chat do swojej strony:

Podstawowa implementacja
Here's a minimal example:
Run 
Replace 'demo' with your actual FastComments Tenant ID if it's not already, which you can find in your panelu FastComments.
Jak to działa
Po zainicjowaniu użytkownicy mogą kliknąć dowolne miejsce na obrazie. Po kliknięciu w tym miejscu pojawia się wizualny kwadratowy znacznik, a okno czatu się otwiera. Inni użytkownicy widzą wszystkie znaczniki i mogą w nie klikać, aby wyświetlić dyskusję lub wziąć w niej udział. Wszystkie dyskusje synchronizują się w czasie rzeczywistym między odwiedzającymi.
Widżet wykorzystuje pozycjonowanie oparte na procentach, dzięki czemu znaczniki pozostają we właściwej pozycji nawet wtedy, gdy obraz zmienia rozmiar lub jest oglądany na różnych rozmiarach ekranu.
Demo na żywo
Możesz zobaczyć Image Chat w akcji na naszej stronie z demo na żywo.
Kolejne kroki
Teraz, gdy masz podstawy działające, możesz dostosować wygląd i zachowanie, korzystając z przewodnika Opcje konfiguracji. Zapoznaj się z przewodnikiem Projekt responsywny, aby zrozumieć, jak działa pozycjonowanie oparte na procentach. Dowiedz się o stylizacji i wsparciu trybu ciemnego w przewodniku Dostosowywanie. Dla zaawansowanych integracji przejrzyj Referencję API.
Biblioteki frontendowe
Wszystkie biblioteki front-end FastComments (react, vue, angular itp.) zawierają Image Chat.
Przykłady 
Podstawowy przykład
Najprostszy sposób użycia Image Chat to skierowanie na pojedynczy element obrazu. Ten przykład pokazuje, jak włączyć interaktywne dyskusje na obrazie:
Run 
Przykład z elementem kontenera
Możesz też przekazać element kontenera, który zawiera wewnątrz obraz:
Run 
Przykład z niestandardowym identyfikatorem URL
Domyślnie Image Chat używa adresu URL strony połączonego ze źródłem obrazu i współrzędnymi do identyfikacji konwersacji. Możesz podać niestandardowy urlId:
Run 
Jest to przydatne, jeśli struktura adresów URL ulegnie zmianie, a chcesz zachować te same konwersacje, lub jeśli chcesz udostępniać te same punkty dyskusji na wielu stronach.
Przykład z trybem ciemnym
Jeżeli Twoja strona ma ciemne tło i widżet nie wykrywa go automatycznie tak jak powinien, możemy ręcznie włączyć obsługę trybu ciemnego:
Run 
Przykład z niestandardowym rozmiarem kwadratu czatu
Możesz dostosować rozmiar klikalnych kwadratów wyświetlanych na obrazie. Rozmiar określany jest jako procent szerokości obrazu:
Run 
Przykład z funkcją zwrotną aktualizacji liczby komentarzy
Śledź, kiedy komentarze są dodawane lub aktualizowane, używając funkcji zwrotnej commentCountUpdated:

Przykład z wieloma obrazami
Możesz zainicjalizować Image Chat na wielu obrazach. Każdy obraz będzie miał swoje własne, niezależne punkty dyskusji:
Run 
Opcje konfiguracji 
Overview
FastComments Image Chat rozszerza standardowy widżet komentarzy FastComments, dzięki czemu dziedziczy wszystkie opcje konfiguracyjne podstawowego widżetu, jednocześnie dodając kilka ustawień specyficznych dla adnotacji obrazów.
Required Configuration
tenantId
Wymagane jest Twoje ID najemcy (FastComments Tenant ID). Możesz je znaleźć w swoim panelu FastComments.
FastCommentsImageChat(imageElement, {
tenantId: 'demo'
});
Image Chat Specific Options
urlId
Domyślnie Image Chat generuje unikalny identyfikator dla każdej rozmowy na podstawie URL strony, źródła obrazu oraz współrzędnych X/Y. Możesz go nadpisać za pomocą niestandardowego urlId.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
urlId: 'my-custom-image-id'
});
Jest to przydatne, gdy struktura Twoich URL może się zmieniać, ale chcesz zachować te same rozmowy, lub gdy chcesz udostępniać adnotacje na wielu stronach.
chatSquarePercentage
Steruje rozmiarem klikalnych znaczników czatu jako procent szerokości obrazu. Domyślnie wynosi 5%, co oznacza, że każdy znacznik ma szerokość równą 5% szerokości obrazu.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
chatSquarePercentage: 8 // Większe, bardziej widoczne znaczniki
});
Mniejsze wartości tworzą mniej inwazyjne znaczniki, które lepiej sprawdzają się przy szczegółowych obrazach. Większe wartości ułatwiają widoczność i klikanie znaczników na zatłoczonych obrazach lub dla użytkowników na urządzeniach mobilnych.
hasDarkBackground
Włącz stylizację w trybie ciemnym, gdy Twoja strona ma ciemne tło.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
hasDarkBackground: true
});
commentCountUpdated
Funkcja zwrotna wywoływana za każdym razem, gdy zmienia się liczba komentarzy. Przydatne do aktualizowania elementów UI, takich jak odznaki lub tytuły stron.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
commentCountUpdated: function(count) {
console.log('Total comments:', count);
document.getElementById('badge').textContent = count;
}
});
Inherited Configuration Options
Ponieważ Image Chat rozszerza standardowy widżet komentarzy, możesz używać dowolnej opcji konfiguracyjnej z podstawowego widżetu FastComments. Oto niektóre często używane opcje:
locale
Ustaw język interfejsu widżetu. FastComments obsługuje dziesiątki języków.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
locale: 'es' // Hiszpański
});
readonly
Ustaw wszystkie rozmowy jako tylko do odczytu. Użytkownicy mogą przeglądać istniejące znaczniki i dyskusje, ale nie mogą tworzyć nowych ani odpowiadać.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
readonly: true
});
sso and simpleSSO
Zintegruj się z systemem uwierzytelniania za pomocą Single Sign-On.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
sso: {
// Konfiguracja SSO
}
});
Zobacz dokumentację SSO, aby uzyskać pełne informacje o opcjach uwierzytelniania.
maxReplyDepth
Kontroluje, jak głęboko mogą sięgać odpowiedzi (liczba poziomów zagnieżdżeń). Domyślnie Image Chat ustawia tę wartość na 0, co oznacza, że wszystkie komentarze są płaskie (bez zagnieżdżonych odpowiedzi). Możesz to zmienić, jeśli chcesz wątki konwersacji.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
maxReplyDepth: 3 // Pozwól na 3 poziomy zagnieżdżenia
});
Internal Configuration
Te opcje są automatycznie ustawiane przez Image Chat i nie powinny być nadpisywane:
The productId is automatically set to 2 for Image Chat. The floating-chat extension is automatically loaded to provide the chat window functionality. The widget automatically detects mobile devices (screens under 768px wide) and adjusts the UI accordingly with fullscreen chat windows.
Target Element Flexibility
Pierwszy parametr funkcji FastCommentsImageChat może być bezpośrednio elementem <img> lub elementem kontenera z obrazem wewnątrz:
// Bezpośredni element obrazu
FastCommentsImageChat(document.getElementById('my-image'), config);
// Kontener z obrazem wewnątrz
FastCommentsImageChat(document.querySelector('.image-wrapper'), config);
Widżet automatycznie znajdzie obraz, jeśli przekażesz element kontenera.
Complete Example
Oto przykład pokazujący kilka opcji konfiguracyjnych razem:
FastCommentsImageChat(document.getElementById('product-image'), {
tenantId: 'demo',
urlId: 'product-v2-main',
chatSquarePercentage: 6,
hasDarkBackground: false,
locale: 'en',
commentCountUpdated: function(count) {
document.title = count > 0 ? `(${count}) Product Photo` : 'Product Photo';
},
sso: {
// Twoja konfiguracja SSO
},
maxReplyDepth: 1
});
Pełną listę wszystkich dostępnych opcji konfiguracyjnych odziedziczonych po podstawowym widżecie znajdziesz w głównej dokumentacji konfiguracji FastComments.
Responsywność 
Percentage-Based Positioning
Image Chat używa współrzędnych opartych na procentach zamiast współrzędnych w pikselach do pozycjonowania znaczników czatu na obrazach. Gdy użytkownik kliknie obraz, widget konwertuje współrzędne pikselowe kliknięcia na procenty szerokości i wysokości obrazu. Takie podejście zapewnia, że znaczniki pozostają na właściwym miejscu niezależnie od sposobu wyświetlania obrazu.
Na przykład, jeśli użytkownik kliknie 250 pikseli od lewej krawędzi obrazu o szerokości 1000px, widget zapisuje to jako 25% od lewej. Gdy inny użytkownik zobaczy ten sam obraz o szerokości 500px na urządzeniu mobilnym, znacznik pojawi się 125 pikseli od lewej, co wciąż stanowi 25% szerokości.
Benefits for Responsive Layouts
Ten system oparty na procentach sprawia, że Image Chat działa bezproblemowo na wszystkich rozmiarach urządzeń i orientacjach. Twoje obrazy mogą być wyświetlane w różnych rozmiarach w zależności od szerokości ekranu, reguł CSS lub ograniczeń kontenera, ale znaczniki zawsze wyrównują się prawidłowo z zamierzonymi miejscami.
Użytkownicy na komputerach stacjonarnych z dużymi monitorami widzą znaczniki w tych samych względnych pozycjach co użytkownicy na smartfonach z małymi ekranami. Znaczniki skalują się proporcjonalnie wraz z obrazem.
Image Scaling and Aspect Ratio
O ile obraz zachowuje swój współczynnik proporcji podczas skalowania (co jest domyślnym zachowaniem przeglądarki), znaczniki oparte na procentach pozostaną idealnie wyrównane. Widget zakłada, że obrazy skalują się proporcjonalnie i oblicza pozycje na tej podstawie.
Jeśli zastosujesz CSS, które zniekształca proporcje obrazu (na przykład używając object-fit: cover z określonymi wymiarami), pozycje znaczników mogą nie być wyrównane prawidłowo. Dla najlepszych rezultatów pozwól obrazom skalować się naturalnie lub użyj object-fit: contain, aby zachować współczynnik proporcji.
Chat Square Sizing
Wizualny rozmiar znaczników czatu jest również oparty na procentach. Opcja konfiguracji chatSquarePercentage ma domyślną wartość 5%, co oznacza, że każdy kwadrat ma 5% szerokości obrazu. Zapewnia to spójny wygląd wizualny niezależnie od rozmiaru obrazu.
Na obrazie o szerokości 1000px przy domyślnym ustawieniu 5% znaczniki mają 50px kwadrat. Na obrazie o szerokości 500px te same znaczniki mają 25px kwadrat. Pozostają proporcjonalne do rozmiaru obrazu.
Mobile Behavior
Na ekranach o szerokości poniżej 768px Image Chat przełącza się na układ zoptymalizowany pod kątem urządzeń mobilnych. Okna czatu otwierają się na pełnym ekranie zamiast unosić się obok znacznika. Zapewnia to lepszą użyteczność na małych ekranach, gdzie unoszące się okna zasłaniałyby zbyt dużą część obrazu.
Same znaczniki pozostają widoczne i klikalne w swoich pozycjach opartych na procentach. Użytkownicy nadal mogą zobaczyć, gdzie znajdują się wszystkie dyskusje i stuknąć znaczniki, aby otworzyć interfejs czatu na pełnym ekranie.
Dynamic Image Loading
System oparty na procentach działa poprawnie nawet wtedy, gdy obrazy ładują się asynchronicznie lub zmieniają rozmiar po załadowaniu strony. Widget monitoruje element obrazu i ponownie oblicza pozycje znaczników za każdym razem, gdy zmieniają się wymiary obrazu.
Jeśli stosujesz lazy-loading obrazów lub implementujesz obrazy responsywne o różnych rozmiarach na różnych punktach przerwania, znaczniki automatycznie dostosowują się, gdy zmienia się rozmiar obrazu.
Cross-Device Consistency
Ponieważ współrzędne są przechowywane w bazie danych jako procenty, dyskusja utworzona na komputerze stacjonarnym pojawia się w dokładnie tym samym względnym miejscu po wyświetleniu na tablecie lub telefonie. Użytkownicy mogą współpracować na różnych urządzeniach bez problemów z pozycjonowaniem.
Działa to w obie strony. Dyskusja utworzona przez stuknięcie konkretnego miejsca na urządzeniu mobilnym pojawia się w tej samej względnej pozycji po wyświetleniu na dużym monitorze stacjonarnym.
Viewport Considerations
Widget oblicza procenty względem samego elementu obrazu, a nie widoku (viewport). Oznacza to, że przewijanie strony lub zmiana rozmiaru okna przeglądarki nie wpływa na pozycje znaczników. Znaczniki pozostają zakotwiczone w swoich pozycjach na obrazie niezależnie od zmian widoku.
Future-Proofing Content
Podejście oparte na procentach sprawia, że Twoje dyskusje na obrazach są odporne na zmiany układu, projektu czy ekosystemu urządzeń. W miarę pojawiania się nowych rozmiarów ekranu i urządzeń istniejące dyskusje będą nadal wyświetlane poprawnie bez potrzeby aktualizacji lub migracji.
Personalizacja 
Dark Mode Support
Image Chat includes built-in dark mode support. When you set hasDarkBackground: true in your configuration, the chat windows and UI elements automatically adjust to work well on dark backgrounds.
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
hasDarkBackground: true
});
The dark mode styling applies to chat windows, marker squares, and all interactive elements. If your site has a dark mode toggle, you can reinitialize the widget when the mode changes, or use the body class approach described below.
Dynamic Dark Mode
If your site's dark mode is controlled by adding a .dark class to the body element, the Image Chat UI will automatically respect this without requiring reinitialization. The widget's styles are designed to respond to the presence of this class.
/* Twoje CSS trybu ciemnego */
body.dark {
background: #1a1a1a;
color: #ffffff;
}
Custom Styling with CSS
You can customize the appearance of markers, chat windows, and other elements using CSS. The widget adds specific classes that you can target in your stylesheet.
The chat squares and windows use the FastComments comment bubble styling system, so any customizations you've applied to the standard commenting widget will also affect Image Chat.
Chat Square Sizing
The chatSquarePercentage option controls the size of the clickable markers. The default is 5% of the image width:
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
chatSquarePercentage: 7 // Większe, bardziej widoczne kwadraty
});
Smaller values create more subtle markers that blend into the image. Larger values make markers more prominent and easier to click, especially on mobile devices or for accessibility purposes.
Mobile Behavior
On screens under 768px wide, Image Chat automatically switches to a mobile-optimized layout. Chat windows appear fullscreen instead of floating next to the markers, providing better usability on small screens.
The markers remain visible at their responsive positions on the image. Users can tap any marker to open the fullscreen chat interface. This behavior is built-in and doesn't require any configuration.
Chat Window Appearance
Chat windows are 300px wide on desktop with a 16px arrow pointing to the marker. The windows position themselves automatically based on available viewport space, using positioning classes like to-right, to-left, to-top, and to-bottom.
You can add custom CSS to adjust colors, fonts, spacing, or other visual properties of these windows. The chat windows use the same component structure as the standard FastComments widget, so they inherit any global customizations you've applied.
Lazy Initialization
Chat windows initialize on hover for desktop users or immediately when created. This reduces the initial load overhead by only rendering the chat interface when users actually interact with a marker.
The lazy initialization happens transparently. Users don't notice any delay, but the browser doesn't need to render dozens of hidden chat windows if you have many markers on an image.
Localization
Image Chat supports all the same localization options as the standard FastComments widget. Set the locale option to display UI text in different languages:
FastCommentsImageChat(imageElement, {
tenantId: 'demo',
locale: 'fr' // Francuski
});
FastComments supports dozens of languages. The locale setting affects all UI text including prompts, buttons, and placeholder text.
Inherited Customization Options
Since Image Chat extends the standard commenting widget, it inherits all customization options from the base widget. This includes custom CSS classes, custom translations, avatar customization, date formatting, and much more.
See the main FastComments customization documentation for the complete list of customization options available.
Working with Custom Fonts
If your site uses custom fonts, the Image Chat UI will inherit those fonts from your page's CSS. The chat windows render inside your page's DOM and respect your existing typography settings.
For best results, ensure your custom fonts are loaded before initializing Image Chat, or accept that there may be a brief flash of unstyled text while fonts load.
Marker Visual Design
The square markers have a subtle visual design that makes them noticeable without overwhelming the image. You can customize their appearance with CSS if you want a different visual treatment.
The markers include hover states that provide feedback when users move their mouse over them. On touch devices, the tap interaction provides immediate feedback by opening the chat window.
Synchronizacja na żywo 
Aktualizacje w czasie rzeczywistym
Image Chat używa połączeń WebSocket do synchronizacji wszystkich konwersacji w czasie rzeczywistym między wszystkimi podłączonymi użytkownikami. Gdy ktoś tworzy nowy znacznik, dodaje komentarz lub usuwa dyskusję, wszyscy inni użytkownicy oglądający ten sam obraz widzą aktualizację natychmiast, bez odświeżania.
Jak działa synchronizacja przez WebSocket
Gdy inicjujesz Image Chat, widget nawiązuje połączenie WebSocket z serwerami FastComments. Połączenie to pozostaje otwarte przez cały czas trwania sesji użytkownika i nasłuchuje aktualizacji związanych z bieżącym obrazem.
System WebSocket używa trzech typów komunikatów rozgłoszeniowych dla Image Chat. Zdarzenie new-image-chat wywoływane jest, gdy ktoś tworzy nowy znacznik na obrazie. Zdarzenie image-chat-updated wywoływane jest, gdy ktoś aktualizuje istniejącą konwersację. Zdarzenie deleted-image-chat wywoływane jest, gdy ktoś usuwa znacznik.
System identyfikatorów broadcast
Aby zapobiec efektom echa, w których użytkownicy widzą własne działania rozgłaszane z powrotem do nich, każda aktualizacja zawiera unikalny broadcastId. Gdy użytkownik tworzy lub aktualizuje znacznik, jego klient generuje UUID dla tej operacji. Gdy WebSocket rozgłasza aktualizację z powrotem do wszystkich klientów, klient źródłowy ignoruje tę aktualizację, ponieważ pasuje ona do jego własnego broadcastId.
Zapewnia to płynną interakcję, w której użytkownicy widzą swoje zmiany natychmiast w interfejsie użytkownika bez oczekiwania na pełną podróż przez serwer, jednocześnie zapewniając, że wszyscy inni użytkownicy otrzymają aktualizację.
Odporność połączenia
Jeśli połączenie WebSocket zostanie przerwane z powodu problemów sieciowych lub konserwacji serwera, widget automatycznie próbuje ponownie nawiązać połączenie. W okresie ponownego łączenia użytkownicy nadal mogą wchodzić w interakcje z istniejącymi znacznikami, ale nie będą widzieć aktualizacji w czasie rzeczywistym od innych użytkowników, dopóki połączenie nie zostanie przywrócone.
Po ponownym połączeniu widget ponownie synchronizuje stan, aby upewnić się, że nie pominął żadnych aktualizacji. Dzieje się to w sposób przezroczysty, bez potrzeby interwencji użytkownika.
Uwagi dotyczące przepustowości
Komunikaty WebSocket są lekkie i zawierają tylko niezbędne informacje potrzebne do synchronizacji stanu. Utworzenie nowego znacznika zwykle zużywa mniej niż 1KB przepustowości. System zawiera również inteligentne grupowanie, aby zmniejszyć częstotliwość komunikatów w okresach dużej aktywności.
Twoje metryki użycia w panelu FastComments śledzą pubSubMessageCount i pubSubBandwidth, dzięki czemu możesz monitorować aktywność synchronizacji w czasie rzeczywistym na swoich witrynach.
Synchronizacja między kartami
Jeśli użytkownik ma tę samą stronę otwartą w wielu kartach przeglądarki, aktualizacje w jednej karcie pojawiają się natychmiast w pozostałych kartach. Działa to przez ten sam mechanizm synchronizacji WebSocket i nie wymaga żadnej dodatkowej konfiguracji.
Użytkownicy mogą mieć Twoją witrynę otwartą na wielu urządzeniach jednocześnie, i wszystkie będą pozostawać zsynchronizowane. Znacznik utworzony na komputerze stacjonarnym pojawi się natychmiast na tablecie użytkownika, jeśli oba urządzenia wyświetlają ten sam obraz.
Bezpieczeństwo
Komunikaty WebSocket są przesyłane przez bezpieczne połączenia (WSS) i zawierają walidację najemcy, aby upewnić się, że użytkownicy otrzymują tylko aktualizacje do rozmów, do których są uprawnieni. Serwer weryfikuje wszystkie operacje przed ich rozgłoszeniem, aby zapobiec nieautoryzowanemu dostępowi lub manipulacji.
Zachowanie w trybie offline
Gdy użytkownicy są całkowicie offline, nadal mogą przeglądać istniejące znaczniki, ale nie mogą tworzyć nowych ani zobaczyć aktualizacji od innych. Widget wykrywa stan offline i wyświetla odpowiednie komunikaty.
Jeśli użytkownik spróbuje utworzyć znacznik będąc offline, a następnie wróci online, operacja zakończy się niepowodzeniem zamiast być kolejkowana, co zapewnia spójność danych. Użytkownicy powinni ponowić próbę operacji po przywróceniu połączenia.
Wpływ na wydajność
Połączenie WebSocket ma minimalny wpływ na wydajność. Połączenie pozostaje bezczynne, gdy nie występują żadne aktualizacje i przetwarza komunikaty tylko wtedy, gdy pojawia się aktywność. Dla typowego obrazu przy umiarkowanej aktywności znaczników, WebSocket zużywa mniej CPU niż samo renderowanie obrazu.
Dla stron z setkami jednoczesnych użytkowników i wysoką aktywnością tworzenia znaczników, system skaluje się horyzontalnie, aby utrzymać wydajność bez wpływu na pojedyncze połączenia klientów.
Zastosowania w pracy zespołowej
Synchronizacja w czasie rzeczywistym czyni Image Chat szczególnie przydatnym w przepływach pracy wymagających współpracy. Zespoły projektowe mogą wspólnie przeglądać makiety, a wszyscy widzą rozmieszczenie znaczników w czasie rzeczywistym. Zespoły wsparcia klienta mogą wspólnie adnotować zrzuty ekranu, aby zidentyfikować problemy. Grupy edukacyjne mogą omawiać diagramy, a wszyscy uczestnicy widzą znaczniki dodawane przez innych w miarę ich tworzenia.
Natychmiastowa informacja zwrotna tworzy bardziej angażujące i produktywne doświadczenie współpracy w porównaniu z tradycyjnymi systemami komentarzy, gdzie użytkownicy muszą odświeżyć stronę, aby zobaczyć aktualizacje.
Dokumentacja API 
Przegląd API
Image Chat udostępnia trzy końcówki REST API do zarządzania rozmowami obrazkowymi programowo. Te końcówki pozwalają pobierać, tworzyć i usuwać markery bez użycia widżetu w przeglądarce.
Wszystkie końcówki API wymagają uwierzytelnienia i stosują standardowe wzorce FastComments API. Są to publiczne końcówki, które uwierzytelniają za pomocą ciasteczek przeglądarki, a nie kluczy API.
URL bazowy
Wszystkie końcówki API Image Chat znajdują się pod:
https://fastcomments.com/comment-image-chatsUwierzytelnianie
Te końcówki uwierzytelniają użytkowników za pomocą ciasteczek przeglądarki. Nie używają kluczy API. Użytkownicy muszą być zalogowani w FastComments w swojej przeglądarce, aby uzyskać dostęp do tych końcówek.
Pobierz wszystkie rozmowy
Pobierz wszystkie rozmowy dotyczące konkretnego obrazu.
Punkt końcowy
GET /comment-image-chats/:tenantId?urlId=<urlId>Parametry
tenantId (parametr ścieżki, wymagany) to Twój identyfikator najemcy (Tenant ID) FastComments.
urlId (parametr zapytania, wymagany) to identyfikator obrazu, dla którego chcesz pobrać rozmowy.
Odpowiedź
Odpowiedź zawiera status API, informacje o bieżącej sesji użytkownika, jeśli jest uwierzytelniony, tablicę rozmów z ich identyfikatorami, URL-ami oraz współrzędnymi X/Y, oczyszczony identyfikator URL, flagę wskazującą, czy bieżący użytkownik jest administratorem strony lub moderatorem, oraz szczegóły połączenia WebSocket do synchronizacji na żywo, w tym tenantIdWS, urlIdWS i userIdWS.
Przykładowe żądanie
curl "https://fastcomments.com/comment-image-chats/demo?urlId=my-product-image" \
--cookie "your-session-cookie"
Przykładowa odpowiedź
{
"status": "success",
"user": {
"id": "user123",
"username": "john_doe"
},
"conversations": [
{
"_id": "conv123",
"urlId": "my-product-image:/images/product.jpg:25:30",
"x": 25.5,
"y": 30.2
},
{
"_id": "conv456",
"urlId": "my-product-image:/images/product.jpg:60:45",
"x": 60.8,
"y": 45.1
}
],
"urlIdClean": "my-product-image",
"isSiteAdmin": false,
"tenantIdWS": "demo",
"urlIdWS": "my-product-image",
"userIdWS": "user123"
}
Utwórz rozmowę
Utwórz nową rozmowę obrazkową dla konkretnego miejsca na obrazie.
Punkt końcowy
POST /comment-image-chats/:tenantIdParametry
tenantId (parametr ścieżki, wymagany) to Twój identyfikator najemcy FastComments.
Ciało żądania musi być w formacie JSON i zawierać następujące wymagane pola.
urlId (string, wymagany) to podstawowy identyfikator strony.
windowUrlId (string, wymagany) to URL połączony ze źródłem obrazu i współrzędnymi, na przykład my-page:/images/photo.jpg:25.5:30.2.
pageTitle (string, wymagany) to tytuł strony.
src (string, wymagany) to URL źródła obrazu.
x (number, wymagany) to współrzędna X jako procent (0-100).
y (number, wymagany) to współrzędna Y jako procent (0-100).
createdFromCommentId (string, wymagany) to identyfikator komentarza, który zainicjował tę rozmowę.
broadcastId (string, wymagany) to UUID do synchronizacji na żywo, zapobiegający efektom echa.
Odpowiedź
Odpowiedź zawiera status API oraz identyfikator nowo utworzonej rozmowy.
Przykładowe żądanie
curl -X POST "https://fastcomments.com/comment-image-chats/demo" \
--cookie "your-session-cookie" \
-H "Content-Type: application/json" \
-d '{
"urlId": "my-product-image",
"windowUrlId": "my-product-image:/images/product.jpg:25.5:30.2",
"pageTitle": "Product Gallery",
"src": "/images/product.jpg",
"x": 25.5,
"y": 30.2,
"createdFromCommentId": "comment789",
"broadcastId": "550e8400-e29b-41d4-a716-446655440000"
}'
Przykładowa odpowiedź
{
"status": "success",
"createdChatId": "conv789"
}
Usuń rozmowę
Usuń istniejącą rozmowę obrazkową. Ta końcówka wymaga uprawnień administratora lub moderatora, albo rozmowa musi być utworzona przez uwierzytelnionego użytkownika.
Punkt końcowy
DELETE /comment-image-chats/:tenantId/:chatIdParametry
tenantId (parametr ścieżki, wymagany) to Twój identyfikator najemcy FastComments.
chatId (parametr ścieżki, wymagany) to identyfikator rozmowy, którą chcesz usunąć.
broadcastId (ciało żądania, wymagane) to UUID do synchronizacji na żywo.
Przykładowe żądanie
curl -X DELETE "https://fastcomments.com/comment-image-chats/demo/conv789" \
--cookie "your-session-cookie" \
-H "Content-Type: application/json" \
-d '{
"broadcastId": "550e8400-e29b-41d4-a716-446655440001"
}'
Przykładowa odpowiedź
{
"status": "success"
}
Układ współrzędnych
Współrzędne X i Y są przechowywane jako procenty wymiarów obrazu. X reprezentuje pozycję poziomą od lewej krawędzi (0 = lewa krawędź, 100 = prawa krawędź). Y reprezentuje pozycję pionową od górnej krawędzi (0 = górna krawędź, 100 = dolna krawędź).
Wartości procentowe mogą zawierać miejsca dziesiętne dla precyzji. Na przykład, x: 25.5 oznacza 25.5% od lewej krawędzi obrazu.
Ograniczenia szybkości (Rate Limiting)
Te końcówki podlegają standardowym ograniczeniom szybkości FastComments API. Middleware ograniczający liczbę żądań działa per-tenant, aby zapobiegać nadużyciom przy jednoczesnym umożliwieniu normalnych wzorców użycia.
Odpowiedzi błędów
Wszystkie końcówki zwracają standardowe kody statusu HTTP. Odpowiedź 400 oznacza nieprawidłowe parametry żądania. Odpowiedź 401 oznacza nieudane uwierzytelnienie. Odpowiedź 403 wskazuje na niewystarczające uprawnienia. Odpowiedź 404 oznacza, że rozmowa nie została znaleziona. Odpowiedź 429 oznacza przekroczenie limitu żądań.
Odpowiedzi błędów zawierają ciało JSON z szczegółami:
{
"status": "error",
"message": "Conversation not found"
}
Śledzenie użycia
Tworzenie rozmów zwiększa Twoją metrykę użycia conversationCreateCount. Cała aktywność synchronizacji WebSocket zwiększa pubSubMessageCount oraz pubSubBandwidth. Możesz monitorować te metryki w panelu FastComments w zakładce analytics dotyczącej użycia.
Masz pytania?
To wszystko na temat FastComments Image Chat! Jeśli masz jakieś pytania, potrzebujesz pomocy przy wdrożeniu lub masz sugestie dotyczące funkcji, daj nam znać poniżej lub skontaktuj się z naszym zespołem wsparcia.
Zobacz demonstrację na żywo na naszej stronie demonstracyjnej, aby zobaczyć Image Chat w akcji.