DEV Community

Cover image for Comment surveiller et modérer les conversations avec BizOps Workspace

Comment surveiller et modérer les conversations avec BizOps Workspace

Cet article fait partie d'une série d'articles qui traitent des capacités de gestion des données de PubNub, connues collectivement sous le nom de BizOps Workspace:

Cet article se penche sur la fonction " Channel Monitor ", qui permet à un administrateur de regarder des aperçus en direct des conversations qui se déroulent en temps réel et de prendre des mesures pour modérer manuellement cette conversation, par exemple, en mettant en sourdine ou en bannissant des utilisateurs.

Prérequis pour le Channel Monitor

La manière recommandée par PubNub pour développer une application de chat est d'utiliser notre Chat SDK dédié, qui supporte Typescript et JavaScript. Le Chat SDK est construit au-dessus de l'infrastructure de PubNub, vous obtenez donc l'extensibilité et la robustesse de PubNub en utilisant une API conçue pour les cas d'utilisation de chat tels que les "conversations", les "indicateurs de frappe" et le "threading".

Bien que le Channel Monitor puisse être utilisé par toutes les applications PubNub qui utilisent le contexte App, celles développées à l'aide du Chat SDK ont accès à des fonctionnalités supplémentaires telles que la possibilité de voir et de répondre à des fils de discussion et de surveiller, couper et bannir des utilisateurs.

Configuration du moniteur de canaux

Si vous utilisez le SDK Chat dédié de PubNub, la structure des messages est prédéfinie, vous n'avez donc pas à vous préoccuper de la configuration supplémentaire du Channel Monitor.

Les développeurs qui n'utilisent pas le Chat SDK doivent définir comment leur application structure ses messages et comment elle gère l'édition et la suppression des messages. Cela se fait en configurant le Channel Monitor.

Configuration requise pour le moniteur de canaux

Pour utiliser le Channel Monitor, vous devez également activer les éléments suivants sur votre jeu de clés dans le portail d'administration PubNub :

  • Lecontexte de l'application, qui stocke les métadonnées sur vos canaux et vos utilisateurs. Je discute du contexte de l'application plus en détail dans mon article précédent sur la"Gestion des utilisateurs et des canaux". Pour que votre application reçoive des mises à jour lorsque les données du contexte d'application sont modifiées, vous devez activer les éléments suivants : User Metadata Events, Channel Metadata Events et Membership Events.

  • Persistance des messages: elle stocke l'historique des messages avec PubNub afin que l'administrateur puisse revoir et modifier les conversations.

Veuillez consulter la documentation de Channel Monitor pour d'autres exigences, telles que la disponibilité basée sur votre plan PubNub.

D'autres propriétés du jeu de clés, bien que non obligatoires, sont fortement recommandées pour tirer le meilleur parti de votre application de chat :

  • Gestionnaire d'accès: empêche l'accès non autorisé aux données et est nécessaire pour créer une solution de modération sécurisée, comme nous le verrons plus loin dans cet article.

  • Si vous utilisez le SDK Chat, la documentation de configuration mentionne également la présence pour savoir si un utilisateur est en ligne ou hors ligne.

Qu'est-ce que le moniteur de canaux ?

Le moniteur de canaux permet aux modérateurs de chats d'observer en direct les conversations qui se déroulent en temps réel sur plusieurs canaux. Si le modérateur repère quelque chose d'inquiétant, par exemple un utilisateur qui se comporte mal ou des messages offensants, il peut agir immédiatement et prendre des mesures pour remédier au problème.

Le modérateur dispose d'une grande souplesse quant aux mesures à prendre :

  • Observer un utilisateur sans limiter ses droits d'accès(surveiller)

  • Modifier le message offensant

  • Supprimer le message incriminé

  • Limiter la capacité de l'utilisateur à publier des messages(muet)

  • Limiter la capacité de l'utilisateur à lire ou à publier des messages(bannir).

Toutes les fonctionnalités de la fonction "Surveiller" sont manuelles : La modération automatique n'est pas abordée dans cet article.

Surveillance des canaux

Notre documentation "Surveiller les canaux" vous donnera des instructions pas à pas pour commencer à visualiser l'activité des canaux.

