사용자 생성 콘텐츠의 중재
이 가이드에서는 게임 콘텐츠에 대한 조정 흐름을 만드는 데 사용할 수 있는 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"
}