メインコンテンツまでスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。

customization-guide-chat-filter

Last updated on July 14, 2026

注釈:本資料はAI技術を用いて翻訳されています。

Overview

AccelByte Gaming Services (AGS)のチャットフィルターは、Extendを使ってカスタマイズできます。このガイドでは、チャットメッセージを受け取り、特定の単語をフィルタリングして返すカスタムチャットフィルターの作成方法を、カスタマイズのコントラクトとサンプルコードを用いて説明します。この処理には、以下に示すコントラクト内のFilterBulk関数を使用します。

service FilterService {
...
rpc FilterBulk(ChatMessageBulk) returns (MessageBatchResult);
}

FilterBulk

FilterBulk関数は、プレイヤーからのチャットがある際に呼び出されます。この関数の1回の呼び出しには、複数のチャットメッセージが含まれる場合があります。この例では、受信したすべてのチャットメッセージをループ処理し、IsProfane(...)が特定の単語を検出した場合、Censor(...)でそれを検閲し、結果を返します。

コード例は以下のとおりです。

func (s FilterServiceServer) FilterBulk(ctx context.Context, chatMessages *pb.ChatMessageBulk) (*pb.MessageBatchResult, error) {
result := &pb.MessageBatchResult{
Data: make([]*pb.MessageResult, len(chatMessages.GetMessages())),
}

for index, chatMessage := range chatMessages.GetMessages() {
action := pb.MessageResult_PASS
timestamp := chatMessage.GetTimestamp()
message := chatMessage.GetMessage()
if s.detector.IsProfane(chatMessage.GetMessage()) {
action = pb.MessageResult_CENSORED
timestamp = time.Now().Unix()
message = s.detector.Censor(message)
}
result.GetData()[index] = &pb.MessageResult{
Id: chatMessage.GetId(),
Timestamp: timestamp,
Action: action,
Classification: []pb.MessageResult_Classification{},
Message: message,
}
}

return result, nil
}
On this page