
Langue 🇨🇦 Français (Canada)
Premiers pas
Configuration
Personnalisation
Avancé
Ajouter des commentaires en direct intégrés aux documents, livres, etc.
FastComments Collab Chat permet aux utilisateurs de surligner et d'annoter n'importe quel contenu textuel sur votre site Web, en créant des discussions en fil de conversation liées à des sélections de texte spécifiques. Les utilisateurs peuvent sélectionner des mots, des phrases ou des paragraphes entiers pour lancer des conversations collaboratives directement dans votre contenu.
Cette fonctionnalité est parfaite pour les retours éditoriaux, les environnements de lecture collaborative, les plateformes éducatives, la révision de documents et tout scénario où vous souhaitez des discussions contextuelles ancrées à un texte précis.
Notez que cette documentation est spécifique à la fonctionnalité Collab Chat. Vous pouvez ajouter des commentaires pour du contenu comportant de nombreuses pages, comme des livres, avec un fil par page, sans utiliser Collab Chat. FastComments ne facture pas non plus par page ni par fil. Collab Chat correspond spécifiquement à la possibilité pour les utilisateurs de sélectionner du texte et de commenter la portion de texte surlignée.
Vous pouvez voir un exemple ici.
Premiers pas 
Démarrage rapide
Commencer avec Collab Chat est simple. Vous avez besoin du script FastComments Collab Chat, d'un élément HTML contenant le texte que vous voulez annoter, et d'un objet de configuration avec votre Tenant ID.
Installation
Ajoutez le script Collab Chat à votre page :

Implémentation de base
Voici un exemple minimal :
Run 
Remplacez 'demo' par votre FastComments Tenant ID réel si ce n'est pas déjà fait, que vous pouvez trouver dans votre tableau de bord FastComments.
Comment ça fonctionne
Une fois initialisé, les utilisateurs peuvent sélectionner n'importe quel texte à l'intérieur de l'élément cible. Après un bref délai (3,5 secondes sur ordinateur), une invite apparaît leur permettant de démarrer une discussion. Lorsqu'une discussion est créée, une surbrillance visuelle apparaît sur le texte. D'autres utilisateurs peuvent survoler ou cliquer la surbrillance pour voir et participer à la discussion. Toutes les discussions se synchronisent en temps réel entre tous les visiteurs.
Démo en direct
Vous pouvez voir Collab Chat en action sur notre page de démonstration en direct.
Prochaines étapes
Maintenant que vous avez les bases en place, vous pouvez personnaliser l'apparence et le comportement dans le guide Configuration Options. Consultez le guide Text Selection Behavior pour comprendre le fonctionnement de la sélection de texte. Découvrez le support du style et du mode sombre dans le guide Customization. Pour des intégrations avancées, explorez la Référence de l'API.
Bibliothèques frontend
Toutes les bibliothèques frontend FastComments (react, vue, angular, etc.) incluent Collab Chat.
Exemples 
Exemple de base
La façon la plus simple d'utiliser Collab Chat est de cibler un seul conteneur de contenu. Cet exemple montre comment activer les annotations de texte sur un article :
Run 
Exemple avec URL personnalisée (par page de livre, article, etc.)
Par défaut, Collab Chat utilise l'URL de la page combinée au chemin de l'élément et à la plage de texte pour identifier les conversations. Vous pouvez fournir un urlId personnalisé pour avoir un meilleur contrôle sur la façon dont les conversations sont regroupées :

Ceci est utile si la structure de vos URL change mais que vous souhaitez conserver les mêmes conversations, ou si vous voulez partager les mêmes annotations de conversation sur plusieurs pages.
Exemple avec le mode sombre
Si votre site a un arrière-plan sombre, activez la prise en charge du mode sombre pour vous assurer que l'interface de discussion s'affiche correctement :
Run 
Exemple avec la barre supérieure désactivée
Par défaut, Collab Chat affiche une barre supérieure avec le nombre d'utilisateurs et le nombre de discussions. Vous pouvez la désactiver :
Run 
Exemple avec rappel du nombre de commentaires
Vous pouvez suivre quand des commentaires sont ajoutés ou mis à jour en utilisant le callback commentCountUpdated :