En résumé :

  1. Connectez-vous au portail d'administration, allez à la section BizOps Workspace dans le panneau de navigation de gauche, et sélectionnez Channel Monitor. Si vous ne voyez pas la section BizOps Workspace, vous devez certainement mettre à jour votre plan PubNub, mais n'hésitez pas à contacter notre support si vous avez des problèmes.

  2. Vous serez invité à activer le contexte App sur le clavier s'il est actuellement désactivé.

  3. Sélectionnez vos chaînes pour commencer la modération. Si vous ne voyez aucun canal ou seulement un sous-ensemble de vos canaux, c'est parce que seuls les canaux auxquels un contexte de canal est associé sont affichés. Le SDK de chat créera le contexte automatiquement pour vous, ou vous pouvez le faire manuellement avec l'API setChannelMetadata() disponible pour tous nos SDK.

  4. Vous pouvez sélectionner jusqu'à 5 canaux pour une modération simultanée.

Les messages du canal seront affichés en temps réel, y compris les messages précédents si la persistance est activée sur votre jeu de clés.

Pour une vue d'ensemble des capacités de l'affichage du moniteur, veuillez vous référer à la documentation"Moniteur de canal". Le reste de cet article aborde la modération des messages et des utilisateurs de manière plus détaillée, en se référant à un exemple de mise en œuvre.

L'exemple d'application du SDK Chat

La même équipe d'ingénieurs chargée de développer le moniteur de canaux et le SDK de chat a également créé un exemple d'application écrit en React Native qui utilise le SDK de chat.

L'exemple montre les capacités du SDK ainsi que les meilleures pratiques pour développer une application de chat réaliste et complète à l'aide de PubNub. L'exemple est open source et fait partie du même dépôt dans Github qui contient le SDK Chat sous /samples/react-native-group-chat.

