> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ユーザー生成コンテンツのモデレーション

> ReportItem およびレビュー API を使用して PlayFab Economy v2 で UGC モデレーション フローを構築し、不適切なユーザー生成コンテンツをフラグ付け、レビュー、削除します。

このガイドでは、ゲーム内のコンテンツのモデレーション フローを作成するために使用できる API 呼び出しについて説明します。

## アイテムを報告する

プレイヤーは、クライアントから `ReportItem` API を呼び出してアイテムを報告できます。アイテムの `Id` または `AlernateId` を指定する必要があります。追加の **任意** のパラメーターを追加できます。以下を含みます。

* `ConcernCategory`: 報告の懸念のカテゴリ
* `Reason`: 報告のための自由記述テキスト入力

サンプル リクエスト本文は次のとおりです。

```json theme={null}
{
  "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 イベント **のみ** が発生します。これは Game Manager の [Data Explorer](/services/playfab/data-analytics/learn-data/data-explorer/getting-started-with-data-explorer-basic) を使用してクエリできます。以下にクエリの例を示します。

次のクエリは、**過去 3 日間の ItemId ごとの ConcernCategory による報告の合計数** を返します。

```kusto theme={null}
['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 に対して送信されたすべての報告** を返します。

```kusto theme={null}
['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 を使用してアイテムに引き続きアクセスできます。**Title Entity** と **管理者** は、`SearchItems`、`GetDraftItems`、および `GetItem` を通じて非承認アイテムを表示できます。

この API は **title entity** のみが呼び出せます。アイテムの `Id` または `AlernateId` と `Status` を指定する必要があります。**任意** の `Reason` 自由記述テキスト パラメーターを追加することもできます。サービス呼び出しとして、これは次のようになります。

```json theme={null}
{
  "Status": "AwaitingModeration",
  "Reason": "User reports over threshold",
  "Id": "3f5dd8d4-4ee1-4748-8855-56a8a0277bf9"
}
```

デフォルトでは、公開されたアイテムにはモデレーション ステータスはありません。下書きアイテムを再公開しても、モデレーション ステータスは **変更されません**。有効な `Status` の値は次のとおりです。

* `AwaitingModeration`
* `Approved`
* `Rejected`

次のクエリは、**過去 3 日間で現在 `AwaitingModeration` ステータスにあるすべてのアイテム** を返します。

```kusto theme={null}
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` を指定する必要があります。

```json theme={null}
{
  "Id": "852a2d2b-7754-427e-9ad4-fce2b24a4cef"
}
```


## Related topics

- [XR-018 ユーザー生成コンテンツ](/ja-jp/publishing/certification/xr/xr-018.md)
- [PlayFab ユーザー生成コンテンツ](/ja-jp/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [PlayFab Economy v2 ドキュメント](/ja-jp/services/playfab/economy-monetization/index.md)
- [FMA: XR-018 ユーザー生成コンテンツ](/ja-jp/publishing/certification/fma/xr-018.md)
- [最初のユーザー生成コンテンツを公開する](/ja-jp/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc.md)