Exemple avec plusieurs sections
Vous pouvez initialiser Collab Chat sur plusieurs sections distinctes de votre page. Chaque section aura ses propres annotations indépendantes :

Ajout de commentaires en direct aux livres en ligne 
Vous pouvez initialiser Collab Chat par page si vous le souhaitez, et avoir des fils de discussion distincts pour chaque page, il suffit de passer au paramètre urlId
une valeur telle que book-one-page1. Cette configuration fonctionne également pour le widget de commentaires normal.
Options de configuration 
Aperçu
FastComments Collab Chat étend le widget de commentaires FastComments standard, il hérite donc de toutes les options de configuration du widget de base tout en ajoutant quelques options spécifiques aux annotations textuelles.
Configuration requise
tenantId
Votre identifiant de locataire FastComments (Tenant ID) est requis. Vous pouvez le trouver dans votre FastComments dashboard.

Options spécifiques à Collab Chat
urlId
Par défaut, Collab Chat génère un identifiant unique pour chaque conversation basé sur l'URL de la page, le chemin DOM vers l'élément et la plage de texte sélectionnée. Vous pouvez remplacer ceci avec un urlId personnalisé.

Ceci est utile lorsque la structure de vos URL peut changer mais que vous voulez conserver les mêmes conversations, ou lorsque vous souhaitez partager des annotations entre plusieurs pages.
topBarTarget
Contrôle l'affichage de la barre supérieure qui montre le nombre d'utilisateurs et le nombre de discussions. Définissez sur null pour désactiver complètement la barre supérieure, ou fournissez un élément DOM pour l'afficher à un emplacement spécifique.

hasDarkBackground
Active le style mode sombre lorsque votre page a un fond sombre. Cette détection est automatique, mais il peut être souhaitable de la remplacer.

commentCountUpdated
Une fonction de rappel qui se déclenche à chaque fois que le nombre de commentaires change. Ceci est utile pour mettre à jour des éléments UI comme des badges ou le titre de la page.

Options de configuration héritées
Puisque Collab Chat étend le widget de commentaires standard, vous pouvez utiliser n'importe quelle option de configuration du widget FastComments de base. Voici quelques options couramment utilisées :
locale
Définissez la langue de l'interface du widget. FastComments prend en charge des dizaines de langues.

readonly
Rendre toutes les conversations en lecture seule. Les utilisateurs peuvent voir les annotations existantes mais ne peuvent pas en créer de nouvelles ni répondre.

sso and simpleSSO
Intégrez votre système d'authentification en utilisant Single Sign-On.

Consultez la documentation SSO pour tous les détails sur les options d'authentification.
maxReplyDepth
Contrôlez combien de niveaux de réponses peuvent être imbriqués. Par défaut, Collab Chat définit ceci à 0, ce qui signifie que tous les commentaires sont à plat (pas de réponses imbriquées). Vous pouvez changer cela si vous voulez des conversations en fils.

Configuration interne
Ces options sont automatiquement définies par Collab Chat et ne doivent pas être remplacées :
Le productId est automatiquement défini à 3 pour Collab Chat. L'extension floating-chat est automatiquement chargée pour fournir la fonctionnalité de fenêtre de chat. Le widget détecte automatiquement les appareils mobiles (écrans de moins de 768px de large) et ajuste l'interface en conséquence.
Exemple complet
Voici un exemple montrant plusieurs options de configuration :

