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 Workspace:
- Jak zarządzać użytkownikami i kanałami za pomocą BizOps Workspace
- Jak monitorować i moderować konwersacje za pomocą BizOps Workspace
- Jak bezpiecznie moderować konwersacje i użytkowników za pomocą BizOps Workspace
BizOps Workspace to zestaw narzędzi, które pomagają zarządzać aplikacją. Ten artykuł rozszerzy poprzedni artykuł "Jakmonitorować i moderować konwersacjeza pomocą BizOps Workspace", aby pokazać kompleksową bezpieczną aplikację do czatowania z ręcznymi możliwościami moderacji, tj. możliwością monitorowania konwersacji w czasie rzeczywistym oraz wyciszania lub blokowania użytkowników.
Chociaż ten artykuł można czytać samodzielnie, zdecydowanie zalecam przeczytanie poprzedniego artykułu "Jak monitorować i moderować konwersacje zapomocą BizOps Workspace", aby lepiej zrozumieć tło omawianych tutaj koncepcji.
Czym jest Channel Monitor?
Channel Monitor umożliwia moderatorom czatu oglądanie na żywo podglądu rozmów prowadzonych w czasie rzeczywistym na wielu kanałach. Jeśli moderator zauważy coś niepokojącego, takiego jak niewłaściwie zachowujący się użytkownik 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
- edytować lub usunąć obraźliwą wiadomość
- ograniczyć możliwość publikowania wiadomości przez użytkownika(wyciszyć)
- ograniczyć użytkownikowi możliwość czytania lub publikowania wiadomości (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. Ten artykuł nie omawia automatycznej moderacji.
Aby korzystać z funkcji Channel Monitor, konieczne jest włączenie kilku funkcji w zestawie kluczy PubNub, w szczególności kontekstu aplikacji i trwałości wiadomości. Więcej szczegółów można znaleźć w sekcji "Wymagania dotyczące zestawu kluczy dla Channel Monitor" w poprzednim artykule.
Czym jest menedżer dostępu PubNub?
Programiści muszą chronić się przed użytkownikami próbującymi obejść ich system moderacji; można to osiągnąć za pomocą menedżera dostępu PubNub.
Menedżer dostępu pozwala zdefiniować zestaw reguł, które opisują uprawnienia określonego użytkownika (lub użytkowników) i jakie działania mogą wykonywać na określonych zasobach. Na przykład:
- Użytkownik o identyfikatorze
123
ma uprawnienia do odczytu i zapisu na kanale456
- Wszyscy użytkownicy, których ID pasuje do wyrażenia regularnego
user-*
, mogą czytać z dowolnego kanału, którego ID pasuje do wyrażenia regularnegoglobal-*
. - Użytkownik o identyfikatorze
123
ma uprawnienia do aktualizacji metadanych kanału (tj. kontekstu aplikacji).
Pełna lista uprawnień znajduje się w dokumentacji na stronie https://www.pubnub.com/docs/general/security/access-control#permissions.
Menedżer dostępu PubNub jest oparty na tokenach, a najłatwiejszym sposobem na jego opisanie jest przejście przez przepływ autoryzacji pokazany w dokumentacji i zapewnienie dodatkowego kontekstu, w jaki sposób ten przepływ odnosi się do moderacji:
- Próba logowania. Klient uwierzytelnia się na serwerze, aby zalogować użytkowników do aplikacji. Prawdopodobnie odbywa się to za pośrednictwem dostawcy tożsamości; po tym kroku serwer ma pewność, że rozmawia z zarejestrowanym użytkownikiem aplikacji i kim on jest. Klient żąda tokenu uwierzytelniania PubNub Access Manager w ramach swojej inicjalizacji.
- Żądanie przyznania uprawnień. Serwer obsługuje żądanie klienta o token, wywołując interfejs API SDK "grantToken()". Kilka punktów do odnotowania na temat tego API: Można go wywołać tylko za pomocą tajnego klucza PubNub, a zatem można go wywołać tylko z serwera; jest dostępny dla wszystkich naszych zestawów SDK po stronie serwera; i to API zaakceptuje obiekty JSON w celu zdefiniowania zasobów i uprawnień, które definiują dostęp użytkownika (użytkowników).
- Zwrócony*token*. PubNub przyznaje żądane uprawnienia żądanym użytkownikom i zwraca token uwierzytelniający do serwera.
- Token*przekazany*. Następnie serwer zwraca token uwierzytelniający do pierwotnego klienta wywołującego.
- Token ustawiony. Klient może określić ten token uwierzytelniający podczas inicjalizacji lub w dowolnym momencie cyklu życia aplikacji za pomocą metody setToken(). Możliwość aktualizacji tokena w dowolnym momencie jest niezbędna, ponieważ tokeny wygasają, ale klient będzie również musiał zażądać nowego tokena, jeśli Channel Monitor zaktualizuje swoje uprawnienia (tj. zostanie wyciszony lub zbanowany).
- Autoryzowane żądanie API. Wszelkie kolejne połączenia z PubNub będą teraz uznawane za autoryzowane. PubNub zezwoli lub odrzuci każde żądanie API w oparciu o uprawnienia przyznane w kroku 2 i ważność tokena klienta.
Jak wygląda bezpieczne rozwiązanie moderacyjne?
Pod koniec poprzedniego artykułu pokazałem demo tego, jak wyglądałoby wyciszanie lub banowanie po stronie klienta. Chat SDK zawiera zdarzenia moderacji, które informują klienta o tym, czy został wyciszony lub zbanowany; jednak poza aktualizacją interfejsu użytkownika nie uniemożliwia to klientowi dalszego wysyłania wiadomości, mimo że został wyciszony/zbanowany. Aby bezpiecznie wyciszyć lub zablokować klienta, należy cofnąć jego istniejące uprawnienia Menedżera dostępu i przyznać mu nowe, aby odzwierciedlić jego nowy status wyciszenia lub zablokowania.
Rozważmy następujący scenariusz, w którym użytkownik został wyciszony z kanału "musicale":
- Użytkownik ma dostęp do dwóch kanałów, "filmy" i "musicale", ale administrator chce wyciszyć go tylko z kanału "musicale".
- Moderator wycisza użytkownika za pomocą Monitora kanałów. Pod przykrywką jest to wywołanie interfejsu API "setRestrictions()
- Aplikacja serwerowa otrzymuje powiadomienie o "wyciszeniu" za pośrednictwem zdarzenia moderacji i unieważnia istniejący token dostępu użytkownika.
- Aplikacja kliencka otrzymuje powiadomienie "mute" powiązane z kanałem "musicals" poprzez zdarzenie moderacji.
- Aplikacja aktualizuje swój interfejs użytkownika, aby zapobiec wysyłaniu większej liczby wiadomości. Użytkownik może obejść tę zmianę interfejsu użytkownika, modyfikując JavaScript strony, ale każda próba wysłania wiadomości zakończy się niepowodzeniem, ponieważ jego token uwierzytelniający został cofnięty.
- Aplikacja żąda nowego tokenu uwierzytelniania z serwera, jak opisano w sekcji Menedżer dostępu powyżej. Nowo przyznany token będzie odzwierciedlał nowe uprawnienia użytkownika, w tym tylko dostęp "do odczytu" do kanału "musicale".
W poprzednim artykule opisano "Składniki rozwiązania do moderacji" i wymieniono interfejsy API dostępne zarówno dla klienta, jak i serwera, korzystając z poniższej grafiki. Interfejsy API omówione w powyższych krokach są również pokazane na tej grafice.
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 korzysta z Chat SDK.
Próbka pokazuje możliwości SDK i najlepsze praktyki tworzenia realistycznej i w pełni funkcjonalnej aplikacji czatu przy użyciu PubNub. Jest to open source i część tego samego repozytorium GitHub, które zawiera Chat SDK pod /samples/react-native-group-chat.
Ta aplikacja została niedawno zaktualizowana, aby żądać tokenów z serwera Access Manager i żądać nowego tokena, gdy uprawnienia użytkownika ulegną zmianie, tj. zostaną zablokowane lub wyciszone z kanałów. To ulepszenie zostało wprowadzone od czasu napisania poprzedniego artykułu, więc pamiętaj, aby pobrać najnowsze źródło z GitHub. W chwili pisania tego tekstu najnowszy identyfikator zatwierdzenia git to ae9dfa0
Bezpieczne wyciszanie i banowanie użytkowników: Demo przy użyciu przykładowej aplikacji
W tej sekcji opisano, jak uruchomić nasze kompleksowe demo, pokazujące bezpieczną moderację zarówno z perspektywy klienta, jak i serwera.
Tworzenie zestawu kluczy PubNub
Zalecam utworzenie nowego zestawu kluczy PubNub, aby uruchomić to demo w następujący sposób:
- Zaloguj się do portalu administratora i utwórz nową aplikację lub nowy zestaw kluczy w istniejącej aplikacji. W razie potrzeby możesz znaleźć instrukcje krok po kroku w naszym Jak utworzyć klucze portalu administracyjnego.
- Na stronie zestawów kluczy włącz następujące opcje konfiguracji. Możesz zaakceptować ustawienia domyślne, chyba że określono inaczej:
- App Context. Przechowuje on metadane o kanałach i użytkownikach i został opisany w poprzednim artykule na temat"Zarządzania użytkownikami i kanałami". Włącz także zdarzenia
metadanych
użytkownika
,zdarzenia metadanych kanału
izdarzenia członkostwa
. - Trwałość wiadomości. Przechowuje historię wiadomości w PubNub, dzięki czemu administrator może przeglądać i edytować konwersacje.
- Menedżer dostępu. Zapobiega nieautoryzowanemu dostępowi do danych i jest wymagany do stworzenia bezpiecznego rozwiązania moderacji.
- Obecność. Służy do śledzenia, czy użytkownik jest online czy offline.
Zapisz zmiany.
W kolejnych krokach potrzebne będą klucze Publish Key
, Subscribe Key
i Secret Key
.
Tworzenie przykładowej aplikacji
Jak opisano wcześniej, aplikacja Chat SDK Sample jest wieloplatformową aplikacją kliencką napisaną w React Native przy użyciu frameworka Expo.
Sklonuj i zbuduj przykładową aplikację, postępując zgodnie z instrukcjami podanymi w readme aplikacji. W szczególności upewnij się, że masz zainstalowane wymagania wstępne, w tym yarn i Node.js. ReadMe mówi o korzystaniu z XCode i iOS, ale można również uruchomić aplikację na emulatorze Androida. W chwili pisania tego tekstu najnowszy identyfikator zatwierdzenia git to ae9dfa0
Podając klucze Pub/Sub, użyj kluczy wygenerowanych w poprzednim kroku. Jeśli nie umieścisz kluczy w pliku .env
, aplikacja będzie domyślnie korzystać z niektórych kluczy demonstracyjnych
; możesz wyłączyć tę logikę na stronie https://github.com/pubnub/js-chat/blob/ae9dfa0/samples/react-native-group-chat/App.tsx#L60, aby uniknąć nieporozumień.
Uruchom aplikację. ReadMe instruuje, aby uruchomić yarn ios
, ale można również uruchomić yarn android
lub yarn run start
, z których ten ostatni daje interaktywne menu.
Po zalogowaniu w konsoli powinno pojawić się następujące ostrzeżenie:
Dzieje się tak, ponieważ klient nie połączył się z serwerem Access Manager, więc zbudujmy go.
Tworzenie przykładowego serwera Access Manager
Sample Access Manager Server można znaleźć pod adresem https://github.com/pubnub/js-chat/tree/master/samples/access-manager-api, jest to ten sam monorepo, co aplikacja kliencka omówiona wcześniej.
Otwórz plik src/chatsdk.service.
ts w wybranym edytorze i wypełnij pola publishKey
, subscribeKey
i secretKey
. Klucze publish i subscribe muszą być zgodne z tymi, których użyto do utworzenia aplikacji klienckiej, a klucz tajny jest dostępny na stronie zestawu kluczy dla aplikacji w portalu administratora
Z katalogu REPO/samples/access-manager-api
uruchom polecenie yarn run start
, aby uruchomić serwer Access Manager, a powinieneś zobaczyć coś takiego jak poniżej:
Aby zobaczyć, co robi serwer Access Manager, spójrz na app.service.ts
. Zobaczysz struktury uprawnień wygenerowane dla żądającego użytkownika i wywołanie chat.sdk.grantToken()
w celu zastosowania tych uprawnień, zwracając wygenerowany klucz authKey do klienta wywołującego.
Są to uprawnienia wymagane przez aplikację demonstracyjną, ale Twoja aplikacja prawdopodobnie będzie potrzebować innych uprawnień. Możesz użyć tego dostarczonego zestawu reguł jako szablonu początkowego, ale podczas tworzenia serwera Access Manager dla swojej aplikacji skonsultuj się z https://www.pubnub.com/docs/chat/chat-sdk/build/features/users/permissions, aby dokładnie zrozumieć, jakie uprawnienia są wymagane przez poszczególne funkcje Chat SDK.
Uruchom ponownie aplikację demonstracyjną klienta i powinieneś być teraz w stanie zalogować się bez błędów. Będziesz wiedział, że wszystko się powiodło, gdy otrzymasz toast "Authkey refreshed".
Zainicjuj rozmowę między dwoma klientami.
Wyciszanie i banowanie użytkowników za pomocą Monitora kanałów
Ważne: Jeśli wcześniej nie zainicjowałeś konwersacji między dwoma klientami, zrób to teraz. Kanały są tworzone dynamicznie przez aplikację demonstracyjną, więc będą wyświetlane w Channel Monitor dopiero po rozpoczęciu czatu.
Należy pamiętać, że wszelkie aktualizacje interfejsu użytkownika pokazane poniżej, takie jak baner "auth key refreshed" lub modal "banned user", są częścią aplikacji demonstracyjnej - Twoja aplikacja wyświetli te informacje użytkownikowi za pośrednictwem własnego interfejsu użytkownika.
- Uruchom Channel Monitor, logując się do portalu administratora i wybierając zestaw kluczy użyty dla próbki Access Manager i aplikacji klienckiej.
- Przejdź do sekcji BizOps Workspace w lewym panelu nawigacyjnym i wybierz Channel Monitor. Jeśli nie widzisz sekcji BizOps Workspace, prawie na pewno musisz zaktualizować swój plan PubNub, ale w razie jakichkolwiek problemów skontaktuj się z naszym działem pomocy technicznej.
- Zostaniesz poproszony o wybranie kanałów do rozpoczęcia moderacji. Nazwa kanału będzie miała postać
1:1 użytkownik z USER_ID
, gdzie USER_ID to nazwa użytkownika osoby, która zainicjowała konwersację. - Wiadomości na kanale będą wyświetlane w czasie rzeczywistym, w tym poprzednie wiadomości, jeśli w zestawie klawiszy włączona jest funkcja trwałości.
- Wycisz użytkownika, naciskając przycisk mikrofonu obok wiadomości wysłanej przez tego użytkownika. Na urządzeniu wyciszonego użytkownika pojawi się komunikat informujący, że klucz autoryzacji został odświeżony. Próba wysłania wiadomości jako wyciszony użytkownik spowoduje wyświetlenie okna dialogowego z informacją, że jest to zabronione, ale nie ma to wpływu na niewyciszonego użytkownika.
- Wyłącz wyciszenie użytkownika, naciskając ponownie przycisk mikrofonu. Na urządzeniu niewyciszonego użytkownika pojawi się komunikat informujący, że klucz autoryzacji został odświeżony i wysyłanie wiadomości będzie teraz możliwe.
- Zbanuj użytkownika, naciskając przycisk bana obok wiadomości wysłanej przez tego użytkownika i podając powód bana. Powód jest tekstem swobodnym, więc możesz podać dowolne istotne informacje. Klucz autoryzacji zostanie odświeżony, a użytkownik powróci do ekranu wyboru czatu w swojej aplikacji.
Próba uzyskania dostępu do zablokowanego kanału spowoduje wyświetlenie błędu:
- Odblokuj użytkownika, wybierając opcję "Usuń blokadę" w Monitorze kanałów. Klucz autoryzacji zostanie odświeżony. Użytkownik zostanie odbanowany i będzie mógł ponownie uzyskać dostęp do czatu.
Podsumowanie
Opracowanie dowolnej aplikacji cz atu to tylko pierwszy krok. Najtrudniejsze wyzwania pojawiają się po wdrożeniu aplikacji do 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ż w tym artykule skupiliśmy się na bezpiecznym wyciszaniu i banowaniu użytkowników, nadal rozszerzamy funkcje BizOps Workspace. Ten artykuł skupiał się również wyłącznie na Chat SDK, ale Channel Monitor można również skonfigurować do pracy z dowolnym z naszych SDK.
Jeśli potrzebujesz pomocy lub wsparcia, skontaktuj się z naszym dedykowanym zespołem wsparcia lub napisz do naszego zespołu ds. relacji z programistami na adres devrel@pubnub.com.
Jak PubNub może ci pomóc?
Ten artykuł został pierwotnie opublikowany na PubNub.com
Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.
Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości 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, aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.
Rozpocznij konfigurację
Załóż konto PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.
Rozpocznij
Dokumenty PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub zestawu SDK.
Top comments (0)