Puisque l'application fait autorité, cet article l'utilisera pour montrer comment le Channel Monitor peut être utilisé avec une "vraie" application. L'application est également hébergée dans le cadre de notre Chat SDK for Mobile demo, de sorte que vous pouvez utiliser l'application sans avoir à installer ses dépendances (Expo, React Native, émulateurs d'appareils).Si vous souhaitez suivre certains des exemples de ce how-to, veuillez suivre les instructions d'installation dans le README de l'échantillon (Au moment de la rédaction, le dernier commit est 0c12f3f).

Exemples d'avatars pour le chat

Pour éviter les dépendances, les avatars utilisés par l'application de chat sont intégrés dans l'application et ne sont pas stockés dans le contexte de l'application de l'utilisateur. Cela signifie que l'avatar affiché dans l'application ne correspondra pas à l'avatar affiché dans la vue du moniteur - il s'agit d'une limitation de l'application et non d'une limitation de PubNub.

Utilisation de l'exemple d'application avec le moniteur de canaux

Les étapes suivantes vous permettront d'utiliser l'application d'exemple et le moniteur de canaux :

  1. Clonez et créez l'application exemple, en suivant les instructions données dans le fichier readme de l'application.

  2. Exécutez l'application sur deux appareils afin de pouvoir afficher une conversation entre deux personnes. Les captures d'écran de cet article utilisent un émulateur Android et un émulateur iOS.

  3. Connectez-vous à l'appareil de gauche, puis à l'appareil de droite. Sur l'appareil de droite, lancez une conversation à l'aide du bouton d'action flottant. Envoyez un message à partir de l'appareil de droite, qui s'affichera comme message non lu sur l'appareil de gauche.

  4. Lancez le moniteur de canaux comme décrit précédemment. Sélectionnez le canal approprié, qui sera nommé "1:1 avec XXX", où XXX est le nom avec lequel vous vous êtes connecté à l'appareil de gauche.

  5. Si vous voyez quelque chose de similaire à la capture d'écran ci-dessous, vous pouvez maintenant "Démarrer la modération".

Modérer les messages

Bien que le Channel Monitor puisse être utilisé par toutes les applications PubNub qui utilisent le contexte App pour éditer ou supprimer des messages, celles développées à l'aide du Chat SDK ont accès à des fonctionnalités supplémentaires, telles que la possibilité de surveiller, de mettre en sourdine et de bannir des utilisateurs.

Modifier un message en tant que modérateur

Vous pouvez modifier n'importe quel message en tant que modérateur. Cette opération met à jour l'interface d'administration ainsi que le message affiché sur les clients. La capture d'écran ci-dessous montre le message "Bonjour" modifié en "Bonjour - modifié par le modérateur"

Sous les apparences, la vue du moniteur a appelé la méthode Chat SDK message edit(). Le client reçoit automatiquement la mise à jour à l'aide de l'API streamUpdatesOn(). Dans l'application d'exemple, cela peut être vu dans Chat.tsx.

Notez que le message original n'est pas supprimé, mais que la modification est stockée en tant qu'ajout (action) au message original. Pour plus de détails, consultez la documentation sur le message edit().

Envoyer des messages en tant que modérateur.

En tant que modérateur, vous pouvez publier des messages dans le canal spécifié, que tous les membres du canal recevront. La capture d'écran suivante montre que le message "That's right, I am a moderator" est reçu par tous les clients. Notez que vous pouvez éditer et supprimer vos messages en tant que modérateur, mais que vous ne pouvez (évidemment) pas vous mettre en sourdine ou vous bannir vous-même.

Afin de participer à la conversation, le moniteur de canal a créé un nouvel utilisateur dont l'ID est "PUBNUB_INTERNAL_MODERATOR", que vous pouvez voir dans l'onglet Gestion des utilisateurs.

Comme l'application exemple ne gère pas spécifiquement l'utilisateur "PUBNUB_INTERNAL_MODERATOR", il apparaît simplement comme un message standard dans la conversation avec un avatar par défaut. Vous pourriez vouloir gérer ce message de modérateur dans votre application en lui attribuant une signification particulière, par exemple en changeant la couleur de l'arrière-plan.

Dans un exemple très basique, vous pourriez modifier la logique qui affiche le texte du message et ajouter une indication que le message provient d'un modérateur, par exemple :

{messageProps.currentMessage?.originalPnMessage.userId == 
  "PUBNUB_INTERNAL_MODERATOR" ? "MOD: " : ""}
Enter fullscreen mode Exit fullscreen mode

L'interface utilisateur ressemblerait alors à ceci :

Suppression de messages en tant que modérateur

Si vous appuyez sur le bouton "Supprimer" à côté du message, celui-ci est marqué comme supprimé dans la vue "Moniteur" et les clients sont informés de la mise à jour.

Lasuppression d'un message revient à appeler la méthode"delete()" du SDK Chat, et il est très important de noter qu'il s'agit d'une suppression douce, ce qui signifie que le message reste en mémoire et est simplement marqué comme "supprimé". Il appartient au client de lire l'état de l'indicateur "supprimé" et de prendre les mesures appropriées ; comme vous pouvez le voir, l'exemple d'application choisit de remplacer le texte du message par "(Message doucement supprimé)".

La section correspondante de l'application client est reproduite ci-dessous ou peut également être trouvée sur Github

<Text variant="body">
          {messageProps.currentMessage?.originalPnMessage.deleted
            ? "(Message softly deleted)"
            : messageElements.map((msgPart, index) =>
                renderMessagePart(
                  msgPart,
                  index,
                  messageProps.currentMessage?.originalPnMessage.userId || ""
                )
              )}
        </Text>
Enter fullscreen mode Exit fullscreen mode

En utilisant la suppression douce non permanente, le message peut être restauré ultérieurement par le modérateur ou un autre utilisateur autorisé si nécessaire.

Restaurer des messages en tant que modérateur.

Larestauration des messages est exactement l'inverse de la suppression d'un message et équivaut à l'appel de la méthode"restore()" du SDK Chat.

Le texte du message supprimé est rétabli dans la vue "Monitor" et l'indicateur "deleted" est désactivé sur l'objet message. Voir le code ci-dessus, qui gère l'indicateur "deleted" dans l'exemple d'application pour restaurer le texte d'origine.

Modérer les utilisateurs

Composants d'une solution de modération

Avant d'aborder le fonctionnement de la modération avec le moniteur de canaux, examinons les différents composants d'une solution de modération robuste et mature et leur correspondance avec ce qui est disponible dans le SDK Chat.

Restreindre les actions qu'un utilisateur peut effectuer :

Si un utilisateur s'est mal comporté, vous voudrez restreindre sa capacité à poster (mute) ou à interagir avec quelqu'un d'autre (ban).

Vous devez également mettre en place des règles garantissant que les messages ne peuvent pas être envoyés ou reçus par des utilisateurs qui ne devraient pas les recevoir. Il est beaucoup plus sûr de faire cela sur le serveur que de s'appuyer sur une modération côté client, qu'un utilisateur pernicieux pourrait contourner.

Le SDK Chat propose la méthode setRestrictions(), qui permet de mettre un utilisateur en sourdine ou de le bannir d'un canal spécifique, ainsi que de définir une "raison de bannissement". L'API setRestrictions() elle-même n'applique PAS de limites à ce que le client peut faire; elle notifie simplement aux inscrits qu'une restriction a été appliquée. Il appartient au client et au serveur d'écouter les événements de "modération" par le biais de la méthode listenForEvents() du Chat SDK.

Écouter les modifications apportées aux restrictions imposées aux utilisateurs :

Lorsque les autorisations d'un utilisateur changent, il est important que ces changements soient appliqués immédiatement et reflétés dans l'ensemble de votre solution. Lorsqu'un utilisateur est banni (par exemple, par un modérateur utilisant une interface web), l'application client de l'utilisateur affiche un message lui indiquant qu'il est banni. Toute tentative de contournement du bannissement par l'utilisateur, par exemple, en "piratant" l'application client pour contourner les contrôles côté client, doit immédiatement échouer en raison des contrôles supplémentaires effectués côté serveur.

La méthode listenForEvents() du SDK Chat notifie à toute partie intéressée que les autorisations d'un utilisateur dans un canal spécifié ont été mises à jour. Le client doit écouter ces changements pour mettre à jour l'expérience de l'utilisateur et demander un nouveau jeton d'accès au serveur. Sur le serveur, tout jeton d'accès précédent doit être révoqué à l'aide de revokeToken(), et un nouveau jeton doit être généré avec les règles d'accès mises à jour à l'aide de grantToken().

Demander quelles sont les restrictions en vigueur :

Si vous créez un tableau de bord de modération qui s'exécute sur un serveur, vous devez pouvoir demander si un utilisateur est déjà en mode manuel ou en mode silencieux afin d'afficher cet état au modérateur.

Côté client, vous devez pouvoir demander si le destinataire d'un message est en sourdine ou banni afin que votre application puisse avertir l'utilisateur que son message ne sera pas reçu et ne pourra pas être envoyé.

Le SDK Chat expose une famille d'API pour récupérer les restrictions actuelles : getChannelRestrictions() et getUserRestrictions(), qui agissent sur l'utilisateur, et getUsersRestrictions(), qui agit sur le canal.

Signaler les messages ou les utilisateurs dont le contenu est inapproprié :

Afin d'offrir une expérience de chat sûre et agréable à tous vos utilisateurs, ceux-ci doivent se sentir autorisés à signaler les utilisateurs ou les messages problématiques à un modérateur qui les examinera et prendra les mesures nécessaires.

Côté client, votre application de chat devra permettre à un utilisateur de signaler un message comme problématique et de fournir des informations supplémentaires facultatives. Le SDK Chat fournit les méthodes message.report() et user.report( ) à cette fin, que le client doit appeler.

Côté serveur, vous devez écouter ces rapports de messages et les afficher à l'administrateur afin qu'il puisse prendre des mesures. Il peut choisir de modifier/supprimer le message lui-même ou, si le problème persiste, d'effectuer une action sur l'utilisateur, comme l'inhibition ou le bannissement. Le SDK Chat fournit la méthode listenForEvents() pour recevoir les messages signalés, qui sont généralement gérés par le serveur.

Quelle est la place du moniteur de canaux dans cette architecture de modération ?

Le moniteur de canaux fournit un tableau de bord permettant de couper ou de bannir des utilisateurs sur la base d'un examen manuel des messages qu'ils envoient. Le tableau de bord se chargera d'appeler setRestrictions() pour vous et vous présentera toujours les dernières informations sur les utilisateurs bannis au sein de chaque canal.

Ce qu'il vous reste à faire, en tant que développeur, c'est d'intégrer ces demandes de bannissement et de mise en sourdine dans l'architecture plus large de votre application. Plus précisément, en tant que client PubNub ayant déployé une application de production, vous utilisez déjà le PubNub Access Manager pour contrôler l'accès à vos données, en vous assurant que les utilisateurs n'ont que l'accès RW dont ils ont besoin pour chaque canal. Sur la base des mises à jour 'mute' et 'ban' que vous recevez de listenForEvents(), appelez votre composant serveur Access Manager existant pour révoquer et accorder de nouveaux tokens d'accès pour l'utilisateur concerné.

Vous devrez également vous assurer que votre application client prend les mesures appropriées en fonction des mises à jour qu'elle reçoit de listenForEvents() ou de la famille d'API getXRestrictions(). Ne permettez pas à l'utilisateur d'envoyer des messages à un utilisateur banni, car ils sont destinés à ne jamais être reçus.

Mise en sourdine et bannissement d'utilisateurs : Démonstration à l'aide de l'exemple d'application

Comme nous l'avons expliqué dans la section précédente, le moniteur de canaux n'est qu'un élément de votre solution de modération robuste.

Cet article montre comment vous pouvez agir sur le client lorsqu'un utilisateur est mis en sourdine ou banni du tableau de bord, bien qu'une application de production comprenne également une logique serveur qui s'intègre avec le gestionnaire d'accès PubNub.

L'application d'exemple par défaut n'implémente pas la fonction listenForEvents() pour l'API, nous devons donc effectuer un petit changement.

Dans HomeScreen.tsx, ajoutez les importations TimetokenUtils et Alert comme indiqué :

import { Channel, Membership, TimetokenUtils } from "@pubnub/chat"
import { StyleSheet, ScrollView, TouchableHighlight, TouchableOpacity, Alert } from "react-native"
Enter fullscreen mode Exit fullscreen mode

Ensuite, dans le même useEffect où l'écouteur "invite" est défini, définissez un deuxième écouteur pour afficher l'événement "modération" sous forme d'alerte, comme ci-dessous :

const removeModerationListener = chat.listenForEvents({
  channel: chat.currentUser.id,
  type: "moderation",
  callback: async (event: Event<"moderation">) => {
    Alert.alert(
      "Restriction: " + event.payload.restriction,
      `Reason (bans only): ${
        event.payload.reason == null ? "" : event.payload.reason
      }\nChannel Id: ${event.channelId}\nBy: ${
        event.userId
      }\nTime: ${TimetokenUtils.timetokenToDate(event.timetoken).toLocaleString([], {
        weekday: "short",
        month: "short",
        day: "numeric",
        hour: "numeric",
        minute: "numeric",
      })}`,
      [{ text: "OK" }]
    )
  },
})
Enter fullscreen mode Exit fullscreen mode

Bien que loin du code de production, ceci montrera au moins qu'un événement de modération a été reçu.

Mise en sourdine des utilisateurs d'un canal

Après avoir modifié le code s'exécutant sur les deux appareils, la mise en sourdine de l'utilisateur test-607 déclenchera l'événement "modération", comme indiqué ci-dessous :

Le format de l'événement de modération est donné dans types.ts; spécifiquement, le ModerationEventPayload sera "muted".

Notez qu'aucune raison n'est donnée pour la mise en sourdine d'un utilisateur puisque ce champ ne s'applique qu'aux interdictions.

Bannir des utilisateurs d'un canal

Le tableau de bord demandera à l'administrateur de fournir une raison pour le bannissement, et la capture d'écran ci-dessus montre que l'utilisateur test-935 vient de recevoir un bannissement avec la raison "Testing ban feature" (Test de la fonction de bannissement).

Comme pour la mise en sourdine, le format de l'événement de modération est indiqué dans types.ts, et le ModerationEventPayload sera "banned".

Lever le mute ou le ban d'un utilisateur

La levée d'un bannissement ou d'une mise en sourdine entraînera le même événement, "lifted". La capture d'écran ci-dessus montre le résultat de la levée des restrictions respectives de l'utilisateur test-607 et de l'utilisateur test-935. Comme indiqué précédemment, le format de l'événement de modération est donné dans types.ts.

Résumé

Le développement d'une application de chat n'est que la première étape, les défis les plus difficiles venant après le déploiement de cette application pour soutenir votre base d'utilisateurs croissante. BizOps Workspace est un ensemble d'outils conçus pour gérer tous les aspects de votre application de chat, simplifiant ainsi vos défis après le lancement.

Bien que cet article se soit concentré sur le Channel Monitor, nous continuons à développer les fonctionnalités de BizOps Workspace. Cet article s'est également concentré exclusivement sur le Chat SDK - au moment de la rédaction, ce SDK prend en charge l'ensemble des fonctionnalités du Channel Monitor, mais restez à l'affût des annonces futures sur la prise en charge de SDK supplémentaires.

Si vous avez besoin d'aide ou de support, n'hésitez pas à contacter notre équipe de support dédiée ou à envoyer un e-mail à notre équipe de relations avec les développeurs à l'adresse devrel@pubnub.com.

Comment PubNub peut-il vous aider ?

Cet article a été publié à l'origine sur PubNub.com

Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le réseau de messagerie périphérique en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.

Découvrez PubNub

Découvrez le Live Tour pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer

Créez un compte PubNub pour un accès immédiat et gratuit aux clés PubNub.

Commencer

La documentation PubNub vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre SDK.

Top comments (0)