Odpowiadanie na opinie

Interfejs Google Play Developer Reply to Reviews API umożliwia wyświetlanie opinii użytkowników o aplikacji i odpowiadanie na nie. Możesz używać tego interfejsu API do bezpośredniej interakcji z użytkownikami w ramach dotychczasowego zestawu narzędzi do obsługi klienta, np. systemu CRM.

Interfejs Reply to Reviews API daje Ci dostęp tylko do opinii o produkcyjnych wersjach aplikacji. Jeśli chcesz zobaczyć opinie na temat wersji alfa lub beta swojej aplikacji, użyj Konsoli Google Play. Pamiętaj też, że interfejs API pokazuje tylko opinie z komentarzami. Jeśli użytkownik oceni aplikację, ale nie doda komentarza, jego opinia nie będzie dostępna przez interfejs API.

Uzyskiwanie dostępu

Aby korzystać z interfejsu Reply to Reviews API, musisz dokonać autoryzacji 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 uzyskiwaniu autoryzowanego dostępu do tego interfejsu API znajdziesz w artykule o konfigurowaniu klientów dostępu do interfejsu API.

Pobieranie opinii

Korzystając z interfejsu Reply to Reviews API, możesz pobrać listę wszystkich najnowszych opinii o swojej aplikacji lub wyświetlić pojedynczą opinię.

Pobieranie zestawu opinii

Użyj metody GET, aby poprosić o listę opinii o aplikacji. W żądaniu podaj pełną i jednoznaczną 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ź jest ciągiem tekstowym JSON zawierającym listę opinii o aplikacji. Pierwszy wynik na liście zawiera ostatnio utworzony lub zmodyfikowany komentarz użytkownika.

W poniższym przykładzie pierwsza opinia zawiera metadane pojawiające się we wszystkich wynikach, a druga – 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 daną opinię. Pokazuje on też opinię konkretnego użytkownika, ponieważ może napisać tylko jedną opinię o danej aplikacji.
authorName

Nazwa użytkownika, który pisze opinię.

Uwaga: czasami authorName może nie pojawiać się w danym wyniku.

comments

Lista z opinią użytkownika o aplikacji. Jeśli opinia zawiera tytuł, ten tytuł i treść opinii pojawią się w elemencie text, a znak tabulacji oddzieli tytuł i treść opinii. Element lastModified wskazuje godzinę, o której użytkownik ostatnio przesłał swoją opinię.

Jeśli Twoja opinia została już przez Ciebie przesłana, 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świetla się 10 opinii. Możesz wyświetlić maksymalnie 100 opinii na stronę, ustawiając w żądaniu parametr maxResults.

Jeśli lista opinii jest kontynuowana na innej stronie, interfejs API zawiera w odpowiedzi element tokenPagination. Gdy zgłaszasz prośbę o wyświetlenie następnej strony z opiniami, uwzględnij element token. Ustaw wartość tego elementu na wartość nextPageToken, która występuje w pierwotnej odpowiedzi.

Uwaga: możesz pobrać tylko opinie utworzone lub zmodyfikowane przez użytkowników w ciągu ostatniego tygodnia. Jeśli chcesz pobrać wszystkie opinie o swojej aplikacji od początku, możesz je pobrać w pliku CSV w Konsoli Google Play.

Poniższy przykład żądania GET wyświetla następną stronę opinii. W tym żądaniu zakładamy, że bieżąca strona z opiniami (jak podano w odpowiedzi na poprzednie żądanie) zawiera wartość nextPageToken o wartości "12334566". Żądanie wskazuje też, że na następnej stronie powinno wyświetlać się 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

Aby pobrać pojedynczą opinię, możesz też użyć metody GET. Podajesz ten sam adres URL, który został użyty do pobierania zbioru opinii, z tą różnicą, że uwzględniasz też review_id odpowiadający opinii, którą chcesz zobaczyć:

GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/
review_id?access_token=your_auth_token

Odpowiednia odpowiedź to ciąg znaków JSON zawierający treści i metadane dotyczące 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

Zanim tekst opinii zostanie zwrócony z interfejsu Reviews API, może zostać przetłumaczony automatycznie. Podczas pobierania listy 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. np. „en” i „en_GB”.

Jeśli określisz język tłumaczenia, który jest inny niż oryginalny, 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ż zaangażować użytkowników swojej aplikacji, odpowiadając na ich opinie. Gdy prześlesz odpowiedź, użytkownik otrzyma powiadomienie z informacją, że na niego odpowiedziałeś.

Odradzamy korzystanie z automatycznych odpowiedzi na opinie z zamiarem ręcznego aktualizowania tych odpowiedzi w późniejszym czasie. Możesz na nią odpowiedzieć dowolną liczbę razy, ale użytkownik otrzymuje powiadomienie dopiero po pierwszej Twojej odpowiedzi na utworzoną lub zmodyfikowaną opinię. Tabela poniżej pokazuje, w jaki sposób użytkownik jest powiadamiany w trakcie Twoich interakcji:

Interakcja użytkownika z programistą Wysłano powiadomienie do użytkownika?
Użytkownik pisze opinię, deweloper przesyła odpowiedź Tak
Aktualizacje dla deweloperów odpowiadają na oryginalną opinię No
Opinie użytkowników, aktualizacje dla deweloperów Tak

Uwaga: Twoje odpowiedzi na opinie są widoczne publicznie na stronie sklepu z aplikacjami, dlatego podczas pisania tych odpowiedzi nie podawaj żadnych informacji poufnych o użytkownikach.

Aby przesłać odpowiedź na opinię użytkownika, użyj metody POST. W swoim żądaniu wskaż, że Content-Type to 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: pole replyText dołączone do żądania POST może zawierać maksymalnie 350 znaków. W odpowiedzi użyj zwykłego tekstu. Poprawne tagi HTML są usuwane i nie są uwzględniane w liczbie znaków. Jednak treść umieszczana w tagach HTML o prawidłowym formacie jest zachowywana.

Jeśli żądanie zostanie zrealizowane, otrzymasz w odpowiedzi ten ciąg JSON. Element lastEdited wskazuje czas, kiedy interfejs API rejestruje Twoją odpowiedź na opinię użytkownika.

{
  "result": {
    "replyText": "Thanks for your feedback!",
    "lastEdited": {
      "seconds": "1453978803",
      "nanos": 796000000
    }
  }
}

Jeśli jednak żądanie POST jest nieprawidłowe, w odpowiedzi wyświetli się jeden z tych kodów błędów:

400 Bad Reply Request
replyText jest za długi lub nie ma go w ogóle.
404 Not Found
Opinia o podanym elemencie review_id nie istnieje.

Limity

Aby ułatwić pracę innym deweloperom, interfejs Reply to Reviews API wymusza kilka limitów. Limity te obowiązują oddzielnie dla poszczególnych aplikacji:

  • GET żądań (do pobierania list opinii i pojedynczych opinii) – 200 na godzinę

  • POST żądań (za odpowiadanie na opinie) – 2000 dziennie

Jeśli Twoja aplikacja musi uzyskać dostęp do większej liczby opinii lub odpowiedzieć na nie, wysyłając prośbę o zwiększenie limitu.