Überwachung und Moderation von Konversationen mit BizOps Workspace
Tags: pubnubbizopsworkspace, bizopsworkspace, channelmonitor, channelmoderation
Published: 2024-04-04 10:39:22

Dieser How-to-Artikel ist Teil einer Reihe von Artikeln, die sich mit den Datenverwaltungsfunktionen von PubNub befassen, die unter dem Namen [BizOps Workspace](https://pubnub.com/docs/bizops-workspace/basics) bekannt sind:

-   [Verwalten von Benutzern und Kanälen mit BizOps Work](https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/) space
    
-   Wie man mit BizOps Workspace Konversationen überwacht und moderiert
    

Dieser Artikel befasst sich mit der Funktion "Channel Monitor", die es einem Administrator ermöglicht, Live-Vorschauen von Konversationen in Echtzeit zu sehen und Maßnahmen zu ergreifen, um diese Konversationen manuell zu moderieren, z. B. durch Stummschalten oder Verbannen von Benutzern.

Voraussetzungen für den Channel Monitor
---------------------------------------

PubNub empfiehlt für die Entwicklung einer [Chat-Anwendung](https://www.pubnub.com/solutions/chat/) unser spezielles [Chat-SDK](https://www.pubnub.com/docs/chat/chat-sdk/overview), das Typescript und JavaScript unterstützt. Das Chat-SDK baut auf der Infrastruktur von PubNub auf, so dass Sie die Skalierbarkeit und Robustheit von PubNub erhalten, indem Sie eine API verwenden, die für Chat-Anwendungsfälle wie "Unterhaltungen", "Tippanzeigen" und "Threading" entwickelt wurde.

Obwohl der Channel Monitor von **allen** PubNub-Anwendungen genutzt werden kann, die den [App-Kontext](https://www.pubnub.com/docs/general/metadata/channel-metadata) verwenden, haben diejenigen, die mit dem Chat-SDK entwickelt wurden, Zugang zu zusätzlichen Funktionen, wie z. B. die Möglichkeit, Threads zu sehen und zu beantworten und Benutzer zu beobachten, stumm zu schalten und zu sperren.

### Channel Monitor Konfiguration

Wenn Sie das dedizierte [Chat-SDK](https://www.pubnub.com/docs/chat/chat-sdk/overview) von PubNub verwenden, ist die Nachrichtenstruktur vordefiniert, so dass Sie sich nicht um die zusätzliche Konfiguration des Channel Monitors kümmern müssen.

Entwickler, die das Chat-SDK nicht verwenden, müssen definieren, wie ihre Anwendung ihre Nachrichten strukturiert und wie ihre Anwendung das Bearbeiten und Löschen von Nachrichten handhabt. Dies geschieht durch die [Konfiguration des Channel Monitors](https://pubnub.com/docs/bizops-workspace/basics#configuration)

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

### Keyset-Anforderungen für den Channel-Monitor

Um den Channel Monitor nutzen zu können, müssen Sie im PubNub-Administrationsportal auch die folgenden Punkte für Ihr Keyset aktivieren:

-   [App-Kontext](https://www.pubnub.com/docs/general/metadata/channel-metadata): Hier werden Metadaten über Ihre Channels und Benutzer gespeichert. In meinem vorherigen Artikel über die[Benutzer- und Channel-Verwaltung](https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/) gehe ich näher auf den App-Kontext ein. Damit Ihre App Updates erhält, wenn App Context Daten geändert werden, müssen Sie Folgendes aktivieren: `Benutzer-Metadaten-Ereignisse`, `Kanal-Metadaten-Ereignisse` und `Mitgliedschafts-Ereignisse`.
    
-   [Nachrichtenpersistenz](https://www.pubnub.com/docs/general/storage): Damit wird der Nachrichtenverlauf in PubNub gespeichert, so dass der Administrator Konversationen überprüfen und bearbeiten kann.
    

Weitere Anforderungen, wie z.B. die Verfügbarkeit auf Basis Ihres PubNub-Plans, entnehmen Sie bitte der [Channel Monitor-Dokumentation](https://pubnub.com/docs/bizops-workspace/channel-monitor/).

Andere Keyset-Eigenschaften sind zwar nicht erforderlich, werden aber dringend empfohlen, um den größten Nutzen aus Ihrer Chat-Anwendung zu ziehen:

-   [Access Manager](https://www.pubnub.com/docs/general/security/access-control): Verhindert den unbefugten Zugriff auf Daten und ist erforderlich, um eine sichere Moderationslösung zu erstellen, wie später in diesem Artikel beschrieben.
    
-   Wenn Sie das Chat-SDK verwenden, finden Sie in der [Konfigurationsdokumentation](https://www.pubnub.com/docs/chat/chat-sdk/build/configuration) auch den Eintrag [Presence](https://www.pubnub.com/docs/general/presence/overview), um festzustellen, ob ein Benutzer online oder offline ist.
    

Was ist der Channel Monitor?
----------------------------

Mit dem Channel Monitor können Chat-Moderatoren eine Live-Vorschau der Unterhaltungen sehen, die in Echtzeit über mehrere Kanäle hinweg stattfinden. Wenn der Moderator etwas Störendes entdeckt, z. B. einen sich falsch verhaltenden Benutzer oder beleidigende Nachrichten, kann er sofort handeln und Maßnahmen ergreifen, um das Problem zu beheben.

Der Moderator hat einen großen Spielraum bei der Wahl der Maßnahmen:

-   Einen Benutzer beobachten, ohne seine Zugriffsrechte einzuschränken[(watch](https://pubnub.com/docs/bizops-workspace/channel-monitor#watch))
    
-   Bearbeiten Sie die beleidigende Nachricht
    
-   Löschen der verletzenden Nachricht
    
-   die Fähigkeit des Benutzers, Nachrichten zu veröffentlichen, einschränken[(stummschalten](https://pubnub.com/docs/bizops-workspace/channel-monitor#mute))
    
-   die Fähigkeit des Benutzers einschränken, Nachrichten zu lesen oder zu veröffentlichen[(Verbot](https://pubnub.com/docs/bizops-workspace/channel-monitor#ban))
    

Alle Funktionen der Funktion "Überwachen" sind manuell: Manuelles Überprüfen von Nachrichten, manuelles Stummschalten von Benutzern usw. Die automatische Moderation wird in diesem Artikel nicht behandelt.

Überwachung von Channels
------------------------

[In unserer Dokumentation "Kanäle überwachen"](https://pubnub.com/docs/bizops-workspace/channel-monitor) finden Sie eine schrittweise Anleitung, wie Sie die Aktivitäten in den Kanälen beobachten können.

Zusammengefasst:

1.  Melden Sie sich im [Admin-Portal](https://admin.pubnub.com/) an, gehen Sie zum Abschnitt **BizOps Workspace** im linken Navigationsbereich und wählen Sie **Channel Monitor**. Wenn Sie den Abschnitt BizOps **Workspace** nicht sehen, müssen Sie höchstwahrscheinlich ein Upgrade Ihres [PubNub-Tarifs](https://www.pubnub.com/pricing/) durchführen, aber bitte [kontaktieren Sie unseren Support](https://support.pubnub.com/hc/en-us), wenn Sie Probleme haben.
    
2.  Sie werden aufgefordert, den App-Kontext auf dem Keyset zu aktivieren, falls er derzeit deaktiviert ist.
    
3.  Wählen Sie Ihre Kanäle aus, um die Moderation zu starten. **Wenn Sie keine Channels oder nur eine Teilmenge Ihrer Channels sehen**, liegt das daran, dass nur Channels mit [Channel-Kontext](https://www.pubnub.com/docs/general/metadata/channel-metadata) angezeigt werden. Das Chat-SDK erstellt den Kontext automatisch für Sie, oder Sie können dies manuell mit der setChannelMetadata() API tun, die für alle unsere SDKs verfügbar ist.
    
4.  Sie können bis zu 5 Kanäle für die gleichzeitige Moderation auswählen.
    

Die Kanalnachrichten werden in Echtzeit angezeigt, einschließlich früherer Nachrichten, wenn Sie die Persistenz in Ihrem Keyset aktiviert haben.

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

Einen Überblick über die Möglichkeiten der Monitoransicht finden Sie in der Dokumentation['Channel monitor](https://pubnub.com/docs/bizops-workspace/channel-monitor)'. Im weiteren Verlauf dieses Artikels wird die Moderation von Nachrichten und Benutzern anhand einer Beispielimplementierung näher erläutert.

Die Chat SDK Beispielanwendung
------------------------------

Das gleiche Team, das für die Entwicklung des Channel Monitors und des Chat SDKs verantwortlich ist, hat auch eine Beispielanwendung in React Native erstellt, die das Chat SDK verwendet.

Das Beispiel zeigt die Möglichkeiten des SDKs sowie Best Practices für die Entwicklung einer realistischen und voll funktionsfähigen Chat-App mit PubNub. Das Beispiel ist Open Source und Teil desselben Repositorys auf Github, das auch das Chat-SDK unter [/samples/react-native-group-chat](https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat) enthält.

Da die App maßgebend ist, wird sie in diesem Artikel verwendet, um zu zeigen, wie der Channel Monitor mit einer "echten" App verwendet werden kann. Die App wird auch als Teil unserer [Chat SDK for Mobile Demo](https://www.pubnub.com/demos/chat-sdk-mobile) gehostet, so dass Sie die App verwenden können, ohne ihre Abhängigkeiten (Expo, React Native, Geräteemulatoren) installieren zu müssen.Wenn Sie einige der Beispiele in dieser Anleitung nachvollziehen möchten, folgen Sie bitte den Installationsanweisungen in der [README](https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat#readme) des Beispiels (zum Zeitpunkt der Erstellung dieses Artikels ist der letzte Commit [0c12f3f](https://github.com/pubnub/js-chat/commit/0c12f3f157056ad4b574a6e1b04f3745fb1c38af)).

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

### Chat-Beispiel-App Avatare

Um Abhängigkeiten zu vermeiden, sind die Avatare, die von der Chat-App verwendet werden, in die App eingebettet und nicht im App-Kontext des Benutzers gespeichert. **Das bedeutet, dass der Avatar, der in der App angezeigt wird, nicht mit dem Avatar übereinstimmt, der in der Monitoransicht angezeigt wird** - dies ist eine Einschränkung der Anwendung und nicht eine Einschränkung von PubNub.

### Verwendung der Beispiel-App mit dem Channel Monitor

Mit den folgenden Schritten können Sie die Beispielanwendung und den Channel Monitor in Betrieb nehmen:

1.  Klonen und erstellen Sie die Beispielanwendung, indem Sie den Anweisungen in der [Readme-Datei](https://github.com/pubnub/js-chat/tree/master/samples/react-native-group-chat#readme) der Anwendung folgen.
    
2.  Führen Sie die Anwendung auf zwei Geräten aus, damit Sie eine Unterhaltung zwischen zwei Personen anzeigen können. Die Screenshots in diesem Artikel verwenden einen Android- und einen iOS-Emulator.
    
3.  Melden Sie sich auf dem linken Gerät an, **dann** auf dem rechten Gerät. Starten Sie auf dem rechten Gerät eine Konversation mit der schwebenden Aktionstaste. Senden Sie eine Nachricht vom rechten Gerät, die auf dem linken Gerät als ungelesene Nachricht angezeigt wird.
    
4.  Starten Sie den Channel Monitor wie zuvor beschrieben und wählen Sie den entsprechenden Channel mit dem Namen "1:1 mit XXX", wobei XXX der Name ist, mit dem Sie sich auf dem linken Gerät angemeldet haben.
    
5.  Wenn Sie etwas sehen, das dem unten stehenden Screenshot ähnelt, können Sie nun die Moderation starten".
    

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

Nachrichten moderieren
----------------------

Obwohl der Channel Monitor von allen PubNub-Anwendungen genutzt werden kann, die den [App-Kontext](https://www.pubnub.com/docs/general/metadata/channel-metadata) zum Bearbeiten oder Löschen von Nachrichten verwenden, haben diejenigen, die mit dem Chat SDK entwickelt wurden, Zugriff auf zusätzliche Funktionen, wie z. B. die Möglichkeit, Benutzer zu beobachten, stumm zu schalten und zu sperren.

### Bearbeiten einer Nachricht als Moderator

Sie können jede Nachricht als Moderator [bearbeiten](https://pubnub.com/docs/bizops-workspace/channel-monitor#edit-messages). Dadurch werden sowohl die Verwaltungsoberfläche als auch die auf den Clients angezeigte Nachricht aktualisiert. Der folgende Screenshot zeigt die Nachricht "Hallo", die in "Hallo - vom Moderator bearbeitet" geändert wurde

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

Unter der Haube hat die Monitoransicht die Chat [SDK-Methode message edit()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/updates) aufgerufen. Der Client empfängt die Aktualisierung automatisch über die API [streamUpdatesOn()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/updates#get-message-updates). In der Beispielanwendung ist dies in [Chat.tsx](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/screens/ordinary/chat/Chat.tsx#L121) zu sehen.

Beachten Sie, dass die ursprüngliche Nachricht nicht gelöscht wird, sondern die Bearbeitung als Zusatz (Aktion) zur ursprünglichen Nachricht gespeichert wird. Weitere Details finden Sie in der Dokumentation zur [edit()-Nachricht](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/updates#edit-messages).

### Senden Sie Nachrichten als Moderator.

Als Moderator können Sie [Nachrichten](https://pubnub.com/docs/bizops-workspace/channel-monitor#send-messages-as-moderator) an den angegebenen Channel [veröffentlichen](https://pubnub.com/docs/bizops-workspace/channel-monitor#send-messages-as-moderator), die alle Channel-Mitglieder erhalten. Der folgende Screenshot zeigt die Nachricht "That's right, I am a moderator", die von allen Clients empfangen wird. Beachten Sie, dass Sie als Moderator Ihre Nachrichten bearbeiten und löschen können, aber (natürlich) nicht stummschalten oder sich selbst sperren können.

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

Um an der Konversation teilnehmen zu können, hat der Channel Monitor einen neuen Benutzer mit der ID "PUBNUB\_INTERNAL\_MODERATOR" angelegt, den Sie auf der Registerkarte " [Benutzerverwaltung](https://pubnub.com/how-to/manage-users-and-channels-with-bizops-workspace/) " einsehen können.

Da die Beispielanwendung den Benutzer 'PUBNUB\_INTERNAL\_MODERATOR' nicht speziell behandelt, erscheint er nur als Standardnachricht in der Konversation mit einem Standard-Avatar. Sie könnten diese Moderatoren-Nachricht in Ihrer Anwendung behandeln, indem Sie ihr eine besondere Bedeutung zuweisen, z. B. indem Sie dem Hintergrund eine andere Farbe geben.

Als einfaches Beispiel könnten Sie die [Logik, die den Nachrichtentext anzeigt](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/components/message-text/MessageText.tsx#L157), ändern und einen Hinweis darauf einfügen, dass die Nachricht z. B. von einem Moderator stammt:

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

Dann würde die Benutzeroberfläche wie folgt aussehen:

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

### Löschen von Nachrichten als Moderator

Wenn Sie auf die Schaltfläche "Löschen" neben der Nachricht klicken, wird die Nachricht in der Ansicht "Monitor" als gelöscht markiert, und die Kunden werden über die Aktualisierung informiert.

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

Das[Löschen einer Nachricht](https://pubnub.com/docs/bizops-workspace/channel-monitor#delete-messages) entspricht dem Aufruf der Chat-SDK-Methode['delete()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/delete)', und es ist sehr wichtig zu beachten, dass es sich hierbei um ein sanftes Löschen handelt, was bedeutet, dass die Nachricht im Speicher verbleibt und lediglich als 'gelöscht' gekennzeichnet wird. Es liegt am Client, den Status der 'gelöscht'-Kennzeichnung zu lesen und die entsprechende Aktion zu ergreifen; wie Sie sehen können, wählt die Beispielanwendung, den Nachrichtentext durch "(Nachricht sanft gelöscht)" zu ersetzen.

Der entsprechende Abschnitt der Client-Anwendung ist unten wiedergegeben oder kann auch auf [Github](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/components/message-text/MessageText.tsx#L157) gefunden werden

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

Durch die Verwendung des nicht permanenten Softlöschens kann die Nachricht später vom Moderator oder einem anderen autorisierten Benutzer wiederhergestellt werden, falls erforderlich.

### Nachrichten als Moderator wiederherstellen.

Das[Wiederherstellen von Nachrichten](https://pubnub.com/docs/bizops-workspace/channel-monitor#restore-messages) ist das genaue Gegenteil des Löschens einer Nachricht und entspricht dem Aufruf der Chat-SDK-Methode['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)

Der gelöschte Nachrichtentext wird in der 'Monitor'-Ansicht wiederhergestellt, und das 'deleted'-Flag wird im Nachrichtenobjekt gelöscht. Siehe den oben angegebenen Code, der das 'deleted'-Flag in der Beispielanwendung behandelt, um den ursprünglichen Text wiederherzustellen.

Benutzer moderieren
-------------------

### Komponenten einer Moderationslösung

Bevor wir besprechen, wie die Moderation mit dem Channel Monitor funktioniert, schauen wir uns die verschiedenen Komponenten einer robusten und ausgereiften Moderationslösung an und wie diese mit den im Chat SDK verfügbaren Komponenten zusammenpassen.

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

**Beschränken Sie die Aktionen, die ein Benutzer ausführen kann:**

Wenn sich ein Benutzer daneben benommen hat, möchten Sie seine Fähigkeit einschränken, Beiträge zu verfassen (Stummschaltung) oder seine Fähigkeit einschränken, überhaupt mit anderen zu interagieren (Verbot).

Auf der Serverseite benötigen Sie eine Möglichkeit für einen Moderator, einen Benutzer stumm zu schalten oder zu sperren, sowie eine Möglichkeit, die Stummschaltung aufzuheben oder die Sperre aufzuheben. Sie müssen auch Regeln aufstellen, die sicherstellen, dass Nachrichten nicht an Benutzer gesendet oder empfangen werden können, die sie nicht empfangen sollten - dies auf dem Server zu tun, ist viel sicherer als sich auf die clientseitige Moderation zu verlassen, die ein böswilliger Benutzer umgehen könnte.

Das Chat SDK stellt die [setRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-1) -Methode zur Verfügung, die einen Benutzer in einem bestimmten Kanal stummschaltet oder sperrt und es Ihnen ermöglicht, einen Sperrgrund zu definieren. **Die setRestrictions() API selbst schränkt NICHT ein, was der Client tun kann**; sie benachrichtigt lediglich die Registranten, dass eine Einschränkung angewandt wurde. Es obliegt sowohl dem Client als auch dem Server, über die [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-6) Methode des Chat SDK auf 'Moderations'-Ereignisse zu warten.

**Überwachen Sie auf Änderungen der Benutzereinschränkungen:**

Wenn sich die Berechtigungen eines Benutzers ändern, ist es wichtig, dass diese Änderungen sofort angewandt werden und sich in der gesamten Lösung widerspiegeln. Wenn ein Benutzer gesperrt wird (z. B. durch einen Moderator über ein Webinterface), zeigt die Client-Anwendung des Benutzers eine Nachricht an, in der der Benutzer darüber informiert wird, dass er gesperrt ist. Jeder Versuch, die Sperre durch den Benutzer zu umgehen, z. B. durch "Hacking" der Client-Anwendung, um die clientseitigen Prüfungen zu umgehen, sollte aufgrund zusätzlicher Prüfungen auf der Serverseite sofort fehlschlagen.

Die Methode [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-6) des Chat-SDK benachrichtigt alle interessierten Parteien darüber, dass die Berechtigungen eines Benutzers in einem bestimmten Kanal aktualisiert wurden. Der Client sollte auf diese Änderungen warten, um die Benutzererfahrung zu aktualisieren und ein neues Zugriffstoken vom Server anzufordern. Auf dem Server sollte jedes vorherige Zugriffstoken mit [revokeToken()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions#use-access-manager) widerrufen und ein neues Token mit den aktualisierten Zugriffsregeln mit [grantToken()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions#use-access-manager) erzeugt werden.

**Abfrage, welche Beschränkungen in Kraft sind:**

Wenn Sie ein Moderations-Dashboard erstellen, das auf einem Server läuft, müssen Sie in der Lage sein, abzufragen, ob ein Benutzer bereits besetzt oder stummgeschaltet ist, um dem Moderator diesen Zustand anzuzeigen.

Auf der Client-Seite benötigen Sie die Möglichkeit, abzufragen, ob ein Nachrichtenempfänger stummgeschaltet oder gesperrt ist, damit Ihre Anwendung den Benutzer warnen kann, dass seine Nachricht nicht empfangen und nicht gesendet werden kann.

Das Chat SDK stellt eine Reihe von APIs zur Verfügung, um die aktuellen Einschränkungen abzufragen: [getChannelRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-2) und [getUserRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-2), die auf den Benutzer wirken, und [getUsersRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-4), die auf den Kanal wirken.

**Melden von Nachrichten oder Benutzern für unangemessene Inhalte:**

Um allen Benutzern ein sicheres und angenehmes Chatterlebnis zu bieten, sollten sie die Möglichkeit haben, problematische Benutzer oder Nachrichten an einen Moderator zu melden, damit dieser sie überprüfen und Maßnahmen ergreifen kann.

Auf der Client-Seite benötigt Ihre Chat-Anwendung eine Möglichkeit für einen Benutzer, eine Nachricht als problematisch zu markieren und ein optionales zusätzliches Feedback zu geben. Das Chat SDK bietet zu diesem Zweck die Methoden [message.report()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation) und [user.report()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#flagreport-users), die der Client aufrufen sollte.

Auf der Serverseite müssen Sie auf diese Nachrichtenberichte hören und sie dem Administrator anzeigen, damit dieser Maßnahmen ergreifen kann. Er kann die Nachricht selbst bearbeiten/löschen oder, wenn das Problem weiter besteht, eine Aktion für den Benutzer durchführen, z. B. ihn stummschalten oder sperren. Das Chat SDK bietet die Methode [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1), um gemeldete Nachrichten zu empfangen, die normalerweise vom Server verarbeitet werden.

### Wie fügt sich der Channel Monitor in diese Moderationsarchitektur ein?

Der Channel Monitor bietet ein Dashboard zum Stummschalten oder Sperren von Benutzern auf der Grundlage einer manuellen Überprüfung der von ihnen gesendeten Nachrichten. Das Dashboard kümmert sich um den Aufruf von [setRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-1) für Sie und zeigt Ihnen immer die neuesten Informationen darüber an, welche Ihrer Benutzer in jedem Channel gesperrt sind.

Für Sie als Entwickler bleibt nur noch, diese Verbots- und Stummschaltungsanfragen in Ihre breitere Anwendungsarchitektur zu integrieren. Als PubNub-Kunde, der eine Produktionsanwendung implementiert hat, verwenden Sie bereits den [PubNub Access Manager](https://www.pubnub.com/docs/general/security/access-control), um den Zugriff auf Ihre Daten zu kontrollieren und sicherzustellen, dass die Benutzer nur den RW-Zugriff erhalten, den sie für jeden Channel benötigen. Basierend auf den "Mute"- und "Ban"-Updates, die Sie von [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1) erhalten, rufen Sie Ihre bestehende [Access Manager-Serverkomponente](https://www.pubnub.com/docs/general/security/access-control#server-side-operations) auf, um die Zugriffstoken für die betroffenen Benutzer zu widerrufen und neue zu vergeben.

Sie müssen auch sicherstellen, dass Ihre Client-Anwendung die entsprechenden Schritte basierend auf den Aktualisierungen, die sie von [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1) oder der [getXRestrictions()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/moderation#method-signature-2) -Familie der APIs erhält, unternimmt. Erlauben Sie dem Benutzer nicht, Nachrichten an einen gesperrten Benutzer zu senden, da diese niemals empfangen werden können.

### Stummschalten und Verbannen von Benutzern: Demo mit der Beispielanwendung

Wie im vorigen Abschnitt erläutert, ist der Channel Monitor nur ein Teil einer robusten Moderationslösung.

In diesem Artikel wird gezeigt, wie Sie **auf dem Client agieren** können, wenn ein Benutzer stummgeschaltet oder vom Dashboard verbannt wird, obwohl eine Produktionsanwendung auch eine Serverlogik umfasst, die mit dem PubNub [Access Manager](https://www.pubnub.com/docs/general/security/access-control#server-side-operations) integriert ist.

Die Standard-Beispielanwendung implementiert die [listenForEvents()](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/moderation#method-signature-1) für API nicht, daher müssen wir eine kleine Änderung vornehmen.

Fügen Sie in `HomeScreen.tsx` die Importe TimetokenUtils und Alert wie gezeigt hinzu:

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

Definieren Sie dann [im selben useEffect, in dem der "invite"-Listener definiert ist](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/samples/react-native-group-chat/screens/tabs/home/HomeScreen.tsx#L43), einen zweiten Listener, um das "moderation"-Ereignis als Alarm anzuzeigen, wie unten dargestellt:

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

Dies ist zwar noch weit vom Produktionscode entfernt, zeigt aber zumindest an, dass ein Moderationsereignis empfangen wurde.

#### Benutzer in einem Channel stummschalten

Nachdem der Code auf beiden Geräten geändert wurde, wird durch das Stummschalten von test-user-607 das Ereignis "Moderation" ausgelöst, wie unten dargestellt:

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

Das Format des Moderationsereignisses ist in [types.ts](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts) angegeben; insbesondere wird der [ModerationEventPayload](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts#L92) "muted" sein.

Beachten Sie, dass es keinen [Grund](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts#L93) für die Stummschaltung eines Benutzers gibt, da dieses Feld nur für Bans gilt.

#### Benutzer aus einem Channel verbannen

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

Das Dashboard fordert den Administrator auf, einen Grund für die Sperrung anzugeben. Der obige Screenshot zeigt test-user-935, der gerade eine Sperrung mit dem Grund "Testing ban feature" erhalten hat.

Wie bei der Stummschaltung wird das Format des Moderationsereignisses in [types.ts](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts) angegeben, und der [ModerationEventPayload](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts#L92) lautet "banned".

#### Aufhebung der Stummschaltung oder Sperre eines Benutzers

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

Die Aufhebung einer Sperre oder einer Stummschaltung führt zum gleichen Ereignis, nämlich "aufgehoben". Der obige Screenshot zeigt das Ergebnis, wenn sowohl test-user-607 als auch test-user-935 ihre jeweiligen Einschränkungen aufgehoben haben. Wie bereits erwähnt, ist das Format des Moderationsereignisses in [types.ts](https://github.com/pubnub/js-chat/blob/0c12f3f157056ad4b574a6e1b04f3745fb1c38af/lib/src/types.ts) angegeben.

Zusammenfassung
---------------

Die Entwicklung einer [Chat-Anwendung](https://www.pubnub.com/solutions/chat/) ist nur der erste Schritt, die schwierigsten Herausforderungen kommen nach der Bereitstellung der Anwendung, um Ihre wachsende Benutzerbasis zu unterstützen. BizOps Workspace ist eine Reihe von Tools, die für die Verwaltung aller Aspekte Ihrer Chat-Anwendung entwickelt wurden und Ihre Herausforderungen nach der Einführung vereinfachen.

Obwohl sich dieser Artikel auf den Channel Monitor konzentriert hat, werden wir die Funktionen von [BizOps Workspace](https://pubnub.com/docs/bizops-workspace/basics) weiter ausbauen. Dieser Artikel konzentriert sich auch ausschließlich auf das Chat-SDK - zum Zeitpunkt der Erstellung dieses Artikels unterstützt dieses SDK den vollen Funktionsumfang des Channel Monitors, aber halten Sie Ausschau nach zukünftigen Ankündigungen über zusätzliche SDK-Unterstützung.

Wenn Sie Hilfe oder Unterstützung benötigen, wenden Sie sich bitte an unser [engagiertes Support-Team](https://support.pubnub.com/hc/en-us) oder senden Sie eine E-Mail an unser Developer Relations Team unter [devrel@pubnub.com](mailto:devrel@pubnub.com).

Wie kann PubNub Ihnen helfen?
=============================

Dieser Artikel wurde ursprünglich auf [PubNub.com](https://www.pubnub.com/how-to/monitor-and-moderate-conversations-with-bizops-workspace/) veröffentlicht.

Unsere Plattform hilft Entwicklern bei der Erstellung, Bereitstellung und Verwaltung von Echtzeit-Interaktivität für Webanwendungen, mobile Anwendungen und IoT-Geräte.

Die Grundlage unserer Plattform ist das größte und am besten skalierbare Echtzeit-Edge-Messaging-Netzwerk der Branche. Mit über 15 Points-of-Presence weltweit, die 800 Millionen monatlich aktive Nutzer unterstützen, und einer Zuverlässigkeit von 99,999 % müssen Sie sich keine Sorgen über Ausfälle, Gleichzeitigkeitsgrenzen oder Latenzprobleme aufgrund von Verkehrsspitzen machen.

PubNub erleben
--------------

Sehen Sie sich die [Live Tour](https://www.pubnub.com/tour/introduction/) an, um in weniger als 5 Minuten die grundlegenden Konzepte hinter jeder PubNub-gestützten App zu verstehen

Einrichten
----------

Melden Sie sich für einen [PubNub-Account](https://admin.pubnub.com/signup/) an und erhalten Sie sofort kostenlosen Zugang zu den PubNub-Schlüsseln

Beginnen Sie
------------

Mit den [PubNub-Dokumenten](https://www.pubnub.com/docs) können Sie sofort loslegen, unabhängig von Ihrem Anwendungsfall oder [SDK](https://www.pubnub.com/docs)