
Taal 🇳🇱 Nederlands
Aan de slag
Configuratie
Aanpassing
Geavanceerd
Voeg inline live-opmerkingen toe aan documenten, boeken, enz.
FastComments Collab Chat stelt gebruikers in staat om tekstinhoud op uw website te markeren en te annoteren, en creëert daarmee gespreksdraden die gekoppeld zijn aan specifieke tekstselecties. Gebruikers kunnen woorden, zinnen of hele alinea's selecteren om direct binnen uw inhoud samenwerkingsgesprekken te starten.
Deze functie is perfect voor redactionele feedback, samenleesomgevingen, educatieve platforms, documentbeoordeling en elke situatie waarin u contextuele discussies wilt verankeren aan specifieke tekst.
Let op dat deze docs specifiek zijn voor de Collab Chat functionaliteit. U kunt opmerkingen toevoegen aan content met veel pagina's, zoals Books, met thread-per-page, zonder gebruik te maken van collab chat. FastComments also does not charge per-page or per-thread. Collab Chat is specifiek wanneer u gebruikers wilt toestaan tekst te selecteren en te reageren op het gemarkeerde tekstgedeelte.
U kunt een voorbeeld hier bekijken.
Aan de slag 
Snel aan de slag
Aan de slag met Collab Chat is eenvoudig. U heeft het FastComments Collab Chat-script nodig, een HTML-element dat de tekst bevat die u wilt annoteren, en een configuratieobject met uw Tenant ID.
Installatie
Voeg het Collab Chat-script aan uw pagina toe:

Basisimplementatie
Hier is een minimaal voorbeeld:
Run 
Vervang 'demo' door uw werkelijke FastComments Tenant ID als dat nog niet het geval is; deze vindt u in uw FastComments-dashboard.
Hoe het werkt
Zodra het is geïnitialiseerd, kunnen gebruikers willekeurige tekst binnen het doel-element selecteren. Na een korte vertraging (3,5 seconden op desktop) verschijnt er een prompt waarmee ze een discussie kunnen starten. Wanneer een discussie wordt aangemaakt, verschijnt er een visuele markering op de tekst. Andere gebruikers kunnen met de muis over de markering zweven of erop klikken om de discussie te bekijken en eraan deel te nemen. Alle discussies synchroniseren in realtime tussen alle bezoekers.
Live demo
U kunt Collab Chat in actie zien op onze live demo-pagina.
Volgende stappen
Nu u de basis werkend heeft, kunt u het uiterlijk en gedrag aanpassen in de gids Configuratieopties. Bekijk de gids Tekstselectiegedrag om te begrijpen hoe tekstselectie werkt. Lees over styling en ondersteuning voor donkere modus in de gids Aanpassing. Voor geavanceerde integraties, bekijk de API-referentie.
Frontend-bibliotheken
Alle FastComments-frontendbibliotheken (react, vue, angular, etc) hebben Collab Chat.
Voorbeelden 
Basisvoorbeeld
De eenvoudigste manier om Collab Chat te gebruiken is door je te richten op één inhoudscontainer. Dit voorbeeld toont hoe je tekstannotaties voor een artikel inschakelt:
Run 
Voorbeeld met aangepast URL-ID (per boekpagina, artikel, enz.)
Standaard gebruikt Collab Chat de URL van de pagina, gecombineerd met het elementpad en het tekstbereik, om gesprekken te identificeren. Je kunt een aangepaste urlId opgeven om meer controle te krijgen over hoe gesprekken gegroepeerd worden:

Dit is handig als je URL-structuur verandert maar je dezelfde gesprekken wilt behouden, of als je dezelfde annotaties van gesprekken op meerdere pagina's wilt delen.
Voorbeeld met donkere modus
Als je site een donkere achtergrond heeft, schakel dan ondersteuning voor donkere modus in om ervoor te zorgen dat de chat-UI er correct uitziet:
Run 
Voorbeeld met bovenbalk uitgeschakeld
Standaard toont Collab Chat een bovenbalk met het aantal gebruikers en het aantal discussies. Je kunt deze uitschakelen:
Run 
Voorbeeld met callback voor aantal reacties
Je kunt bijhouden wanneer opmerkingen worden toegevoegd of bijgewerkt met de callback commentCountUpdated:

Voorbeeld met meerdere secties
Je kunt Collab Chat initialiseren op meerdere aparte secties van je pagina. Elke sectie krijgt zijn eigen onafhankelijke annotaties:

Live commentaar toevoegen aan online boeken 
U kunt Collab Chat per pagina initialiseren indien gewenst, en per pagina afzonderlijke threads hebben; geef gewoon de urlId parameter
een waarde zoals book-one-page1. Deze configuratie werkt ook voor de normale commentaarwidget.
Configuratie-opties 
Overzicht
FastComments Collab Chat breidt de standaard FastComments-commentaarwidget uit, dus het erft alle configuratieopties van de basiswidget en voegt enkele opties toe die specifiek zijn voor tekstannotaties.
Vereiste configuratie
tenantId
Uw FastComments Tenant ID is verplicht. U kunt dit vinden in uw FastComments dashboard.

Collab Chat-specifieke opties
urlId
Standaard genereert Collab Chat een unieke identificatie voor elk gesprek op basis van de pagina-URL, het DOM-pad naar het element en het geselecteerde tekstdbereik. U kunt dit overschrijven met een aangepaste urlId.

Dit is handig wanneer uw URL-structuur kan veranderen maar u dezelfde gesprekken wilt behouden, of wanneer u annotaties over meerdere pagina's wilt delen.
topBarTarget
Regelt de weergave van de bovenste balk die het aantal gebruikers en discussies toont. Stel in op null om de bovenste balk volledig uit te schakelen, of geef een DOM-element op om deze op een specifieke locatie te renderen.

hasDarkBackground
Schakel donkere modus-styling in wanneer uw pagina een donkere achtergrond heeft. Deze detectie is automatisch, maar het kan wenselijk zijn om deze te overschrijven.

commentCountUpdated
Een callbackfunctie die wordt aangeroepen telkens wanneer het aantal opmerkingen verandert. Dit is handig voor het bijwerken van UI-elementen zoals badges of paginatitels.

Geërfde configuratie-opties
Aangezien Collab Chat de standaardcommentaarwidget uitbreidt, kunt u elke configuratieoptie van de basis FastComments-widget gebruiken. Hier zijn enkele vaak gebruikte opties:
locale
Stel de taal in voor de widget-UI. FastComments ondersteunt tientallen talen.

readonly
Maak alle conversaties alleen-lezen. Gebruikers kunnen bestaande annotaties bekijken maar geen nieuwe maken of reageren.

sso and simpleSSO
Integreer met uw authenticatiesysteem met Single Sign-On.

Zie de SSO-documentatie voor volledige details over authenticatieopties.
maxReplyDepth
Beheer hoe diep replies genest mogen zijn. Standaard stelt Collab Chat dit in op 0, wat betekent dat alle opmerkingen vlak zijn (geen geneste antwoorden). U kunt dit wijzigen als u draadgesprekken wilt.

Interne configuratie
Deze opties worden automatisch ingesteld door Collab Chat en mogen niet worden overschreven:
De productId wordt automatisch ingesteld op 3 voor Collab Chat. De extensie floating-chat wordt automatisch geladen om de chatvensterfunctionaliteit te bieden. De widget detecteert automatisch mobiele apparaten (schermen smaller dan 768px) en past de UI dienovereenkomstig aan.
Volledig voorbeeld
Hier is een voorbeeld waarin meerdere configuratieopties samen worden getoond:

Voor een volledige lijst van alle beschikbare configuratieopties die worden geërfd van de basiswidget, zie de hoofd FastComments-configuratiedocumentatie.
Gedrag bij tekstselectie 
Hoe tekstselectie werkt
Wanneer gebruikers tekst selecteren binnen de Collab Chat-container, legt de widget die selectie vast en stelt hen in staat een discussie te starten. De selectie kan zo klein zijn als één woord of zo groot als meerdere alinea's die verschillende elementen overspannen.
Selectievertraging
Op desktopapparaten is er een vertraging van 3,5 seconden tussen het moment dat een gebruiker tekst selecteert en het moment waarop de discussieprompt verschijnt. Dit voorkomt dat de UI knippert wanneer gebruikers gewoon tekst markeren om te kopiëren of te lezen. Op mobiele apparaten verschijnt de prompt onmiddellijk aangezien tekstselectie op aanraakschermen doelbewuster is.
Unieke conversatie-ID's
Elke conversatie krijgt een unieke urlId die de paginakoppeling, het DOM-elementpad en het geserialiseerde textrange combineert. Dit zorgt ervoor dat elke tekstselectie een afzonderlijke conversatie creëert die later weer teruggevonden kan worden.
Als u een aangepaste urlId in uw configuratie opgeeft, wordt deze gecombineerd met het elementpad en het textrange om de uiteindelijke identifier te maken.
Visuele markeringen
Wanneer er een discussie bestaat voor een bepaalde tekstselectie, krijgt die tekst een visuele markering. De markering wordt geïmplementeerd met behulp van achtergrondkleuren en verschijnt bij hover of wanneer het bijbehorende chatvenster geopend is.
Het markeersysteem werkt door de geselecteerde tekst te omhullen met een speciaal element dat gestyled kan worden. Deze aanpak zorgt ervoor dat markeringen nauwkeurig blijven, zelfs wanneer de onderliggende HTML-structuur complex is.
Positionering van het chatvenster
Wanneer een gebruiker op een markering klikt of een nieuwe annotatie maakt, verschijnt er een chatvenster in de buurt van de geselecteerde tekst. De widget berekent automatisch de beste positie voor dit venster op basis van de beschikbare viewportruimte.
Het positioneringssysteem gebruikt CSS-klassen zoals to-right, to-left, to-top, en to-bottom om aan te geven in welke richting het chatvenster vanaf de markering moet uitvouwen. Op mobiele apparaten (schermen smaller dan 768px) verschijnt het chatvenster altijd fullscreen voor betere bruikbaarheid.
Afmetingen van het chatvenster
Chatvensters zijn 410px breed op desktop met 20px tussenruimte en een visuele pijl van 16px die naar de gemarkeerde tekst wijst. Deze afmetingen zijn vast om consistent gedrag te garanderen, maar u kunt de uitstraling aanpassen met CSS.
Selecties over meerdere elementen
Gebruikers kunnen tekst selecteren die meerdere HTML-elementen overspant, zoals markeren vanaf het midden van de ene alinea tot het begin van een andere. Het range-serialisatiesysteem behandelt dit correct en zal alle geselecteerde tekst markeren, zelfs over elementgrenzen heen.
Browsercompatibiliteit
Het tekstselectiesysteem gebruikt de standaard window.getSelection() API die wordt ondersteund in alle moderne browsers. Voor oudere versies van Internet Explorer valt het terug op document.selection voor compatibiliteit.
Persistentie van selecties
Zodra er een conversatie is aangemaakt voor een tekstselectie, blijft die annotatie bestaan zelfs als de pagina wordt vernieuwd. Het geserialiseerde range en het DOM-pad stellen de widget in staat markeringen op precies dezelfde plaats te herstellen wanneer gebruikers terugkeren naar de pagina.
Dit werkt betrouwbaar zolang uw paginacontent stabiel blijft. Als u de tekstinhoud wijzigt of uw HTML herstructureert, kunnen bestaande annotaties mogelijk niet meer correct uitlijnen met de tekst. Om deze reden is het het beste om grote inhoudswijzigingen op pagina's met actieve annotaties te vermijden, of te overwegen annotaties te migreren wanneer inhoudswijzigingen noodzakelijk zijn.
Aanpassing 
Donkere modus-ondersteuning
Dynamische donkere modus
Als de donkere modus van uw site wordt geregeld door een .dark-klasse aan het body-element toe te voegen, respecteert de Collab Chat UI dit automatisch zonder herinitialisatie. De stijlen van de widget zijn zo ontworpen dat ze reageren op de aanwezigheid van deze klasse.

