テキスト モデレーションの使用

PlayFab Party は、テキスト チャットと統合されたテキスト モデレーション ソリューションを提供します。 テキスト チャットは、リアルタイムでモデレートして不快な言葉をフィルターします。 この機能は、Azure の Content Moderator によってサポートされています。 詳細については、「Azure Content Moderator」を参照してください。

言語サポート

テキスト モデレーションは、30 を超える言語をサポートします。 ただし、テキスト モデレーションの言語選択を構成するために何もする必要はありません。各テキスト メッセージの言語は Azure によって自動的に検出されます。 自動検出と不適切な表現のフィルター処理をサポートする言語の完全な一覧については、Azure Content Moderator の「list of supported languages (サポートされている言語の一覧)」を参照してください。

テキスト モデレーションの有効化

テキスト モデレーションは、チャット コントロールごとに構成されます。 これは、PartyTextChatOptions::FilterOffensiveText オプションを使用して PartyLocalChatControl::SetTextChatOptions() を呼び出すことで有効になります。 モデレーションが有効になっているチャット コントロールは、アスタリスクでマスクされた不快な単語を含むテキスト チャットを受け取ります。 モデレーションはチャット コントロールごとに有効になっているため、ユーザーが独自のモデレーションの選択を設定できるように UI を作成できます。 また、一部またはすべてのユーザーにモデレーションを適用することもできます。

チャット コントロールのモデレーションを無効にするには、同じ関数を使用し、FilterOffensiveText フラグを含まない PartyTextChatOptions オプションを渡します。

サンプル コード:

// Opt into moderation
myLocalChatControl->SetTextChatOptions(PartyTextChatOptions::FilterOffensiveText, nullptr);

// Opt out of moderation
myLocalChatControl->SetTextChatOptions(PartyTextChatOptions::None, nullptr);

モデレーション メッセージの送信と受信

モデレーションが有効なチャット コントロールに送信されるすべてのテキストには、送信者独自のモデレーション設定に関係なく、モデレーションが適用されます。 モデレーションが有効なチャット コントロールによって受信されたテキスト メッセージには、モデレート バージョンに置き換えられた PartyChatTextReceivedStateChangechatText フィールドがあります。

テキスト フィルター処理されていないバージョンを表示するオプションをユーザーに提供するなど、より複雑なシナリオを可能にするために、PartyChatTextReceivedStateChange に追加のフィールドが存在します。 詳細については、「PartyChatTextReceivedStateChange」リファレンス ページを参照してください。

サービス エラーが原因でテキスト メッセージのモデレーションが失敗した場合、または特定の用語を識別できずにサービスによってテキストが不快と見なされた場合、テキスト メッセージ全体がアスタリスクでマスクされます。 この問題が発生したかどうかを確認するには、PartyChatTextReceivedStateChangeoptions フィールドで提供されている PartyChatTextReceivedOptions の列挙型調べてください。

フィルター レベルの調整

英語の場合、チャット コントロールに対して行われるフィルター処理のレベルは、PartyManager::SetOption 関数を使用して調整できます。 使用できるフィルター レベルは、ファミリーフレンドリ、中、大人向けです。 既定のレベルはファミリーフレンドリです。

サンプル コード:

// Set the filter level to Mature
PartyTextChatFilterLevel filterLevel = PartyTextChatFilterLevel::Mature;
PartyOption option = PartyOption::TextChatFilterLevel;
PartyError error = PartyManager::SetOption(nullptr, option, &filterLevel);

関連項目