Pour une liste complète de toutes les options de configuration disponibles héritées du widget de base, consultez la documentation principale de configuration FastComments.
Comportement de la sélection de texte 
Comment fonctionne la sélection de texte
Lorsque les utilisateurs sélectionnent du texte à l'intérieur du conteneur Collab Chat, le widget capture cette sélection et leur permet de démarrer une discussion. La sélection peut être aussi petite qu'un seul mot ou aussi grande que plusieurs paragraphes couvrant différents éléments.
Délai de sélection
Sur les appareils de bureau, il y a un délai de 3,5 secondes entre le moment où un utilisateur sélectionne du texte et l'apparition de l'invite de discussion. Cela évite que l'interface utilisateur ne scintille lorsque les utilisateurs mettent simplement du texte en surbrillance pour le copier ou le lire. Sur les appareils mobiles, l'invite apparaît immédiatement puisque la sélection de texte est plus volontaire sur les écrans tactiles.
Identifiants de conversation uniques
Chaque conversation obtient un urlId unique qui combine l'URL de la page, le chemin de l'élément DOM et la plage de texte sérialisée. Cela garantit que chaque sélection de texte crée une conversation distincte pouvant être retrouvée ultérieurement.
Si vous fournissez un urlId personnalisé dans votre configuration, il sera combiné avec le chemin de l'élément et la plage de texte pour créer l'identifiant final.
Mises en évidence visuelles
Lorsqu'une discussion existe pour une sélection de texte particulière, ce texte reçoit une mise en évidence visuelle. La mise en évidence est implémentée à l'aide de couleurs d'arrière-plan et apparaît au survol ou lorsque la fenêtre de chat associée est ouverte.
Le système de mise en évidence fonctionne en enveloppant le texte sélectionné dans un élément spécial pouvant être stylisé. Cette approche garantit que les mises en évidence restent précises même lorsque la structure HTML sous-jacente est complexe.
Positionnement de la fenêtre de chat
Lorsqu'un utilisateur clique sur une mise en évidence ou crée une nouvelle annotation, une fenêtre de chat apparaît près du texte sélectionné. Le widget calcule automatiquement la meilleure position pour cette fenêtre en fonction de l'espace disponible dans la fenêtre d'affichage.
Le système de positionnement utilise des classes CSS comme to-right, to-left, to-top et to-bottom pour indiquer dans quelle direction la fenêtre de chat doit s'étendre à partir de la mise en évidence. Sur les appareils mobiles (écrans de moins de 768px de largeur), la fenêtre de chat apparaît toujours en plein écran pour une meilleure ergonomie.
Dimensions de la fenêtre de chat
Les fenêtres de chat font 410px de largeur sur les ordinateurs de bureau avec un espacement de 20px et une flèche visuelle de 16px pointant vers le texte surligné. Ces dimensions sont fixes pour assurer un comportement cohérent, mais vous pouvez personnaliser l'apparence avec du CSS.
Sélections traversant plusieurs éléments
Les utilisateurs peuvent sélectionner du texte qui s'étend sur plusieurs éléments HTML, par exemple en surlignant du milieu d'un paragraphe jusqu'au début d'un autre. Le système de sérialisation des plages gère cela correctement et mettra en évidence tout le texte sélectionné, même à travers les limites des éléments.
Compatibilité des navigateurs
Le système de sélection de texte utilise l'API standard window.getSelection() qui est prise en charge dans tous les navigateurs modernes. Pour les anciennes versions d'Internet Explorer, il revient à document.selection pour assurer la compatibilité.
Persistance des sélections
Une fois qu'une conversation est créée pour une sélection de texte, cette annotation persiste même si la page est rechargée. La plage sérialisée et le chemin DOM permettent au widget de restaurer les mises en évidence exactement au même endroit lorsque les utilisateurs reviennent sur la page.
Cela fonctionne de manière fiable tant que le contenu de votre page reste stable. Si vous modifiez le contenu textuel ou restructurez votre HTML, les annotations existantes peuvent ne plus s'aligner correctement avec le texte. Pour cette raison, il est préférable d'éviter les modifications majeures du contenu sur les pages comportant des annotations actives, ou d'envisager de migrer les annotations lorsque des changements de contenu sont nécessaires.
Personnalisation 
Prise en charge du mode sombre
Mode sombre dynamique
Si le mode sombre de votre site est contrôlé en ajoutant la classe .dark à l'élément body, l'interface Collab Chat respectera automatiquement ce réglage sans nécessiter de réinitialisation. Les styles du widget sont conçus pour réagir à la présence de cette classe.