Aangepaste styling met CSS
U kunt het uiterlijk van markeringen, chatvensters en andere elementen aanpassen met CSS. De widget voegt specifieke klassen toe die u in uw stylesheet kunt targeten.
Tekstmarkeringen gebruiken het FastComments-stijlsysteem voor commentbubbels, dus eventuele aanpassingen die u op de standaard commentaarwidget hebt toegepast, hebben ook invloed op Collab Chat.
Aanpassen van de bovenbalk
De bovenbalk toont het aantal gebruikers online en het aantal discussies. U kunt de positie aanpassen door een aangepast element op te geven als topBarTarget:

Of schakel het volledig uit door het op null te zetten:

Mobiel gedrag
Op schermen die smaller zijn dan 768px schakelt Collab Chat automatisch over naar een mobiel geoptimaliseerde lay-out. Chatvensters verschijnen fullscreen in plaats van zwevend naast de tekst, en de selectievertraging wordt verwijderd voor directere interactie.
Dit gedrag is ingebouwd en vereist geen configuratie. De widget detecteert automatisch de schermgrootte en past zich dienovereenkomstig aan.
Uiterlijk van chatvensters
Chatvensters zijn op desktop 410px breed met een pijl van 16px die naar de gemarkeerde tekst wijst. De vensters positioneren zichzelf automatisch op basis van de beschikbare viewport-ruimte, waarbij positioneringsklassen zoals to-right, to-left, to-top en to-bottom worden gebruikt.
U kunt aangepaste CSS toevoegen om kleuren, lettertypen, afstand of andere visuele eigenschappen van deze vensters aan te passen. De chatvensters gebruiken dezelfde componentstructuur als de standaard FastComments-widget, dus ze erven eventuele globale aanpassingen die u hebt toegepast.
Lokalisatie
Collab Chat ondersteunt alle dezelfde lokalisatie-opties als de standaard FastComments-widget. Stel de optie locale in om UI-tekst in andere talen weer te geven:

FastComments ondersteunt tientallen talen. De locale-instelling beïnvloedt alle UI-tekst, inclusief prompts, knoppen en placeholder-tekst.
Geërfde aanpassingsopties
Aangezien Collab Chat het standaard commentaarwidget uitbreidt, erft het alle aanpassingsopties van het basiswidget. Dit omvat aangepaste CSS-klassen, aangepaste vertalingen, avatar-aanpassing, datumopmaak en nog veel meer.
Zie de hoofddocumentatie van FastComments voor een volledige lijst met beschikbare aanpassingsopties.
Werken met aangepaste lettertypen
Als uw site aangepaste lettertypen gebruikt, erft de Collab Chat UI die lettertypen van de CSS van uw pagina. U moet mogelijk een widget-aanpassingsregel maken en @import eventuele lettertypen in de aangepaste CSS in die regel als u
wilt dat het zwevende chatvenster dezelfde lettertypen gebruikt.
Live-synchronisatie 
Realtime-updates
Collab Chat gebruikt WebSocket-verbindingen om alle gesprekken in realtime te synchroniseren tussen alle verbonden gebruikers. Wanneer iemand een nieuwe annotatie maakt, een opmerking toevoegt of een discussie verwijdert, zien alle andere gebruikers die dezelfde pagina bekijken de update onmiddellijk zonder te verversen.
Hoe WebSocket-synchronisatie werkt
Wanneer je Collab Chat initialiseert, maakt de widget een WebSocket-verbinding met de FastComments-servers. Deze verbinding blijft open gedurende de sessie van de gebruiker en luistert naar updates die betrekking hebben op de huidige pagina.
Het WebSocket-systeem gebruikt drie typen broadcast-berichten voor Collab Chat. Het new-text-chat-event wordt geactiveerd wanneer iemand een nieuwe annotatie op de pagina maakt. Het updated-text-chat-event wordt geactiveerd wanneer iemand een bestaand gesprek bijwerkt. Het deleted-text-chat-event wordt geactiveerd wanneer iemand een annotatie verwijdert.
Broadcast-ID-systeem
Om echo-effecten te voorkomen waarbij gebruikers hun eigen acties teruggezien krijgen, bevat elke update een unieke broadcastId. Wanneer een gebruiker een annotatie maakt of bijwerkt, genereert hun client een UUID voor die bewerking. Wanneer de WebSocket de update terug naar alle clients uitzendt, negeert de oorspronkelijke client de update omdat deze overeenkomt met zijn eigen broadcastId.
Dit zorgt voor een vloeiende interactie waarbij gebruikers hun wijzigingen onmiddellijk in de UI zien zonder te wachten op de retourronde via de server, terwijl alsnog wordt gegarandeerd dat alle andere gebruikers de update ontvangen.
Live gebruikersaantal
De bovenste balk toont het aantal gebruikers dat momenteel de pagina bekijkt. Dit aantal wordt in realtime bijgewerkt wanneer gebruikers toetreden en vertrekken. Het gebruikersaantal wordt geleverd via dezelfde WebSocket-verbinding en neemt automatisch toe/af op basis van verbindings- en ontkoppelingsgebeurtenissen.
Verbindingsherstel
Als de WebSocket-verbinding wegvalt door netwerkproblemen of serveronderhoud, probeert de widget automatisch opnieuw verbinding te maken. Tijdens de periode van opnieuw verbinden kunnen gebruikers nog steeds met bestaande annotaties werken, maar ze zien geen realtime-updates van andere gebruikers totdat de verbinding is hersteld.
Zodra de verbinding opnieuw tot stand is gebracht, synchroniseert de widget opnieuw om ervoor te zorgen dat er geen updates zijn gemist. Dit gebeurt transparant zonder dat de gebruiker iets hoeft te doen.
Bandbreedte-overwegingen
WebSocket-berichten zijn lichtgewicht en bevatten alleen de essentiële informatie die nodig is om de staat te synchroniseren. Het aanmaken van een nieuwe annotatie gebruikt doorgaans minder dan 1KB aan bandbreedte. Het systeem bevat ook intelligente batching om de frequentie van berichten te verminderen tijdens periodes met veel activiteit.
Je gebruiksstatistieken in het FastComments-dashboard volgen pubSubMessageCount en pubSubBandwidth zodat je de realtime-synchronisatie-activiteit over je sites kunt monitoren.
Synchronisatie tussen tabbladen
Als een gebruiker dezelfde pagina in meerdere browsertabbladen geopend heeft, verschijnen updates in het ene tabblad direct in de andere tabbladen. Dit werkt via hetzelfde WebSocket-synchronisatiemechanisme en vereist geen extra configuratie.
Beveiliging
WebSocket-berichten worden verzonden over beveiligde verbindingen (WSS) en bevatten tenant-validatie om ervoor te zorgen dat gebruikers alleen updates ontvangen voor gesprekken waarvoor ze geautoriseerd zijn. De server valideert alle bewerkingen voordat deze naar voren worden uitgezonden om ongeautoriseerde toegang of manipulatie te voorkomen.
API-referentie 
API-overzicht
Collab Chat biedt drie REST-API-eindpunten voor het programmatisch beheren van tekstgesprekken. Met deze eindpunten kunt u annotaties ophalen, maken en verwijderen zonder de browser-widget te gebruiken.
Dit zijn openbare eindpunten die gebruikers authenticeren via browsercookies. Ze gebruiken geen API-sleutels. Gebruikers moeten in hun browser zijn ingelogd bij FastComments om toegang te krijgen tot deze eindpunten.
Basis-URL
Alle Collab Chat API-eindpunten bevinden zich onder:

