ユーザー生成コンテンツのモデレート
このガイドでは、ゲーム内コンテンツのモデレーション フローを作成するために使用できる API 呼び出しについて説明します。
アイテムを報告する
プレイヤーは、クライアントから ReportItem
API を呼び出すことによってアイテムを報告することができます。 アイテム Id
または AlernateId
を指定する必要があります。 追加の 省略可能なパラメーターを追加することができます。 以下に例を示します。
-
ConcernCategory
: レポートの懸念事項のカテゴリ -
Reason
: レポートのフリー テキスト入力
リクエストの本文の例を次に示します。
{
"Id": "3f5dd8d4-4ee1-4748-8855-56a8a0277bf9"
"ConcernCategory": "Profanity",
"Reason": "There was swearing in the description."
}
指定しない場合、ConcernCategory
の既定値は None
になります。 有効な ConcernCategory
値は次のとおりです。
None
OffensiveContent
ChildExploitation
MalwareOrVirus
PrivacyConcerns
MisleadingApp
PoorPerformance
ReviewResponse
SpamAdvertising
Profanity
ReportItem
API の呼び出しは、イベント名、item_reported
の下の PlayStream イベントでのみ発生します。 これは、ゲーム マネージャー内にある データ エクスプローラーを使用してクエリできます。 クエリの例を次に示します。
次のクエリは、過去 3 日間の ItemId ごとの ConcernCategory によるレポートの総数を返します
['events.all']
| where Timestamp > ago (3d)
| where FullName_Name == "item_reported"
| project ItemId = tostring(EventData.Payload.ItemId), ConcernCategory = tostring(EventData.Payload.ConcernCategory)
| summarize TotalReportCount = count() by ItemId, ConcernCategory
| sort by TotalReportCount desc
| render columnchart kind=stacked
次のクエリは、過去 3 日間で特定の ItemId に対して送信されたすべてのレポートを返します。
['events.all']
| where Timestamp > ago (3d)
| where FullName_Name == "item_reported"
| where EventData.Payload.ItemId == "3f5dd8d4-4ee1-4748-8855-56a8a0277bf9"
| project Timestamp, ItemId = tostring(EventData.Payload.ItemId), ConcernCategory = tostring(EventData.Payload.ConcernCategory), Reason = tostring(EventData.Payload.Reason), ReportingPlayer = Entity_Id
| sort by Timestamp
アイテムのモデレーション状態を変更する
SetItemModerationState
API を使用して、発行済みアイテムのモデレーションの状態を変更することができます。
Approved
以外の状態のアイテムは、すべてのプレイヤーを対象として公開カタログでアクセスできなくなります。 アイテムの作成者は、GetItem
および GetDraftItems
の API を使用して引き続きアイテムにアクセスできます。
タイトル エンティティおよび管理者は、SearchItems
、GetDraftItems
、GetItem
を介して承認されていないアイテムを表示することができます。
この API は、タイトル エンティティのみが呼び出すことができます。 アイテム Id
または AlernateId
および Status
を指定する必要があります。
省略可能なReason
自由テキスト パラメーターを追加することもできます。 サービスの呼び出しは以下のようになります。
{
"Status": "AwaitingModeration",
"Reason": "User reports over threshold",
"Id": "3f5dd8d4-4ee1-4748-8855-56a8a0277bf9"
}
既定では、発行済みアイテムにモデレーション状態は設定されていません。 下書きアイテムを再発行しても、モデレーションの状態は変更されません。 有効な Status
値は次のとおりです。
AwaitingModeration
Approved
Rejected
次のクエリは、過去 3 日間における AwaitingModeration
状態のすべてのアイテムを返します。
let TimeRange = ago(3d);
['events.all']
| where Timestamp > TimeRange
| where FullName_Name == "item_moderation_state_changed"
| project Timestamp, ItemId = tostring(EventData.Payload.ItemId)
| summarize MaxTimestamp = max(Timestamp) by ItemId
| extend TimeAndId = strcat(MaxTimestamp, "|", ItemId)
| join kind = leftouter (
['events.all']
| where Timestamp > TimeRange
| where FullName_Name == "item_moderation_state_changed"
| project Timestamp, ItemId = tostring(EventData.Payload.ItemId), TargetStatus = tostring(EventData.Payload.TargetStatus), Reason = tostring(EventData.Payload.Reason)
| extend TimeAndId = strcat(Timestamp, "|", ItemId)) on TimeAndId
| project Timestamp, ItemId, TargetStatus, Reason
| where TargetStatus == "AwaitingModeration"
項目を削除する
アイテムは、DeleteItem
API を呼び出すことによって削除できます。 この呼び出しは下書きカタログからアイテムを削除し、対応するアイテムを公開カタログから削除します (公開されている場合)。 アイテム Id
または AlernateId
を指定する必要があります。
{
"Id": "852a2d2b-7754-427e-9ad4-fce2b24a4cef"
}