Personnalisation avec CSS
Vous pouvez personnaliser l'apparence des surlignages, des fenêtres de chat et d'autres éléments à l'aide de CSS. Le widget ajoute des classes spécifiques que vous pouvez cibler dans votre feuille de style.
Les surlignages de texte utilisent le système de style des bulles de commentaires de FastComments, donc toutes les personnalisations que vous avez appliquées au widget de commentaires standard affecteront également Collab Chat.
Personnalisation de la barre supérieure
La barre supérieure affiche le nombre d'utilisateurs en ligne et le nombre de discussions. Vous pouvez personnaliser sa position en fournissant un élément personnalisé comme topBarTarget :

Ou désactivez-la entièrement en la définissant sur null :

Comportement sur mobile
Sur les écrans de moins de 768px de large, Collab Chat bascule automatiquement vers une mise en page optimisée pour mobile. Les fenêtres de chat apparaissent en plein écran au lieu de flotter à côté du texte, et le délai de sélection est supprimé pour une interaction plus immédiate.
Ce comportement est intégré et ne nécessite aucune configuration. Le widget détecte automatiquement la taille de l'écran et s'ajuste en conséquence.
Apparence des fenêtres de chat
Les fenêtres de chat font 410px de largeur sur bureau avec une flèche de 16px pointant vers le texte surligné. Les fenêtres se positionnent automatiquement en fonction de l'espace disponible dans la fenêtre d'affichage, en utilisant des classes de positionnement comme to-right, to-left, to-top et to-bottom.
Vous pouvez ajouter du CSS personnalisé pour ajuster les couleurs, les polices, les espacements ou d'autres propriétés visuelles de ces fenêtres. Les fenêtres de chat utilisent la même structure de composants que le widget FastComments standard, elles héritent donc de toutes les personnalisations globales que vous avez appliquées.
Localisation
Collab Chat prend en charge toutes les mêmes options de localisation que le widget FastComments standard. Définissez l'option locale pour afficher le texte de l'interface dans différentes langues :

