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. 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. Element lastModified 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.