Google Play Developer Reply to Reviews API를 사용하면 앱에 관한 사용자 의견을 확인하고 의견에 답할 수 있습니다. 이 API를 사용하여 CRM 시스템과 같은 기존 고객 지원 도구에서 직접 사용자와 상호작용할 수 있습니다.
Reply to Reviews API를 사용하면 앱의 프로덕션 버전에 관한 의견에만 액세스할 수 있습니다. 앱의 알파 또는 베타 버전에 관한 의견을 보려면 Google Play Console을 사용하세요. 또한 API는 의견이 포함된 리뷰만 표시합니다. 사용자가 앱을 평가하지만 의견을 제공하지 않은 경우 API에서 의견에 액세스할 수 없습니다.
액세스 권한 얻기
Reply to Reviews API를 사용하려면 OAuth 클라이언트 또는 서비스 계정을 사용하여 승인을 제공해야 합니다. 서비스 계정을 사용하는 경우 이 계정에서 '리뷰에 답하기' 권한을 사용 설정합니다. 이 API에 대한 승인된 액세스 권한 설정에 관한 자세한 내용은 API 액세스 클라이언트 설정을 참고하세요.
리뷰 가져오기
Reply to Reviews API를 사용하면 앱의 모든 최근 리뷰 목록을 가져오거나 개별 리뷰를 볼 수 있습니다.
리뷰 목록 가져오기
GET
메서드를 사용하여 앱의 리뷰 목록을 요청합니다. 요청에는 앱의 정규화된 패키지 이름(예: com.google.android.apps.maps
)과 API에 대한 액세스 권한을 얻을 때 받은 승인 토큰을 포함합니다.
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token
응답은 앱의 리뷰 목록을 포함하는 JSON 문자열입니다. 목록의 첫 번째 결과에는 가장 최근에 작성되거나 수정된 사용자 의견이 표시됩니다.
다음 예에서 첫 번째 리뷰는 모든 검색결과에 표시되는 메타데이터를 보여주고 두 번째 리뷰는 일부 결과에만 표시되는 메타데이터를 보여줍니다.
{ "reviews": [ { "reviewId": "12345678", "authorName": "Jane Bloggs", "comments": [ { "userComment": { "text": "This is the best app ever!", "lastModified": { "seconds": "1443676826", "nanos": 713000000 }, "starRating": 5 } } ] }, { "reviewId": "11223344", "authorName": "John Doe", "comments": [ { "userComment": { "text": "I love using this app!", "lastModified": { "seconds": "141582134", "nanos": 213000000 }, "starRating": 5, "reviewerLanguage": "en", "device": "trltecan", "androidOsVersion": 21, "appVersionCode": 12345, "appVersionName": "1.2.3", "thumbsUpCount": 10, "thumbsDownCount": 3, "deviceMetadata": { "productName": "E5333 (Xperia™ C4 Dual)", "manufacturer": "Sony", "deviceClass": "phone", "screenWidthPx": 1080, "screenHeightPx": 1920, "nativePlatform": "armeabi-v7a,armeabi,arm64-v8a", "screenDensityDpi": 480, "glEsVersion": 196608, "cpuModel": "MT6752", "cpuMake": "Mediatek", "ramMb": 2048 } } }, { "developerComment": { "text": "That's great to hear!", "lastModified": { "seconds": "1423101467", "nanos": 813000000 } } } ] } ], "tokenPagination": { "nextPageToken": "12334566" } }
각 결과에는 다음 메타데이터가 포함됩니다.
- reviewId
- 이 리뷰를 고유하게 식별합니다. 또한 사용자가 특정 앱에 관한 리뷰를 하나만 작성할 수 있으므로 특정 사용자의 리뷰를 나타내기도 합니다.
- authorName
리뷰를 작성한 사용자의 이름입니다.
참고: 드물지만 결과에
authorName
이 표시되지 않을 수 있습니다.- comments
앱에 관한 사용자 의견이 포함된 목록입니다. 이 리뷰에 제목이 포함된 경우 제목과 리뷰 본문의 텍스트 모두
text
요소에 표시되며 탭 문자로 제목과 본문 텍스트를 구분합니다.lastModified
요소는 사용자가 리뷰를 제출한 가장 최근 시간을 나타냅니다.이미 이 리뷰에 응답했다면 응답한 의견은 의견 목록의 두 번째 요소로 표시됩니다.
- starRating
앱에 관한 사용자 평가로, 1~5점 범위입니다. 5점은 사용자가 앱에 매우 만족함을 나타냅니다.
기본적으로 각 페이지에 10개의 리뷰가 표시됩니다. 요청에서 maxResults
매개변수를 설정하여 페이지당 최대 100개의 리뷰를 표시할 수 있습니다.
리뷰 목록이 다른 페이지로 계속 이어지는 경우 API는 응답에 tokenPagination
요소를 포함합니다. 다음 리뷰 페이지를 요청할 때 token
요소를 포함하고 이 요소의 값을 원래 응답에 표시된 nextPageToken
값으로 설정합니다.
참고: 사용자가 지난 한 주 동안에 생성했거나 수정한 리뷰만 가져올 수 있습니다. 앱 리뷰를 처음부터 모두 가져오려면 Google Play Console을 사용하여 리뷰를 CSV 파일로 다운로드하면 됩니다.
아래의 GET
요청 예는 다음 리뷰 페이지를 표시합니다. 요청에서는 이전 요청의 응답에서 보는 바와 같이 현재 리뷰 페이지의 nextPageToken
값이 "12334566"
이라고 가정합니다. 또한 이 요청은 다음 페이지에 최대 50개의 리뷰가 표시되어야 함을 나타냅니다.
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&token=12334566&maxResults=50
개별 리뷰 가져오기
GET
메서드를 사용하여 개별 리뷰를 가져올 수도 있습니다. 확인하려는 리뷰의 review_id
도 포함하는 것을 제외하고는 리뷰 목록을 가져올 때 사용했던 URL과 같은 URL을 사용합니다.
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/ review_id?access_token=your_auth_token
이에 대한 응답은 단일 리뷰의 콘텐츠와 메타데이터가 포함된 JSON 문자열입니다.
{ "reviewId": "87654321", "authorName": "Joan Smith", "comments": [ { "userComment": { "text": "This app is awesome!", "lastModified": { "seconds": "1452114723", "nanos": 913000000 }, "starRating": 5 } } ] }
리뷰 텍스트 번역
Reviews API에서 리뷰 텍스트를 반환하기 전에 자동으로 번역할 수 있습니다. 리뷰 목록 또는 단일 리뷰를 가져올 때 쿼리에 translationLanguage
매개변수를 추가하면 됩니다. 예:
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&translationLanguage=en
translationLanguage
매개변수는 국가 표시 여부와 관계없이 언어를 지정할 수 있습니다. 예를 들어, 'en' 및 'en_GB' 모두 유효합니다.
원본 텍스트와 다른 번역 언어를 지정하면 시스템은 text
속성에 번역된 텍스트를, originalText
속성에 원본 텍스트를 반환합니다. 예를 들면 다음과 같습니다.
{ "reviewId": "12345678", "authorName": "Jane Bloggs", "comments": [ { "userComment": { "text": "This is the best app ever!", "lastModified": { "seconds": "1443676826", "nanos": 713000000 }, "starRating": 5, "originalText": "Dies ist die beste App überhaupt!" } } ] }
리뷰에 답하기
리뷰에 답변을 달아 앱 사용자와 소통할 수도 있습니다. 답변을 제출하면 사용자는 의견에 관한 응답이 있다는 알림을 수신합니다.
추후 이러한 응답을 수동으로 업데이트하기 위해 리뷰에 자동 답장을 사용하는 건 권장하지 않습니다. 또한 개발자는 원하는 횟수만큼 리뷰에 답을 할 수 있지만, 사용자는 개발자가 작성 또는 수정된 리뷰에 처음 답을 한 후에만 알림을 받습니다. 다음 표는 개발자가 사용자와 상호작용하는 동안 사용자에게 알림이 전송되는지 여부를 보여줍니다.
사용자-개발자 상호작용 | 사용자에게 알림이 전송되나요? |
---|---|
사용자가 리뷰를 작성하고 개발자가 답변을 제출함 | 예 |
개발자가 원본 리뷰에 대한 답변을 업데이트함 | 아니요 |
사용자가 리뷰를 업데이트하고 개발자가 답변을 업데이트함 | 예 |
참고: 리뷰에 대한 답변은 앱 스토어 페이지에 공개되므로 답변을 작성할 때 사용자에 관한 민감한 정보를 포함하지 않는 것이 중요합니다.
사용자 리뷰에 답변을 제출하려면 POST
메서드를 사용합니다. 요청에 Content-Type
이 application/json
임을 표시하고 답변이 포함된 JSON 문서를 포함합니다.
POST https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/ review_id:reply?access_token=your_access_token Content-Type: application/json { "replyText": "Thanks for your feedback!" }
참고: POST
요청과 함께 포함되는 replyText
는 최대 350자(영문 기준)까지 포함할 수 있습니다. 답변에는 일반 텍스트를 사용해야 합니다. 올바른 형식의 HTML 태그는 삭제되며 답변의 문자 수에 포함되지 않습니다. 그러나 올바른 형식의 HTML 태그 안에 배치한 콘텐츠는 그대로 유지됩니다.
요청이 성공하면 다음 JSON 문자열을 응답으로 수신합니다.
lastEdited
요소는 API에서 사용자 리뷰에 대한 답변을 기록한 시간을 나타냅니다.
{ "result": { "replyText": "Thanks for your feedback!", "lastEdited": { "seconds": "1453978803", "nanos": 796000000 } } }
그러나 POST
요청이 유효하지 않은 경우 응답에 다음 오류 코드 중 하나가 표시됩니다.
400 Bad Reply Request
replyText
가 너무 길거나 누락되었습니다.404 Not Found
- 지정된
review_id
를 가진 리뷰가 없습니다.
할당량
다른 개발자들을 고려하여 Reply to Reviews API에서는 여러 가지 할당량을 적용합니다. 이러한 할당량은 앱별로 적용됩니다.
GET
요청(리뷰 목록 및 개별 리뷰 가져오기): 시간당 200회POST
요청(리뷰에 답하기): 하루 2,000회
앱이 이 할당량 한도를 초과하여 더 많은 리뷰를 가져오거나 리뷰에 답해야 하는 경우 요청을 전송하여 앱 할당량을 늘리세요.