FastComments prend en charge des dizaines de langues. Le réglage de la locale affecte tout le texte de l'interface utilisateur, y compris les invites, les boutons et le texte des espaces réservés.
Options de personnalisation héritées
Puisque Collab Chat étend le widget de commentaires standard, il hérite de toutes les options de personnalisation du widget de base. Cela inclut les classes CSS personnalisées, les traductions personnalisées, la personnalisation des avatars, le formatage des dates, et bien plus encore.
Consultez la documentation principale de personnalisation de FastComments pour la liste complète des options de personnalisation disponibles.
Utilisation de polices personnalisées
Si votre site utilise des polices personnalisées, l'interface Collab Chat héritera de ces polices à partir du CSS de votre page. Vous pourriez devoir créer une règle de personnalisation du widget et @importer les polices dans le CSS personnalisé de cette règle si vous
voulez que la fenêtre de chat flottante utilise les mêmes polices.
Synchronisation en direct 
Real-Time Updates
Collab Chat utilise des connexions WebSocket pour synchroniser toutes les conversations en temps réel entre tous les utilisateurs connectés. Lorsqu'une personne crée une nouvelle annotation, ajoute un commentaire ou supprime une discussion, tous les autres utilisateurs qui consultent la même page voient la mise à jour immédiatement sans actualiser.
How WebSocket Sync Works
Lorsque vous initialisez Collab Chat, le widget établit une connexion WebSocket avec les serveurs FastComments. Cette connexion reste ouverte pendant la durée de la session de l'utilisateur et écoute les mises à jour liées à la page courante.
Le système WebSocket utilise trois types de messages de diffusion pour Collab Chat. L'événement new-text-chat se déclenche lorsqu'une personne crée une nouvelle annotation sur la page. L'événement updated-text-chat se déclenche lorsqu'une personne met à jour une conversation existante. L'événement deleted-text-chat se déclenche lorsqu'une personne supprime une annotation.
Broadcast ID System
Pour éviter les effets d'écho où les utilisateurs voient leurs propres actions leur être renvoyées, chaque mise à jour comprend un broadcastId unique. Lorsqu'un utilisateur crée ou met à jour une annotation, son client génère un UUID pour cette opération. Lorsque le WebSocket diffuse la mise à jour à tous les clients, le client d'origine ignore la mise à jour parce qu'elle correspond à son propre broadcastId.
Cela garantit une interaction fluide où les utilisateurs voient leurs modifications immédiatement dans l'UI sans attendre l'aller-retour via le serveur, tout en s'assurant que tous les autres utilisateurs reçoivent la mise à jour.
Live User Count
La barre supérieure affiche le nombre d'utilisateurs qui consultent actuellement la page. Ce compteur se met à jour en temps réel au fur et à mesure que les utilisateurs rejoignent et quittent. Le nombre d'utilisateurs est fourni via la même connexion WebSocket et s'incrémente/se décrémente automatiquement en fonction des événements de connexion et de déconnexion.
Connection Resilience
Si la connexion WebSocket tombe en raison de problèmes réseau ou de maintenance du serveur, le widget tente automatiquement de se reconnecter. Pendant la période de reconnexion, les utilisateurs peuvent toujours interagir avec les annotations existantes, mais ils ne verront pas les mises à jour en temps réel des autres utilisateurs tant que la connexion n'est pas rétablie.
Une fois reconnecté, le widget se resynchronise pour s'assurer qu'aucune mise à jour n'a été manquée. Cela se fait de manière transparente sans nécessiter l'intervention de l'utilisateur.
Bandwidth Considerations
Les messages WebSocket sont légers et ne contiennent que les informations essentielles nécessaires pour synchroniser l'état. La création d'une nouvelle annotation utilise généralement moins de 1 Ko de bande passante. Le système inclut également un regroupement intelligent pour réduire la fréquence des messages lors des périodes d'activité élevée.
Vos métriques d'utilisation dans le tableau de bord FastComments suivent pubSubMessageCount et pubSubBandwidth afin que vous puissiez surveiller l'activité de synchronisation en temps réel sur vos sites.
Cross-Tab Synchronization
Si un utilisateur a la même page ouverte dans plusieurs onglets du navigateur, les mises à jour d'un onglet apparaissent immédiatement dans les autres onglets. Cela fonctionne via le même mécanisme de synchronisation WebSocket et ne nécessite aucune configuration supplémentaire.
Security
Les messages WebSocket sont transmis via des connexions sécurisées (WSS) et incluent une validation du tenant pour s'assurer que les utilisateurs ne reçoivent que les mises à jour des conversations qu'ils sont autorisés à voir. Le serveur valide toutes les opérations avant de les diffuser afin d'empêcher tout accès ou manipulation non autorisé.
Référence de l'API 
Aperçu de l'API
Collab Chat fournit trois points de terminaison REST API pour gérer les conversations textuelles de manière programmatique. Ces points de terminaison vous permettent de récupérer, créer et supprimer des annotations sans utiliser le widget du navigateur.
Ce sont des points de terminaison publics qui authentifient les utilisateurs via les cookies du navigateur. Ils n'utilisent pas de clés API. Les utilisateurs doivent être connectés à FastComments dans leur navigateur pour accéder à ces points de terminaison.
URL de base
Tous les points de terminaison de l'API Collab Chat sont sous :

