API Google Play Developer Reply to Reviews позволяет просматривать отзывы пользователей о вашем приложении и отвечать на них. Вы можете использовать этот API для прямого взаимодействия с пользователями через существующий инструментарий поддержки клиентов, например, CRM-систему.
API Reply to Reviews позволяет получать доступ к отзывам только для рабочих версий вашего приложения. Если вы хотите увидеть отзывы об альфа- или бета-версиях приложения, используйте Google Play Console. Обратите внимание, что API показывает только отзывы с комментариями. Если пользователь оценивает ваше приложение, но не оставляет комментарий, его отзыв не будет доступен через API.
Получение доступа
Для работы с API «Ответить на отзывы» необходимо авторизоваться с помощью клиента OAuth или сервисной учётной записи. Если вы используете сервисную учётную запись, включите разрешение «Ответить на отзывы» в этой учётной записи. Подробнее об установке авторизованного доступа к этому API см. в разделе «Настройка клиентов доступа к API» .
Получение отзывов
При использовании 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
может не отображаться в данном результате.- комментарии
Список отзывов пользователя о приложении. Если у отзыва есть заголовок, то он и основной текст отзыва отображаются в
text
элементе, а символ табуляции разделяет заголовок и основной текст. ЭлементlastModified
указывает время, когда пользователь последний раз оставил свой отзыв.Если вы уже ответили на этот отзыв, ваш отзыв появится вторым элементом в списке комментариев.
- starRating
Оценка вашего приложения пользователем по шкале от 1 до 5. Оценка 5 означает, что пользователь очень доволен вашим приложением.
По умолчанию на каждой странице отображается 10 отзывов. Вы можете отображать до 100 отзывов на странице, установив параметр maxResults
в запросе.
Если список отзывов продолжается на другой странице, API включает в ответ элемент tokenPagination
. При запросе следующей страницы отзывов включите элемент token
. Установите значение этого элемента равным значению nextPageToken
, которое указано в исходном ответе.
Примечание: Вы можете получить только те отзывы, которые пользователи создали или изменили за последнюю неделю. Если вы хотите получить все отзывы о вашем приложении с начала его существования, вы можете загрузить их в виде CSV-файла через Google Play Console.
Следующий пример 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
для получения отдельного отзыва. Вы указываете тот же URL, что и для получения набора отзывов , но добавляете идентификатор review_id
, соответствующий нужному отзыву:
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 } } ] }
Перевод текста обзора
Текст отзыва может быть автоматически переведен перед возвратом из 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!" }
Примечание: replyText
, который вы включаете в POST
запрос, может содержать не более 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
не существует.
Квоты
В знак уважения к другим разработчикам API Reply to Reviews устанавливает несколько квот. Эти квоты применяются отдельно для каждого приложения:
GET
-запросы (для получения списков отзывов и отдельных отзывов) – 200 в часPOST
-запросы (для ответа на отзывы) – 2000 в день
Если вашему приложению необходимо получать или отвечать на большее количество отзывов, чем позволяют эти квоты, отправьте запрос на увеличение квоты вашего приложения.