Trả lời bài đánh giá

API Trả lời bài đánh giá dành cho nhà phát triển trên Google Play cho phép bạn xem phản hồi của người dùng cho ứng dụng của bạn và trả lời phản hồi này. Bạn có thể sử dụng API này để tương tác với người dùng ngay trong bộ công cụ hỗ trợ khách hàng hiện tại của bạn, chẳng hạn như CRM hệ thống.

Reply to Reviews API chỉ cho phép bạn truy cập vào phản hồi dành cho bản phát hành công khai các phiên bản ứng dụng của bạn. Nếu bạn muốn xem phản hồi về phiên bản alpha hoặc beta của ứng dụng của bạn, hãy sử dụng Google Play Console. Ngoài ra, xin lưu ý rằng API chỉ hiển thị những bài đánh giá có nhận xét. Nếu người dùng xếp hạng ứng dụng của bạn nhưng không đưa ra nhận xét, không thể truy cập phản hồi của họ từ API.

Giành được quyền truy cập

Để làm việc với Reply to Reviews API, bạn cấp quyền bằng cách sử dụng Ứng dụng OAuth hoặc tài khoản dịch vụ. Nếu bạn đang sử dụng tài khoản dịch vụ, hãy bật "Trả lời bài đánh giá" quyền trong tài khoản này. Để biết thêm thông tin về thiết lập quyền truy cập được cấp phép vào API này, hãy xem Thiết lập ứng dụng truy cập API.

Truy xuất bài đánh giá

Khi sử dụng Reply to Reviews API, bạn có thể truy xuất danh sách tất cả các bài đánh giá cho ứng dụng của mình hoặc bạn có thể xem từng bài đánh giá.

Truy xuất một nhóm các bài đánh giá

Sử dụng phương thức GET để yêu cầu danh sách các bài đánh giá cho ứng dụng. Trong yêu cầu của bạn, đưa vào tên gói đủ điều kiện cho ứng dụng của bạn, chẳng hạn như com.google.android.apps.maps – và mã thông báo uỷ quyền bạn nhận được khi có được quyền truy cập vào API.

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

Phản hồi là một chuỗi JSON chứa danh sách các bài đánh giá về ứng dụng của bạn. Chiến lược phát hành đĩa đơn kết quả đầu tiên trong danh sách hiển thị bình luận của người dùng được tạo gần đây nhất hoặc được sửa đổi.

Trong ví dụ sau, bài đánh giá đầu tiên cho thấy siêu dữ liệu xuất hiện trong tất cả kết quả và lần xem xét thứ hai cho thấy siêu dữ liệu chỉ xuất hiện trong một số kết quả:

{
  "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"
  }
}

Mỗi kết quả đều có siêu dữ liệu sau:

reviewId
Xác định duy nhất bài đánh giá này. Nó cũng cho biết một người dùng cụ thể bài đánh giá, vì người dùng chỉ có thể viết một bài đánh giá cho một ứng dụng cụ thể.
authorName

Tên của người dùng viết bài đánh giá.

Lưu ý: Trong một số ít trường hợp, authorName có thể không xuất hiện trong kết quả nhất định.

comments

Danh sách bao gồm phản hồi của người dùng về ứng dụng. Nếu trường hợp này bài đánh giá bao gồm tiêu đề, thì tiêu đề này và văn bản nội dung của bài đánh giá đều xuất hiện trong phần tử text và ký tự thẻ sẽ phân tách tiêu đề và văn bản nội dung. Phần tử lastModified cho biết thời điểm người dùng sử dụng gần đây nhất gửi bài đánh giá của họ.

Nếu bạn đã trả lời bài đánh giá này thì phản hồi của bạn sẽ xuất hiện dưới dạng phần tử thứ hai trong danh sách nhận xét.

starRating

Đánh giá của người dùng về ứng dụng của bạn trên thang điểm từ 1 đến 5. Điểm số 5 cho biết rằng người dùng rất hài lòng với ứng dụng của bạn.

Theo mặc định, 10 bài đánh giá sẽ xuất hiện trên mỗi trang. Bạn có thể hiện tối đa 100 bài đánh giá trên mỗi trang bằng cách đặt thông số maxResults trong yêu cầu của bạn.

Nếu danh sách các bài đánh giá tiếp tục xuất hiện trên một trang khác, API sẽ bao gồm một thẻ Phần tử tokenPagination trong phản hồi. Khi yêu cầu trang tiếp theo của các bài đánh giá, hãy thêm phần tử token. Đặt giá trị của phần tử này thành Giá trị nextPageToken xuất hiện trong phản hồi ban đầu.

Lưu ý: Bạn chỉ có thể truy xuất các bài đánh giá mà người dùng đã tạo hoặc được sửa đổi trong tuần qua. Nếu bạn muốn truy xuất tất cả các bài đánh giá cho ứng dụng của bạn ngay từ đầu, bạn có thể tải xuống bài đánh giá dưới dạng tệp CSV bằng Google Play Console.

Ví dụ sau đây về yêu cầu GET hiển thị trang tiếp theo của bài đánh giá. Chiến dịch này yêu cầu giả định rằng trang hiện tại của các bài đánh giá (như được thể hiện trong phản hồi của yêu cầu trước) chứa giá trị nextPageToken"12334566". Chiến lược phát hành đĩa đơn yêu cầu cũng cho biết rằng trang tiếp theo sẽ hiển thị tối đa 50 bài đánh giá.

GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews?
access_token=your_auth_token&token=12334566&maxResults=50

Truy xuất từng bài đánh giá

Bạn cũng có thể sử dụng phương thức GET để truy xuất từng bài đánh giá. Bạn cung cấp chính là URL dùng cho truy xuất một nhóm các bài đánh giá, ngoại trừ việc bạn cũng bao gồm review_id tương ứng với bài đánh giá bạn muốn xem:

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

Phản hồi tương ứng là một chuỗi JSON chứa nội dung và siêu dữ liệu cho một bài đánh giá:

{
  "reviewId": "87654321",
  "authorName": "Joan Smith",
  "comments": [
    {
      "userComment": {
        "text": "This app is awesome!",
        "lastModified": {
          "seconds": "1452114723",
          "nanos": 913000000
        },
        "starRating": 5
      }
    }
  ]
}

Dịch văn bản bài đánh giá

Văn bản đánh giá có thể được dịch tự động trước khi được trả về từ API bài đánh giá. Khi truy xuất một danh sách các bài đánh giá hoặc một bài đánh giá, hãy thêm tham số translationLanguage vào truy vấn. Ví dụ:

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

Tham số translationLanguage có thể chỉ định ngôn ngữ có hoặc không có quốc gia. Ví dụ: cả "vi" và "en_GB" đều hợp lệ.

Nếu bạn chỉ định ngôn ngữ bản dịch khác với ngôn ngữ gốc thì hệ thống sẽ trả về văn bản đã dịch trong thuộc tính text và văn bản gốc trong thuộc tính originalText. Ví dụ:

    {
      "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!"
          }
        }
      ]
    }

Trả lời bài đánh giá

Bạn cũng có thể tương tác với người dùng ứng dụng bằng cách trả lời bài đánh giá của họ. Sau bạn gửi nội dung trả lời, người dùng sẽ nhận được thông báo cho biết rằng bạn đã trả lời phản hồi của họ.

Chúng tôi không khuyến khích việc sử dụng tính năng trả lời tự động cho bài đánh giá, với ý định là cập nhật các câu trả lời đó theo cách thủ công sau đó. Ngoài ra, mặc dù bạn có thể trả lời bài đánh giá bao nhiêu lần tuỳ thích, người dùng chỉ nhận được thông báo sau lần đầu tiên bạn trả lời bài đánh giá đã tạo hoặc sửa đổi. Nội dung sau đây minh hoạ cách người dùng nhận được thông báo trong khi bạn tương tác với họ:

Tương tác người dùng-nhà phát triển Đã gửi thông báo cho người dùng?
Người dùng viết bài đánh giá; nhà phát triển gửi câu trả lời
Nội dung cập nhật dành cho nhà phát triển trả lời bài đánh giá gốc Không
Xem xét nội dung cập nhật của người dùng; trả lời tin cập nhật của nhà phát triển

Lưu ý: Vì câu trả lời của bạn cho bài đánh giá xuất hiện công khai trên trang cửa hàng ứng dụng, điều quan trọng là bạn không bao gồm thông tin nhạy cảm về người dùng khi bạn viết những câu trả lời này.

Để gửi câu trả lời cho bài đánh giá của người dùng, hãy sử dụng phương thức POST. Trong yêu cầu của bạn, cho biết Content-Typeapplication/json và bao gồm một JSON tài liệu chứa thư trả lời của bạn:

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!"
}

Lưu ý: replyText mà bạn đưa vào cùng với Yêu cầu POST có thể chứa tối đa 350 ký tự. Bạn nên dùng văn bản thuần tuý trong thư trả lời; các thẻ HTML có định dạng hợp lệ sẽ bị xoá và không bao gồm trong số ký tự cho câu trả lời của bạn. Nội dung mà bạn đặt tuy nhiên, bên trong các thẻ HTML được định dạng đúng vẫn được giữ nguyên.

Nếu yêu cầu thành công thì bạn sẽ nhận được chuỗi JSON sau đây dưới dạng phản hồi. Phần tử lastEdited cho biết thời điểm API ghi lại câu trả lời của bạn đối với bài đánh giá của người dùng.

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

Tuy nhiên, nếu yêu cầu POST của bạn không hợp lệ thì phản hồi sẽ hiển thị một trong sau đây là các mã lỗi:

400 Bad Reply Request
replyText quá dài hoặc bị thiếu.
404 Not Found
Bài đánh giá có review_id cho trước không tồn tại.

Hạn mức

Để thể hiện thiện chí với các nhà phát triển khác, Reply to Reviews API thực thi một số hạn mức. Các hạn mức này được thực thi riêng biệt theo từng ứng dụng:

  • GET yêu cầu (để truy xuất danh sách bài đánh giá và từng bài đánh giá riêng lẻ) – 200 mỗi giờ

  • POST yêu cầu (để trả lời bài đánh giá) – 2000 mỗi ngày

Nếu ứng dụng của bạn cần truy xuất hoặc trả lời nhiều bài đánh giá hơn số lượng này hạn mức cho phép, hãy gửi yêu cầu để tăng hạn mức của ứng dụng.