Authentification
Ces points de terminaison authentifient les utilisateurs via les cookies du navigateur. Ils n'utilisent pas de clés API. Les utilisateurs doivent être connectés à FastComments dans leur navigateur pour accéder à ces points de terminaison.
Récupérer toutes les conversations
Récupère toutes les conversations textuelles pour une page spécifique.
Point de terminaison

Paramètres
tenantId (paramètre de chemin, requis) est votre FastComments Tenant ID.
urlId (paramètre de requête, requis) est l'identifiant de la page pour laquelle vous voulez récupérer les conversations.
Réponse
La réponse inclut le statut de l'API, les informations de session de l'utilisateur actuel si authentifié, un tableau de conversations avec leurs IDs, URLs et plages de texte, un identifiant d'URL nettoyé, un indicateur indiquant si l'utilisateur actuel est administrateur du site ou modérateur, et les détails de connexion WebSocket pour la synchronisation en direct incluant tenantIdWS, urlIdWS, et userIdWS.
Exemple de requête

Exemple de réponse

Créer une conversation
Créer une nouvelle conversation textuelle pour une sélection de texte spécifique.
Point de terminaison

Paramètres
tenantId (paramètre de chemin, requis) est votre FastComments Tenant ID.
Le corps de la requête doit être au format JSON et inclure les champs requis suivants.
urlId (string, requis) est l'identifiant de la page de base.
urlIdWithRange (string, requis) correspond à l'URL combinée avec la plage de texte, par exemple my-page:p:0:15,0:45{abc123}.
pageTitle (string, requis) est le titre de la page.
selector (string, requis) est le chemin DOM vers l'élément contenant le texte sélectionné.
range (string, requis) est la plage de texte sérialisée au format startOffset:endOffset,startOffset:endOffset{checksum}.
createdFromCommentId (string, requis) est l'ID du commentaire qui a initié cette discussion.
broadcastId (string, requis) est un UUID pour la synchronisation en direct afin d'empêcher les effets d'écho.
Réponse
La réponse inclut le statut de l'API et l'ID de la conversation nouvellement créée.
Exemple de requête

Exemple de réponse

Supprimer une conversation
Supprime une conversation textuelle existante. Ce point de terminaison nécessite les permissions d'administrateur ou de modérateur, ou la conversation doit avoir été créée par l'utilisateur authentifié.
Point de terminaison

Paramètres
tenantId (paramètre de chemin, requis) est votre FastComments Tenant ID.
chatId (paramètre de chemin, requis) est l'ID de la conversation à supprimer.
broadcastId (corps de la requête, requis) est un UUID pour la synchronisation en direct.
Exemple de requête

Exemple de réponse

Limitation de débit
Ces points de terminaison sont soumis à la limitation de débit standard de l'API FastComments. Le middleware de limitation s'applique par locataire afin d'empêcher les abus tout en permettant des modèles d'utilisation normaux.
Réponses d'erreur
Tous les points de terminaison renvoient des codes de statut HTTP standard. Une réponse 400 indique des paramètres de requête invalides. Une réponse 401 signifie que l'authentification a échoué. Une réponse 403 indique des permissions insuffisantes. Une réponse 404 signifie que la conversation est introuvable. Une réponse 429 indique que la limite de taux a été dépassée.
Les réponses d'erreur incluent un corps JSON avec des détails :

Suivi de l'utilisation
La création de conversations incrémente votre métrique d'utilisation conversationCreateCount. Toute activité de synchronisation WebSocket incrémente pubSubMessageCount et pubSubBandwidth. Vous pouvez surveiller ces métriques dans votre tableau de bord FastComments sous les analyses d'utilisation.
Vous avez des questions ?
C'est tout pour FastComments Collab Chat ! Si vous avez des questions, besoin d'aide pour l'implémentation, ou des suggestions de fonctionnalités, faites-le-nous savoir ci-dessous ou contactez notre équipe d'assistance.
Pour des exemples en direct, consultez Govscent.org qui utilise Collab Chat en production.