Interfejs Google Play Developer Reply to Reviews API umożliwia wyświetlanie opinii użytkowników o aplikacji i odpowiadanie na nie. Za pomocą tego interfejsu API możesz wchodzić w interakcje z użytkownikami bezpośrednio w ramach istniejącego zestawu narzędzi do obsługi klienta, np. systemu CRM.
Interfejs Reply to Reviews API umożliwia dostęp do opinii tylko o wersjach produkcyjnych aplikacji. Jeśli chcesz wyświetlać opinie o wersjach alfa lub beta aplikacji, użyj Konsoli Google Play. Pamiętaj też, że interfejs API wyświetla tylko opinie, które zawierają komentarze. Jeśli użytkownik oceni Twoją aplikację, ale nie doda komentarza, jego opinia nie będzie dostępna w interfejsie API.
Uzyskiwanie dostępu
Aby korzystać z interfejsu Reply to Reviews API, musisz podać autoryzację za pomocą klienta OAuth lub konta usługi. Jeśli używasz konta usługi, włącz na nim uprawnienie „Odpowiadanie na opinie”. Więcej informacji o ustanawianiu autoryzowanego dostępu do tego interfejsu API znajdziesz w artykule Konfigurowanie klientów dostępu do interfejsu API.
Pobieranie opinii
Korzystając z interfejsu Reply to Reviews API, możesz pobrać listę wszystkich ostatnich opinii o aplikacji lub wyświetlić pojedynczą opinię.
Pobieranie zestawu opinii
Aby poprosić o listę opinii o aplikacji, użyj metody GET
. W żądaniu podaj w pełni kwalifikowaną nazwę pakietu aplikacji, np. com.google.android.apps.maps
, oraz token autoryzacji otrzymany podczas uzyskiwania dostępu do interfejsu API.
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token
Odpowiedź to ciąg znaków JSON zawierający listę opinii o Twojej aplikacji. Pierwszy wynik na liście to komentarz użytkownika, który został ostatnio utworzony lub zmodyfikowany.
W przykładzie poniżej pierwsza opinia zawiera metadane, które pojawiają się we wszystkich wynikach, a druga opinia zawiera metadane, które pojawiają się tylko w niektórych wynikach:
{ "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" } }
Każdy wynik zawiera te metadane:
- reviewId
- Jednoznacznie identyfikuje tę opinię. Wskazuje też opinię konkretnego użytkownika, ponieważ może on napisać tylko jedną opinię o danej aplikacji.
- authorName
Nazwa użytkownika, który napisał opinię.
Uwaga: w rzadkich przypadkach symbol
authorName
może nie pojawić się w danym wyniku.- komentarze
Lista zawierająca opinię użytkownika o aplikacji. Jeśli ta opinia zawiera tytuł, to tytuł i tekst opinii pojawiają się w elemencie
text
, a znak tabulacji oddziela tytuł od tekstu opinii. ElementlastModified
wskazuje czas, w którym użytkownik ostatnio przesłał opinię.Jeśli już odpowiedziano na tę opinię, Twoja odpowiedź pojawi się jako drugi element na liście komentarzy.
- starRating
Ocena aplikacji przez użytkownika w skali od 1 do 5. Wynik 5 oznacza, że użytkownik jest bardzo zadowolony z aplikacji.
Domyślnie na każdej stronie wyświetlanych jest 10 opinii. Możesz wyświetlać do 100 opinii na stronie, ustawiając w żądaniu parametr maxResults
.
Jeśli lista opinii jest kontynuowana na innej stronie, interfejs API uwzględnia w odpowiedzi element tokenPagination
. Gdy prosisz o następną stronę opinii, uwzględnij element token
. Ustaw wartość tego elementu na wartość nextPageToken
, która pojawia się w oryginalnej odpowiedzi.
Uwaga: możesz pobrać tylko opinie, które użytkownicy utworzyli lub zmodyfikowali w ciągu ostatniego tygodnia. Jeśli chcesz pobrać wszystkie opinie o swojej aplikacji od początku jej istnienia, możesz pobrać je jako plik CSV w Konsoli Google Play.
Poniższy przykład żądania GET
wyświetla następną stronę opinii. To żądanie zakłada, że bieżąca strona opinii (widoczna w odpowiedzi na poprzednie żądanie) zawiera wartość nextPageToken
równą "12334566"
. Żądanie wskazuje też, że na następnej stronie powinno się wyświetlać maksymalnie 50 opinii.
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&token=12334566&maxResults=50
Pobieranie pojedynczej opinii
Możesz też użyć metody GET
, aby pobrać pojedynczą opinię. Podaj ten sam adres URL, który został użyty do pobrania zestawu opinii, z tym wyjątkiem, że musisz też podać review_id
odpowiadający opinii, którą chcesz wyświetlić:
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/ review_id?access_token=your_auth_token
Odpowiedzią jest ciąg znaków JSON, który zawiera treść i metadane pojedynczej opinii:
{ "reviewId": "87654321", "authorName": "Joan Smith", "comments": [ { "userComment": { "text": "This app is awesome!", "lastModified": { "seconds": "1452114723", "nanos": 913000000 }, "starRating": 5 } } ] }
Tłumaczenie tekstu opinii
Tekst opinii może zostać automatycznie przetłumaczony przed zwróceniem przez interfejs Reviews API. Podczas pobierania listy opinii lub pojedynczej opinii dodaj do zapytania parametr translationLanguage
. Na przykład:
GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews? access_token=your_auth_token&translationLanguage=en
Parametr translationLanguage
może określać język z krajem lub bez niego. Prawidłowe są np. „en” i „en_GB”.
Jeśli określisz język tłumaczenia inny niż język oryginalnego tekstu, system zwróci przetłumaczony tekst we właściwości text
, a oryginalny tekst we właściwości originalText
. Oto przykład:
{ "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!" } } ] }
Odpowiadanie na opinie
Możesz też wchodzić w interakcje z użytkownikami aplikacji, odpowiadając na ich opinie. Gdy prześlesz odpowiedź, użytkownik otrzyma powiadomienie, że odniesiono się do jego opinii.
Odradzamy korzystanie z automatycznych odpowiedzi na opinie z zamiarem późniejszego ręcznego zaktualizowania tych odpowiedzi. Możesz odpowiadać na opinię dowolną liczbę razy, ale użytkownik otrzyma powiadomienie tylko za pierwszym razem, gdy odpowiesz na utworzoną lub zmodyfikowaną opinię. Poniższa tabela pokazuje, w jaki sposób użytkownik jest powiadamiany podczas interakcji z nim:
Interakcja użytkownika z deweloperem | Czy powiadomienie zostało wysłane do użytkownika? |
---|---|
Użytkownik pisze opinię, a deweloper przesyła odpowiedź | Tak |
Odpowiedź dewelopera na pierwotną opinię | Nie |
Użytkownik aktualizuje opinię, a deweloper aktualizuje odpowiedź | Tak |
Uwaga: Twoje odpowiedzi na opinie są widoczne publicznie na stronie aplikacji w sklepie z aplikacjami, dlatego podczas ich pisania nie podawaj informacji poufnych o użytkownikach.
Aby przesłać odpowiedź na opinię użytkownika, użyj metody POST
. W żądaniu wskaż, że Content-Type
ma wartość application/json
, i dołącz dokument JSON zawierający Twoją odpowiedź:
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!" }
Uwaga: parametr replyText
dołączony do żądania POST
może zawierać maksymalnie 350 znaków. W odpowiedzi używaj zwykłego tekstu. Prawidłowo sformatowane tagi HTML są usuwane i nie są uwzględniane w liczbie znaków odpowiedzi. Treści umieszczone w prawidłowo sformatowanych tagach HTML są jednak zachowywane.
Jeśli żądanie zostanie zrealizowane, otrzymasz w odpowiedzi ten ciąg tekstowy JSON.
Element lastEdited
wskazuje czas, w którym interfejs API rejestruje Twoją odpowiedź na opinię użytkownika.
{ "result": { "replyText": "Thanks for your feedback!", "lastEdited": { "seconds": "1453978803", "nanos": 796000000 } } }
Jeśli jednak POST
żądanie jest nieprawidłowe, w odpowiedzi wyświetli się jeden z tych kodów błędu:
400 Bad Reply Request
- Wartość
replyText
jest za długa lub nie ma jej w ogóle. 404 Not Found
- Opinia o podanym identyfikatorze
review_id
nie istnieje.
Limity
Aby ułatwić pracę innym deweloperom, interfejs Reply to Reviews API wymusza kilka limitów. Te limity są egzekwowane osobno w przypadku poszczególnych aplikacji:
GET
żądań (pobierania list opinii i pojedynczych opinii) – 200 na godzinę;POST
próśb (o odpowiedzi na opinie) – 2000 dziennie;
Jeśli Twoja aplikacja musi pobierać większą liczbę opinii lub na nie odpowiadać, niż dopuszczają te limity, wyślij prośbę o zwiększenie limitu aplikacji.