テキスト モデレーションの使用
PlayFab Party は、テキスト チャットと統合されたテキスト モデレーション ソリューションを提供します。 テキスト チャットは、リアルタイムでモデレートして不快な言葉をフィルターします。 この機能は、Azure AI Content Safety によってサポートされています。 詳細については、「Azure AI Content Safety」 を参照してください。
言語サポート
テキスト モデレーションは、100 を超える言語でサポートされています。 ただし、テキスト モデレーションの言語選択を構成するために何もする必要はありません。Azure では、各テキスト メッセージの言語が自動的に検出されます。 自動検出と不適切表現のフィルター処理をサポートするサポートされている言語の完全な一覧については、「Azure AI Content Safety の サポートされている言語の一覧」 を参照してください。
テキスト モデレーションの有効化
テキスト モデレーションは、チャット コントロールごとに構成されます。 これは、PartyTextChatOptions::FilterOffensiveText
オプションを使用して PartyLocalChatControl::SetTextChatOptions()
を呼び出すことによって有効になります。 モデレーションが有効になっているチャット コントロールは、アスタリスクでマスクされた不快な単語を含むテキスト チャットを受信します。 モデレーションはチャット コントロールごとに有効になっているため、ユーザーが独自のモデレーションの選択を設定できるように UI を作成できます。 また、一部またはすべてのユーザーにモデレーションを適用することもできます。
チャット コントロールのモデレートを無効にするには、同じ関数を使用し、FilterOffensiveText
フラグを含まない PartyTextChatOptions
オプションを渡します。
サンプル コード:
// Opt into moderation
myLocalChatControl->SetTextChatOptions(PartyTextChatOptions::FilterOffensiveText, nullptr);
// Opt out of moderation
myLocalChatControl->SetTextChatOptions(PartyTextChatOptions::None, nullptr);
モデレーション メッセージの送信と受信
モデレーションが有効になっているチャット コントロールに送信されるすべてのテキストには、送信者独自のモデレーション設定に関係なく、モデレーションが適用されます。 モデレーションが有効なチャット コントロールによって受信されたテキスト メッセージには、モデレートバージョンに置き換えられた PartyChatTextReceivedStateChange
の chatText
フィールドがあります。
フィルター処理されていないバージョンのテキストを表示するオプションをユーザーに提供するなど、より複雑なシナリオを可能にするために、より多くのフィールドが PartyChatTextReceivedStateChange
に存在します。 詳細については、「PartyChatTextReceivedStateChange」 のリファレンス ページを参照してください。
サービス エラーが原因でテキスト メッセージのモデレートが失敗した場合、またはテキストが特定の用語を識別できずにサービスによって不快感を与えたと見なされた場合、テキスト メッセージ全体がアスタリスクでマスクされます。
PartyChatTextReceivedStateChange
の options
フィールドに指定されている PartyChatTextReceivedOptions
列挙型には、このエラー ケースが発生したときの詳細情報が含まれています。
フィルター レベルの調整
英語の場合、チャット コントロールに対して行われるフィルター処理のレベルは、PartyManager::SetOption
関数を使用して調整できます。 使用できるフィルター レベルは、ファミリーフレンドリ、中、大人向けです。 既定のレベルはファミリーフレンドリです。
サンプル コード:
// Set the filter level to Mature
PartyTextChatFilterLevel filterLevel = PartyTextChatFilterLevel::Mature;
PartyOption option = PartyOption::TextChatFilterLevel;
PartyError error = PartyManager::SetOption(nullptr, option, &filterLevel);