Chat Filter

Introduction

Chat Filter is a profanity filter add-on for Photon Chat applications.
It automatically scans, detects and filters messages that contain swear or curse words.

Setting up filtering for Photon Chat is easy.
First, go to the management page of your Photon Chat application which is accessible from your dashboard.
Once there you will see the "Chat Filter" section.

Default Chat Filter Setup
Default Chat Filter Setup

Agree to the Community Sift terms first to be enable the Chat Filter add-on setup.
Click the "Setup Chat Filter" button and you will be directed to a dedicated page to set up Chat Filter for your application.

Photon Chat filtering is available in two different variants.

Photon Cloud Setup

The Photon Cloud Chat filter add-on setup provides you with the most common settings to keep your community safe and free of high levels of disruption.

Chat Filter Common Setup
Photon Cloud Chat Filter Setup

Select the policy matching your audience best from the list of available policies.

  • Younger Audiences (safest)
    This ruleset is intended for younger audiences and is the safest setting.
    It uses a whitelist like mode where all words must be close in spelling to a real word.
    It may struggle with usernames as they will show as misspells.

  • Teen 13-17 (restricive)
    This is a restrictive version of the default teen setting.
    Since it is restrictive it considers words like "wtf" and "ass" to be vulgar.
    If that is too strict consider the more default teen setting.

  • Teen 13-17 (default)
    Use this setting if the nature of your product requires a more permissive setting for a teen audience and you trust your users, but also wish to protect them and your brand.

  • Adult 18+ (lenient)
    This is intended for a mature audience and it is the most permissive of all settings.
    Use this if your users are adults and you want to give them more freedom of speech.
    This setting allows them to interact freely and only leaves out the worst of the worst.

Read more about filtering policies in the "Policies in Detail" section.
If your app requires COPPA or other compliance please contact the Community Sift team for a custom solution.

Find other options in the "Common Options" section.

Community Sift Enterprise Setup

Setup with Community Sift Enterprise focuses on much more granular control, automation, human moderation tools, reputation management, detailed reports, analytics, high scale, fraud and spam.
If you are interested in expanding your moderation tools, decrease toxicity significantly, and reward your users for positive behaviour with more open chat, interactive options, and personalized messages.
The install with Photon Chat is really easy and all the advanced functionality just works.
You can choose to upgrade to this version of the filter at any time.

Chat Filter Custom Setup
Chat Filter Custom Setup

The "API Key" field should have the value of the Base64 encoded string of your Community Sift API Key prefixed with colon character ':', i.e. it should have the following format ":<apiKey>".
Then you apply base64 encoding, i.e. Base64Encode(":<apiKey").
We recommend the usage of this online encoder: base64encode.org.

Example:
1- Get API Key from Community Sift : fKzuAskPmdLoeLAv3WBM
2- Prepend it with ':' to get the string to encode: :fKzuAskPmdLoeLAv3WBM
3- Base64 encode it to get the value to enter in the "API Key" dashboard field: OmZLenVBc2tQbWRMb2VMQXYzV0JN

Then, match the two Add-On options for your Photon Chat application, "Resource URL" and the "Policy", with the setup you have in the Community Sift dashboard.
Done.

Other options are discussed in the "Common Options" section.

Comparison of Community Sift Enterprise and Photon Cloud Setup

  Photon Cloud Community Sift Enterprise
Profanity Filter
Policy Guides
Granular Controls of Policy Guides e.a.
Reputation Management
Edit Black- and Whitelist
Image Filtering
Detailed Reports and Analytics
Escalate to Humans
COPPA Compliance

Book a demo to learn how Community Sift can protect your game!

Common Options

Use the options common to the Photon Cloud Chat Filter Add-On and the Community Sift Enterprise setup to fine-tune what your app client and players are being returned in your chat rooms.

Filter Add-On is active
Tick the checkbox to activate your filter settings.
Uncheck to disable filtering for testing and other.

Return filtered messages
Photon Chat messages that contain any not suitable word will have all its non-blank characters replaced with '#' by Community Sift.
Select this option to return these 'hashed' messages as is.

Drop filtered messages
When checked, Photon Chat messages that contain any not suitable word will not be returned.

Discard if unavailable
Should the Community Sift backends ever be not available ...
if it is ticked, Photon Chat messages will not be sent,
leave unticked if you are okay with messages being returned unfiltered.

Chat Filter Enabled
Chat Filter Enabled

Once saved the configured filter setup will be added to your Photon Chat application.
You can then update it, deactivate it or remove it at any time from your dashboard.

Filtered Messages Format

Photon Chat allows exchange of any type of object.
The following table shows data types supported by Photon Chat Filter and how each one is handled:

Message Type What's filtered C# Example
Plain text string A string that does not start with '{' and end with '}' is filtered in whole. string msg = "message with bad words";
JSON object string A string that starts with '{' and ends with '}' is considered a stringified JSON object. If it's serialized successfully, the value of its "msg" key (case insensitive) -if any- is filtered when it is a string. Other values are not checked. string msg = @"{""msg"":""message with bad words"", ""ignoredKeyEg"":0}";
Hashtable
Dictionary<string, object>
The value of "msg" key (case insensitive) -if any- is filtered when it is a string. Other values are not checked. Dictionary<string, object> msg = new Dictionary<string, object>(){{"ignoredKeyEg", true}, {"msg", "message with bad words"}};
Array The first element -if any- is filtered when it is a string. Other elements are not checked. object[] msg = new object[]{"message with bad words", -1, false};

In addition, the following remarks should be taken into consideration:

  • Other Photon serializable types or registered custom types are not filtered.
  • If the filtering option is set to "Drop filtered messages", the whole object is dropped and not only the text part.
  • If you want to ignore the fitler when sending a string array as a chat message, you can set the first element to a "safe value" (e.g. null).
  • Message data can be complex and some types supported by Photon Chat Filter can be nested.
    However, Photon Chat filtering is not recursive and will be applied to top level only (root object).
  • Dictionary<object, object> is not supported, Dictionary<string, object> is.

Triggers

Triggers are a very unique feature that allows you to decide when and how a player loses and gains trust.
Photon Cloud has best-practices set up to match your selected policy preset.
The configuration is completely customizable with Community Sift Enterprise solutions.

Every player starts at default and is given the same opportunity to express themselves when they join your community.
Players that make positive contributions become trusted and are awarded with more open chat.
Likewise, you also have the ability to limit the amount of contributions made by identified toxic users as they become non trusted.

This helps decrease churn and it keeps your community engaging while also giving toxic users the opportunity to become positive contributors.

The flow is as follows:

Trigger What happens …
Default > Non Trusted Player is restricted.
Non Trusted > Default Player is restored.
Default > Trusted Player is now trusted.
Trusted > Default Player loses trust.

Policies in Detail

Younger Audiences (strict)

This is intended for younger audiences and is the safest setting.
It uses a whitelist like mode where all words must be close in spelling to a real word.
As it is focused on youth it will prevent clear phone numbers, email addresses, physical addresses, full-names and links to other sites (as they may be high risk).
If users are consistently negative it will make the dictionary smaller by removing some normally grey words as bullying, sexting or vulgarity.

It may struggle with usernames as they will show as misspells.
You can prevent this by announcing a user when they enter a room to register their name.
It will also struggle with longer number patterns as it wants to prevent the sharing of personal information.

Teen 13-17 (default)

Use this setting if the nature of your product requires a more permissive setting for a teen audience and you trust your users, but also wish to protect them and your brand.
This uses a blacklist like approach where it will look for bad words.
Specifically it is looking for mild and severe cyber-bullying, sexting, vulgarity, and racism.
It might over-filter on mild risk so if you have too many false positives try the more lenient rule.
If it allows too much through switch to the restrictive teen mode.
If users are consistently breaking the rules it will expand the blacklist to include grey terms that are common but when used by negative users are harmful.
It does this because it expects that they are actively looking for work-arounds to harm others.

Please note that since it is a blacklist-like list it will allow potentially offensive terms to go through the filter if your community is highly creative.

Teen 13-17 (restrictive)

This is a restrictive version of the default teen setting.
Instead of just looking for specific topics it checks against our master list of over 400,000 signatures.
This means in addition to blocking vulgarity, sexting, and racism it will also look for sharing website urls, explicit personal information, suicide and self-harm, extremist recruitment.
It will also look at more subtle patterns that may lead to false positives.
If users are consistently breaking the rules it will expand the blacklist to include grey terms that are common but when used by negative users are harmful.
Since it is restrictive it considers words like "wtf" and "ass" to be vulgar.
If that is too strict consider the more default teen setting or use the hashing option so the words are just #### out.

Adult 18+ (lenient)

This is intended for a mature audience and it is the most permissive of all settings.
Use this if your users are adults and you want to give them more freedom of speech.
This setting allows them to interact freely and only leaves out the worst of the worst.

Specifically it is looking for severe cyber-bullying that could lead to suicide, explicit online sex, rape, extreme racism.
It will allow common swear words like the f-word but not the most offensive words like the c-word or deliberate mis-spellings of swear words.

Custom

For more granular and customizable control over which words are allowed, which topics matter and automating rewards and restrictions talk to the Community Sift team about a custom Enterprise solution.
Enterprise solutions provide you with advanced features such as live chat logs, daily reports and detailed analytics, reduction of human moderation through computer learning, auto-escalation of content, image filtering and automated reputation management of your users.

Back to top