次の方法で共有


ユーザー生成コンテンツのモデレート

このガイドでは、ゲーム内コンテンツのモデレーション フローを作成するために使用できる 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 を使用して引き続きアイテムにアクセスできます。 タイトル エンティティおよび管理者は、SearchItemsGetDraftItemsGetItem を介して承認されていないアイテムを表示することができます。

この 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"
}