Jak monitorować i moderować konwersacje za pomocą BizOps Workspace
Tags: pubnubbizopsworkspace, bizopsworkspace, channelmonitor, channelmoderation
Published: 2024-04-04 10:29:18

Ten artykuł instruktażowy jest częścią serii artykułów omawiających możliwości zarządzania danymi PubNub, znane pod wspólną nazwą [BizOps Work](https://pubnub.com/docs/bizops-workspace/basics)space:

-   Jak[zarządzać użytkownikami i kanałami](https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/) za pomocą BizOps Workspace
    
-   Jak monitorować i moderować konwersacje za pomocą BizOps Workspace
    

BizOps Workspace to zestaw narzędzi, które pomagają zarządzać aplikacją. W tym artykule przyjrzymy się funkcji "Channel Monitor", która umożliwia administratorowi oglądanie podglądu na żywo konwersacji odbywających się w czasie rzeczywistym i podejmowanie działań w celu ręcznego moderowania tej konwersacji, na przykład poprzez wyciszanie lub banowanie użytkowników.

Wymagania wstępne dla funkcji Channel Monitor
---------------------------------------------

Zalecanym przez PubNub sposobem tworzenia [aplikacji cz](https://www.pubnub.com/solutions/chat/) atu jest użycie naszego dedykowanego Chat [SDK](https://www.pubnub.com/docs/chat/chat-sdk/overview), który obsługuje Typescript i JavaScript. Chat SDK jest zbudowany na infrastrukturze PubNub, dzięki czemu zyskujesz skalowalność i solidność PubNub przy użyciu API zaprojektowanego dla przypadków użycia czatu, takich jak "konwersacje", "wskaźniki pisania" i "wątkowanie".

Chociaż Channel Monitor może być używany przez **wszystkie** aplikacje PubNub korzystające z [kontekstu aplikacji](https://www.pubnub.com/docs/general/metadata/channel-metadata), te opracowane przy użyciu Chat SDK mają dostęp do dodatkowych funkcji, takich jak możliwość przeglądania i odpowiadania na wątki oraz obserwowania, wyciszania i blokowania użytkowników.

### Konfiguracja monitora kanałów

Jeśli korzystasz z dedykowanego zestawu PubNub Chat [SDK](https://www.pubnub.com/docs/chat/chat-sdk/overview), struktura wiadomości jest wstępnie zdefiniowana, więc nie musisz się martwić o dodatkową konfigurację Channel Monitor.

Programiści nie korzystający z Chat SDK muszą zdefiniować, w jaki sposób aplikacja strukturyzuje swoje wiadomości i jak aplikacja obsługuje edycję i usuwanie wiadomości. Odbywa się to poprzez [konfigurację](https://pubnub.com/docs/bizops-workspace/basics#configuration) Channel Monitor.

![](https://www.pubnub.com/cdn/3prze68gbwl1/FYH6PoZLSHGPgvikC9vCd/e74f82e37fbfb7fe6f370594adf1da7f/Channel_Monitor_Configuration.png)

### Wymagania dotyczące zestawu kluczy dla Channel Monitor

Aby korzystać z Channel Monitor, należy również włączyć następujące elementy w swoim zestawie kluczy w portalu administracyjnym PubNub:

-   Kontekst[aplikacji](https://www.pubnub.com/docs/general/metadata/channel-metadata)\- przechowuje metadane o kanałach i użytkownikach. Kontekst aplikacji omówiłem bardziej szczegółowo w moim poprzednim artykule na temat["Zarządzania użytkownikami i kanałami](https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/)". Aby aplikacja otrzymywała aktualizacje po zmianie danych kontekstu aplikacji, należy włączyć następujące opcje: `User Metadata Events`, `Channel Metadata Events` i `Membership Events`.
    
-   [Trwałość wiadomości](https://www.pubnub.com/docs/general/storage)\- przechowuje historię wiadomości w PubNub, dzięki czemu administrator może przeglądać i edytować konwersacje.
    

Inne wymagania, takie jak dostępność w oparciu o plan PubNub, można znaleźć w [dokumentacji Channel Monitor](https://pubnub.com/docs/bizops-workspace/channel-monitor/).

Inne właściwości zestawu kluczy, choć nie są wymagane, są zdecydowanie zalecane, aby uzyskać jak najwięcej korzyści z aplikacji Chat:

-   [Access Manager](https://www.pubnub.com/docs/general/security/access-control) Zapobiega nieautoryzowanemu dostępowi do danych i jest wymagany do stworzenia bezpiecznego rozwiązania moderacji, jak omówiono w dalszej części tego artykułu.
    
-   Zakładając, że korzystasz z Chat SDK, [dokumentacja konfiguracyjna](https://www.pubnub.com/docs/chat/chat-sdk/build/configuration) zawiera również listę [Presence](https://www.pubnub.com/docs/general/presence/overview) do śledzenia, czy użytkownik jest online czy offline.
    

Czym jest monitor kanałów?
--------------------------

Channel Monitor umożliwia moderatorom czatu oglądanie na żywo podglądu konwersacji odbywających się w czasie rzeczywistym na wielu kanałach. Jeśli moderator zauważy coś niepokojącego, na przykład niewłaściwie zachowującego się użytkownika lub obraźliwe wiadomości, może natychmiast podjąć działania w celu złagodzenia problemu.

Moderator ma dużą swobodę w zakresie podejmowanych działań:

-   Obserwować użytkownika bez ograniczania jego praw dostępu[(watch](https://pubnub.com/docs/bizops-workspace/channel-monitor#watch))
    
-   Edytować obraźliwą wiadomość
    
-   Usunąć obraźliwą wiadomość
    
-   ograniczyć użytkownikowi możliwość publikowania wiadomości ([wyciszyć](https://pubnub.com/docs/bizops-workspace/channel-monitor#mute))
    
-   ograniczyć użytkownikowi możliwość czytania lub publikowania wiadomości ([ban](https://pubnub.com/docs/bizops-workspace/channel-monitor#ban)).
    

Wszystkie możliwości w ramach funkcji "Monitor" są ręczne: Ręczne przeglądanie wiadomości, ręczne wyciszanie użytkowników itp. Automatyczne moderowanie nie zostało omówione w tym artykule.

Monitorowanie kanałów
---------------------

[Nasza dokumentacja "Monitoruj kanały"](https://pubnub.com/docs/bizops-workspace/channel-monitor) zawiera instrukcje krok po kroku, jak rozpocząć przeglądanie aktywności kanałów.

Podsumowując:

1.  Zaloguj się do [portalu administratora](https://admin.pubnub.com/), przejdź do sekcji **BizOps Workspace** w lewym panelu nawigacyjnym i wybierz **Monitor** kanałów. Jeśli nie widzisz **sekcji Biz**Ops Workspace, prawie na pewno musisz zaktualizować swój [plan PubNub](https://www.pubnub.com/pricing/), ale w razie jakichkolwiek problemów skontaktuj się z [naszym działem pomocy technicznej](https://support.pubnub.com/hc/en-us).
    
2.  Zostaniesz poproszony o włączenie kontekstu aplikacji na zestawie klawiszy, jeśli jest on obecnie wyłączony.
    
3.  Wybierz kanały, aby rozpocząć moderację. **Jeśli nie widzisz żadnych kanałów lub tylko ich podzbiór**, dzieje się tak, ponieważ wyświetlane są tylko kanały z powiązanym z nimi [kontekstem kanału](https://www.pubnub.com/docs/general/metadata/channel-metadata). Chat SDK automatycznie utworzy kontekst dla Ciebie lub możesz to zrobić ręcznie za pomocą interfejsu API setChannelMetadata() dostępnego dla wszystkich naszych zestawów SDK.
    
4.  Możesz wybrać do 5 kanałów do jednoczesnego moderowania.
    

Wiadomości kanału będą wyświetlane w czasie rzeczywistym, w tym poprzednie wiadomości, jeśli w zestawie kluczy włączono funkcję trwałości.

![](https://www.pubnub.com/cdn/3prze68gbwl1/7i3mEOeqxuQb2J90tKvf9B/0742e29262cf7eeb74f327c8870fbdc9/16_-_message_line.png)

Aby uzyskać przegląd możliwości widoku monitora, zapoznaj się z dokumentacją["Monitor kanału](https://pubnub.com/docs/bizops-workspace/channel-monitor)". W pozostałej części tego artykułu omówimy bardziej szczegółowo moderację wiadomości i użytkowników, odnosząc się do przykładowej implementacji.

Przykładowa aplikacja Chat SDK
------------------------------

Ten sam zapracowany zespół inżynierów odpowiedzialny za rozwój Channel Monitor i Chat SDK stworzył również przykładową aplikację napisaną w React Native, która wykorzystuje Chat SDK.

Próbka pokazuje możliwości SDK, a także najlepsze praktyki tworzenia realistycznej i w pełni funkcjonalnej aplikacji do czatu przy użyciu PubNub. Próbka jest open source i częścią tego samego repozytorium w Github, które zawiera Chat SDK pod [/samples/react-native-group-chat](https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat).

Ponieważ aplikacja jest autorytatywna, niniejszy artykuł wykorzysta ją do pokazania, w jaki sposób Channel Monitor może być używany z "prawdziwą" aplikacją. Aplikacja jest również hostowana jako część naszego [demo Chat SDK for Mobile](https://www.pubnub.com/demos/chat-sdk-mobile), dzięki czemu można z niej korzystać bez konieczności instalowania jej zależności (Expo, React Native, emulatory urządzeń).Jeśli chcesz podążać za niektórymi przykładami w tym poradniku, postępuj zgodnie z instrukcjami instalacji w [README](https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat#readme) próbki (w chwili pisania tego tekstu najnowsze zatwierdzenie to [0c12f3f](https://github.com/pubnub/js-chat/commit/0c12f3f157056ad4b574a6e1b04f3745fb1c38af)).

![](https://www.pubnub.com/cdn/3prze68gbwl1/3LN1pHPw77sxb284B3ae3d/51cccbcd3b841bcb5dad1d3a3f0ced49/temp-chat-sdk-mobile-demo.png)

### Przykładowe awatary aplikacji czatu

Aby uniknąć zależności, awatary używane przez aplikację czatu są osadzone w aplikacji i nie są przechowywane w kontekście aplikacji użytkownika. Oznacza to, **że awatar wyświetlany w aplikacji nie będzie odpowiadał awatarowi wyświetlanemu w widoku monitora** - jest to ograniczenie aplikacji, a nie PubNub.

### Korzystanie z przykładowej aplikacji z Channel Monitor

Poniższe kroki pozwolą ci rozpocząć pracę z przykładową aplikacją i Channel Monitor:

1.  Sklonuj i zbuduj przykładową aplikację, postępując zgodnie z instrukcjami podanymi w pliku [readme](https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat#readme) aplikacji.
    
2.  Uruchom aplikację na dwóch urządzeniach, aby wyświetlić rozmowę między dwiema osobami. Zrzuty ekranu w tym artykule wykorzystują emulator Androida i iOS.
    
3.  Zaloguj się do lewego urządzenia, **a następnie** zaloguj się do prawego urządzenia. Na prawym urządzeniu zainicjuj rozmowę za pomocą pływającego przycisku akcji. Wyślij wiadomość z prawego urządzenia, a pojawi się ona jako nieprzeczytana wiadomość na lewym urządzeniu.
    
4.  Uruchom monitor kanałów, jak opisano wcześniej. Wybierz odpowiedni kanał, który będzie miał nazwę "1:1 z XXX", gdzie XXX to nazwa, z którą zalogowałeś się na lewym urządzeniu.
    
5.  Jeśli zobaczysz coś podobnego do poniższego zrzutu ekranu, możesz teraz "Rozpocząć moderację".
    

![](https://www.pubnub.com/cdn/3prze68gbwl1/4fkIf8Lar4RuujWRZL7pN3/d691fb00e5ce8e7e6eeb92a10a015a9f/3_-_select_channels.png)

Moderowanie wiadomości
----------------------

Chociaż Channel Monitor może być używany przez wszystkie aplikacje PubNub, które używają [kontekstu aplikacji](https://www.pubnub.com/docs/general/metadata/channel-metadata) do edycji lub usuwania wiadomości, te opracowane przy użyciu Chat SDK mają dostęp do dodatkowych funkcji, takich jak możliwość obserwowania, wyciszania i blokowania użytkowników.

### Edytowanie wiadomości jako moderator

Możesz [edytować](https://pubnub.com/docs/bizops-workspace/channel-monitor#edit-messages) dowolną wiadomość jako moderator. Spowoduje to aktualizację interfejsu administratora, a także wiadomości wyświetlanej na klientach. Poniższy zrzut ekranu pokazuje wiadomość "Hello" edytowaną na "Hello - edytowane przez moderatora"

![](https://www.pubnub.com/cdn/3prze68gbwl1/6rQI3OPqsllCMg2IGmM9Ff/caee6f0625d39485db47a6e60b484f62/6_-_edited_by_moderator.png)

Pod przykrywką widok monitora wywołał metodę Chat SDK [message edit()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/updates). Klient otrzymuje aktualizację automatycznie za pomocą API [streamUpdatesOn()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/updates#get-message-updates). W przykładowej aplikacji można to zobaczyć w [Chat.tsx](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/screens/ordinary/chat/Chat.tsx#L121).

Należy pamiętać, że oryginalna wiadomość nie jest usuwana, ale edycja jest przechowywana jako dodatek (akcja) do oryginalnej wiadomości. Aby uzyskać więcej informacji, zobacz dokumentację [wiadomości edit](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/updates#edit-messages) ().

### Wysyłanie wiadomości jako moderator.

Jako moderator możesz [publikować wiadomości](https://pubnub.com/docs/bizops-workspace/channel-monitor#send-messages-as-moderator) na określonym kanale, które otrzymają wszyscy członkowie kanału. Poniższy zrzut ekranu pokazuje wiadomość "Zgadza się, jestem moderatorem" odbieraną przez wszystkich klientów. Pamiętaj, że możesz edytować i usuwać swoje wiadomości jako moderator, ale (oczywiście) nie możesz wyciszyć ani zbanować siebie.

![](https://www.pubnub.com/cdn/3prze68gbwl1/6v1athzbvwqTGelMfMmske/105695687374f323ceadffccc86543dd/8_-_moderator_type_message_2.png)

Aby móc uczestniczyć w rozmowie, Channel Monitor utworzył nowego użytkownika z identyfikatorem ustawionym na "PUBNUB\_INTERNAL\_MODERATOR", który można wyświetlić za pomocą karty [Zarządzanie użytkownikami](https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/).

Ponieważ przykładowa aplikacja nie obsługuje specjalnie użytkownika "PUBNUB\_INTERNAL\_MODERATOR", pojawia się on po prostu jako standardowa wiadomość w konwersacji z domyślnym awatarem. Możesz chcieć obsłużyć tę wiadomość moderatora w swojej aplikacji, przypisując jej specjalne znaczenie, na przykład zmieniając kolor tła.

W bardzo podstawowym przykładzie można zmodyfikować [logikę, która wyświetla tekst wiadomości](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/components/message-text/MessageText.tsx#L157) i dodać pewne wskazanie, że wiadomość pochodzi na przykład od moderatora:

```js
{messageProps.currentMessage?.originalPnMessage.userId == 
  "PUBNUB_INTERNAL_MODERATOR" ? "MOD: " : ""}
```

Wtedy interfejs użytkownika wyglądałby tak:

![](https://www.pubnub.com/cdn/3prze68gbwl1/68SUWTgiws4WSOPZIzxTMe/566c21ca69dcad900c33e5e5958cc07b/detect_moderator.png)

### Usuwanie wiadomości jako moderator

Jeśli naciśniesz przycisk "Usuń" obok wiadomości, wiadomość zostanie oznaczona jako usunięta w widoku "Monitor", a klienci zostaną powiadomieni o aktualizacji.

![](https://www.pubnub.com/cdn/3prze68gbwl1/76Ch3XHxs7Axb4R9oZ4yfC/5dfddd4c72a51767c8b8e0e37317b353/9_-_delete_message.png)

[Usunięcie wiadomości](https://pubnub.com/docs/bizops-workspace/channel-monitor#delete-messages) jest takie samo jak wywołanie metody Chat SDK["delete()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/delete)" i bardzo ważne jest, aby pamiętać, że jest to miękkie usunięcie, co oznacza, że wiadomość pozostaje w pamięci i jest tylko oznaczona jako "usunięta". Do klienta należy odczytanie statusu flagi "usuniętej" i podjęcie odpowiednich działań; jak widać, przykładowa aplikacja decyduje się zastąpić tekst wiadomości słowami "(Wiadomość została miękko usunięta)".

Odpowiednia sekcja aplikacji klienckiej znajduje się poniżej lub można ją również znaleźć na [Githubie](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/components/message-text/MessageText.tsx#L157)

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

Korzystając z nietrwałego miękkiego usuwania, wiadomość może zostać później przywrócona przez moderatora lub innego autoryzowanego użytkownika, jeśli zajdzie taka potrzeba.

### Przywracanie wiadomości jako moderator.

[Przywracanie](https://pubnub.com/docs/bizops-workspace/channel-monitor#restore-messages) wiadomości jest dokładnym przeciwieństwem usuwania wiadomości i jest odpowiednikiem wywołania metody Chat SDK["restore()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/restore)".

![](https://www.pubnub.com/cdn/3prze68gbwl1/23uKlA3tvHbd54vebjJp8L/d0079d39737aad0cb50b84b8ac1dea33/10_-_restore_message.png)

Usunięty tekst wiadomości jest przywracany w widoku "Monitor", a flaga "deleted" nie jest ustawiana na obiekcie wiadomości. Zobacz kod podany powyżej, który obsługuje flagę "deleted" w przykładowej aplikacji, aby przywrócić oryginalny tekst.

Moderowanie użytkowników
------------------------

### Składniki rozwiązania do moderacji

Zanim omówimy sposób, w jaki moderacja działa z Channel Monitor, przyjrzyjmy się różnym komponentom solidnego i dojrzałego rozwiązania moderacyjnego oraz temu, jak mapują się one na to, co jest dostępne w Chat SDK.

![](https://www.pubnub.com/cdn/3prze68gbwl1/50rOVZsxRPDbpl2azfmGCx/76842024f05c290e76ef9169f89994ad/moderation.png)

**Ograniczenie działań, które może wykonywać użytkownik:**

Jeśli użytkownik zachował się niewłaściwie, będziesz chciał ograniczyć jego możliwość publikowania postów (wyciszenie) lub ograniczyć jego możliwość interakcji z kimkolwiek innym (ban).

Po stronie serwera potrzebny jest sposób, w jaki moderator może wyciszyć lub zbanować użytkownika, a także sposób, w jaki ten użytkownik może zostać wyciszony lub odbanowany. Musisz także wprowadzić reguły, które zapewnią, że wiadomości nie będą mogły być wysyłane lub odbierane do użytkowników, którzy nie powinni ich otrzymywać - robienie tego na serwerze jest znacznie bezpieczniejsze niż poleganie na moderacji po stronie klienta, którą szkodliwy użytkownik może ominąć.

Chat SDK udostępnia metodę [setRestrictions](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-1) (), która "wycisza" lub "banuje" użytkownika na określonym kanale, a także pozwala zdefiniować "powód banowania". **Sam interfejs API setRestrictions() NIE nakłada żadnych ograniczeń na to, co może zrobić klient**; po prostu powiadamia rejestrujących, że zastosowano ograniczenie. Zarówno klient, jak i serwer muszą nasłuchiwać zdarzeń "moderacji" za pomocą metody [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-6) zestawu Chat SDK.

**Nasłuchiwanie zmian w ograniczeniach użytkownika:**

Gdy uprawnienia użytkownika ulegną zmianie, ważne jest, aby zmiany te zostały natychmiast zastosowane i odzwierciedlone w całym rozwiązaniu. Gdy użytkownik zostanie zbanowany (na przykład przez moderatora korzystającego z interfejsu internetowego), aplikacja kliencka użytkownika wyświetli komunikat informujący, że użytkownik został zbanowany. Każda próba obejścia zakazu przez użytkownika, na przykład poprzez "zhakowanie" aplikacji klienckiej w celu ominięcia kontroli po stronie klienta, powinna natychmiast zakończyć się niepowodzeniem z powodu dodatkowych kontroli po stronie serwera.

Metoda [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-6) Chat SDK powiadomi każdą zainteresowaną stronę, że uprawnienia użytkownika w określonym kanale zostały zaktualizowane. Klient powinien nasłuchiwać tych zmian, aby zaktualizować doświadczenie użytkownika i zażądać nowego tokena dostępu od serwera. Na serwerze każdy poprzedni token dostępu powinien zostać unieważniony za pomocą funkcji [revokeToken](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions#use-access-manager)(), a nowy token powinien zostać wygenerowany ze zaktualizowanymi regułami dostępu za pomocą funkcji [grantToken()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions#use-access-manager).

**Zapytanie o obowiązujące ograniczenia:**

Musisz być w stanie zapytać, jakie ograniczenia obowiązują dla użytkowników w Twoim rozwiązaniu. Jeśli tworzysz pulpit moderacji, który działa na serwerze, musisz być w stanie zapytać, czy użytkownik jest już obsadzony lub wyciszony, aby wyświetlić ten stan moderatorowi.

Po stronie klienta potrzebna jest możliwość zapytania, czy odbiorca wiadomości jest wyciszony lub zbanowany, aby aplikacja mogła ostrzec użytkownika, że jego wiadomość nie zostanie odebrana i nie może zostać wysłana.

Chat SDK udostępnia rodzinę interfejsów API do pobierania bieżących ograniczeń: [getChannelRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-2) i [getUserRestrictions](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-2)(), które działają na użytkownika, oraz [getUsersRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-4), który działa na kanał.

**Zgłaszanie wiadomości lub użytkowników za nieodpowiednie treści:**

Aby zapewnić bezpieczne i przyjemne doświadczenie czatu dla wszystkich użytkowników, powinni oni czuć się uprawnieni do zgłaszania problematycznych użytkowników lub wiadomości do moderatora w celu sprawdzenia i podjęcia działań.

Po stronie klienta aplikacja czatu będzie potrzebować sposobu, aby użytkownik mógł oznaczyć wiadomość jako problematyczną i dostarczyć opcjonalną dodatkową informację zwrotną. Chat SDK udostępnia w tym celu metody [message.report](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation) [(](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#flagreport-users) [)](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation) i [user.report(](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#flagreport-users) ), które klient powinien wywołać.

Po stronie serwera należy odsłuchać te raporty wiadomości i wyświetlić je administratorowi, aby mógł on podjąć działania. Może on zdecydować się na edycję/usunięcie samej wiadomości lub, jeśli problem będzie się powtarzał, wykonać pewne działania na użytkowniku, takie jak wyciszenie lub zbanowanie go. Chat SDK udostępnia metodę [listenForEvents](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1) () do odbierania zgłoszonych wiadomości, zwykle obsługiwanych przez serwer.

### Gdzie Channel Monitor pasuje do tej architektury moderacji?

Channel Monitor zapewnia pulpit nawigacyjny do wyciszania lub banowania użytkowników na podstawie ręcznego przeglądu wysyłanych przez nich wiadomości. Pulpit nawigacyjny zajmie się wywołaniem funkcji [setRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-1) za Ciebie i zawsze przedstawi Ci najnowsze informacje o tym, którzy z Twoich użytkowników są zbanowani w każdym kanale.

Tobie, jako deweloperowi, pozostaje zintegrowanie tych żądań banowania i wyciszania z szerszą architekturą aplikacji. W szczególności, jako klient PubNub, który wdrożył aplikację produkcyjną, używasz już [PubNub Access Managera](https://www.pubnub.com/docs/general/security/access-control) do kontrolowania dostępu do swoich danych, zapewniając, że użytkownicy mają dostęp tylko do RW, którego potrzebują dla każdego kanału. W oparciu o aktualizacje "mute" i "ban" otrzymane z [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1), wywołaj istniejący [komponent serwera Access Manager](https://www.pubnub.com/docs/general/security/access-control#server-side-operations), aby cofnąć i przyznać nowe tokeny dostępu dla danego użytkownika.

Należy również upewnić się, że aplikacja kliencka podejmuje odpowiednie kroki w oparciu o aktualizacje otrzymane z funkcji listenForEvents( [)](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1) lub rodziny interfejsów API [getXRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-2). Nie zezwalaj użytkownikowi na wysyłanie wiadomości do zbanowanego użytkownika, ponieważ nigdy nie zostaną one odebrane.

### Wyciszanie i blokowanie użytkowników: Demo przy użyciu przykładowej aplikacji

Jak wyjaśniono w poprzedniej sekcji, Channel Monitor jest jednym z elementów solidnego rozwiązania do moderacji.

Ten artykuł pokaże, w jaki sposób można **podjąć działanie na kliencie**, gdy użytkownik zostanie wyciszony lub zablokowany na pulpicie nawigacyjnym, chociaż aplikacja produkcyjna będzie również zawierać logikę serwera, która integruje się z menedżerem [dostępu](https://www.pubnub.com/docs/general/security/access-control#server-side-operations) PubNub.

Domyślna przykładowa aplikacja nie implementuje funkcji [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1) dla API, więc musimy wprowadzić niewielką zmianę.

W `HomeScreen.tsx` dodaj import TimetokenUtils i Alert, jak pokazano:

```js
import { Channel, Membership, TimetokenUtils } from "@pubnub/chat"
import { StyleSheet, ScrollView, TouchableHighlight, TouchableOpacity, Alert } from "react-native"
```

Następnie, [w tym samym useEffect, w którym zdefiniowany jest listener](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/screens/tabs/home/HomeScreen.tsx#L43)" [invite"](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/screens/tabs/home/HomeScreen.tsx#L43), zdefiniuj drugi listener, aby wyświetlić zdarzenie "moderation" jako alert, jak poniżej:

```js
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" }]
    )
  },
})
```

Chociaż jest to dalekie od kodu produkcyjnego, przynajmniej pokaże, że otrzymano zdarzenie moderacji.

#### Wyciszanie użytkowników w kanale

Po zmodyfikowaniu kodu działającego na obu urządzeniach, wyciszenie użytkownika test-user-607 wywoła zdarzenie "moderacja", jak pokazano poniżej:

![](https://www.pubnub.com/cdn/3prze68gbwl1/3JrJzM7GKh3gnn50Vhc78H/02e22f327d54114ee894e915ac8dcc3a/11_-_muted.png)

Format zdarzenia moderacji jest podany w [types.ts](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts); w szczególności [ModerationEventPayload](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts#L92) będzie "wyciszony".

Należy zauważyć, że nie podano [powodu](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts#L93) wyciszenia użytkownika, ponieważ to pole dotyczy tylko banów.

#### Banowanie użytkowników z kanału

![](https://www.pubnub.com/cdn/3prze68gbwl1/2jogaHbLUy5rxyabdKyXZ3/c32d98e4f92a49e600cd5b0ec33e55f2/13_-_banned.png)

Zbanowanie użytkownika z kanału jest bardzo podobne do jego wyciszenia. Pulpit nawigacyjny poprosi administratora o podanie powodu bana, a powyższy zrzut ekranu pokazuje, że użytkownik test-935 właśnie otrzymał bana z powodem "Testowanie funkcji bana".

Podobnie jak w przypadku wyciszenia, format zdarzenia moderacji jest podany w [types.ts](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts), a [ModerationEventPayload](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts#L92) będzie "zbanowany".

#### Zniesienie wyciszenia lub bana użytkownika

![](https://www.pubnub.com/cdn/3prze68gbwl1/3xXLPStntQeSZ8FLMZlrFS/10309701eb919b1b9ad8105f71f0fa8a/14_-_lifted.png)

Zniesienie bana lub wyciszenia spowoduje to samo zdarzenie, "zniesione". Powyższy zrzut ekranu pokazuje wynik zniesienia ograniczeń zarówno dla użytkownika test-user-607, jak i użytkownika test-user-935. Jak wspomniano wcześniej, format zdarzenia moderacji jest podany w types [.](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts)ts.

Podsumowanie
------------

Opracowanie dowolnej [aplikacji cz](https://www.pubnub.com/solutions/chat/) atu to tylko pierwszy krok, a najtrudniejsze wyzwania pojawiają się po wdrożeniu tej aplikacji w celu obsługi rosnącej bazy użytkowników. BizOps Workspace to zestaw narzędzi zaprojektowanych do zarządzania każdym aspektem aplikacji czatu, upraszczając wyzwania po uruchomieniu.

Chociaż ten artykuł koncentruje się na Channel Monitor, nadal rozszerzamy funkcje BizOps [Workspace](https://pubnub.com/docs/bizops-workspace/basics). Ten artykuł koncentruje się również wyłącznie na Chat SDK - w chwili pisania tego artykułu ten SDK obsługuje pełny zestaw funkcji Channel Monitor, ale wypatruj przyszłych ogłoszeń dotyczących dodatkowej obsługi SDK.

Jeśli potrzebujesz pomocy lub wsparcia, skontaktuj się z naszym [dedykowanym zespołem wsparcia](https://support.pubnub.com/hc/en-us) lub napisz do naszego zespołu ds. relacji z programistami na adres [devrel@pubnub.com](mailto:devrel@pubnub.com).

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Podstawą naszej platformy jest największa w branży i najbardziej skalowalna sieć komunikacyjna w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).