Authenticatie
Deze eindpunten authenticeren gebruikers via browsercookies. Ze gebruiken geen API-sleutels. Gebruikers moeten in hun browser zijn ingelogd bij FastComments om toegang te krijgen tot deze eindpunten.
Alle gesprekken ophalen
Haal alle tekstgesprekken op voor een specifieke pagina.
Eindpunt

Parameters
tenantId (padparameter, vereist) is uw FastComments Tenant-ID.
urlId (queryparameter, vereist) is de pagina-identificator waarvan u de gesprekken wilt ophalen.
Respons
De respons bevat de API-status, informatie over de huidige gebruikerssessie als er is geauthenticeerd, een array met gesprekken inclusief hun ID's, URL's en teksbereiken, een opgeschoonde URL-identificator, een vlag die aangeeft of de huidige gebruiker sitebeheerder of moderator is, en WebSocket-verbindinggegevens voor live-synchronisatie waaronder tenantIdWS, urlIdWS en userIdWS.
Voorbeeld GET-aanvraag

Voorbeeldrespons

Gesprek aanmaken
Maak een nieuw tekstgesprek aan voor een specifieke tekstselectie.
Eindpunt

Parameters
tenantId (padparameter, vereist) is uw FastComments Tenant-ID.
De requestbody moet JSON zijn en de volgende verplichte velden bevatten.
urlId (string, vereist) is de basis-pagina-identificator.
urlIdWithRange (string, vereist) is de URL gecombineerd met het tekstbereik, bijvoorbeeld my-page:p:0:15,0:45{abc123}.
pageTitle (string, vereist) is de titel van de pagina.
selector (string, vereist) is het DOM-pad naar het element dat de geselecteerde tekst bevat.
range (string, vereist) is het geserialiseerde tekstbereik in het formaat startOffset:endOffset,startOffset:endOffset{checksum}.
createdFromCommentId (string, vereist) is de ID van de opmerking die deze chat heeft gestart.
broadcastId (string, vereist) is een UUID voor live-synchronisatie om echo-effecten te voorkomen.
Respons
De respons bevat de API-status en de ID van het nieuw aangemaakte gesprek.
Voorbeeld POST-aanvraag

Voorbeeldrespons

Gesprek verwijderen
Verwijder een bestaand tekstgesprek. Dit eindpunt vereist beheerder- of moderatorrechten, of het gesprek moet zijn aangemaakt door de geauthenticeerde gebruiker.
Eindpunt

Parameters
tenantId (padparameter, vereist) is uw FastComments Tenant-ID.
chatId (padparameter, vereist) is de ID van het gesprek dat u wilt verwijderen.
broadcastId (requestbody, vereist) is een UUID voor live-synchronisatie.
Voorbeeld DELETE-aanvraag

Voorbeeldrespons

Verzoeklimieten
Deze eindpunten vallen onder de standaard FastComments API-verzoeklimieten. De rate-limit middleware wordt per tenant toegepast om misbruik te voorkomen en normale gebruikspatronen toe te staan.
Foutreacties
Alle eindpunten geven standaard HTTP-statuscodes terug. Een 400-respons duidt op ongeldige requestparameters. Een 401-respons betekent dat de authenticatie is mislukt. Een 403-respons geeft aan dat de permissies onvoldoende zijn. Een 404-respons betekent dat het gesprek niet is gevonden. Een 429-respons geeft aan dat de verzoeklimiet is overschreden.
Foutreacties bevatten een JSON-body met details:

Gebruikstracering
Het aanmaken van gesprekken verhoogt uw gebruiksmetric conversationCreateCount. Alle WebSocket-synchronisatie-activiteit verhoogt pubSubMessageCount en pubSubBandwidth. U kunt deze metrics volgen in uw FastComments-dashboard onder gebruiksanalyses.
Nog vragen?
Dat is alles voor FastComments Collab Chat! Als u vragen heeft, hulp nodig heeft bij de implementatie, of suggesties voor functies heeft, laat het ons dan hieronder weten of neem contact op met ons ondersteuningsteam.
Voor live voorbeelden, bekijk Govscent.org waarin Collab Chat in productie wordt gebruikt.